{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":721356320,"defaultBranch":"notion-3.0.1","name":"luxon","ownerLogin":"makenotion","currentUserCanPush":false,"isFork":true,"isEmpty":false,"createdAt":"2023-11-20T22:22:42.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/4792552?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1705938506.0","currentOid":""},"activityList":{"items":[{"before":"a479dfed5229d0641dfc3970c216066bdc6292e5","after":"f7d747dae540f00db23c7219e678e3ea60c576f5","ref":"refs/heads/benjamin--integ-cache-offset-guesses-for-quickDT","pushedAt":"2024-03-09T21:39:10.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"schleyfox","name":"Ben Hughes","path":"/schleyfox","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4259?s=80&v=4"},"commit":{"message":"Add zoneOffset cache to resetCaches","shortMessageHtmlLink":"Add zoneOffset cache to resetCaches"}},{"before":"3e363ee6a729735c8ec5cdf52827ff2840d4337d","after":"297b398cd4d8a83af370b60403997ab69ccd9c24","ref":"refs/heads/benjamin--integ-memoize-digitsRegex","pushedAt":"2024-01-22T22:51:56.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"schleyfox","name":"Ben Hughes","path":"/schleyfox","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4259?s=80&v=4"},"commit":{"message":"Allow digitRegex cache to be reset","shortMessageHtmlLink":"Allow digitRegex cache to be reset"}},{"before":"c5bd5fd539179af4ee4d8685e9c0550851a763eb","after":"a479dfed5229d0641dfc3970c216066bdc6292e5","ref":"refs/heads/benjamin--integ-cache-offset-guesses-for-quickDT","pushedAt":"2024-01-22T22:44:04.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"schleyfox","name":"Ben Hughes","path":"/schleyfox","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4259?s=80&v=4"},"commit":{"message":"Add zoneOffset cache to resetCaches","shortMessageHtmlLink":"Add zoneOffset cache to resetCaches"}},{"before":null,"after":"5fa43cd5a8b219ff31d3f97d68164dfeec7aae0f","ref":"refs/heads/benjamin-integ-use-computed-offset","pushedAt":"2024-01-22T15:48:26.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"schleyfox","name":"Ben Hughes","path":"/schleyfox","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4259?s=80&v=4"},"commit":{"message":"Use computed offset passed in DateTime constructor\n\nAll calls to the datetime constructor that pass an offset (o), have just\ncomputed that offset (quickDT, fromObject) except for clone(). Clone\npasses an \"old\" option to determine whether previous offset can be\nreused. If we have config.o, but config.old is not set, then we can use\no without computing it.\n\nThis saves an expensive call to zone.offset that duplicates work that\nwas done immediately prior.","shortMessageHtmlLink":"Use computed offset passed in DateTime constructor"}},{"before":null,"after":"6072eba65bea0f72ee21df3ff4e02ef1d1286aed","ref":"refs/heads/benjamin--integ-validate-time-zone-in-quickDT","pushedAt":"2024-01-22T15:47:36.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"schleyfox","name":"Ben Hughes","path":"/schleyfox","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4259?s=80&v=4"},"commit":{"message":"Validate time zone in quickDT prior to guessing offset\n\nWe validate the zone in the constructor anyway, but the tests missed a\nbranch where we attempt to use an invalid zone to compute an offset,\nwhich will result in an exception. Zone#isValid is calculated at\ncreation time (and checked in DateTime constructor already) so this will\nnot degrade performance in the happy case.","shortMessageHtmlLink":"Validate time zone in quickDT prior to guessing offset"}},{"before":null,"after":"c7e40aceec56f0062e5354f4b209e6913fed6de5","ref":"refs/heads/benjamin--integ-use-hackyOffset","pushedAt":"2024-01-22T15:46:58.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"schleyfox","name":"Ben Hughes","path":"/schleyfox","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4259?s=80&v=4"},"commit":{"message":"Use hackyOffset if it parses date strings in the expected format\n\nThe time zone offset of a date can be computed on platforms that support\nit (anything that's not super ancient) by using\nIntl.DateTimeFormat.formatToParts with en-US to output an array of the\ndate components. For legacy reasons, you can also generate a date string\nusing Intl.DateTimeFormat.format which can be parsed into an array using\nregexes. The string/regex approach (hackyOffset) is way faster (2-4x),\nbut much more susceptible to weird client configurations.\n\nThis detects whether hackyOffset is able to parse a known date\ncorrectly, and uses it if it does.","shortMessageHtmlLink":"Use hackyOffset if it parses date strings in the expected format"}},{"before":null,"after":"3e363ee6a729735c8ec5cdf52827ff2840d4337d","ref":"refs/heads/benjamin--integ-memoize-digitsRegex","pushedAt":"2024-01-22T15:46:21.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"schleyfox","name":"Ben Hughes","path":"/schleyfox","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4259?s=80&v=4"},"commit":{"message":"Memoize digitsRegex\n\nProfiles reveal that a substantial portion of fromFormat time is spent\nin digitsRegex. It is only called from unitsForToken and it is always\ncalled with 11 suffixes to match different numbers of digits.\n\nThere are 21 numbering systems, so a fully expanded cache would hold\n11*21 = 231 regexes.\n\nBenchmarks show about a 1.5x improvement on DateTime.fromFormat","shortMessageHtmlLink":"Memoize digitsRegex"}},{"before":null,"after":"b56224e0a7f5cfa402750cfd3a96e911f8230157","ref":"refs/heads/benjamin--integ-format-parsers","pushedAt":"2024-01-22T15:45:34.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"schleyfox","name":"Ben Hughes","path":"/schleyfox","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4259?s=80&v=4"},"commit":{"message":"Add DateTime.buildFormatParser and DateTime.fromFormatParser\n\nThis allows constructing a parser for a locale/format and reusing it\nwhen parsing dates. Without this, DateTime.fromFormat constructs a new\nparser on every call. When parsing large amounts of date strings, this\ngets rather slow.\n\nIn benchmarks, this speeds up parsing by 4.4x","shortMessageHtmlLink":"Add DateTime.buildFormatParser and DateTime.fromFormatParser"}},{"before":null,"after":"87fd3ff3823eae941c1995735c2a4431a31ce1b5","ref":"refs/heads/benjamin--integ-do-buildAll-in-prepare","pushedAt":"2024-01-22T15:44:35.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"schleyfox","name":"Ben Hughes","path":"/schleyfox","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4259?s=80&v=4"},"commit":{"message":"Run buildAll in prepare, move husky install to postinstall\n\nHusky adds git hooks into the repo. We want the dev experience of\n\n $ git clone remote/luxon\n $ npm install # installs husky hooks\n $ ...develop develop develop...\n $ git commit\n _lint runs, everything works_\n\nWe also want to build luxon when we call npm pack or npm publish.\n\nWe also want to build luxon when it is installed somewhere else as a git\ndependency\n(https://docs.npmjs.com/cli/v10/configuring-npm/package-json#git-urls-as-dependencies)\n\nGit dependencies work by running `npm install` from GitFetcher and then\ndepend on DirFetcher running `npm prepare` (but only prepare, not\nprepack or postpack)\n\nThis change moves `husky install` to postinstall (which will,\nunfortunately, still pointlessly run when we install luxon as a git\ndependency). It moves the buildAll to prepare from prepack so that the\nbuild happens when installed as a git dependency. This should preserve\nexisting behavior while enabling installation from git.\n\nWhen installing from git and/or in CI environments, the husky command is\nsometimes not available in postinstall or is available but bails out\nwhen not run in the context of a git repo.","shortMessageHtmlLink":"Run buildAll in prepare, move husky install to postinstall"}},{"before":null,"after":"c5bd5fd539179af4ee4d8685e9c0550851a763eb","ref":"refs/heads/benjamin--integ-cache-offset-guesses-for-quickDT","pushedAt":"2024-01-22T15:43:57.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"schleyfox","name":"Ben Hughes","path":"/schleyfox","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4259?s=80&v=4"},"commit":{"message":"Cache ts offset guesses for quickDT\n\nPreviously we guessed by calling zone.offset(tsNow) on every\nconstruction of a date from date parts. This caches that result instead,\nsaving a call to offset","shortMessageHtmlLink":"Cache ts offset guesses for quickDT"}},{"before":null,"after":"795082a85846573fa6635e1539a20ecfb0128dd5","ref":"refs/heads/benjamin--integ-all-changes","pushedAt":"2024-01-22T15:43:20.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"schleyfox","name":"Ben Hughes","path":"/schleyfox","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4259?s=80&v=4"},"commit":{"message":"Merge branch 'benjamin--integ-do-buildAll-in-prepare' into benjamin--integ-all-changes","shortMessageHtmlLink":"Merge branch 'benjamin--integ-do-buildAll-in-prepare' into benjamin--…"}},{"before":null,"after":"def2eac1eb90efb933f1db20d1b7039f1c668ff2","ref":"refs/heads/benjamin--benchmark-local-with-zone","pushedAt":"2024-01-22T15:41:29.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"schleyfox","name":"Ben Hughes","path":"/schleyfox","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4259?s=80&v=4"},"commit":{"message":"Add benchmark for DateTime.local with zone","shortMessageHtmlLink":"Add benchmark for DateTime.local with zone"}},{"before":"d511cf2475e307798538a405710f4598f0ebfb1e","after":"a4947c1ad1b9cbb9a6928404a6fb5ff94c8b37f1","ref":"refs/heads/notion-3.0.1","pushedAt":"2024-01-10T14:40:03.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"schleyfox","name":"Ben Hughes","path":"/schleyfox","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4259?s=80&v=4"},"commit":{"message":"3.0.1-NOTION.3","shortMessageHtmlLink":"3.0.1-NOTION.3"}},{"before":"eaf71cc811fb89c960b01e1780234e310e1052b2","after":null,"ref":"refs/heads/rebase-test-builds-in-git","pushedAt":"2024-01-10T14:20:33.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"schleyfox","name":"Ben Hughes","path":"/schleyfox","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4259?s=80&v=4"}},{"before":"87ab4e9d8e16a121158d8568194331020b634dc9","after":"d511cf2475e307798538a405710f4598f0ebfb1e","ref":"refs/heads/notion-3.0.1","pushedAt":"2024-01-10T14:20:29.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"schleyfox","name":"Ben Hughes","path":"/schleyfox","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4259?s=80&v=4"},"commit":{"message":"Run buildAll in prepare, move husky install to postinstall\n\nHusky adds git hooks into the repo. We want the dev experience of\n\n $ git clone remote/luxon\n $ npm install # installs husky hooks\n $ ...develop develop develop...\n $ git commit\n _lint runs, everything works_\n\nWe also want to build luxon when we call npm pack or npm publish.\n\nWe also want to build luxon when it is installed somewhere else as a git\ndependency\n(https://docs.npmjs.com/cli/v10/configuring-npm/package-json#git-urls-as-dependencies)\n\nGit dependencies work by running `npm install` from GitFetcher and then\ndepend on DirFetcher running `npm prepare` (but only prepare, not\nprepack or postpack)\n\nThis change moves `husky install` to postinstall (which will,\nunfortunately, still pointlessly run when we install luxon as a git\ndependency). It moves the buildAll to prepare from prepack so that the\nbuild happens when installed as a git dependency. This should preserve\nexisting behavior while enabling installation from git.\n\nWhen installing from git and/or in CI environments, the husky command is\nsometimes not available in postinstall or is available but bails out\nwhen not run in the context of a git repo.","shortMessageHtmlLink":"Run buildAll in prepare, move husky install to postinstall"}},{"before":null,"after":"eaf71cc811fb89c960b01e1780234e310e1052b2","ref":"refs/heads/rebase-test-builds-in-git","pushedAt":"2024-01-10T14:13:46.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"schleyfox","name":"Ben Hughes","path":"/schleyfox","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4259?s=80&v=4"},"commit":{"message":"Run buildAll in prepare, move husky install to postinstall\n\nHusky adds git hooks into the repo. We want the dev experience of\n\n $ git clone remote/luxon\n $ npm install # installs husky hooks\n $ ...develop develop develop...\n $ git commit\n _lint runs, everything works_\n\nWe also want to build luxon when we call npm pack or npm publish.\n\nWe also want to build luxon when it is installed somewhere else as a git\ndependency\n(https://docs.npmjs.com/cli/v10/configuring-npm/package-json#git-urls-as-dependencies)\n\nGit dependencies work by running `npm install` from GitFetcher and then\ndepend on DirFetcher running `npm prepare` (but only prepare, not\nprepack or postpack)\n\nThis change moves `husky install` to postinstall (which will,\nunfortunately, still pointlessly run when we install luxon as a git\ndependency). It moves the buildAll to prepare from prepack so that the\nbuild happens when installed as a git dependency. This should preserve\nexisting behavior while enabling installation from git.\n\nWhen installing from git and/or in CI environments, the husky command is\nsometimes not available in postinstall or is available but bails out\nwhen not run in the context of a git repo.","shortMessageHtmlLink":"Run buildAll in prepare, move husky install to postinstall"}},{"before":"cc51c94d49ec93f2983e675af21bfaf9069c5433","after":"039d991de9e921a85480459b9422f672d2cb4b35","ref":"refs/heads/test-builds-in-git","pushedAt":"2024-01-10T01:46:58.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"schleyfox","name":"Ben Hughes","path":"/schleyfox","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4259?s=80&v=4"},"commit":{"message":"Ignore husky failures","shortMessageHtmlLink":"Ignore husky failures"}},{"before":"2226d6415eac88fe8fa9b559e8a2d0a3e37ae7a1","after":"cc51c94d49ec93f2983e675af21bfaf9069c5433","ref":"refs/heads/test-builds-in-git","pushedAt":"2024-01-10T00:24:51.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"schleyfox","name":"Ben Hughes","path":"/schleyfox","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4259?s=80&v=4"},"commit":{"message":"The husky command is not available from postinstall when installing from git","shortMessageHtmlLink":"The husky command is not available from postinstall when installing f…"}},{"before":"818d14b93c76d80b170ee01aa036a61b84a79497","after":"2226d6415eac88fe8fa9b559e8a2d0a3e37ae7a1","ref":"refs/heads/test-builds-in-git","pushedAt":"2024-01-10T00:10:23.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"schleyfox","name":"Ben Hughes","path":"/schleyfox","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4259?s=80&v=4"},"commit":{"message":"3.0.1-NOTION.2","shortMessageHtmlLink":"3.0.1-NOTION.2"}},{"before":null,"after":"818d14b93c76d80b170ee01aa036a61b84a79497","ref":"refs/heads/test-builds-in-git","pushedAt":"2024-01-09T20:16:32.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"schleyfox","name":"Ben Hughes","path":"/schleyfox","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4259?s=80&v=4"},"commit":{"message":"3.0.1-NOTION.1","shortMessageHtmlLink":"3.0.1-NOTION.1"}},{"before":"29369290b676ea3877850742ed96cec406f5d29f","after":null,"ref":"refs/heads/benjamin--fromformat-parsers","pushedAt":"2024-01-08T20:17:28.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"schleyfox","name":"Ben Hughes","path":"/schleyfox","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4259?s=80&v=4"}},{"before":"5082eff5c23cd7c1f6da9f75f995ba02be72b960","after":"87ab4e9d8e16a121158d8568194331020b634dc9","ref":"refs/heads/notion-3.0.1","pushedAt":"2024-01-08T20:17:24.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"schleyfox","name":"Ben Hughes","path":"/schleyfox","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4259?s=80&v=4"},"commit":{"message":"Add DateTime.buildFormatParser and DateTime.fromFormatParser\n\nThis allows constructing a parser for a locale/format and reusing it\nwhen parsing dates. Without this, DateTime.fromFormat constructs a new\nparser on every call. When parsing large amounts of date strings, this\ngets rather slow.\n\nIn benchmarks, this speeds up parsing by 4.4x","shortMessageHtmlLink":"Add DateTime.buildFormatParser and DateTime.fromFormatParser"}},{"before":"c96da8042674aa95ea46f1310b7a0f922788233f","after":"29369290b676ea3877850742ed96cec406f5d29f","ref":"refs/heads/benjamin--fromformat-parsers","pushedAt":"2024-01-08T20:16:22.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"schleyfox","name":"Ben Hughes","path":"/schleyfox","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4259?s=80&v=4"},"commit":{"message":"Add DateTime.buildFormatParser and DateTime.fromFormatParser\n\nThis allows constructing a parser for a locale/format and reusing it\nwhen parsing dates. Without this, DateTime.fromFormat constructs a new\nparser on every call. When parsing large amounts of date strings, this\ngets rather slow.\n\nIn benchmarks, this speeds up parsing by 4.4x","shortMessageHtmlLink":"Add DateTime.buildFormatParser and DateTime.fromFormatParser"}},{"before":"2db8cfa57b379826c9174c99f3c0c5420e7b64b5","after":"c96da8042674aa95ea46f1310b7a0f922788233f","ref":"refs/heads/benjamin--fromformat-parsers","pushedAt":"2024-01-08T20:13:47.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"schleyfox","name":"Ben Hughes","path":"/schleyfox","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4259?s=80&v=4"},"commit":{"message":"nitfix","shortMessageHtmlLink":"nitfix"}},{"before":null,"after":"2db8cfa57b379826c9174c99f3c0c5420e7b64b5","ref":"refs/heads/benjamin--fromformat-parsers","pushedAt":"2023-12-22T19:11:34.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"schleyfox","name":"Ben Hughes","path":"/schleyfox","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4259?s=80&v=4"},"commit":{"message":"Add DateTime.buildFormatParser and DateTime.fromFormatParser\n\nThis allows constructing a parser for a locale/format and reusing it\nwhen parsing dates. Without this, DateTime.fromFormat constructs a new\nparser on every call. When parsing large amounts of date strings, this\ngets rather slow.\n\nIn benchmarks, this speeds up parsing by 4.4x","shortMessageHtmlLink":"Add DateTime.buildFormatParser and DateTime.fromFormatParser"}},{"before":"3e75267e6356e2b80165923bf49dc868c71f1e1a","after":null,"ref":"refs/heads/benjamin--validate-timezone-in-quickDT","pushedAt":"2023-12-06T17:15:45.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"schleyfox","name":"Ben Hughes","path":"/schleyfox","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4259?s=80&v=4"}},{"before":"43c26ac8cad557aaf2f13f9c0e02165493f85298","after":"5082eff5c23cd7c1f6da9f75f995ba02be72b960","ref":"refs/heads/notion-3.0.1","pushedAt":"2023-12-06T17:15:39.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"schleyfox","name":"Ben Hughes","path":"/schleyfox","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4259?s=80&v=4"},"commit":{"message":"Validate time zone in quickDT prior to guessing offset\n\nWe validate the zone in the constructor anyway, but the tests missed a\nbranch where we attempt to use an invalid zone to compute an offset,\nwhich will result in an exception. Zone#isValid is calculated at\ncreation time (and checked in DateTime constructor already) so this will\nnot degrade performance in the happy case.","shortMessageHtmlLink":"Validate time zone in quickDT prior to guessing offset"}},{"before":null,"after":"3e75267e6356e2b80165923bf49dc868c71f1e1a","ref":"refs/heads/benjamin--validate-timezone-in-quickDT","pushedAt":"2023-12-06T14:53:38.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"schleyfox","name":"Ben Hughes","path":"/schleyfox","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4259?s=80&v=4"},"commit":{"message":"Validate time zone in quickDT prior to guessing offset\n\nWe validate the zone in the constructor anyway, but the tests missed a\nbranch where we attempt to use an invalid zone to compute an offset,\nwhich will result in an exception. Zone#isValid is calculated at\ncreation time (and checked in DateTime constructor already) so this will\nnot degrade performance in the happy case.","shortMessageHtmlLink":"Validate time zone in quickDT prior to guessing offset"}},{"before":"027938c0c6b19641d484b5a750531ff12d771468","after":"43c26ac8cad557aaf2f13f9c0e02165493f85298","ref":"refs/heads/notion-3.0.1","pushedAt":"2023-11-29T20:46:33.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"schleyfox","name":"Ben Hughes","path":"/schleyfox","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4259?s=80&v=4"},"commit":{"message":"Use hackyOffset if it parses date strings in the expected format\n\nThe time zone offset of a date can be computed on platforms that support\nit (anything that's not super ancient) by using\nIntl.DateTimeFormat.formatToParts with en-US to output an array of the\ndate components. For legacy reasons, you can also generate a date string\nusing Intl.DateTimeFormat.format which can be parsed into an array using\nregexes. The string/regex approach (hackyOffset) is way faster (2-4x),\nbut much more susceptible to weird client configurations.\n\nThis detects whether hackyOffset is able to parse a known date\ncorrectly, and uses it if it does.","shortMessageHtmlLink":"Use hackyOffset if it parses date strings in the expected format"}},{"before":"c12845effe8729213de71fb88c3381bd07578321","after":"73cea517af985fc8b91701e2c0ac8862be99f981","ref":"refs/heads/benjamin--hackyoffset-safety-check","pushedAt":"2023-11-28T03:17:12.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"schleyfox","name":"Ben Hughes","path":"/schleyfox","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4259?s=80&v=4"},"commit":{"message":"Use hackyOffset if it parses date strings in the expected format\n\nThe time zone offset of a date can be computed on platforms that support\nit (anything that's not super ancient) by using\nIntl.DateTimeFormat.formatToParts with en-US to output an array of the\ndate components. For legacy reasons, you can also generate a date string\nusing Intl.DateTimeFormat.format which can be parsed into an array using\nregexes. The string/regex approach (hackyOffset) is way faster (2-4x),\nbut much more susceptible to weird client configurations.\n\nThis detects whether hackyOffset is able to parse a known date\ncorrectly, and uses it if it does.","shortMessageHtmlLink":"Use hackyOffset if it parses date strings in the expected format"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEESSTugA","startCursor":null,"endCursor":null}},"title":"Activity · makenotion/luxon"}