sanity 3.94.1-next.5.ec6157041e → 3.94.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/dist/BehaviorSubject-CU-WJrzA.mjs +30 -0
  2. package/dist/BehaviorSubject-CU-WJrzA.mjs.map +1 -0
  3. package/dist/BroadcastDisplayedDocument-BSV9T3BU.mjs +20 -0
  4. package/dist/BroadcastDisplayedDocument-BSV9T3BU.mjs.map +1 -0
  5. package/dist/DisplayedDocumentBroadcaster-DZ65n35Q.mjs +62 -0
  6. package/dist/DisplayedDocumentBroadcaster-DZ65n35Q.mjs.map +1 -0
  7. package/dist/LiveQueries-Crz53eU5.mjs +407 -0
  8. package/dist/LiveQueries-Crz53eU5.mjs.map +1 -0
  9. package/dist/Observable-CCQtH8Gg.mjs +546 -0
  10. package/dist/Observable-CCQtH8Gg.mjs.map +1 -0
  11. package/dist/PostMessageDocuments-BjgsJxz4.mjs +72 -0
  12. package/dist/PostMessageDocuments-BjgsJxz4.mjs.map +1 -0
  13. package/dist/PostMessagePerspective-pucY-E6a.mjs +22 -0
  14. package/dist/PostMessagePerspective-pucY-E6a.mjs.map +1 -0
  15. package/dist/PostMessagePreviewSnapshots-CRQgRg4_.mjs +71 -0
  16. package/dist/PostMessagePreviewSnapshots-CRQgRg4_.mjs.map +1 -0
  17. package/dist/PostMessageRefreshMutations-D944RbO3.mjs +66 -0
  18. package/dist/PostMessageRefreshMutations-D944RbO3.mjs.map +1 -0
  19. package/dist/PostMessageSchema-3eOtr1bs.mjs +516 -0
  20. package/dist/PostMessageSchema-3eOtr1bs.mjs.map +1 -0
  21. package/dist/PostMessageTelemetry-DMTQDJeN.mjs +20 -0
  22. package/dist/PostMessageTelemetry-DMTQDJeN.mjs.map +1 -0
  23. package/dist/PresentationToolGrantsCheck-B0q4AQ3b.mjs +3999 -0
  24. package/dist/PresentationToolGrantsCheck-B0q4AQ3b.mjs.map +1 -0
  25. package/dist/QRCodeSVG-hyTW2xeN.mjs +648 -0
  26. package/dist/QRCodeSVG-hyTW2xeN.mjs.map +1 -0
  27. package/dist/Refractor-Zss2QEe8.mjs +2568 -0
  28. package/dist/Refractor-Zss2QEe8.mjs.map +1 -0
  29. package/dist/SourceContext-QxJD1Wrm.mjs +111 -0
  30. package/dist/SourceContext-QxJD1Wrm.mjs.map +1 -0
  31. package/dist/StructureToolProvider-B-7cwz7l.mjs +2287 -0
  32. package/dist/StructureToolProvider-B-7cwz7l.mjs.map +1 -0
  33. package/dist/ViteDevServerStopped-CgIEqy9p.mjs +57 -0
  34. package/dist/ViteDevServerStopped-CgIEqy9p.mjs.map +1 -0
  35. package/dist/_createContext.mjs +38 -0
  36. package/dist/_createContext.mjs.map +1 -0
  37. package/dist/_singletons.mjs +216 -0
  38. package/dist/_singletons.mjs.map +1 -0
  39. package/dist/browser-B0Q9qZJS.mjs +478 -0
  40. package/dist/browser-B0Q9qZJS.mjs.map +1 -0
  41. package/dist/browser-DmX5VEcE.mjs +324 -0
  42. package/dist/browser-DmX5VEcE.mjs.map +1 -0
  43. package/dist/desk.mjs +53 -0
  44. package/dist/desk.mjs.map +1 -0
  45. package/dist/first-Cz545eV-.mjs +42 -0
  46. package/dist/first-Cz545eV-.mjs.map +1 -0
  47. package/dist/index-B2GCDfau.mjs +96 -0
  48. package/dist/index-B2GCDfau.mjs.map +1 -0
  49. package/dist/index-BRIelBPK.mjs +6946 -0
  50. package/dist/index-BRIelBPK.mjs.map +1 -0
  51. package/dist/index-BUB137yJ.mjs +144 -0
  52. package/dist/index-BUB137yJ.mjs.map +1 -0
  53. package/dist/index-C3PGPrdL.mjs +1192 -0
  54. package/dist/index-C3PGPrdL.mjs.map +1 -0
  55. package/dist/index-C9NvTy6s.mjs +319 -0
  56. package/dist/index-C9NvTy6s.mjs.map +1 -0
  57. package/dist/index-DCkQlgdi.mjs +4001 -0
  58. package/dist/index-DCkQlgdi.mjs.map +1 -0
  59. package/dist/index-DG-3plB0.mjs +71 -0
  60. package/dist/index-DG-3plB0.mjs.map +1 -0
  61. package/dist/index-RoxwhtVB.mjs +5600 -0
  62. package/dist/index-RoxwhtVB.mjs.map +1 -0
  63. package/dist/index-iMZR29eF.mjs +756 -0
  64. package/dist/index-iMZR29eF.mjs.map +1 -0
  65. package/dist/index-wVXq9rWS.mjs +244 -0
  66. package/dist/index-wVXq9rWS.mjs.map +1 -0
  67. package/dist/index.mjs +137385 -0
  68. package/dist/index.mjs.map +1 -0
  69. package/dist/lodash-Vz5dH_Dm.mjs +3679 -0
  70. package/dist/lodash-Vz5dH_Dm.mjs.map +1 -0
  71. package/dist/pane-Bm_57XKB.mjs +5 -0
  72. package/dist/pane-Bm_57XKB.mjs.map +1 -0
  73. package/dist/pane-Dopl4BjD.mjs +5 -0
  74. package/dist/pane-Dopl4BjD.mjs.map +1 -0
  75. package/dist/presentation-DsIky7Cj.mjs +556 -0
  76. package/dist/presentation-DsIky7Cj.mjs.map +1 -0
  77. package/dist/presentation.mjs +10 -0
  78. package/dist/presentation.mjs.map +1 -0
  79. package/dist/publishReplay-PuJoYJpp.mjs +92 -0
  80. package/dist/publishReplay-PuJoYJpp.mjs.map +1 -0
  81. package/dist/refractor-Bg1S3YDK.mjs +26 -0
  82. package/dist/refractor-Bg1S3YDK.mjs.map +1 -0
  83. package/dist/resources-BQsCEzu1.mjs +60 -0
  84. package/dist/resources-BQsCEzu1.mjs.map +1 -0
  85. package/dist/resources-BahMtJuO.mjs +177 -0
  86. package/dist/resources-BahMtJuO.mjs.map +1 -0
  87. package/dist/resources-CjkBN4z6.mjs +126 -0
  88. package/dist/resources-CjkBN4z6.mjs.map +1 -0
  89. package/dist/resources-Dc-6ZcPg.mjs +157 -0
  90. package/dist/resources-Dc-6ZcPg.mjs.map +1 -0
  91. package/dist/resources-DqxSuDsr.mjs +37 -0
  92. package/dist/resources-DqxSuDsr.mjs.map +1 -0
  93. package/dist/resources-_gTjFWLH.mjs +517 -0
  94. package/dist/resources-_gTjFWLH.mjs.map +1 -0
  95. package/dist/resources-kA1bao30.mjs +358 -0
  96. package/dist/resources-kA1bao30.mjs.map +1 -0
  97. package/dist/router.mjs +721 -0
  98. package/dist/router.mjs.map +1 -0
  99. package/dist/stegaEncodeSourceMap-DCG9Ba1H.mjs +358 -0
  100. package/dist/stegaEncodeSourceMap-DCG9Ba1H.mjs.map +1 -0
  101. package/dist/structure.mjs +57 -0
  102. package/dist/structure.mjs.map +1 -0
  103. package/dist/structureTool-Bth1vd8r.mjs +13150 -0
  104. package/dist/structureTool-Bth1vd8r.mjs.map +1 -0
  105. package/dist/switchMap-DHVUskpL.mjs +54 -0
  106. package/dist/switchMap-DHVUskpL.mjs.map +1 -0
  107. package/dist/v4-zH-CAum7.mjs +24798 -0
  108. package/dist/v4-zH-CAum7.mjs.map +1 -0
  109. package/dist/version-DoE_JnhG.mjs +5 -0
  110. package/dist/version-DoE_JnhG.mjs.map +1 -0
  111. package/lib/_chunks-cjs/version.js +1 -1
  112. package/lib/_chunks-es/version.mjs +1 -1
  113. package/package.json +23 -23
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-BRIelBPK.mjs","sources":["../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/Immediate.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduler/immediateProvider.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduler/AsapAction.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduler/AsapScheduler.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduler/asap.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/not.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/partition.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/scanInternals.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/debounce.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/mapTo.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/delayWhen.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/delay.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/distinctUntilChanged.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/exhaustMap.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/scan.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/startWith.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/throttle.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/throttleTime.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/withLatestFrom.js","../../@sanity/types/src/helpers.ts","../../@sanity/types/src/documents/asserters.ts","../../@sanity/types/src/markers/asserters.ts","../../@sanity/types/src/paths/asserters.ts","../../@sanity/types/src/schema/asserters.ts","../../@sanity/util/src/paths.ts","../../../node_modules/.pnpm/react-fast-compare@3.2.2/node_modules/react-fast-compare/index.js","../../../node_modules/.pnpm/react-i18next@14.0.2_i18next@23.16.8_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-i18next/dist/es/utils.js","../../../node_modules/.pnpm/react-i18next@14.0.2_i18next@23.16.8_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-i18next/dist/es/unescape.js","../../../node_modules/.pnpm/react-i18next@14.0.2_i18next@23.16.8_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-i18next/dist/es/defaults.js","../../../node_modules/.pnpm/react-i18next@14.0.2_i18next@23.16.8_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-i18next/dist/es/i18nInstance.js","../../../node_modules/.pnpm/react-i18next@14.0.2_i18next@23.16.8_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-i18next/dist/es/context.js","../../../node_modules/.pnpm/react-i18next@14.0.2_i18next@23.16.8_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-i18next/dist/es/useTranslation.js","../src/ui-components/dialog/Dialog.tsx","../src/ui-components/menuGroup/MenuGroup.tsx","../src/ui-components/popover/Popover.tsx","../src/ui-components/tab/Tab.tsx","../../../node_modules/.pnpm/observable-callback@1.0.3_rxjs@7.8.2/node_modules/observable-callback/dist/esm/observableCallback.js","../../../node_modules/.pnpm/react-rx@4.1.30_react@18.3.1_rxjs@7.8.2/node_modules/react-rx/dist/index.js","../../../node_modules/.pnpm/@babel+runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/typeof.js","../../../node_modules/.pnpm/date-fns@2.30.0/node_modules/date-fns/esm/_lib/toInteger/index.js","../../../node_modules/.pnpm/date-fns@2.30.0/node_modules/date-fns/esm/_lib/requiredArgs/index.js","../../../node_modules/.pnpm/date-fns@2.30.0/node_modules/date-fns/esm/toDate/index.js","../../../node_modules/.pnpm/date-fns@2.30.0/node_modules/date-fns/esm/addDays/index.js","../../../node_modules/.pnpm/date-fns@2.30.0/node_modules/date-fns/esm/addMilliseconds/index.js","../../../node_modules/.pnpm/date-fns@2.30.0/node_modules/date-fns/esm/_lib/defaultOptions/index.js","../../../node_modules/.pnpm/date-fns@2.30.0/node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","../../../node_modules/.pnpm/date-fns@2.30.0/node_modules/date-fns/esm/addWeeks/index.js","../../../node_modules/.pnpm/date-fns@2.30.0/node_modules/date-fns/esm/isDate/index.js","../../../node_modules/.pnpm/date-fns@2.30.0/node_modules/date-fns/esm/isValid/index.js","../../../node_modules/.pnpm/date-fns@2.30.0/node_modules/date-fns/esm/subMilliseconds/index.js","../../../node_modules/.pnpm/date-fns@2.30.0/node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","../../../node_modules/.pnpm/date-fns@2.30.0/node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","../../../node_modules/.pnpm/date-fns@2.30.0/node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","../../../node_modules/.pnpm/date-fns@2.30.0/node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","../../../node_modules/.pnpm/date-fns@2.30.0/node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","../../../node_modules/.pnpm/date-fns@2.30.0/node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","../../../node_modules/.pnpm/date-fns@2.30.0/node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","../../../node_modules/.pnpm/date-fns@2.30.0/node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","../../../node_modules/.pnpm/date-fns@2.30.0/node_modules/date-fns/esm/_lib/getUTCWeek/index.js","../../../node_modules/.pnpm/date-fns@2.30.0/node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","../../../node_modules/.pnpm/date-fns@2.30.0/node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","../../../node_modules/.pnpm/date-fns@2.30.0/node_modules/date-fns/esm/_lib/format/formatters/index.js","../../../node_modules/.pnpm/date-fns@2.30.0/node_modules/date-fns/esm/_lib/format/longFormatters/index.js","../../../node_modules/.pnpm/date-fns@2.30.0/node_modules/date-fns/esm/_lib/protectedTokens/index.js","../../../node_modules/.pnpm/date-fns@2.30.0/node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","../../../node_modules/.pnpm/date-fns@2.30.0/node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","../../../node_modules/.pnpm/date-fns@2.30.0/node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","../../../node_modules/.pnpm/date-fns@2.30.0/node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","../../../node_modules/.pnpm/date-fns@2.30.0/node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","../../../node_modules/.pnpm/date-fns@2.30.0/node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","../../../node_modules/.pnpm/date-fns@2.30.0/node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","../../../node_modules/.pnpm/date-fns@2.30.0/node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","../../../node_modules/.pnpm/date-fns@2.30.0/node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","../../../node_modules/.pnpm/date-fns@2.30.0/node_modules/date-fns/esm/locale/en-US/index.js","../../../node_modules/.pnpm/date-fns@2.30.0/node_modules/date-fns/esm/format/index.js","../../../node_modules/.pnpm/date-fns@2.30.0/node_modules/date-fns/esm/isAfter/index.js","../../../node_modules/.pnpm/date-fns@2.30.0/node_modules/date-fns/esm/isBefore/index.js","../../../node_modules/.pnpm/quick-lru@5.1.1/node_modules/quick-lru/index.js","../../../node_modules/.pnpm/@sanity+diff-match-patch@3.2.0/node_modules/@sanity/diff-match-patch/dist/index.js","../../../node_modules/.pnpm/typeid-js@0.3.0/node_modules/typeid-js/dist/chunk-4WQUCFGE.mjs","../../../node_modules/.pnpm/typeid-js@0.3.0/node_modules/typeid-js/dist/chunk-5QL2QZCM.mjs","../../../node_modules/.pnpm/typeid-js@0.3.0/node_modules/typeid-js/dist/chunk-R5Q6Z3GN.mjs","../../../node_modules/.pnpm/typeid-js@0.3.0/node_modules/typeid-js/dist/chunk-FOHWUNKU.mjs","../../../node_modules/.pnpm/@sanity+telemetry@0.8.1_react@18.3.1/node_modules/@sanity/telemetry/dist/index.js","../../../node_modules/.pnpm/shallow-equals@1.0.0/node_modules/shallow-equals/index.js","../../../node_modules/.pnpm/rxjs-exhaustmap-with-trailing@2.1.1_rxjs@7.8.2/node_modules/rxjs-exhaustmap-with-trailing/dist/esm/index.js","../../../node_modules/.pnpm/is-hotkey-esm@1.0.0/node_modules/is-hotkey-esm/dist/index.js","../../../node_modules/.pnpm/groq-js@1.17.1/node_modules/groq-js/dist/1.mjs","../../@sanity/diff/src/helpers.ts","../../@sanity/diff/src/calculate/lcs.ts","../../@sanity/diff/src/calculate/diffArray.ts","../../@sanity/diff/src/calculate/diffObject.ts","../../@sanity/diff/src/calculate/diffSimple.ts","../../@sanity/diff/src/calculate/diffString.ts","../../@sanity/diff/src/calculate/diffTypeChange.ts","../../@sanity/diff/src/calculate/diffInput.ts","../../@sanity/diff/src/inputWrappers/array.ts","../../@sanity/diff/src/inputWrappers/basic.ts","../../@sanity/diff/src/inputWrappers/object.ts","../../@sanity/diff/src/inputWrappers/string.ts","../../@sanity/diff/src/inputWrappers/index.ts"],"sourcesContent":["var nextHandle = 1;\nvar resolved;\nvar activeHandles = {};\nfunction findAndClearHandle(handle) {\n if (handle in activeHandles) {\n delete activeHandles[handle];\n return true;\n }\n return false;\n}\nexport var Immediate = {\n setImmediate: function (cb) {\n var handle = nextHandle++;\n activeHandles[handle] = true;\n if (!resolved) {\n resolved = Promise.resolve();\n }\n resolved.then(function () { return findAndClearHandle(handle) && cb(); });\n return handle;\n },\n clearImmediate: function (handle) {\n findAndClearHandle(handle);\n },\n};\nexport var TestTools = {\n pending: function () {\n return Object.keys(activeHandles).length;\n }\n};\n//# sourceMappingURL=Immediate.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { Immediate } from '../util/Immediate';\nvar setImmediate = Immediate.setImmediate, clearImmediate = Immediate.clearImmediate;\nexport var immediateProvider = {\n setImmediate: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var delegate = immediateProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.setImmediate) || setImmediate).apply(void 0, __spreadArray([], __read(args)));\n },\n clearImmediate: function (handle) {\n var delegate = immediateProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearImmediate) || clearImmediate)(handle);\n },\n delegate: undefined,\n};\n//# sourceMappingURL=immediateProvider.js.map","import { __extends } from \"tslib\";\nimport { AsyncAction } from './AsyncAction';\nimport { immediateProvider } from './immediateProvider';\nvar AsapAction = (function (_super) {\n __extends(AsapAction, _super);\n function AsapAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n return _this;\n }\n AsapAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n if (delay !== null && delay > 0) {\n return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);\n }\n scheduler.actions.push(this);\n return scheduler._scheduled || (scheduler._scheduled = immediateProvider.setImmediate(scheduler.flush.bind(scheduler, undefined)));\n };\n AsapAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n var _a;\n if (delay === void 0) { delay = 0; }\n if (delay != null ? delay > 0 : this.delay > 0) {\n return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay);\n }\n var actions = scheduler.actions;\n if (id != null && ((_a = actions[actions.length - 1]) === null || _a === void 0 ? void 0 : _a.id) !== id) {\n immediateProvider.clearImmediate(id);\n if (scheduler._scheduled === id) {\n scheduler._scheduled = undefined;\n }\n }\n return undefined;\n };\n return AsapAction;\n}(AsyncAction));\nexport { AsapAction };\n//# sourceMappingURL=AsapAction.js.map","import { __extends } from \"tslib\";\nimport { AsyncScheduler } from './AsyncScheduler';\nvar AsapScheduler = (function (_super) {\n __extends(AsapScheduler, _super);\n function AsapScheduler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AsapScheduler.prototype.flush = function (action) {\n this._active = true;\n var flushId = this._scheduled;\n this._scheduled = undefined;\n var actions = this.actions;\n var error;\n action = action || actions.shift();\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions[0]) && action.id === flushId && actions.shift());\n this._active = false;\n if (error) {\n while ((action = actions[0]) && action.id === flushId && actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AsapScheduler;\n}(AsyncScheduler));\nexport { AsapScheduler };\n//# sourceMappingURL=AsapScheduler.js.map","import { AsapAction } from './AsapAction';\nimport { AsapScheduler } from './AsapScheduler';\nexport var asapScheduler = new AsapScheduler(AsapAction);\nexport var asap = asapScheduler;\n//# sourceMappingURL=asap.js.map","export function not(pred, thisArg) {\n return function (value, index) { return !pred.call(thisArg, value, index); };\n}\n//# sourceMappingURL=not.js.map","import { not } from '../util/not';\nimport { filter } from '../operators/filter';\nimport { innerFrom } from './innerFrom';\nexport function partition(source, predicate, thisArg) {\n return [filter(predicate, thisArg)(innerFrom(source)), filter(not(predicate, thisArg))(innerFrom(source))];\n}\n//# sourceMappingURL=partition.js.map","import { createOperatorSubscriber } from './OperatorSubscriber';\nexport function scanInternals(accumulator, seed, hasSeed, emitOnNext, emitBeforeComplete) {\n return function (source, subscriber) {\n var hasState = hasSeed;\n var state = seed;\n var index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n var i = index++;\n state = hasState\n ?\n accumulator(state, value, i)\n :\n ((hasState = true), value);\n emitOnNext && subscriber.next(state);\n }, emitBeforeComplete &&\n (function () {\n hasState && subscriber.next(state);\n subscriber.complete();\n })));\n };\n}\n//# sourceMappingURL=scanInternals.js.map","import { operate } from '../util/lift';\nimport { noop } from '../util/noop';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nexport function debounce(durationSelector) {\n return operate(function (source, subscriber) {\n var hasValue = false;\n var lastValue = null;\n var durationSubscriber = null;\n var emit = function () {\n durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe();\n durationSubscriber = null;\n if (hasValue) {\n hasValue = false;\n var value = lastValue;\n lastValue = null;\n subscriber.next(value);\n }\n };\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe();\n hasValue = true;\n lastValue = value;\n durationSubscriber = createOperatorSubscriber(subscriber, emit, noop);\n innerFrom(durationSelector(value)).subscribe(durationSubscriber);\n }, function () {\n emit();\n subscriber.complete();\n }, undefined, function () {\n lastValue = durationSubscriber = null;\n }));\n });\n}\n//# sourceMappingURL=debounce.js.map","import { map } from './map';\nexport function mapTo(value) {\n return map(function () { return value; });\n}\n//# sourceMappingURL=mapTo.js.map","import { concat } from '../observable/concat';\nimport { take } from './take';\nimport { ignoreElements } from './ignoreElements';\nimport { mapTo } from './mapTo';\nimport { mergeMap } from './mergeMap';\nimport { innerFrom } from '../observable/innerFrom';\nexport function delayWhen(delayDurationSelector, subscriptionDelay) {\n if (subscriptionDelay) {\n return function (source) {\n return concat(subscriptionDelay.pipe(take(1), ignoreElements()), source.pipe(delayWhen(delayDurationSelector)));\n };\n }\n return mergeMap(function (value, index) { return innerFrom(delayDurationSelector(value, index)).pipe(take(1), mapTo(value)); });\n}\n//# sourceMappingURL=delayWhen.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { delayWhen } from './delayWhen';\nimport { timer } from '../observable/timer';\nexport function delay(due, scheduler) {\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n var duration = timer(due, scheduler);\n return delayWhen(function () { return duration; });\n}\n//# sourceMappingURL=delay.js.map","import { identity } from '../util/identity';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function distinctUntilChanged(comparator, keySelector) {\n if (keySelector === void 0) { keySelector = identity; }\n comparator = comparator !== null && comparator !== void 0 ? comparator : defaultCompare;\n return operate(function (source, subscriber) {\n var previousKey;\n var first = true;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n var currentKey = keySelector(value);\n if (first || !comparator(previousKey, currentKey)) {\n first = false;\n previousKey = currentKey;\n subscriber.next(value);\n }\n }));\n });\n}\nfunction defaultCompare(a, b) {\n return a === b;\n}\n//# sourceMappingURL=distinctUntilChanged.js.map","import { map } from './map';\nimport { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function exhaustMap(project, resultSelector) {\n if (resultSelector) {\n return function (source) {\n return source.pipe(exhaustMap(function (a, i) { return innerFrom(project(a, i)).pipe(map(function (b, ii) { return resultSelector(a, b, i, ii); })); }));\n };\n }\n return operate(function (source, subscriber) {\n var index = 0;\n var innerSub = null;\n var isComplete = false;\n source.subscribe(createOperatorSubscriber(subscriber, function (outerValue) {\n if (!innerSub) {\n innerSub = createOperatorSubscriber(subscriber, undefined, function () {\n innerSub = null;\n isComplete && subscriber.complete();\n });\n innerFrom(project(outerValue, index++)).subscribe(innerSub);\n }\n }, function () {\n isComplete = true;\n !innerSub && subscriber.complete();\n }));\n });\n}\n//# sourceMappingURL=exhaustMap.js.map","import { operate } from '../util/lift';\nimport { scanInternals } from './scanInternals';\nexport function scan(accumulator, seed) {\n return operate(scanInternals(accumulator, seed, arguments.length >= 2, true));\n}\n//# sourceMappingURL=scan.js.map","import { concat } from '../observable/concat';\nimport { popScheduler } from '../util/args';\nimport { operate } from '../util/lift';\nexport function startWith() {\n var values = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n values[_i] = arguments[_i];\n }\n var scheduler = popScheduler(values);\n return operate(function (source, subscriber) {\n (scheduler ? concat(values, source, scheduler) : concat(values, source)).subscribe(subscriber);\n });\n}\n//# sourceMappingURL=startWith.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nexport function throttle(durationSelector, config) {\n return operate(function (source, subscriber) {\n var _a = config !== null && config !== void 0 ? config : {}, _b = _a.leading, leading = _b === void 0 ? true : _b, _c = _a.trailing, trailing = _c === void 0 ? false : _c;\n var hasValue = false;\n var sendValue = null;\n var throttled = null;\n var isComplete = false;\n var endThrottling = function () {\n throttled === null || throttled === void 0 ? void 0 : throttled.unsubscribe();\n throttled = null;\n if (trailing) {\n send();\n isComplete && subscriber.complete();\n }\n };\n var cleanupThrottling = function () {\n throttled = null;\n isComplete && subscriber.complete();\n };\n var startThrottle = function (value) {\n return (throttled = innerFrom(durationSelector(value)).subscribe(createOperatorSubscriber(subscriber, endThrottling, cleanupThrottling)));\n };\n var send = function () {\n if (hasValue) {\n hasValue = false;\n var value = sendValue;\n sendValue = null;\n subscriber.next(value);\n !isComplete && startThrottle(value);\n }\n };\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n hasValue = true;\n sendValue = value;\n !(throttled && !throttled.closed) && (leading ? send() : startThrottle(value));\n }, function () {\n isComplete = true;\n !(trailing && hasValue && throttled && !throttled.closed) && subscriber.complete();\n }));\n });\n}\n//# sourceMappingURL=throttle.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { throttle } from './throttle';\nimport { timer } from '../observable/timer';\nexport function throttleTime(duration, scheduler, config) {\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n var duration$ = timer(duration, scheduler);\n return throttle(function () { return duration$; }, config);\n}\n//# sourceMappingURL=throttleTime.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nimport { identity } from '../util/identity';\nimport { noop } from '../util/noop';\nimport { popResultSelector } from '../util/args';\nexport function withLatestFrom() {\n var inputs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n inputs[_i] = arguments[_i];\n }\n var project = popResultSelector(inputs);\n return operate(function (source, subscriber) {\n var len = inputs.length;\n var otherValues = new Array(len);\n var hasValue = inputs.map(function () { return false; });\n var ready = false;\n var _loop_1 = function (i) {\n innerFrom(inputs[i]).subscribe(createOperatorSubscriber(subscriber, function (value) {\n otherValues[i] = value;\n if (!ready && !hasValue[i]) {\n hasValue[i] = true;\n (ready = hasValue.every(identity)) && (hasValue = null);\n }\n }, noop));\n };\n for (var i = 0; i < len; i++) {\n _loop_1(i);\n }\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n if (ready) {\n var values = __spreadArray([value], __read(otherValues));\n subscriber.next(project ? project.apply(void 0, __spreadArray([], __read(values))) : values);\n }\n }));\n });\n}\n//# sourceMappingURL=withLatestFrom.js.map","export function isObject(obj: unknown): obj is Record<string, unknown> {\n return typeof obj === 'object' && obj !== null && !Array.isArray(obj)\n}\n","import {isObject} from '../helpers'\nimport {type KeyedObject, type SanityDocument, type TypedObject} from './types'\n\n/** @public */\nexport function isSanityDocument(document: unknown): document is SanityDocument {\n return (\n isObject(document) && typeof document._id === 'string' && typeof document._type === 'string'\n )\n}\n\n/** @public */\nexport function isTypedObject(obj: unknown): obj is TypedObject {\n return isObject(obj) && typeof obj._type === 'string'\n}\n\n/** @public */\nexport function isKeyedObject(obj: unknown): obj is KeyedObject {\n return isObject(obj) && typeof obj._key === 'string'\n}\n","import {type ValidationMarker} from './types'\n\n/** @internal */\nexport function isValidationErrorMarker(\n marker: ValidationMarker,\n): marker is ValidationMarker & {level: 'error'} {\n return marker.level === 'error'\n}\n\n/** @internal */\nexport function isValidationWarningMarker(\n marker: ValidationMarker,\n): marker is ValidationMarker & {level: 'warning'} {\n return marker.level === 'warning'\n}\n\n/** @internal */\nexport function isValidationInfoMarker(\n marker: ValidationMarker,\n): marker is ValidationMarker & {level: 'info'} {\n return marker.level === 'info'\n}\n","import {type IndexTuple, type KeyedSegment, type PathSegment} from './types'\n\nconst reKeySegment = /_key\\s*==\\s*['\"](.*)['\"]/\nconst reIndexTuple = /^\\d*:\\d*$/\n\n/** @internal */\nexport function isIndexSegment(segment: PathSegment): segment is number {\n return typeof segment === 'number' || (typeof segment === 'string' && /^\\[\\d+\\]$/.test(segment))\n}\n\n/** @internal */\nexport function isKeySegment(segment: PathSegment): segment is KeyedSegment {\n if (typeof segment === 'string') {\n return reKeySegment.test(segment.trim())\n }\n\n return typeof segment === 'object' && '_key' in segment\n}\n\n/** @internal */\nexport function isIndexTuple(segment: PathSegment): segment is IndexTuple {\n if (typeof segment === 'string' && reIndexTuple.test(segment)) {\n return true\n }\n\n if (!Array.isArray(segment) || segment.length !== 2) {\n return false\n }\n\n const [from, to] = segment\n return (typeof from === 'number' || from === '') && (typeof to === 'number' || to === '')\n}\n","import {type CrossDatasetReferenceSchemaType} from '../crossDatasetReference'\nimport {type TitledListValue} from './definition'\nimport {\n type ArraySchemaType,\n type BaseSchemaType,\n type BlockChildrenObjectField,\n type BlockListObjectField,\n type BlockSchemaType,\n type BlockStyleObjectField,\n type BooleanSchemaType,\n type DeprecatedSchemaType,\n type DeprecationConfiguration,\n type FileSchemaType,\n type ImageSchemaType,\n type NumberSchemaType,\n type ObjectSchemaType,\n type ReferenceSchemaType,\n type SchemaType,\n type SpanSchemaType,\n type StringSchemaType,\n} from './types'\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return !!value && (typeof value == 'object' || typeof value == 'function')\n}\n\n/**\n * Returns wether or not the given type is a document type\n * (eg that it was defined as `type: 'document'`)\n *\n * @param type - Schema type to test\n * @returns True if type is a document type, false otherwise\n *\n * @public\n */\nexport function isDocumentSchemaType(type: unknown): type is ObjectSchemaType {\n if (!isObjectSchemaType(type)) {\n return false\n }\n\n let current: SchemaType | undefined = type as SchemaType\n while (current) {\n if (current.name === 'document') {\n return true\n }\n\n current = current.type\n }\n return false\n}\n\n/** @internal */\nexport function isObjectSchemaType(type: unknown): type is ObjectSchemaType {\n if (!isRecord(type)) return false\n return type.jsonType === 'object'\n}\n\n/** @internal */\nexport function isArraySchemaType(type: unknown): type is ArraySchemaType {\n if (!isRecord(type)) return false\n return type.jsonType === 'array'\n}\n\n/** @internal */\nexport function isArrayOfBlocksSchemaType(\n type: unknown,\n): type is ArraySchemaType<ObjectSchemaType> {\n return isArraySchemaType(type) && type.of.some((memberType) => isBlockSchemaType(memberType))\n}\n\n/** @internal */\nexport function isArrayOfObjectsSchemaType(\n type: unknown,\n): type is ArraySchemaType<ObjectSchemaType> {\n return isArraySchemaType(type) && type.of.every((memberType) => isObjectSchemaType(memberType))\n}\n\n/** @internal */\nexport function isArrayOfPrimitivesSchemaType(type: unknown): type is ArraySchemaType {\n return isArraySchemaType(type) && type.of.every((memberType) => isPrimitiveSchemaType(memberType))\n}\n\n/** @internal */\nexport function isBooleanSchemaType(type: unknown): type is BooleanSchemaType {\n if (!isRecord(type)) return false\n return type.jsonType === 'boolean'\n}\n\n/** @internal */\nexport function isStringSchemaType(type: unknown): type is StringSchemaType {\n if (!isRecord(type)) return false\n return type.jsonType === 'string'\n}\n\n/** @internal */\nexport function isDateTimeSchemaType(type: unknown): type is StringSchemaType {\n if (!isStringSchemaType(type)) return false\n return type.name === 'datetime'\n}\n\n/** @internal */\nexport function isNumberSchemaType(type: unknown): type is NumberSchemaType {\n if (!isRecord(type)) return false\n return type.jsonType === 'number'\n}\n\n/** @internal */\nexport function isPrimitiveSchemaType(\n type: unknown,\n): type is BooleanSchemaType | StringSchemaType | NumberSchemaType {\n return isBooleanSchemaType(type) || isStringSchemaType(type) || isNumberSchemaType(type)\n}\n\n/** @internal */\nexport function isReferenceSchemaType(type: unknown): type is ReferenceSchemaType {\n return isRecord(type) && (type.name === 'reference' || isReferenceSchemaType(type.type))\n}\n\n/** @internal */\nexport function isImageSchemaType(type: unknown): type is ImageSchemaType {\n return isRecord(type) && (type.name === 'image' || isImageSchemaType(type.type))\n}\n\n/** @internal */\nexport function isFileSchemaType(type: unknown): type is FileSchemaType {\n return isRecord(type) && (type.name === 'file' || isFileSchemaType(type.type))\n}\n\n/** @internal */\nexport function isDeprecatedSchemaType<TSchemaType extends BaseSchemaType>(\n type: TSchemaType,\n): type is DeprecatedSchemaType<TSchemaType> {\n if (!isRecord(type)) return false\n return typeof type.deprecated !== 'undefined'\n}\n\n/** @internal */\nexport function isDeprecationConfiguration(type: unknown): type is DeprecationConfiguration {\n if (!isRecord(type)) return false\n return typeof type.deprecated !== 'undefined'\n}\n\n/** @internal */\nexport function isCrossDatasetReferenceSchemaType(\n type: unknown,\n): type is CrossDatasetReferenceSchemaType {\n return (\n isRecord(type) &&\n (type.name === 'crossDatasetReference' || isCrossDatasetReferenceSchemaType(type.type))\n )\n}\n\n/** @internal */\nexport function isTitledListValue(item: unknown): item is TitledListValue {\n return typeof item === 'object' && item !== null && 'title' in item && 'value' in item\n}\n\n/** @internal */\nexport function isSpanSchemaType(type: unknown): type is SpanSchemaType {\n if (!isRecord(type)) return false\n // we check for `annotations` and `decorators` instead of `type.name` because\n // schema names can technically change if someone extends the type\n return Array.isArray(type.annotations) && Array.isArray(type.decorators)\n}\n\n/** @internal */\nexport function isBlockSchemaType(type: unknown): type is BlockSchemaType {\n if (!isRecord(type)) return false\n if (!Array.isArray(type.fields)) return false\n const maybeSpanChildren = type.fields.find(isBlockChildrenObjectField)\n const maybeStyle = type.fields.find(isBlockStyleObjectField)\n const maybeList = type.fields.find(isBlockListObjectField)\n return (\n isBlockChildrenObjectField(maybeSpanChildren) &&\n isBlockStyleObjectField(maybeStyle) &&\n isBlockListObjectField(maybeList)\n )\n}\n\n/** @internal */\nexport function isBlockStyleObjectField(field: unknown): field is BlockStyleObjectField {\n if (!isRecord(field)) return false\n if (field.name !== 'style') return false\n return isRecord(field.type) && field.type.jsonType === 'string'\n}\n\n/** @internal */\nexport function isBlockListObjectField(field: unknown): field is BlockListObjectField {\n if (!isRecord(field)) return false\n if (field.name !== 'listItem') return false\n return isRecord(field.type) && field.type.jsonType === 'string'\n}\n\n/** @internal */\nexport function isBlockChildrenObjectField(field: unknown): field is BlockChildrenObjectField {\n if (!isRecord(field)) return false\n if (field.name !== 'children') return false\n if (!isArraySchemaType(field.type)) return false\n // there will always be a span item in `SpanChildrenObjectField`\n return field.type.of.some(isSpanSchemaType)\n}\n","import {\n type IndexTuple,\n isIndexSegment,\n isIndexTuple,\n isKeySegment,\n type KeyedSegment,\n type Path,\n type PathSegment,\n} from '@sanity/types'\n\nconst rePropName =\n /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g\nconst reKeySegment = /_key\\s*==\\s*['\"](.*)['\"]/\nconst EMPTY_PATH: Path = []\n\nexport const FOCUS_TERMINATOR = '$'\n\n// Fields named as GROQ data types cannot be accessed using dot notation. These fields must instead\n// be serialized using square bracket notation.\nconst GROQ_DATA_TYPE_VALUES = ['true', 'false', 'null']\n\nexport function get<R>(obj: unknown, path: Path | string): R | undefined\nexport function get<R>(obj: unknown, path: Path | string, defaultValue: R): R\nexport function get(obj: unknown, path: Path | string, defaultVal?: unknown): unknown {\n const select = typeof path === 'string' ? fromString(path) : path\n if (!Array.isArray(select)) {\n throw new Error('Path must be an array or a string')\n }\n\n let acc: unknown | undefined = obj\n for (let i = 0; i < select.length; i++) {\n const segment = select[i]\n if (isIndexSegment(segment)) {\n if (!Array.isArray(acc)) {\n return defaultVal\n }\n\n acc = acc[segment]\n }\n\n if (isKeySegment(segment)) {\n if (!Array.isArray(acc)) {\n return defaultVal\n }\n\n acc = acc.find((item) => item._key === segment._key)\n }\n\n if (typeof segment === 'string') {\n acc =\n typeof acc === 'object' && acc !== null\n ? ((acc as Record<string, unknown>)[segment] as Record<string, unknown>)\n : undefined\n }\n\n if (typeof acc === 'undefined') {\n return defaultVal\n }\n }\n\n return acc\n}\n\nconst pathsMemo = new Map<string, Path>()\nexport function pathFor(path: Path): Path {\n if (path.length === 0) {\n return EMPTY_PATH\n }\n const asString = toString(path)\n if (pathsMemo.has(asString)) {\n return pathsMemo.get(asString)!\n }\n pathsMemo.set(asString, path)\n Object.freeze(path)\n return path\n}\n\nexport function isEqual(path: Path, otherPath: Path): boolean {\n return (\n path.length === otherPath.length &&\n path.every((segment, i) => isSegmentEqual(segment, otherPath[i]))\n )\n}\n\nexport function numEqualSegments(path: Path, otherPath: Path): number {\n const length = Math.min(path.length, otherPath.length)\n for (let i = 0; i < length; i++) {\n if (!isSegmentEqual(path[i], otherPath[i])) {\n return i\n }\n }\n return length\n}\n\nexport function isSegmentEqual(segmentA: PathSegment, segmentB: PathSegment): boolean {\n if (isKeySegment(segmentA) && isKeySegment(segmentB)) {\n return segmentA._key === segmentB._key\n }\n\n if (isIndexSegment(segmentA)) {\n return Number(segmentA) === Number(segmentB)\n }\n\n if (isIndexTuple(segmentA) && isIndexTuple(segmentB)) {\n return segmentA[0] === segmentB[0] && segmentA[1] === segmentB[1]\n }\n\n return segmentA === segmentB\n}\n\nexport function hasFocus(focusPath: Path, path: Path): boolean {\n const withoutTerminator =\n focusPath[focusPath.length - 1] === FOCUS_TERMINATOR ? focusPath.slice(0, -1) : focusPath\n return isEqual(withoutTerminator, path)\n}\n\nexport function hasItemFocus(focusPath: Path, item: PathSegment): boolean {\n return focusPath.length === 1 && isSegmentEqual(focusPath[0], item)\n}\n\nexport function isExpanded(segment: PathSegment, focusPath: Path): boolean {\n const [head, ...tail] = focusPath\n return tail.length > 0 && isSegmentEqual(segment, head)\n}\n\nexport function startsWith(prefix: Path, path: Path): boolean {\n return prefix.every((segment, i) => isSegmentEqual(segment, path[i]))\n}\n\nexport function trimLeft(prefix: Path, path: Path): Path {\n if (prefix.length === 0 || path.length === 0) {\n return path\n }\n const [prefixHead, ...prefixTail] = prefix\n const [pathHead, ...pathTail] = path\n if (!isSegmentEqual(prefixHead, pathHead)) {\n return path\n }\n return pathFor(trimLeft(prefixTail, pathTail))\n}\n\nexport function trimRight(suffix: Path, path: Path): Path {\n const sufLen = suffix.length\n const pathLen = path.length\n if (sufLen === 0 || pathLen === 0) {\n return path\n }\n\n let i = 0\n while (\n i < sufLen &&\n i < pathLen &&\n isSegmentEqual(path[pathLen - i - 1], suffix[sufLen - i - 1])\n ) {\n i++\n }\n\n return pathFor(path.slice(0, pathLen - i))\n}\n\nexport function trimChildPath(path: Path, childPath: Path): Path {\n return startsWith(path, childPath) ? trimLeft(path, childPath) : EMPTY_PATH\n}\n\nexport function toString(path: Path): string {\n if (!Array.isArray(path)) {\n throw new Error('Path is not an array')\n }\n\n return path.reduce<string>((target, segment, i) => {\n const isHead = i === 0\n\n if (typeof segment === 'number') {\n return `${target}[${segment}]`\n }\n\n if (typeof segment === 'string') {\n if (isHead) {\n return segment\n }\n\n if (GROQ_DATA_TYPE_VALUES.includes(segment)) {\n return `${target}[\"${segment}\"]`\n }\n\n return `${target}.${segment}`\n }\n\n if (isKeySegment(segment) && segment._key) {\n return `${target}[_key==\"${segment._key}\"]`\n }\n\n if (Array.isArray(segment)) {\n const [from, to] = segment\n return `${target}[${from}:${to}]`\n }\n\n throw new Error(`Unsupported path segment \\`${JSON.stringify(segment)}\\``)\n }, '')\n}\n\nexport function _resolveKeyedPath(value: unknown, path: Path): Path {\n if (path.length === 0) {\n return path\n }\n const [next, ...rest] = path\n if (typeof next === 'number') {\n if (!Array.isArray(value) || !(next in value)) {\n return []\n }\n const item = value[next]\n const key = item?._key\n return [typeof key === 'string' ? {_key: item._key} : next, ..._resolveKeyedPath(item, rest)]\n }\n const nextVal = get(value, [next])\n return [next, ..._resolveKeyedPath(nextVal, rest)]\n}\n\n/**\n * Takes a value and a path that may include numeric indices and attempts to replace numeric indices with keyed paths\n *\n * @param value - any json value\n * @param path - a Path that may include numeric indices\n * @returns a path where numeric indices has been replaced by keyed segments (e.g. `{_key: <key>}`)\n * Will do as good attempt as possible, but in case of missing array items, it will return the best possible match:\n * - `resolveKeyedPath([0, 'bar'], [])` will return [] since array has no value at index 0\n * - `resolveKeyedPath([0, 'foo'], [{_key: 'xyz', 'foo': 'bar'}, {_key: 'abc'}])` will return `[{_key: 'xyz'}, 'foo']` since array has no value at index 0\n * - `resolveKeyedPath([0, 'foo', 'bar'], [{_key: 'xyz'}])` will return `[{_key: 'xyz'}, 'foo', 'bar']` since array has no value at index 0\n * Object keys will be preserved as-is, e.g. `resolveKeyedPath(['foo', 'bar'], undefined)` will return `['foo', 'bar']`\n */\nexport function resolveKeyedPath(value: unknown, path: Path): Path {\n if (!Array.isArray(path)) {\n throw new Error('Path is not an array')\n }\n return pathFor(_resolveKeyedPath(value, path))\n}\n\nexport function fromString(path: string): Path {\n if (typeof path !== 'string') {\n throw new Error('Path is not a string')\n }\n\n const segments = path.match(rePropName)\n if (!segments) {\n throw new Error('Invalid path string')\n }\n\n return segments.map(normalizePathSegment)\n}\n\nfunction normalizePathSegment(segment: string): PathSegment {\n if (isIndexSegment(segment)) {\n return normalizeIndexSegment(segment)\n }\n\n if (isKeySegment(segment)) {\n return normalizeKeySegment(segment)\n }\n\n if (isIndexTuple(segment)) {\n return normalizeIndexTupleSegment(segment)\n }\n\n return segment\n}\n\nfunction normalizeIndexSegment(segment: string): PathSegment {\n return Number(segment.replace(/[^\\d]/g, ''))\n}\n\nfunction normalizeKeySegment(segment: string): KeyedSegment {\n const segments = segment.match(reKeySegment)\n return {_key: segments![1]}\n}\n\nfunction normalizeIndexTupleSegment(segment: string): IndexTuple {\n const [from, to] = segment.split(':').map((seg) => (seg === '' ? seg : Number(seg)))\n return [from, to]\n}\n","/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n // START: fast-deep-equal es6/index.js 3.1.3\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n // START: Modifications:\n // 1. Extra `has<Type> &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n\n if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n // START: Modifications:\n // Apply guards for `Object.create(null)` handling. See:\n // - https://github.com/FormidableLabs/react-fast-compare/issues/64\n // - https://github.com/epoberezkin/fast-deep-equal/issues/49\n if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString();\n // END: Modifications\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (((error.message || '').match(/stack|recursion/i))) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","export function warn() {\n if (console && console.warn) {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (typeof args[0] === 'string') args[0] = `react-i18next:: ${args[0]}`;\n console.warn(...args);\n }\n}\nconst alreadyWarned = {};\nexport function warnOnce() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n if (typeof args[0] === 'string' && alreadyWarned[args[0]]) return;\n if (typeof args[0] === 'string') alreadyWarned[args[0]] = new Date();\n warn(...args);\n}\nconst loadedClb = (i18n, cb) => () => {\n if (i18n.isInitialized) {\n cb();\n } else {\n const initialized = () => {\n setTimeout(() => {\n i18n.off('initialized', initialized);\n }, 0);\n cb();\n };\n i18n.on('initialized', initialized);\n }\n};\nexport function loadNamespaces(i18n, ns, cb) {\n i18n.loadNamespaces(ns, loadedClb(i18n, cb));\n}\nexport function loadLanguages(i18n, lng, ns, cb) {\n if (typeof ns === 'string') ns = [ns];\n ns.forEach(n => {\n if (i18n.options.ns.indexOf(n) < 0) i18n.options.ns.push(n);\n });\n i18n.loadLanguages(lng, loadedClb(i18n, cb));\n}\nfunction oldI18nextHasLoadedNamespace(ns, i18n) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const lng = i18n.languages[0];\n const fallbackLng = i18n.options ? i18n.options.fallbackLng : false;\n const lastLng = i18n.languages[i18n.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n const loadNotPending = (l, n) => {\n const loadState = i18n.services.backendConnector.state[`${l}|${n}`];\n return loadState === -1 || loadState === 2;\n };\n if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18n.services.backendConnector.backend && i18n.isLanguageChangingTo && !loadNotPending(i18n.isLanguageChangingTo, ns)) return false;\n if (i18n.hasResourceBundle(lng, ns)) return true;\n if (!i18n.services.backendConnector.backend || i18n.options.resources && !i18n.options.partialBundledLanguages) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n}\nexport function hasLoadedNamespace(ns, i18n) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n if (!i18n.languages || !i18n.languages.length) {\n warnOnce('i18n.languages were undefined or empty', i18n.languages);\n return true;\n }\n const isNewerI18next = i18n.options.ignoreJSONStructure !== undefined;\n if (!isNewerI18next) {\n return oldI18nextHasLoadedNamespace(ns, i18n, options);\n }\n return i18n.hasLoadedNamespace(ns, {\n lng: options.lng,\n precheck: (i18nInstance, loadNotPending) => {\n if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18nInstance.services.backendConnector.backend && i18nInstance.isLanguageChangingTo && !loadNotPending(i18nInstance.isLanguageChangingTo, ns)) return false;\n }\n });\n}\nexport function getDisplayName(Component) {\n return Component.displayName || Component.name || (typeof Component === 'string' && Component.length > 0 ? Component : 'Unknown');\n}","const matchHtmlEntity = /&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g;\nconst htmlEntities = {\n '&amp;': '&',\n '&#38;': '&',\n '&lt;': '<',\n '&#60;': '<',\n '&gt;': '>',\n '&#62;': '>',\n '&apos;': \"'\",\n '&#39;': \"'\",\n '&quot;': '\"',\n '&#34;': '\"',\n '&nbsp;': ' ',\n '&#160;': ' ',\n '&copy;': '©',\n '&#169;': '©',\n '&reg;': '®',\n '&#174;': '®',\n '&hellip;': '…',\n '&#8230;': '…',\n '&#x2F;': '/',\n '&#47;': '/'\n};\nconst unescapeHtmlEntity = m => htmlEntities[m];\nexport const unescape = text => text.replace(matchHtmlEntity, unescapeHtmlEntity);","import { unescape } from './unescape.js';\nlet defaultOptions = {\n bindI18n: 'languageChanged',\n bindI18nStore: '',\n transEmptyNodeValue: '',\n transSupportBasicHtmlNodes: true,\n transWrapTextNodes: '',\n transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'],\n useSuspense: true,\n unescape\n};\nexport function setDefaults() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n defaultOptions = {\n ...defaultOptions,\n ...options\n };\n}\nexport function getDefaults() {\n return defaultOptions;\n}","let i18nInstance;\nexport function setI18n(instance) {\n i18nInstance = instance;\n}\nexport function getI18n() {\n return i18nInstance;\n}","import { createContext } from 'react';\nimport { getDefaults, setDefaults } from './defaults.js';\nimport { getI18n, setI18n } from './i18nInstance.js';\nimport { initReactI18next } from './initReactI18next.js';\nexport { getDefaults, setDefaults, getI18n, setI18n, initReactI18next };\nexport const I18nContext = createContext();\nexport class ReportNamespaces {\n constructor() {\n this.usedNamespaces = {};\n }\n addUsedNamespaces(namespaces) {\n namespaces.forEach(ns => {\n if (!this.usedNamespaces[ns]) this.usedNamespaces[ns] = true;\n });\n }\n getUsedNamespaces() {\n return Object.keys(this.usedNamespaces);\n }\n}\nexport function composeInitialProps(ForComponent) {\n return ctx => new Promise(resolve => {\n const i18nInitialProps = getInitialProps();\n if (ForComponent.getInitialProps) {\n ForComponent.getInitialProps(ctx).then(componentsInitialProps => {\n resolve({\n ...componentsInitialProps,\n ...i18nInitialProps\n });\n });\n } else {\n resolve(i18nInitialProps);\n }\n });\n}\nexport function getInitialProps() {\n const i18n = getI18n();\n const namespaces = i18n.reportNamespaces ? i18n.reportNamespaces.getUsedNamespaces() : [];\n const ret = {};\n const initialI18nStore = {};\n i18n.languages.forEach(l => {\n initialI18nStore[l] = {};\n namespaces.forEach(ns => {\n initialI18nStore[l][ns] = i18n.getResourceBundle(l, ns) || {};\n });\n });\n ret.initialI18nStore = initialI18nStore;\n ret.initialLanguage = i18n.language;\n return ret;\n}","import { useState, useEffect, useContext, useRef, useCallback } from 'react';\nimport { getI18n, getDefaults, ReportNamespaces, I18nContext } from './context.js';\nimport { warnOnce, loadNamespaces, loadLanguages, hasLoadedNamespace } from './utils.js';\nconst usePrevious = (value, ignore) => {\n const ref = useRef();\n useEffect(() => {\n ref.current = ignore ? ref.current : value;\n }, [value, ignore]);\n return ref.current;\n};\nfunction alwaysNewT(i18n, language, namespace, keyPrefix) {\n return i18n.getFixedT(language, namespace, keyPrefix);\n}\nfunction useMemoizedT(i18n, language, namespace, keyPrefix) {\n return useCallback(alwaysNewT(i18n, language, namespace, keyPrefix), [i18n, language, namespace, keyPrefix]);\n}\nexport function useTranslation(ns) {\n let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n i18n: i18nFromProps\n } = props;\n const {\n i18n: i18nFromContext,\n defaultNS: defaultNSFromContext\n } = useContext(I18nContext) || {};\n const i18n = i18nFromProps || i18nFromContext || getI18n();\n if (i18n && !i18n.reportNamespaces) i18n.reportNamespaces = new ReportNamespaces();\n if (!i18n) {\n warnOnce('You will need to pass in an i18next instance by using initReactI18next');\n const notReadyT = (k, optsOrDefaultValue) => {\n if (typeof optsOrDefaultValue === 'string') return optsOrDefaultValue;\n if (optsOrDefaultValue && typeof optsOrDefaultValue === 'object' && typeof optsOrDefaultValue.defaultValue === 'string') return optsOrDefaultValue.defaultValue;\n return Array.isArray(k) ? k[k.length - 1] : k;\n };\n const retNotReady = [notReadyT, {}, false];\n retNotReady.t = notReadyT;\n retNotReady.i18n = {};\n retNotReady.ready = false;\n return retNotReady;\n }\n if (i18n.options.react && i18n.options.react.wait !== undefined) warnOnce('It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.');\n const i18nOptions = {\n ...getDefaults(),\n ...i18n.options.react,\n ...props\n };\n const {\n useSuspense,\n keyPrefix\n } = i18nOptions;\n let namespaces = ns || defaultNSFromContext || i18n.options && i18n.options.defaultNS;\n namespaces = typeof namespaces === 'string' ? [namespaces] : namespaces || ['translation'];\n if (i18n.reportNamespaces.addUsedNamespaces) i18n.reportNamespaces.addUsedNamespaces(namespaces);\n const ready = (i18n.isInitialized || i18n.initializedStoreOnce) && namespaces.every(n => hasLoadedNamespace(n, i18n, i18nOptions));\n const memoGetT = useMemoizedT(i18n, props.lng || null, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix);\n const getT = () => memoGetT;\n const [t, setT] = useState(getT);\n let joinedNS = namespaces.join();\n if (props.lng) joinedNS = `${props.lng}${joinedNS}`;\n const previousJoinedNS = usePrevious(joinedNS);\n const isMounted = useRef(true);\n useEffect(() => {\n const {\n bindI18n,\n bindI18nStore\n } = i18nOptions;\n isMounted.current = true;\n if (!ready && !useSuspense) {\n if (props.lng) {\n loadLanguages(i18n, props.lng, namespaces, () => {\n if (isMounted.current) setT(getT);\n });\n } else {\n loadNamespaces(i18n, namespaces, () => {\n if (isMounted.current) {\n setT(() => alwaysNewT(i18n, props.lng || null, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix));\n }\n });\n }\n }\n if (ready && previousJoinedNS && previousJoinedNS !== joinedNS && isMounted.current) {\n setT(getT);\n }\n function boundReset() {\n if (isMounted.current) setT(getT);\n }\n if (bindI18n && i18n) i18n.on(bindI18n, boundReset);\n if (bindI18nStore && i18n) i18n.store.on(bindI18nStore, boundReset);\n return () => {\n isMounted.current = false;\n if (bindI18n && i18n) bindI18n.split(' ').forEach(e => i18n.off(e, boundReset));\n if (bindI18nStore && i18n) bindI18nStore.split(' ').forEach(e => i18n.store.off(e, boundReset));\n };\n }, [i18n, joinedNS]);\n const isInitial = useRef(true);\n useEffect(() => {\n if (isMounted.current && !isInitial.current) {\n setT(getT);\n }\n isInitial.current = false;\n }, [i18n, keyPrefix]);\n const ret = [t, i18n, ready];\n ret.t = t;\n ret.i18n = i18n;\n ret.ready = ready;\n if (ready) return ret;\n if (!ready && !useSuspense) return ret;\n throw new Promise(resolve => {\n if (props.lng) {\n loadLanguages(i18n, props.lng, namespaces, () => resolve());\n } else {\n loadNamespaces(i18n, namespaces, () => resolve());\n }\n });\n}","/* eslint-disable no-restricted-imports */\nimport {\n Box,\n type BoxHeight,\n Button as UIButton,\n Dialog as UIDialog,\n type DialogProps as UIDialogProps,\n Flex,\n Text,\n} from '@sanity/ui'\nimport {type ComponentProps, forwardRef, type HTMLProps, type ReactNode, type Ref} from 'react'\nimport {useTranslation} from 'react-i18next'\n\n/** @internal */\nexport type DialogProps = Pick<\n UIDialogProps,\n | '__unstable_autoFocus'\n | '__unstable_hideCloseButton'\n | 'contentRef'\n | 'header'\n | 'id'\n | 'onActivate'\n | 'onClickOutside'\n | 'onClose'\n | 'portal'\n | 'position'\n | 'scheme'\n | 'width'\n> & {\n /**\n * Dialog body height.\n * Set this to 'fill' (i.e. 100%) if you want overflow body content to be contained\n * and not trigger dynamic border visibility.\n */\n bodyHeight?: BoxHeight\n children?: ReactNode\n footer?: {\n cancelButton?: Omit<ComponentProps<typeof UIButton>, 'fontSize' | 'padding'>\n confirmButton?: Omit<ComponentProps<typeof UIButton>, 'fontSize' | 'padding'>\n /**\n * Description to be displayed side by side with the buttons.\n */\n description?: string\n }\n /**\n * If enabled, removes all default padding from dialog content.\n */\n padding?: boolean\n}\n\n/**\n * Customized Sanity UI <Dialog> that enforces an opinionated footer layout with a max of two buttons (confirm and cancel).\n *\n * @internal\n */\nexport const Dialog = forwardRef(function Dialog(\n {\n bodyHeight,\n children,\n footer,\n padding = true,\n ...props\n }: DialogProps & Pick<HTMLProps<HTMLDivElement>, 'onDragEnter' | 'onDrop'>,\n ref: Ref<HTMLDivElement>,\n) {\n const {t} = useTranslation()\n\n return (\n <UIDialog\n {...props}\n animate\n ref={ref}\n footer={\n (footer?.confirmButton || footer?.cancelButton) && (\n <Flex width=\"full\" gap={3} justify=\"flex-end\" padding={3} align=\"center\">\n {footer?.description && (\n <Box flex={1} paddingLeft={1}>\n <Text size={1} muted>\n {footer.description}\n </Text>\n </Box>\n )}\n {props.onClose && (\n <UIButton\n mode=\"bleed\"\n padding={2}\n text={t('common.dialog.cancel-button.text')}\n tone=\"default\"\n onClick={props.onClose}\n data-testid=\"cancel-button\"\n {...footer.cancelButton}\n />\n )}\n {footer.confirmButton && (\n <UIButton\n mode=\"default\"\n padding={2}\n text={t('common.dialog.confirm-button.text')}\n tone=\"critical\"\n data-testid=\"confirm-button\"\n {...footer.confirmButton}\n />\n )}\n </Flex>\n )\n }\n >\n <Box height={bodyHeight} padding={padding ? 4 : 0}>\n {children}\n </Box>\n </UIDialog>\n )\n})\n","/* eslint-disable no-restricted-imports */\nimport {MenuGroup as UIMenuGroup, type MenuGroupProps as UIMenuGroupProps} from '@sanity/ui'\nimport {type HTMLProps, useCallback} from 'react'\n\nimport {\n ConditionalWrapper,\n type ConditionalWrapperRenderWrapperCallback,\n} from '../conditionalWrapper/ConditionalWrapper'\nimport {Tooltip, type TooltipProps} from '../tooltip/Tooltip'\n\n/** @internal */\nexport type MenuGroupProps = Pick<UIMenuGroupProps, 'icon' | 'popover' | 'text' | 'tone'>\n\n/**\n * Customized Sanity UI <MenuGroup> component with pre-defined layout options.\n *\n * @internal\n */\nexport const MenuGroup = (\n props: MenuGroupProps &\n Omit<HTMLProps<HTMLDivElement>, 'as' | 'height' | 'ref' | 'tabIndex' | 'popover'> & {\n tooltipProps?: TooltipProps | null\n },\n) => {\n const {tooltipProps} = props\n\n const renderWrapper = useCallback<ConditionalWrapperRenderWrapperCallback>(\n (children) => {\n return (\n <Tooltip content={tooltipProps?.content} portal {...tooltipProps}>\n {/* This div is needed to make the tooltip work in disabled menu items */}\n <div>{children}</div>\n </Tooltip>\n )\n },\n [tooltipProps],\n )\n\n return (\n <ConditionalWrapper condition={!!tooltipProps} wrapper={renderWrapper}>\n <UIMenuGroup {...props} fontSize={1} padding={3} />\n </ConditionalWrapper>\n )\n}\n","/* eslint-disable no-restricted-imports */\nimport {Popover as UIPopover, type PopoverProps as UIPopoverProps} from '@sanity/ui'\nimport {type ForwardedRef, forwardRef, type HTMLProps} from 'react'\n\n/** @internal */\nexport type PopoverProps = Omit<UIPopoverProps, 'animate'>\n\n/**\n * Customized Sanity UI <Popover> that forces `animate=true`\n *\n * All Popovers in the studio should be animated.\n *\n * @internal\n */\nexport const Popover = forwardRef(function Popover(\n props: PopoverProps & Omit<HTMLProps<HTMLDivElement>, 'as' | 'children' | 'content' | 'width'>,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n return <UIPopover {...props} animate ref={ref} />\n})\n","/* eslint-disable no-restricted-imports */\nimport {Tab as UITab, type TabProps as UITabProps} from '@sanity/ui'\nimport {type ForwardedRef, forwardRef, type HTMLProps} from 'react'\n\n/**\n * @internal\n *\n * Padding and font sizes are fixed in Studio UI <Tab> components.\n */\nexport type TabProps = Pick<\n UITabProps,\n 'aria-controls' | 'focused' | 'icon' | 'id' | 'label' | 'selected' | 'tone'\n>\n\n/**\n * Customized Sanity UI <Tab> with limited layout options.\n *\n * @internal\n */\nexport const Tab = forwardRef(function Tab(\n {tone = 'default', ...props}: TabProps & Omit<HTMLProps<HTMLButtonElement>, 'as' | 'size'>,\n ref: ForwardedRef<HTMLButtonElement>,\n) {\n return <UITab {...props} muted padding={2} ref={ref} tone={tone} />\n})\n","import { Subject } from \"rxjs\";\nvar pass = function (input$) { return input$; };\nexport function observableCallback(operator) {\n if (operator === void 0) { operator = pass; }\n var subject = new Subject();\n return [subject.pipe(operator), function (arg) { return subject.next(arg); }];\n}\n","\"use client\";\nimport { c } from \"react-compiler-runtime\";\nimport { useSyncExternalStore, useState, useEffect } from \"react\";\nimport { catchError, finalize, share, timer, asapScheduler, of } from \"rxjs\";\nimport { map, tap } from \"rxjs/operators\";\nimport { observableCallback } from \"observable-callback\";\nimport { useEffectEvent } from \"use-effect-event\";\nfunction getValue(value) {\n return typeof value == \"function\" ? value() : value;\n}\nconst cache = /* @__PURE__ */ new WeakMap();\nfunction useObservable(observable, initialValue) {\n const $ = c(9);\n let t0;\n if (!cache.has(observable)) {\n const state = {\n didEmit: !1\n }, entry = {\n state,\n observable: observable.pipe(map(_temp$1), catchError(_temp2), tap((t12) => {\n const {\n snapshot,\n error: error_0\n } = t12;\n state.didEmit = !0, state.snapshot = snapshot, state.error = error_0;\n }), map(_temp3), finalize(() => cache.delete(observable)), share({\n resetOnRefCountZero: _temp4\n })),\n getSnapshot: (initialValue_0) => {\n if (state.error)\n throw state.error;\n return state.didEmit ? state.snapshot : getValue(initialValue_0);\n }\n };\n entry.observable.subscribe().unsubscribe(), cache.set(observable, entry);\n }\n let t1;\n $[0] !== observable ? (t1 = cache.get(observable), $[0] = observable, $[1] = t1) : t1 = $[1], t0 = t1;\n const instance = t0;\n let t2;\n $[2] !== instance.observable ? (t2 = (onStoreChange) => {\n const subscription_0 = instance.observable.subscribe(onStoreChange);\n return () => {\n subscription_0.unsubscribe();\n };\n }, $[2] = instance.observable, $[3] = t2) : t2 = $[3];\n const subscribe = t2;\n let t3;\n $[4] !== initialValue || $[5] !== instance ? (t3 = () => instance.getSnapshot(initialValue), $[4] = initialValue, $[5] = instance, $[6] = t3) : t3 = $[6];\n let t4;\n return $[7] !== initialValue ? (t4 = typeof initialValue > \"u\" ? void 0 : () => getValue(initialValue), $[7] = initialValue, $[8] = t4) : t4 = $[8], useSyncExternalStore(subscribe, t3, t4);\n}\nfunction _temp4() {\n return timer(0, asapScheduler);\n}\nfunction _temp3(value_0) {\n}\nfunction _temp2(error) {\n return of({\n snapshot: void 0,\n error\n });\n}\nfunction _temp$1(value) {\n return {\n snapshot: value,\n error: void 0\n };\n}\nfunction useObservableEvent(handleEvent) {\n const $ = c(7), [t0] = useState(_temp), [calls$, call] = t0;\n let t1;\n $[0] !== handleEvent ? (t1 = (observable) => handleEvent(observable), $[0] = handleEvent, $[1] = t1) : t1 = $[1];\n const onEvent = useEffectEvent(t1);\n let t2;\n $[2] !== calls$ || $[3] !== onEvent ? (t2 = () => {\n const subscription = calls$.pipe((observable_0) => onEvent(observable_0)).subscribe();\n return () => subscription.unsubscribe();\n }, $[2] = calls$, $[3] = onEvent, $[4] = t2) : t2 = $[4];\n let t3;\n return $[5] !== calls$ ? (t3 = [calls$], $[5] = calls$, $[6] = t3) : t3 = $[6], useEffect(t2, t3), call;\n}\nfunction _temp() {\n return observableCallback();\n}\nexport {\n useObservable,\n useObservableEvent\n};\n//# sourceMappingURL=index.js.map\n","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","export default function toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n var number = Number(dirtyNumber);\n if (isNaN(number)) {\n return number;\n }\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","export default function requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n }\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport default function toDate(argument) {\n requiredArgs(1, arguments);\n var argStr = Object.prototype.toString.call(argument);\n\n // Clone the date\n if (argument instanceof Date || _typeof(argument) === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments\");\n // eslint-disable-next-line no-console\n console.warn(new Error().stack);\n }\n return new Date(NaN);\n }\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} - the new date with the days added\n * @throws {TypeError} - 2 arguments required\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nexport default function addDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n if (isNaN(amount)) {\n return new Date(NaN);\n }\n if (!amount) {\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n return date;\n }\n date.setDate(date.getDate() + amount);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var timestamp = toDate(dirtyDate).getTime();\n var amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount);\n}","var defaultOptions = {};\nexport function getDefaultOptions() {\n return defaultOptions;\n}\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}","/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds(date) {\n var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n utcDate.setUTCFullYear(date.getFullYear());\n return date.getTime() - utcDate.getTime();\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addDays from \"../addDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addWeeks\n * @category Week Helpers\n * @summary Add the specified number of weeks to the given date.\n *\n * @description\n * Add the specified number of week to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the weeks added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 4 weeks to 1 September 2014:\n * const result = addWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Sep 29 2014 00:00:00\n */\nexport default function addWeeks(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n var days = amount * 7;\n return addDays(dirtyDate, days);\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport default function isDate(value) {\n requiredArgs(1, arguments);\n return value instanceof Date || _typeof(value) === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}","import isDate from \"../isDate/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport default function isValid(dirtyDate) {\n requiredArgs(1, arguments);\n if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') {\n return false;\n }\n var date = toDate(dirtyDate);\n return !isNaN(Number(date));\n}","import addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount);\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\nexport default function getUTCDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nexport default function getUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import getUTCISOWeekYear from \"../getUTCISOWeekYear/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getUTCISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCISOWeek(fourthOfJanuary);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport startOfUTCISOWeekYear from \"../startOfUTCISOWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function getUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, options);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, options);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import getUTCWeekYear from \"../getUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n var year = getUTCWeekYear(dirtyDate, options);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, options);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport startOfUTCWeekYear from \"../startOfUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","export default function addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n while (output.length < targetLength) {\n output = '0' + output;\n }\n return sign + output;\n}","import addLeadingZeros from \"../../addLeadingZeros/index.js\";\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\nvar formatters = {\n // Year\n y: function y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n },\n // Month\n M: function M(date, token) {\n var month = date.getUTCMonth();\n return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n // Day of the month\n d: function d(date, token) {\n return addLeadingZeros(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function a(date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return dayPeriodEnumValue.toUpperCase();\n case 'aaa':\n return dayPeriodEnumValue;\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n }\n },\n // Hour [1-12]\n h: function h(date, token) {\n return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function H(date, token) {\n return addLeadingZeros(date.getUTCHours(), token.length);\n },\n // Minute\n m: function m(date, token) {\n return addLeadingZeros(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function s(date, token) {\n return addLeadingZeros(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function S(date, token) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return addLeadingZeros(fractionalSeconds, token.length);\n }\n};\nexport default formatters;","import getUTCDayOfYear from \"../../../_lib/getUTCDayOfYear/index.js\";\nimport getUTCISOWeek from \"../../../_lib/getUTCISOWeek/index.js\";\nimport getUTCISOWeekYear from \"../../../_lib/getUTCISOWeekYear/index.js\";\nimport getUTCWeek from \"../../../_lib/getUTCWeek/index.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport addLeadingZeros from \"../../addLeadingZeros/index.js\";\nimport lightFormatters from \"../lightFormatters/index.js\";\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n};\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n // Era\n G: function G(date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {\n width: 'abbreviated'\n });\n // A, B\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function y(date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n return lightFormatters.y(date, token);\n },\n // Local week-numbering year\n Y: function Y(date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function R(date, token) {\n var isoWeekYear = getUTCISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function u(date, token) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length);\n },\n // Quarter\n Q: function Q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'QQ':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone quarter\n q: function q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'qq':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function M(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n case 'M':\n case 'MM':\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n case 'MMMM':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone month\n L: function L(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n case 'LL':\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n case 'LLLL':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Local week of year\n w: function w(date, token, localize, options) {\n var week = getUTCWeek(date, options);\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n return addLeadingZeros(week, token.length);\n },\n // ISO week of year\n I: function I(date, token, localize) {\n var isoWeek = getUTCISOWeek(date);\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n return addLeadingZeros(isoWeek, token.length);\n },\n // Day of the month\n d: function d(date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), {\n unit: 'date'\n });\n }\n return lightFormatters.d(date, token);\n },\n // Day of year\n D: function D(date, token, localize) {\n var dayOfYear = getUTCDayOfYear(date);\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n return addLeadingZeros(dayOfYear, token.length);\n },\n // Day of week\n E: function E(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Local day of week\n e: function e(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone local day of week\n c: function c(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // ISO day of week\n i: function i(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM or PM\n a: function a(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM, PM, midnight, noon\n b: function b(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n }\n switch (token) {\n case 'b':\n case 'bb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: function B(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Hour [1-12]\n h: function h(date, token, localize) {\n if (token === 'ho') {\n var hours = date.getUTCHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return lightFormatters.h(date, token);\n },\n // Hour [0-23]\n H: function H(date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), {\n unit: 'hour'\n });\n }\n return lightFormatters.H(date, token);\n },\n // Hour [0-11]\n K: function K(date, token, localize) {\n var hours = date.getUTCHours() % 12;\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Hour [1-24]\n k: function k(date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Minute\n m: function m(date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: 'minute'\n });\n }\n return lightFormatters.m(date, token);\n },\n // Second\n s: function s(date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: 'second'\n });\n }\n return lightFormatters.s(date, token);\n },\n // Fraction of second\n S: function S(date, token) {\n return lightFormatters.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function X(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n if (timezoneOffset === 0) {\n return 'Z';\n }\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function x(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function O(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function z(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function t(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function T(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length);\n }\n};\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, dirtyDelimiter);\n}\nfunction formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n var minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\nexport default formatters;","var dateLongFormatter = function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n};\nvar timeLongFormatter = function timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n};\nvar dateTimeLongFormatter = function dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/) || [];\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n var dateTimeFormat;\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n};\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nexport default longFormatters;","var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token, format, input) {\n if (token === 'YYYY') {\n throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'YY') {\n throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'D') {\n throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'DD') {\n throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n }\n}","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXWeeks: {\n one: 'about 1 week',\n other: 'about {{count}} weeks'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weeks'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString());\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n return result;\n};\nexport default formatDistance;","export default function buildFormatLongFn(args) {\n return function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // TODO: Remove String()\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\nexport default formatRelative;","export default function buildLocalizeFn(args) {\n return function (dirtyIndex, options) {\n var context = options !== null && options !== void 0 && options.context ? String(options.context) : 'standalone';\n var valuesArray;\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options !== null && options !== void 0 && options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n var _width = options !== null && options !== void 0 && options.width ? String(options.width) : args.defaultWidth;\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n var rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n case 2:\n return number + 'nd';\n case 3:\n return number + 'rd';\n }\n }\n return number + 'th';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","export default function buildMatchFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n if (!matchResult) {\n return null;\n }\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n }) : findKey(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n var value;\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n return undefined;\n}\nfunction findIndex(array, predicate) {\n for (var key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}","export default function buildMatchPatternFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n code: 'en-US',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","import isValid from \"../isValid/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport formatters from \"../_lib/format/formatters/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, options) {\n var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n requiredArgs(2, arguments);\n var formatStr = String(dirtyFormatStr);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n var firstWeekContainsDate = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var weekStartsOn = toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n var originalDate = toDate(dirtyDate);\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset);\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n }).join('').match(formattingTokensRegExp).map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n var firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n var formatter = formatters[firstCharacter];\n if (formatter) {\n if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n return substring;\n }).join('');\n return result;\n}\nfunction cleanEscapedString(input) {\n var matched = input.match(escapedStringRegExp);\n if (!matched) {\n return input;\n }\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isAfter\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * @param {Date|Number} date - the date that should be after the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is after the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * const result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\nexport default function isAfter(dirtyDate, dirtyDateToCompare) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dateToCompare = toDate(dirtyDateToCompare);\n return date.getTime() > dateToCompare.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @param {Date|Number} date - the date that should be before the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is before the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * const result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nexport default function isBefore(dirtyDate, dirtyDateToCompare) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dateToCompare = toDate(dirtyDateToCompare);\n return date.getTime() < dateToCompare.getTime();\n}","'use strict';\n\nclass QuickLRU {\n\tconstructor(options = {}) {\n\t\tif (!(options.maxSize && options.maxSize > 0)) {\n\t\t\tthrow new TypeError('`maxSize` must be a number greater than 0');\n\t\t}\n\n\t\tthis.maxSize = options.maxSize;\n\t\tthis.onEviction = options.onEviction;\n\t\tthis.cache = new Map();\n\t\tthis.oldCache = new Map();\n\t\tthis._size = 0;\n\t}\n\n\t_set(key, value) {\n\t\tthis.cache.set(key, value);\n\t\tthis._size++;\n\n\t\tif (this._size >= this.maxSize) {\n\t\t\tthis._size = 0;\n\n\t\t\tif (typeof this.onEviction === 'function') {\n\t\t\t\tfor (const [key, value] of this.oldCache.entries()) {\n\t\t\t\t\tthis.onEviction(key, value);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.oldCache = this.cache;\n\t\t\tthis.cache = new Map();\n\t\t}\n\t}\n\n\tget(key) {\n\t\tif (this.cache.has(key)) {\n\t\t\treturn this.cache.get(key);\n\t\t}\n\n\t\tif (this.oldCache.has(key)) {\n\t\t\tconst value = this.oldCache.get(key);\n\t\t\tthis.oldCache.delete(key);\n\t\t\tthis._set(key, value);\n\t\t\treturn value;\n\t\t}\n\t}\n\n\tset(key, value) {\n\t\tif (this.cache.has(key)) {\n\t\t\tthis.cache.set(key, value);\n\t\t} else {\n\t\t\tthis._set(key, value);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\thas(key) {\n\t\treturn this.cache.has(key) || this.oldCache.has(key);\n\t}\n\n\tpeek(key) {\n\t\tif (this.cache.has(key)) {\n\t\t\treturn this.cache.get(key);\n\t\t}\n\n\t\tif (this.oldCache.has(key)) {\n\t\t\treturn this.oldCache.get(key);\n\t\t}\n\t}\n\n\tdelete(key) {\n\t\tconst deleted = this.cache.delete(key);\n\t\tif (deleted) {\n\t\t\tthis._size--;\n\t\t}\n\n\t\treturn this.oldCache.delete(key) || deleted;\n\t}\n\n\tclear() {\n\t\tthis.cache.clear();\n\t\tthis.oldCache.clear();\n\t\tthis._size = 0;\n\t}\n\n\t* keys() {\n\t\tfor (const [key] of this) {\n\t\t\tyield key;\n\t\t}\n\t}\n\n\t* values() {\n\t\tfor (const [, value] of this) {\n\t\t\tyield value;\n\t\t}\n\t}\n\n\t* [Symbol.iterator]() {\n\t\tfor (const item of this.cache) {\n\t\t\tyield item;\n\t\t}\n\n\t\tfor (const item of this.oldCache) {\n\t\t\tconst [key] = item;\n\t\t\tif (!this.cache.has(key)) {\n\t\t\t\tyield item;\n\t\t\t}\n\t\t}\n\t}\n\n\tget size() {\n\t\tlet oldCacheSize = 0;\n\t\tfor (const key of this.oldCache.keys()) {\n\t\t\tif (!this.cache.has(key)) {\n\t\t\t\toldCacheSize++;\n\t\t\t}\n\t\t}\n\n\t\treturn Math.min(this._size + oldCacheSize, this.maxSize);\n\t}\n}\n\nmodule.exports = QuickLRU;\n","function cloneDiff(diff2) {\n const [type, patch] = diff2;\n return [type, patch];\n}\nfunction getCommonOverlap(textA, textB) {\n let text1 = textA, text2 = textB;\n const text1Length = text1.length, text2Length = text2.length;\n if (text1Length === 0 || text2Length === 0)\n return 0;\n text1Length > text2Length ? text1 = text1.substring(text1Length - text2Length) : text1Length < text2Length && (text2 = text2.substring(0, text1Length));\n const textLength = Math.min(text1Length, text2Length);\n if (text1 === text2)\n return textLength;\n let best = 0, length = 1;\n for (let found = 0; found !== -1; ) {\n const pattern = text1.substring(textLength - length);\n if (found = text2.indexOf(pattern), found === -1)\n return best;\n length += found, (found === 0 || text1.substring(textLength - length) === text2.substring(0, length)) && (best = length, length++);\n }\n return best;\n}\nfunction getCommonPrefix(text1, text2) {\n if (!text1 || !text2 || text1[0] !== text2[0])\n return 0;\n let pointerMin = 0, pointerMax = Math.min(text1.length, text2.length), pointerMid = pointerMax, pointerStart = 0;\n for (; pointerMin < pointerMid; )\n text1.substring(pointerStart, pointerMid) === text2.substring(pointerStart, pointerMid) ? (pointerMin = pointerMid, pointerStart = pointerMin) : pointerMax = pointerMid, pointerMid = Math.floor((pointerMax - pointerMin) / 2 + pointerMin);\n return pointerMid;\n}\nfunction getCommonSuffix(text1, text2) {\n if (!text1 || !text2 || text1[text1.length - 1] !== text2[text2.length - 1])\n return 0;\n let pointerMin = 0, pointerMax = Math.min(text1.length, text2.length), pointerMid = pointerMax, pointerEnd = 0;\n for (; pointerMin < pointerMid; )\n text1.substring(text1.length - pointerMid, text1.length - pointerEnd) === text2.substring(text2.length - pointerMid, text2.length - pointerEnd) ? (pointerMin = pointerMid, pointerEnd = pointerMin) : pointerMax = pointerMid, pointerMid = Math.floor((pointerMax - pointerMin) / 2 + pointerMin);\n return pointerMid;\n}\nfunction isHighSurrogate(char) {\n const charCode = char.charCodeAt(0);\n return charCode >= 55296 && charCode <= 56319;\n}\nfunction isLowSurrogate(char) {\n const charCode = char.charCodeAt(0);\n return charCode >= 56320 && charCode <= 57343;\n}\nfunction bisect(text1, text2, deadline) {\n const text1Length = text1.length, text2Length = text2.length, maxD = Math.ceil((text1Length + text2Length) / 2), vOffset = maxD, vLength = 2 * maxD, v1 = new Array(vLength), v2 = new Array(vLength);\n for (let x = 0; x < vLength; x++)\n v1[x] = -1, v2[x] = -1;\n v1[vOffset + 1] = 0, v2[vOffset + 1] = 0;\n const delta = text1Length - text2Length, front = delta % 2 !== 0;\n let k1start = 0, k1end = 0, k2start = 0, k2end = 0;\n for (let d = 0; d < maxD && !(Date.now() > deadline); d++) {\n for (let k1 = -d + k1start; k1 <= d - k1end; k1 += 2) {\n const k1Offset = vOffset + k1;\n let x1;\n k1 === -d || k1 !== d && v1[k1Offset - 1] < v1[k1Offset + 1] ? x1 = v1[k1Offset + 1] : x1 = v1[k1Offset - 1] + 1;\n let y1 = x1 - k1;\n for (; x1 < text1Length && y1 < text2Length && text1.charAt(x1) === text2.charAt(y1); )\n x1++, y1++;\n if (v1[k1Offset] = x1, x1 > text1Length)\n k1end += 2;\n else if (y1 > text2Length)\n k1start += 2;\n else if (front) {\n const k2Offset = vOffset + delta - k1;\n if (k2Offset >= 0 && k2Offset < vLength && v2[k2Offset] !== -1) {\n const x2 = text1Length - v2[k2Offset];\n if (x1 >= x2)\n return bisectSplit(text1, text2, x1, y1, deadline);\n }\n }\n }\n for (let k2 = -d + k2start; k2 <= d - k2end; k2 += 2) {\n const k2Offset = vOffset + k2;\n let x2;\n k2 === -d || k2 !== d && v2[k2Offset - 1] < v2[k2Offset + 1] ? x2 = v2[k2Offset + 1] : x2 = v2[k2Offset - 1] + 1;\n let y2 = x2 - k2;\n for (; x2 < text1Length && y2 < text2Length && text1.charAt(text1Length - x2 - 1) === text2.charAt(text2Length - y2 - 1); )\n x2++, y2++;\n if (v2[k2Offset] = x2, x2 > text1Length)\n k2end += 2;\n else if (y2 > text2Length)\n k2start += 2;\n else if (!front) {\n const k1Offset = vOffset + delta - k2;\n if (k1Offset >= 0 && k1Offset < vLength && v1[k1Offset] !== -1) {\n const x1 = v1[k1Offset], y1 = vOffset + x1 - k1Offset;\n if (x2 = text1Length - x2, x1 >= x2)\n return bisectSplit(text1, text2, x1, y1, deadline);\n }\n }\n }\n }\n return [\n [DIFF_DELETE, text1],\n [DIFF_INSERT, text2]\n ];\n}\nfunction bisectSplit(text1, text2, x, y, deadline) {\n const text1a = text1.substring(0, x), text2a = text2.substring(0, y), text1b = text1.substring(x), text2b = text2.substring(y), diffs = doDiff(text1a, text2a, { checkLines: !1, deadline }), diffsb = doDiff(text1b, text2b, { checkLines: !1, deadline });\n return diffs.concat(diffsb);\n}\nfunction findHalfMatch(text1, text2, timeout = 1) {\n if (timeout <= 0)\n return null;\n const longText = text1.length > text2.length ? text1 : text2, shortText = text1.length > text2.length ? text2 : text1;\n if (longText.length < 4 || shortText.length * 2 < longText.length)\n return null;\n const halfMatch1 = halfMatchI(longText, shortText, Math.ceil(longText.length / 4)), halfMatch2 = halfMatchI(longText, shortText, Math.ceil(longText.length / 2));\n let halfMatch;\n if (halfMatch1 && halfMatch2)\n halfMatch = halfMatch1[4].length > halfMatch2[4].length ? halfMatch1 : halfMatch2;\n else {\n if (!halfMatch1 && !halfMatch2)\n return null;\n halfMatch2 ? halfMatch1 || (halfMatch = halfMatch2) : halfMatch = halfMatch1;\n }\n if (!halfMatch)\n throw new Error(\"Unable to find a half match.\");\n let text1A, text1B, text2A, text2B;\n text1.length > text2.length ? (text1A = halfMatch[0], text1B = halfMatch[1], text2A = halfMatch[2], text2B = halfMatch[3]) : (text2A = halfMatch[0], text2B = halfMatch[1], text1A = halfMatch[2], text1B = halfMatch[3]);\n const midCommon = halfMatch[4];\n return [text1A, text1B, text2A, text2B, midCommon];\n}\nfunction halfMatchI(longText, shortText, i) {\n const seed = longText.slice(i, i + Math.floor(longText.length / 4));\n let j = -1, bestCommon = \"\", bestLongTextA, bestLongTextB, bestShortTextA, bestShortTextB;\n for (; (j = shortText.indexOf(seed, j + 1)) !== -1; ) {\n const prefixLength = getCommonPrefix(longText.slice(i), shortText.slice(j)), suffixLength = getCommonSuffix(longText.slice(0, i), shortText.slice(0, j));\n bestCommon.length < suffixLength + prefixLength && (bestCommon = shortText.slice(j - suffixLength, j) + shortText.slice(j, j + prefixLength), bestLongTextA = longText.slice(0, i - suffixLength), bestLongTextB = longText.slice(i + prefixLength), bestShortTextA = shortText.slice(0, j - suffixLength), bestShortTextB = shortText.slice(j + prefixLength));\n }\n return bestCommon.length * 2 >= longText.length ? [\n bestLongTextA || \"\",\n bestLongTextB || \"\",\n bestShortTextA || \"\",\n bestShortTextB || \"\",\n bestCommon || \"\"\n ] : null;\n}\nfunction charsToLines(diffs, lineArray) {\n for (let x = 0; x < diffs.length; x++) {\n const chars = diffs[x][1], text = [];\n for (let y = 0; y < chars.length; y++)\n text[y] = lineArray[chars.charCodeAt(y)];\n diffs[x][1] = text.join(\"\");\n }\n}\nfunction linesToChars(textA, textB) {\n const lineArray = [], lineHash = {};\n lineArray[0] = \"\";\n function diffLinesToMunge(text) {\n let chars = \"\", lineStart = 0, lineEnd = -1, lineArrayLength = lineArray.length;\n for (; lineEnd < text.length - 1; ) {\n lineEnd = text.indexOf(`\n`, lineStart), lineEnd === -1 && (lineEnd = text.length - 1);\n let line = text.slice(lineStart, lineEnd + 1);\n (lineHash.hasOwnProperty ? lineHash.hasOwnProperty(line) : lineHash[line] !== void 0) ? chars += String.fromCharCode(lineHash[line]) : (lineArrayLength === maxLines && (line = text.slice(lineStart), lineEnd = text.length), chars += String.fromCharCode(lineArrayLength), lineHash[line] = lineArrayLength, lineArray[lineArrayLength++] = line), lineStart = lineEnd + 1;\n }\n return chars;\n }\n let maxLines = 4e4;\n const chars1 = diffLinesToMunge(textA);\n maxLines = 65535;\n const chars2 = diffLinesToMunge(textB);\n return { chars1, chars2, lineArray };\n}\nfunction doLineModeDiff(textA, textB, opts) {\n let text1 = textA, text2 = textB;\n const a = linesToChars(text1, text2);\n text1 = a.chars1, text2 = a.chars2;\n const linearray = a.lineArray;\n let diffs = doDiff(text1, text2, {\n checkLines: !1,\n deadline: opts.deadline\n });\n charsToLines(diffs, linearray), diffs = cleanupSemantic(diffs), diffs.push([DIFF_EQUAL, \"\"]);\n let pointer = 0, countDelete = 0, countInsert = 0, textDelete = \"\", textInsert = \"\";\n for (; pointer < diffs.length; ) {\n switch (diffs[pointer][0]) {\n case DIFF_INSERT:\n countInsert++, textInsert += diffs[pointer][1];\n break;\n case DIFF_DELETE:\n countDelete++, textDelete += diffs[pointer][1];\n break;\n case DIFF_EQUAL:\n if (countDelete >= 1 && countInsert >= 1) {\n diffs.splice(pointer - countDelete - countInsert, countDelete + countInsert), pointer = pointer - countDelete - countInsert;\n const aa = doDiff(textDelete, textInsert, {\n checkLines: !1,\n deadline: opts.deadline\n });\n for (let j = aa.length - 1; j >= 0; j--)\n diffs.splice(pointer, 0, aa[j]);\n pointer += aa.length;\n }\n countInsert = 0, countDelete = 0, textDelete = \"\", textInsert = \"\";\n break;\n default:\n throw new Error(\"Unknown diff operation.\");\n }\n pointer++;\n }\n return diffs.pop(), diffs;\n}\nfunction computeDiff(text1, text2, opts) {\n let diffs;\n if (!text1)\n return [[DIFF_INSERT, text2]];\n if (!text2)\n return [[DIFF_DELETE, text1]];\n const longtext = text1.length > text2.length ? text1 : text2, shorttext = text1.length > text2.length ? text2 : text1, i = longtext.indexOf(shorttext);\n if (i !== -1)\n return diffs = [\n [DIFF_INSERT, longtext.substring(0, i)],\n [DIFF_EQUAL, shorttext],\n [DIFF_INSERT, longtext.substring(i + shorttext.length)]\n ], text1.length > text2.length && (diffs[0][0] = DIFF_DELETE, diffs[2][0] = DIFF_DELETE), diffs;\n if (shorttext.length === 1)\n return [\n [DIFF_DELETE, text1],\n [DIFF_INSERT, text2]\n ];\n const halfMatch = findHalfMatch(text1, text2);\n if (halfMatch) {\n const text1A = halfMatch[0], text1B = halfMatch[1], text2A = halfMatch[2], text2B = halfMatch[3], midCommon = halfMatch[4], diffsA = doDiff(text1A, text2A, opts), diffsB = doDiff(text1B, text2B, opts);\n return diffsA.concat([[DIFF_EQUAL, midCommon]], diffsB);\n }\n return opts.checkLines && text1.length > 100 && text2.length > 100 ? doLineModeDiff(text1, text2, opts) : bisect(text1, text2, opts.deadline);\n}\nvar __defProp$2 = Object.defineProperty, __getOwnPropSymbols$2 = Object.getOwnPropertySymbols, __hasOwnProp$2 = Object.prototype.hasOwnProperty, __propIsEnum$2 = Object.prototype.propertyIsEnumerable, __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: !0, configurable: !0, writable: !0, value }) : obj[key] = value, __spreadValues$2 = (a, b) => {\n for (var prop in b || (b = {}))\n __hasOwnProp$2.call(b, prop) && __defNormalProp$2(a, prop, b[prop]);\n if (__getOwnPropSymbols$2)\n for (var prop of __getOwnPropSymbols$2(b))\n __propIsEnum$2.call(b, prop) && __defNormalProp$2(a, prop, b[prop]);\n return a;\n};\nconst DIFF_DELETE = -1, DIFF_INSERT = 1, DIFF_EQUAL = 0;\nfunction diff(textA, textB, opts) {\n if (textA === null || textB === null)\n throw new Error(\"Null input. (diff)\");\n const diffs = doDiff(textA, textB, createInternalOpts(opts || {}));\n return adjustDiffForSurrogatePairs(diffs), diffs;\n}\nfunction doDiff(textA, textB, options) {\n let text1 = textA, text2 = textB;\n if (text1 === text2)\n return text1 ? [[DIFF_EQUAL, text1]] : [];\n let commonlength = getCommonPrefix(text1, text2);\n const commonprefix = text1.substring(0, commonlength);\n text1 = text1.substring(commonlength), text2 = text2.substring(commonlength), commonlength = getCommonSuffix(text1, text2);\n const commonsuffix = text1.substring(text1.length - commonlength);\n text1 = text1.substring(0, text1.length - commonlength), text2 = text2.substring(0, text2.length - commonlength);\n let diffs = computeDiff(text1, text2, options);\n return commonprefix && diffs.unshift([DIFF_EQUAL, commonprefix]), commonsuffix && diffs.push([DIFF_EQUAL, commonsuffix]), diffs = cleanupMerge(diffs), diffs;\n}\nfunction createDeadLine(timeout) {\n let t = 1;\n return typeof timeout < \"u\" && (t = timeout <= 0 ? Number.MAX_VALUE : timeout), Date.now() + t * 1e3;\n}\nfunction createInternalOpts(opts) {\n return __spreadValues$2({\n checkLines: !0,\n deadline: createDeadLine(opts.timeout || 1)\n }, opts);\n}\nfunction combineChar(data, char, dir) {\n return dir === 1 ? data + char : char + data;\n}\nfunction splitChar(data, dir) {\n return dir === 1 ? [data.substring(0, data.length - 1), data[data.length - 1]] : [data.substring(1), data[0]];\n}\nfunction hasSharedChar(diffs, i, j, dir) {\n return dir === 1 ? diffs[i][1][diffs[i][1].length - 1] === diffs[j][1][diffs[j][1].length - 1] : diffs[i][1][0] === diffs[j][1][0];\n}\nfunction deisolateChar(diffs, i, dir) {\n const inv = dir === 1 ? -1 : 1;\n let insertIdx = null, deleteIdx = null, j = i + dir;\n for (; j >= 0 && j < diffs.length && (insertIdx === null || deleteIdx === null); j += dir) {\n const [op, text2] = diffs[j];\n if (text2.length !== 0) {\n if (op === DIFF_INSERT) {\n insertIdx === null && (insertIdx = j);\n continue;\n } else if (op === DIFF_DELETE) {\n deleteIdx === null && (deleteIdx = j);\n continue;\n } else if (op === DIFF_EQUAL) {\n if (insertIdx === null && deleteIdx === null) {\n const [rest, char2] = splitChar(diffs[i][1], dir);\n diffs[i][1] = rest, diffs[j][1] = combineChar(diffs[j][1], char2, inv);\n return;\n }\n break;\n }\n }\n }\n if (insertIdx !== null && deleteIdx !== null && hasSharedChar(diffs, insertIdx, deleteIdx, dir)) {\n const [insertText, insertChar] = splitChar(diffs[insertIdx][1], inv), [deleteText] = splitChar(diffs[deleteIdx][1], inv);\n diffs[insertIdx][1] = insertText, diffs[deleteIdx][1] = deleteText, diffs[i][1] = combineChar(diffs[i][1], insertChar, dir);\n return;\n }\n const [text, char] = splitChar(diffs[i][1], dir);\n diffs[i][1] = text, insertIdx === null ? (diffs.splice(j, 0, [DIFF_INSERT, char]), deleteIdx !== null && deleteIdx >= j && deleteIdx++) : diffs[insertIdx][1] = combineChar(diffs[insertIdx][1], char, inv), deleteIdx === null ? diffs.splice(j, 0, [DIFF_DELETE, char]) : diffs[deleteIdx][1] = combineChar(diffs[deleteIdx][1], char, inv);\n}\nfunction adjustDiffForSurrogatePairs(diffs) {\n for (let i = 0; i < diffs.length; i++) {\n const [diffType, diffText] = diffs[i];\n if (diffText.length === 0) continue;\n const firstChar = diffText[0], lastChar = diffText[diffText.length - 1];\n isHighSurrogate(lastChar) && diffType === DIFF_EQUAL && deisolateChar(diffs, i, 1), isLowSurrogate(firstChar) && diffType === DIFF_EQUAL && deisolateChar(diffs, i, -1);\n }\n for (let i = 0; i < diffs.length; i++)\n diffs[i][1].length === 0 && diffs.splice(i, 1);\n}\nfunction cleanupSemantic(rawDiffs) {\n let diffs = rawDiffs.map((diff2) => cloneDiff(diff2)), hasChanges = !1;\n const equalities = [];\n let equalitiesLength = 0, lastEquality = null, pointer = 0, lengthInsertions1 = 0, lengthDeletions1 = 0, lengthInsertions2 = 0, lengthDeletions2 = 0;\n for (; pointer < diffs.length; )\n diffs[pointer][0] === DIFF_EQUAL ? (equalities[equalitiesLength++] = pointer, lengthInsertions1 = lengthInsertions2, lengthDeletions1 = lengthDeletions2, lengthInsertions2 = 0, lengthDeletions2 = 0, lastEquality = diffs[pointer][1]) : (diffs[pointer][0] === DIFF_INSERT ? lengthInsertions2 += diffs[pointer][1].length : lengthDeletions2 += diffs[pointer][1].length, lastEquality && lastEquality.length <= Math.max(lengthInsertions1, lengthDeletions1) && lastEquality.length <= Math.max(lengthInsertions2, lengthDeletions2) && (diffs.splice(equalities[equalitiesLength - 1], 0, [DIFF_DELETE, lastEquality]), diffs[equalities[equalitiesLength - 1] + 1][0] = DIFF_INSERT, equalitiesLength--, equalitiesLength--, pointer = equalitiesLength > 0 ? equalities[equalitiesLength - 1] : -1, lengthInsertions1 = 0, lengthDeletions1 = 0, lengthInsertions2 = 0, lengthDeletions2 = 0, lastEquality = null, hasChanges = !0)), pointer++;\n for (hasChanges && (diffs = cleanupMerge(diffs)), diffs = cleanupSemanticLossless(diffs), pointer = 1; pointer < diffs.length; ) {\n if (diffs[pointer - 1][0] === DIFF_DELETE && diffs[pointer][0] === DIFF_INSERT) {\n const deletion = diffs[pointer - 1][1], insertion = diffs[pointer][1], overlapLength1 = getCommonOverlap(deletion, insertion), overlapLength2 = getCommonOverlap(insertion, deletion);\n overlapLength1 >= overlapLength2 ? (overlapLength1 >= deletion.length / 2 || overlapLength1 >= insertion.length / 2) && (diffs.splice(pointer, 0, [DIFF_EQUAL, insertion.substring(0, overlapLength1)]), diffs[pointer - 1][1] = deletion.substring(0, deletion.length - overlapLength1), diffs[pointer + 1][1] = insertion.substring(overlapLength1), pointer++) : (overlapLength2 >= deletion.length / 2 || overlapLength2 >= insertion.length / 2) && (diffs.splice(pointer, 0, [DIFF_EQUAL, deletion.substring(0, overlapLength2)]), diffs[pointer - 1][0] = DIFF_INSERT, diffs[pointer - 1][1] = insertion.substring(0, insertion.length - overlapLength2), diffs[pointer + 1][0] = DIFF_DELETE, diffs[pointer + 1][1] = deletion.substring(overlapLength2), pointer++), pointer++;\n }\n pointer++;\n }\n return diffs;\n}\nconst nonAlphaNumericRegex = /[^a-zA-Z0-9]/, whitespaceRegex = /\\s/, linebreakRegex = /[\\r\\n]/, blanklineEndRegex = /\\n\\r?\\n$/, blanklineStartRegex = /^\\r?\\n\\r?\\n/;\nfunction cleanupSemanticLossless(rawDiffs) {\n const diffs = rawDiffs.map((diff2) => cloneDiff(diff2));\n function diffCleanupSemanticScore(one, two) {\n if (!one || !two)\n return 6;\n const char1 = one.charAt(one.length - 1), char2 = two.charAt(0), nonAlphaNumeric1 = char1.match(nonAlphaNumericRegex), nonAlphaNumeric2 = char2.match(nonAlphaNumericRegex), whitespace1 = nonAlphaNumeric1 && char1.match(whitespaceRegex), whitespace2 = nonAlphaNumeric2 && char2.match(whitespaceRegex), lineBreak1 = whitespace1 && char1.match(linebreakRegex), lineBreak2 = whitespace2 && char2.match(linebreakRegex), blankLine1 = lineBreak1 && one.match(blanklineEndRegex), blankLine2 = lineBreak2 && two.match(blanklineStartRegex);\n return blankLine1 || blankLine2 ? 5 : lineBreak1 || lineBreak2 ? 4 : nonAlphaNumeric1 && !whitespace1 && whitespace2 ? 3 : whitespace1 || whitespace2 ? 2 : nonAlphaNumeric1 || nonAlphaNumeric2 ? 1 : 0;\n }\n let pointer = 1;\n for (; pointer < diffs.length - 1; ) {\n if (diffs[pointer - 1][0] === DIFF_EQUAL && diffs[pointer + 1][0] === DIFF_EQUAL) {\n let equality1 = diffs[pointer - 1][1], edit = diffs[pointer][1], equality2 = diffs[pointer + 1][1];\n const commonOffset = getCommonSuffix(equality1, edit);\n if (commonOffset) {\n const commonString = edit.substring(edit.length - commonOffset);\n equality1 = equality1.substring(0, equality1.length - commonOffset), edit = commonString + edit.substring(0, edit.length - commonOffset), equality2 = commonString + equality2;\n }\n let bestEquality1 = equality1, bestEdit = edit, bestEquality2 = equality2, bestScore = diffCleanupSemanticScore(equality1, edit) + diffCleanupSemanticScore(edit, equality2);\n for (; edit.charAt(0) === equality2.charAt(0); ) {\n equality1 += edit.charAt(0), edit = edit.substring(1) + equality2.charAt(0), equality2 = equality2.substring(1);\n const score = diffCleanupSemanticScore(equality1, edit) + diffCleanupSemanticScore(edit, equality2);\n score >= bestScore && (bestScore = score, bestEquality1 = equality1, bestEdit = edit, bestEquality2 = equality2);\n }\n diffs[pointer - 1][1] !== bestEquality1 && (bestEquality1 ? diffs[pointer - 1][1] = bestEquality1 : (diffs.splice(pointer - 1, 1), pointer--), diffs[pointer][1] = bestEdit, bestEquality2 ? diffs[pointer + 1][1] = bestEquality2 : (diffs.splice(pointer + 1, 1), pointer--));\n }\n pointer++;\n }\n return diffs;\n}\nfunction cleanupMerge(rawDiffs) {\n let diffs = rawDiffs.map((diff2) => cloneDiff(diff2));\n diffs.push([DIFF_EQUAL, \"\"]);\n let pointer = 0, countDelete = 0, countInsert = 0, textDelete = \"\", textInsert = \"\", commonlength;\n for (; pointer < diffs.length; )\n switch (diffs[pointer][0]) {\n case DIFF_INSERT:\n countInsert++, textInsert += diffs[pointer][1], pointer++;\n break;\n case DIFF_DELETE:\n countDelete++, textDelete += diffs[pointer][1], pointer++;\n break;\n case DIFF_EQUAL:\n countDelete + countInsert > 1 ? (countDelete !== 0 && countInsert !== 0 && (commonlength = getCommonPrefix(textInsert, textDelete), commonlength !== 0 && (pointer - countDelete - countInsert > 0 && diffs[pointer - countDelete - countInsert - 1][0] === DIFF_EQUAL ? diffs[pointer - countDelete - countInsert - 1][1] += textInsert.substring(\n 0,\n commonlength\n ) : (diffs.splice(0, 0, [DIFF_EQUAL, textInsert.substring(0, commonlength)]), pointer++), textInsert = textInsert.substring(commonlength), textDelete = textDelete.substring(commonlength)), commonlength = getCommonSuffix(textInsert, textDelete), commonlength !== 0 && (diffs[pointer][1] = textInsert.substring(textInsert.length - commonlength) + diffs[pointer][1], textInsert = textInsert.substring(0, textInsert.length - commonlength), textDelete = textDelete.substring(0, textDelete.length - commonlength))), pointer -= countDelete + countInsert, diffs.splice(pointer, countDelete + countInsert), textDelete.length && (diffs.splice(pointer, 0, [DIFF_DELETE, textDelete]), pointer++), textInsert.length && (diffs.splice(pointer, 0, [DIFF_INSERT, textInsert]), pointer++), pointer++) : pointer !== 0 && diffs[pointer - 1][0] === DIFF_EQUAL ? (diffs[pointer - 1][1] += diffs[pointer][1], diffs.splice(pointer, 1)) : pointer++, countInsert = 0, countDelete = 0, textDelete = \"\", textInsert = \"\";\n break;\n default:\n throw new Error(\"Unknown diff operation\");\n }\n diffs[diffs.length - 1][1] === \"\" && diffs.pop();\n let hasChanges = !1;\n for (pointer = 1; pointer < diffs.length - 1; )\n diffs[pointer - 1][0] === DIFF_EQUAL && diffs[pointer + 1][0] === DIFF_EQUAL && (diffs[pointer][1].substring(diffs[pointer][1].length - diffs[pointer - 1][1].length) === diffs[pointer - 1][1] ? (diffs[pointer][1] = diffs[pointer - 1][1] + diffs[pointer][1].substring(0, diffs[pointer][1].length - diffs[pointer - 1][1].length), diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1], diffs.splice(pointer - 1, 1), hasChanges = !0) : diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) === diffs[pointer + 1][1] && (diffs[pointer - 1][1] += diffs[pointer + 1][1], diffs[pointer][1] = diffs[pointer][1].substring(diffs[pointer + 1][1].length) + diffs[pointer + 1][1], diffs.splice(pointer + 1, 1), hasChanges = !0)), pointer++;\n return hasChanges && (diffs = cleanupMerge(diffs)), diffs;\n}\nfunction trueCount(...args) {\n return args.reduce((n, bool) => n + (bool ? 1 : 0), 0);\n}\nfunction cleanupEfficiency(rawDiffs, editCost = 4) {\n let diffs = rawDiffs.map((diff2) => cloneDiff(diff2)), hasChanges = !1;\n const equalities = [];\n let equalitiesLength = 0, lastEquality = null, pointer = 0, preIns = !1, preDel = !1, postIns = !1, postDel = !1;\n for (; pointer < diffs.length; )\n diffs[pointer][0] === DIFF_EQUAL ? (diffs[pointer][1].length < editCost && (postIns || postDel) ? (equalities[equalitiesLength++] = pointer, preIns = postIns, preDel = postDel, lastEquality = diffs[pointer][1]) : (equalitiesLength = 0, lastEquality = null), postIns = !1, postDel = !1) : (diffs[pointer][0] === DIFF_DELETE ? postDel = !0 : postIns = !0, lastEquality && (preIns && preDel && postIns && postDel || lastEquality.length < editCost / 2 && trueCount(preIns, preDel, postIns, postDel) === 3) && (diffs.splice(equalities[equalitiesLength - 1], 0, [DIFF_DELETE, lastEquality]), diffs[equalities[equalitiesLength - 1] + 1][0] = DIFF_INSERT, equalitiesLength--, lastEquality = null, preIns && preDel ? (postIns = !0, postDel = !0, equalitiesLength = 0) : (equalitiesLength--, pointer = equalitiesLength > 0 ? equalities[equalitiesLength - 1] : -1, postIns = !1, postDel = !1), hasChanges = !0)), pointer++;\n return hasChanges && (diffs = cleanupMerge(diffs)), diffs;\n}\nvar __defProp$1 = Object.defineProperty, __getOwnPropSymbols$1 = Object.getOwnPropertySymbols, __hasOwnProp$1 = Object.prototype.hasOwnProperty, __propIsEnum$1 = Object.prototype.propertyIsEnumerable, __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: !0, configurable: !0, writable: !0, value }) : obj[key] = value, __spreadValues$1 = (a, b) => {\n for (var prop in b || (b = {}))\n __hasOwnProp$1.call(b, prop) && __defNormalProp$1(a, prop, b[prop]);\n if (__getOwnPropSymbols$1)\n for (var prop of __getOwnPropSymbols$1(b))\n __propIsEnum$1.call(b, prop) && __defNormalProp$1(a, prop, b[prop]);\n return a;\n};\nconst DEFAULT_OPTIONS = {\n /**\n * At what point is no match declared (0.0 = perfection, 1.0 = very loose).\n */\n threshold: 0.5,\n /**\n * How far to search for a match (0 = exact location, 1000+ = broad match).\n * A match this many characters away from the expected location will add\n * 1.0 to the score (0.0 is a perfect match).\n */\n distance: 1e3\n};\nfunction applyDefaults(options) {\n return __spreadValues$1(__spreadValues$1({}, DEFAULT_OPTIONS), options);\n}\nconst MAX_BITS$1 = 32;\nfunction bitap(text, pattern, loc, opts = {}) {\n if (pattern.length > MAX_BITS$1)\n throw new Error(\"Pattern too long for this browser.\");\n const options = applyDefaults(opts), s = getAlphabetFromPattern(pattern);\n function getBitapScore(e, x) {\n const accuracy = e / pattern.length, proximity = Math.abs(loc - x);\n return options.distance ? accuracy + proximity / options.distance : proximity ? 1 : accuracy;\n }\n let scoreThreshold = options.threshold, bestLoc = text.indexOf(pattern, loc);\n bestLoc !== -1 && (scoreThreshold = Math.min(getBitapScore(0, bestLoc), scoreThreshold), bestLoc = text.lastIndexOf(pattern, loc + pattern.length), bestLoc !== -1 && (scoreThreshold = Math.min(getBitapScore(0, bestLoc), scoreThreshold)));\n const matchmask = 1 << pattern.length - 1;\n bestLoc = -1;\n let binMin, binMid, binMax = pattern.length + text.length, lastRd = [];\n for (let d = 0; d < pattern.length; d++) {\n for (binMin = 0, binMid = binMax; binMin < binMid; )\n getBitapScore(d, loc + binMid) <= scoreThreshold ? binMin = binMid : binMax = binMid, binMid = Math.floor((binMax - binMin) / 2 + binMin);\n binMax = binMid;\n let start = Math.max(1, loc - binMid + 1);\n const finish = Math.min(loc + binMid, text.length) + pattern.length, rd = new Array(finish + 2);\n rd[finish + 1] = (1 << d) - 1;\n for (let j = finish; j >= start; j--) {\n const charMatch = s[text.charAt(j - 1)];\n if (d === 0 ? rd[j] = (rd[j + 1] << 1 | 1) & charMatch : rd[j] = (rd[j + 1] << 1 | 1) & charMatch | ((lastRd[j + 1] | lastRd[j]) << 1 | 1) | lastRd[j + 1], rd[j] & matchmask) {\n const score = getBitapScore(d, j - 1);\n if (score <= scoreThreshold)\n if (scoreThreshold = score, bestLoc = j - 1, bestLoc > loc)\n start = Math.max(1, 2 * loc - bestLoc);\n else\n break;\n }\n }\n if (getBitapScore(d + 1, loc) > scoreThreshold)\n break;\n lastRd = rd;\n }\n return bestLoc;\n}\nfunction getAlphabetFromPattern(pattern) {\n const s = {};\n for (let i = 0; i < pattern.length; i++)\n s[pattern.charAt(i)] = 0;\n for (let i = 0; i < pattern.length; i++)\n s[pattern.charAt(i)] |= 1 << pattern.length - i - 1;\n return s;\n}\nfunction match(text, pattern, searchLocation, options = {}) {\n if (text === null || pattern === null || searchLocation === null)\n throw new Error(\"Null input. (match())\");\n const loc = Math.max(0, Math.min(searchLocation, text.length));\n if (text === pattern)\n return 0;\n if (text.length) {\n if (text.substring(loc, loc + pattern.length) === pattern)\n return loc;\n } else return -1;\n return bitap(text, pattern, loc, options);\n}\nfunction diffText1(diffs) {\n const text = [];\n for (let x = 0; x < diffs.length; x++)\n diffs[x][0] !== DIFF_INSERT && (text[x] = diffs[x][1]);\n return text.join(\"\");\n}\nfunction diffText2(diffs) {\n const text = [];\n for (let x = 0; x < diffs.length; x++)\n diffs[x][0] !== DIFF_DELETE && (text[x] = diffs[x][1]);\n return text.join(\"\");\n}\nfunction levenshtein(diffs) {\n let leven = 0, insertions = 0, deletions = 0;\n for (let x = 0; x < diffs.length; x++) {\n const op = diffs[x][0], data = diffs[x][1];\n switch (op) {\n case DIFF_INSERT:\n insertions += data.length;\n break;\n case DIFF_DELETE:\n deletions += data.length;\n break;\n case DIFF_EQUAL:\n leven += Math.max(insertions, deletions), insertions = 0, deletions = 0;\n break;\n default:\n throw new Error(\"Unknown diff operation.\");\n }\n }\n return leven += Math.max(insertions, deletions), leven;\n}\nfunction xIndex(diffs, location) {\n let chars1 = 0, chars2 = 0, lastChars1 = 0, lastChars2 = 0, x;\n for (x = 0; x < diffs.length && (diffs[x][0] !== DIFF_INSERT && (chars1 += diffs[x][1].length), diffs[x][0] !== DIFF_DELETE && (chars2 += diffs[x][1].length), !(chars1 > location)); x++)\n lastChars1 = chars1, lastChars2 = chars2;\n return diffs.length !== x && diffs[x][0] === DIFF_DELETE ? lastChars2 : lastChars2 + (location - lastChars1);\n}\nfunction countUtf8Bytes(str) {\n let bytes = 0;\n for (let i = 0; i < str.length; i++) {\n const codePoint = str.codePointAt(i);\n if (typeof codePoint > \"u\")\n throw new Error(\"Failed to get codepoint\");\n bytes += utf8len(codePoint);\n }\n return bytes;\n}\nfunction adjustIndiciesToUcs2(patches, base, options = {}) {\n let byteOffset = 0, idx = 0;\n function advanceTo(target) {\n for (; byteOffset < target; ) {\n const codePoint = base.codePointAt(idx);\n if (typeof codePoint > \"u\")\n return idx;\n byteOffset += utf8len(codePoint), codePoint > 65535 ? idx += 2 : idx += 1;\n }\n if (!options.allowExceedingIndices && byteOffset !== target)\n throw new Error(\"Failed to determine byte offset\");\n return idx;\n }\n const adjusted = [];\n for (const patch of patches)\n adjusted.push({\n diffs: patch.diffs.map((diff2) => cloneDiff(diff2)),\n start1: advanceTo(patch.start1),\n start2: advanceTo(patch.start2),\n utf8Start1: patch.utf8Start1,\n utf8Start2: patch.utf8Start2,\n length1: patch.length1,\n length2: patch.length2,\n utf8Length1: patch.utf8Length1,\n utf8Length2: patch.utf8Length2\n });\n return adjusted;\n}\nfunction utf8len(codePoint) {\n return codePoint <= 127 ? 1 : codePoint <= 2047 ? 2 : codePoint <= 65535 ? 3 : 4;\n}\nconst MAX_BITS = 32, DEFAULT_MARGIN = 4;\nfunction addPadding(patches, margin = DEFAULT_MARGIN) {\n const paddingLength = margin;\n let nullPadding = \"\";\n for (let x = 1; x <= paddingLength; x++)\n nullPadding += String.fromCharCode(x);\n for (const p of patches)\n p.start1 += paddingLength, p.start2 += paddingLength, p.utf8Start1 += paddingLength, p.utf8Start2 += paddingLength;\n let patch = patches[0], diffs = patch.diffs;\n if (diffs.length === 0 || diffs[0][0] !== DIFF_EQUAL)\n diffs.unshift([DIFF_EQUAL, nullPadding]), patch.start1 -= paddingLength, patch.start2 -= paddingLength, patch.utf8Start1 -= paddingLength, patch.utf8Start2 -= paddingLength, patch.length1 += paddingLength, patch.length2 += paddingLength, patch.utf8Length1 += paddingLength, patch.utf8Length2 += paddingLength;\n else if (paddingLength > diffs[0][1].length) {\n const firstDiffLength = diffs[0][1].length, extraLength = paddingLength - firstDiffLength;\n diffs[0][1] = nullPadding.substring(firstDiffLength) + diffs[0][1], patch.start1 -= extraLength, patch.start2 -= extraLength, patch.utf8Start1 -= extraLength, patch.utf8Start2 -= extraLength, patch.length1 += extraLength, patch.length2 += extraLength, patch.utf8Length1 += extraLength, patch.utf8Length2 += extraLength;\n }\n if (patch = patches[patches.length - 1], diffs = patch.diffs, diffs.length === 0 || diffs[diffs.length - 1][0] !== DIFF_EQUAL)\n diffs.push([DIFF_EQUAL, nullPadding]), patch.length1 += paddingLength, patch.length2 += paddingLength, patch.utf8Length1 += paddingLength, patch.utf8Length2 += paddingLength;\n else if (paddingLength > diffs[diffs.length - 1][1].length) {\n const extraLength = paddingLength - diffs[diffs.length - 1][1].length;\n diffs[diffs.length - 1][1] += nullPadding.substring(0, extraLength), patch.length1 += extraLength, patch.length2 += extraLength, patch.utf8Length1 += extraLength, patch.utf8Length2 += extraLength;\n }\n return nullPadding;\n}\nfunction createPatchObject(start1, start2) {\n return {\n diffs: [],\n start1,\n start2,\n utf8Start1: start1,\n utf8Start2: start2,\n length1: 0,\n length2: 0,\n utf8Length1: 0,\n utf8Length2: 0\n };\n}\nfunction splitMax(patches, margin = DEFAULT_MARGIN) {\n const patchSize = MAX_BITS;\n for (let x = 0; x < patches.length; x++) {\n if (patches[x].length1 <= patchSize)\n continue;\n const bigpatch = patches[x];\n patches.splice(x--, 1);\n let start1 = bigpatch.start1, start2 = bigpatch.start2, preContext = \"\";\n for (; bigpatch.diffs.length !== 0; ) {\n const patch = createPatchObject(start1 - preContext.length, start2 - preContext.length);\n let empty = !0;\n if (preContext !== \"\") {\n const precontextByteCount = countUtf8Bytes(preContext);\n patch.length1 = preContext.length, patch.utf8Length1 = precontextByteCount, patch.length2 = preContext.length, patch.utf8Length2 = precontextByteCount, patch.diffs.push([DIFF_EQUAL, preContext]);\n }\n for (; bigpatch.diffs.length !== 0 && patch.length1 < patchSize - margin; ) {\n const diffType = bigpatch.diffs[0][0];\n let diffText = bigpatch.diffs[0][1], diffTextByteCount = countUtf8Bytes(diffText);\n if (diffType === DIFF_INSERT) {\n patch.length2 += diffText.length, patch.utf8Length2 += diffTextByteCount, start2 += diffText.length;\n const diff2 = bigpatch.diffs.shift();\n diff2 && patch.diffs.push(diff2), empty = !1;\n } else diffType === DIFF_DELETE && patch.diffs.length === 1 && patch.diffs[0][0] === DIFF_EQUAL && diffText.length > 2 * patchSize ? (patch.length1 += diffText.length, patch.utf8Length1 += diffTextByteCount, start1 += diffText.length, empty = !1, patch.diffs.push([diffType, diffText]), bigpatch.diffs.shift()) : (diffText = diffText.substring(0, patchSize - patch.length1 - margin), diffTextByteCount = countUtf8Bytes(diffText), patch.length1 += diffText.length, patch.utf8Length1 += diffTextByteCount, start1 += diffText.length, diffType === DIFF_EQUAL ? (patch.length2 += diffText.length, patch.utf8Length2 += diffTextByteCount, start2 += diffText.length) : empty = !1, patch.diffs.push([diffType, diffText]), diffText === bigpatch.diffs[0][1] ? bigpatch.diffs.shift() : bigpatch.diffs[0][1] = bigpatch.diffs[0][1].substring(diffText.length));\n }\n preContext = diffText2(patch.diffs), preContext = preContext.substring(preContext.length - margin);\n const postContext = diffText1(bigpatch.diffs).substring(0, margin), postContextByteCount = countUtf8Bytes(postContext);\n postContext !== \"\" && (patch.length1 += postContext.length, patch.length2 += postContext.length, patch.utf8Length1 += postContextByteCount, patch.utf8Length2 += postContextByteCount, patch.diffs.length !== 0 && patch.diffs[patch.diffs.length - 1][0] === DIFF_EQUAL ? patch.diffs[patch.diffs.length - 1][1] += postContext : patch.diffs.push([DIFF_EQUAL, postContext])), empty || patches.splice(++x, 0, patch);\n }\n }\n}\nfunction apply(patches, originalText, opts = {}) {\n if (typeof patches == \"string\")\n throw new Error(\"Patches must be an array - pass the patch to `parsePatch()` first\");\n let text = originalText;\n if (patches.length === 0)\n return [text, []];\n const parsed = adjustIndiciesToUcs2(patches, text, {\n allowExceedingIndices: opts.allowExceedingIndices\n }), margin = opts.margin || DEFAULT_MARGIN, deleteThreshold = opts.deleteThreshold || 0.4, nullPadding = addPadding(parsed, margin);\n text = nullPadding + text + nullPadding, splitMax(parsed, margin);\n let delta = 0;\n const results = [];\n for (let x = 0; x < parsed.length; x++) {\n const expectedLoc = parsed[x].start2 + delta, text1 = diffText1(parsed[x].diffs);\n let startLoc, endLoc = -1;\n if (text1.length > MAX_BITS ? (startLoc = match(text, text1.substring(0, MAX_BITS), expectedLoc), startLoc !== -1 && (endLoc = match(\n text,\n text1.substring(text1.length - MAX_BITS),\n expectedLoc + text1.length - MAX_BITS\n ), (endLoc === -1 || startLoc >= endLoc) && (startLoc = -1))) : startLoc = match(text, text1, expectedLoc), startLoc === -1)\n results[x] = !1, delta -= parsed[x].length2 - parsed[x].length1;\n else {\n results[x] = !0, delta = startLoc - expectedLoc;\n let text2;\n if (endLoc === -1 ? text2 = text.substring(startLoc, startLoc + text1.length) : text2 = text.substring(startLoc, endLoc + MAX_BITS), text1 === text2)\n text = text.substring(0, startLoc) + diffText2(parsed[x].diffs) + text.substring(startLoc + text1.length);\n else {\n let diffs = diff(text1, text2, { checkLines: !1 });\n if (text1.length > MAX_BITS && levenshtein(diffs) / text1.length > deleteThreshold)\n results[x] = !1;\n else {\n diffs = cleanupSemanticLossless(diffs);\n let index1 = 0, index2 = 0;\n for (let y = 0; y < parsed[x].diffs.length; y++) {\n const mod = parsed[x].diffs[y];\n mod[0] !== DIFF_EQUAL && (index2 = xIndex(diffs, index1)), mod[0] === DIFF_INSERT ? text = text.substring(0, startLoc + index2) + mod[1] + text.substring(startLoc + index2) : mod[0] === DIFF_DELETE && (text = text.substring(0, startLoc + index2) + text.substring(startLoc + xIndex(diffs, index1 + mod[1].length))), mod[0] !== DIFF_DELETE && (index1 += mod[1].length);\n }\n }\n }\n }\n }\n return text = text.substring(nullPadding.length, text.length - nullPadding.length), [text, results];\n}\nvar __defProp = Object.defineProperty, __getOwnPropSymbols = Object.getOwnPropertySymbols, __hasOwnProp = Object.prototype.hasOwnProperty, __propIsEnum = Object.prototype.propertyIsEnumerable, __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: !0, configurable: !0, writable: !0, value }) : obj[key] = value, __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n __hasOwnProp.call(b, prop) && __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b))\n __propIsEnum.call(b, prop) && __defNormalProp(a, prop, b[prop]);\n return a;\n};\nconst DEFAULT_OPTS = {\n margin: 4\n};\nfunction getDefaultOpts(opts = {}) {\n return __spreadValues(__spreadValues({}, DEFAULT_OPTS), opts);\n}\nfunction make(a, b, options) {\n if (typeof a == \"string\" && typeof b == \"string\") {\n let diffs = diff(a, b, { checkLines: !0 });\n return diffs.length > 2 && (diffs = cleanupSemantic(diffs), diffs = cleanupEfficiency(diffs)), _make(a, diffs, getDefaultOpts(options));\n }\n if (a && Array.isArray(a) && typeof b > \"u\")\n return _make(diffText1(a), a, getDefaultOpts(options));\n if (typeof a == \"string\" && b && Array.isArray(b))\n return _make(a, b, getDefaultOpts(options));\n throw new Error(\"Unknown call format to make()\");\n}\nfunction _make(textA, diffs, options) {\n if (diffs.length === 0)\n return [];\n const patches = [];\n let patch = createPatchObject(0, 0), patchDiffLength = 0, charCount1 = 0, charCount2 = 0, utf8Count1 = 0, utf8Count2 = 0, prepatchText = textA, postpatchText = textA;\n for (let x = 0; x < diffs.length; x++) {\n const currentDiff = diffs[x], [diffType, diffText] = currentDiff, diffTextLength = diffText.length, diffByteLength = countUtf8Bytes(diffText);\n switch (!patchDiffLength && diffType !== DIFF_EQUAL && (patch.start1 = charCount1, patch.start2 = charCount2, patch.utf8Start1 = utf8Count1, patch.utf8Start2 = utf8Count2), diffType) {\n case DIFF_INSERT:\n patch.diffs[patchDiffLength++] = currentDiff, patch.length2 += diffTextLength, patch.utf8Length2 += diffByteLength, postpatchText = postpatchText.substring(0, charCount2) + diffText + postpatchText.substring(charCount2);\n break;\n case DIFF_DELETE:\n patch.length1 += diffTextLength, patch.utf8Length1 += diffByteLength, patch.diffs[patchDiffLength++] = currentDiff, postpatchText = postpatchText.substring(0, charCount2) + postpatchText.substring(charCount2 + diffTextLength);\n break;\n case DIFF_EQUAL:\n diffTextLength <= 2 * options.margin && patchDiffLength && diffs.length !== x + 1 ? (patch.diffs[patchDiffLength++] = currentDiff, patch.length1 += diffTextLength, patch.length2 += diffTextLength, patch.utf8Length1 += diffByteLength, patch.utf8Length2 += diffByteLength) : diffTextLength >= 2 * options.margin && patchDiffLength && (addContext(patch, prepatchText, options), patches.push(patch), patch = createPatchObject(-1, -1), patchDiffLength = 0, prepatchText = postpatchText, charCount1 = charCount2, utf8Count1 = utf8Count2);\n break;\n default:\n throw new Error(\"Unknown diff type\");\n }\n diffType !== DIFF_INSERT && (charCount1 += diffTextLength, utf8Count1 += diffByteLength), diffType !== DIFF_DELETE && (charCount2 += diffTextLength, utf8Count2 += diffByteLength);\n }\n return patchDiffLength && (addContext(patch, prepatchText, options), patches.push(patch)), patches;\n}\nfunction addContext(patch, text, opts) {\n if (text.length === 0)\n return;\n let pattern = text.substring(patch.start2, patch.start2 + patch.length1), padding = 0;\n for (; text.indexOf(pattern) !== text.lastIndexOf(pattern) && pattern.length < MAX_BITS - opts.margin - opts.margin; )\n padding += opts.margin, pattern = text.substring(patch.start2 - padding, patch.start2 + patch.length1 + padding);\n padding += opts.margin;\n let prefixStart = patch.start2 - padding;\n prefixStart >= 1 && isLowSurrogate(text[prefixStart]) && prefixStart--;\n const prefix = text.substring(prefixStart, patch.start2);\n prefix && patch.diffs.unshift([DIFF_EQUAL, prefix]);\n const prefixLength = prefix.length, prefixUtf8Length = countUtf8Bytes(prefix);\n let suffixEnd = patch.start2 + patch.length1 + padding;\n suffixEnd < text.length && isLowSurrogate(text[suffixEnd]) && suffixEnd++;\n const suffix = text.substring(patch.start2 + patch.length1, suffixEnd);\n suffix && patch.diffs.push([DIFF_EQUAL, suffix]);\n const suffixLength = suffix.length, suffixUtf8Length = countUtf8Bytes(suffix);\n patch.start1 -= prefixLength, patch.start2 -= prefixLength, patch.utf8Start1 -= prefixUtf8Length, patch.utf8Start2 -= prefixUtf8Length, patch.length1 += prefixLength + suffixLength, patch.length2 += prefixLength + suffixLength, patch.utf8Length1 += prefixUtf8Length + suffixUtf8Length, patch.utf8Length2 += prefixUtf8Length + suffixUtf8Length;\n}\nconst patchHeader = /^@@ -(\\d+),?(\\d*) \\+(\\d+),?(\\d*) @@$/;\nfunction parse(textline) {\n if (!textline)\n return [];\n const patches = [], lines = textline.split(`\n`);\n let textPointer = 0;\n for (; textPointer < lines.length; ) {\n const m = lines[textPointer].match(patchHeader);\n if (!m)\n throw new Error(`Invalid patch string: ${lines[textPointer]}`);\n const patch = createPatchObject(toInt(m[1]), toInt(m[3]));\n for (patches.push(patch), m[2] === \"\" ? (patch.start1--, patch.utf8Start1--, patch.length1 = 1, patch.utf8Length1 = 1) : m[2] === \"0\" ? (patch.length1 = 0, patch.utf8Length1 = 0) : (patch.start1--, patch.utf8Start1--, patch.utf8Length1 = toInt(m[2]), patch.length1 = patch.utf8Length1), m[4] === \"\" ? (patch.start2--, patch.utf8Start2--, patch.length2 = 1, patch.utf8Length2 = 1) : m[4] === \"0\" ? (patch.length2 = 0, patch.utf8Length2 = 0) : (patch.start2--, patch.utf8Start2--, patch.utf8Length2 = toInt(m[4]), patch.length2 = patch.utf8Length2), textPointer++; textPointer < lines.length; ) {\n const currentLine = lines[textPointer], sign = currentLine.charAt(0);\n if (sign === \"@\")\n break;\n if (sign === \"\") {\n textPointer++;\n continue;\n }\n let line;\n try {\n line = decodeURI(currentLine.slice(1));\n } catch (ex) {\n throw new Error(`Illegal escape in parse: ${currentLine}`);\n }\n const utf8Diff = countUtf8Bytes(line) - line.length;\n if (sign === \"-\")\n patch.diffs.push([DIFF_DELETE, line]), patch.length1 -= utf8Diff;\n else if (sign === \"+\")\n patch.diffs.push([DIFF_INSERT, line]), patch.length2 -= utf8Diff;\n else if (sign === \" \")\n patch.diffs.push([DIFF_EQUAL, line]), patch.length1 -= utf8Diff, patch.length2 -= utf8Diff;\n else\n throw new Error(`Invalid patch mode \"${sign}\" in: ${line}`);\n textPointer++;\n }\n }\n return patches;\n}\nfunction toInt(num) {\n return parseInt(num, 10);\n}\nfunction stringify(patches) {\n return patches.map(stringifyPatch).join(\"\");\n}\nfunction stringifyPatch(patch) {\n const { utf8Length1, utf8Length2, utf8Start1, utf8Start2, diffs } = patch;\n let coords1;\n utf8Length1 === 0 ? coords1 = `${utf8Start1},0` : utf8Length1 === 1 ? coords1 = `${utf8Start1 + 1}` : coords1 = `${utf8Start1 + 1},${utf8Length1}`;\n let coords2;\n utf8Length2 === 0 ? coords2 = `${utf8Start2},0` : utf8Length2 === 1 ? coords2 = `${utf8Start2 + 1}` : coords2 = `${utf8Start2 + 1},${utf8Length2}`;\n const text = [`@@ -${coords1} +${coords2} @@\n`];\n let op;\n for (let x = 0; x < diffs.length; x++) {\n switch (diffs[x][0]) {\n case DIFF_INSERT:\n op = \"+\";\n break;\n case DIFF_DELETE:\n op = \"-\";\n break;\n case DIFF_EQUAL:\n op = \" \";\n break;\n default:\n throw new Error(\"Unknown patch operation.\");\n }\n text[x + 1] = `${op + encodeURI(diffs[x][1])}\n`;\n }\n return text.join(\"\").replace(/%20/g, \" \");\n}\nexport {\n DIFF_DELETE,\n DIFF_EQUAL,\n DIFF_INSERT,\n adjustIndiciesToUcs2,\n apply as applyPatches,\n cleanupEfficiency,\n cleanupSemantic,\n diff as makeDiff,\n make as makePatches,\n match,\n parse as parsePatch,\n stringifyPatch,\n stringify as stringifyPatches,\n xIndex\n};\n//# sourceMappingURL=index.js.map\n","// src/base32.ts\nvar alphabet = \"0123456789abcdefghjkmnpqrstvwxyz\";\nvar dec = new Uint8Array([\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 0,\n 1,\n 2,\n 3,\n 4,\n 5,\n 6,\n 7,\n 8,\n 9,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 10,\n 11,\n 12,\n 13,\n 14,\n 15,\n 16,\n 17,\n 255,\n 18,\n 19,\n 255,\n 20,\n 21,\n 255,\n 22,\n 23,\n 24,\n 25,\n 26,\n 255,\n 27,\n 28,\n 29,\n 30,\n 31,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255,\n 255\n]);\nfunction encode(src) {\n const dst = new Array(26).fill(\"\");\n if (src.length !== 16) {\n throw new Error(\"Invalid length\");\n }\n dst[0] = alphabet[(src[0] & 224) >> 5];\n dst[1] = alphabet[src[0] & 31];\n dst[2] = alphabet[(src[1] & 248) >> 3];\n dst[3] = alphabet[(src[1] & 7) << 2 | (src[2] & 192) >> 6];\n dst[4] = alphabet[(src[2] & 62) >> 1];\n dst[5] = alphabet[(src[2] & 1) << 4 | (src[3] & 240) >> 4];\n dst[6] = alphabet[(src[3] & 15) << 1 | (src[4] & 128) >> 7];\n dst[7] = alphabet[(src[4] & 124) >> 2];\n dst[8] = alphabet[(src[4] & 3) << 3 | (src[5] & 224) >> 5];\n dst[9] = alphabet[src[5] & 31];\n dst[10] = alphabet[(src[6] & 248) >> 3];\n dst[11] = alphabet[(src[6] & 7) << 2 | (src[7] & 192) >> 6];\n dst[12] = alphabet[(src[7] & 62) >> 1];\n dst[13] = alphabet[(src[7] & 1) << 4 | (src[8] & 240) >> 4];\n dst[14] = alphabet[(src[8] & 15) << 1 | (src[9] & 128) >> 7];\n dst[15] = alphabet[(src[9] & 124) >> 2];\n dst[16] = alphabet[(src[9] & 3) << 3 | (src[10] & 224) >> 5];\n dst[17] = alphabet[src[10] & 31];\n dst[18] = alphabet[(src[11] & 248) >> 3];\n dst[19] = alphabet[(src[11] & 7) << 2 | (src[12] & 192) >> 6];\n dst[20] = alphabet[(src[12] & 62) >> 1];\n dst[21] = alphabet[(src[12] & 1) << 4 | (src[13] & 240) >> 4];\n dst[22] = alphabet[(src[13] & 15) << 1 | (src[14] & 128) >> 7];\n dst[23] = alphabet[(src[14] & 124) >> 2];\n dst[24] = alphabet[(src[14] & 3) << 3 | (src[15] & 224) >> 5];\n dst[25] = alphabet[src[15] & 31];\n return dst.join(\"\");\n}\nfunction decode(s) {\n if (s.length !== 26) {\n throw new Error(\"Invalid length\");\n }\n const encoder = new TextEncoder();\n const v = encoder.encode(s);\n if (dec[v[0]] === 255 || dec[v[1]] === 255 || dec[v[2]] === 255 || dec[v[3]] === 255 || dec[v[4]] === 255 || dec[v[5]] === 255 || dec[v[6]] === 255 || dec[v[7]] === 255 || dec[v[8]] === 255 || dec[v[9]] === 255 || dec[v[10]] === 255 || dec[v[11]] === 255 || dec[v[12]] === 255 || dec[v[13]] === 255 || dec[v[14]] === 255 || dec[v[15]] === 255 || dec[v[16]] === 255 || dec[v[17]] === 255 || dec[v[18]] === 255 || dec[v[19]] === 255 || dec[v[20]] === 255 || dec[v[21]] === 255 || dec[v[22]] === 255 || dec[v[23]] === 255 || dec[v[24]] === 255 || dec[v[25]] === 255) {\n throw new Error(\"Invalid base32 character\");\n }\n const id = new Uint8Array(16);\n id[0] = dec[v[0]] << 5 | dec[v[1]];\n id[1] = dec[v[2]] << 3 | dec[v[3]] >> 2;\n id[2] = (dec[v[3]] & 3) << 6 | dec[v[4]] << 1 | dec[v[5]] >> 4;\n id[3] = (dec[v[5]] & 15) << 4 | dec[v[6]] >> 1;\n id[4] = (dec[v[6]] & 1) << 7 | dec[v[7]] << 2 | dec[v[8]] >> 3;\n id[5] = (dec[v[8]] & 7) << 5 | dec[v[9]];\n id[6] = dec[v[10]] << 3 | dec[v[11]] >> 2;\n id[7] = (dec[v[11]] & 3) << 6 | dec[v[12]] << 1 | dec[v[13]] >> 4;\n id[8] = (dec[v[13]] & 15) << 4 | dec[v[14]] >> 1;\n id[9] = (dec[v[14]] & 1) << 7 | dec[v[15]] << 2 | dec[v[16]] >> 3;\n id[10] = (dec[v[16]] & 7) << 5 | dec[v[17]];\n id[11] = dec[v[18]] << 3 | dec[v[19]] >> 2;\n id[12] = (dec[v[19]] & 3) << 6 | dec[v[20]] << 1 | dec[v[21]] >> 4;\n id[13] = (dec[v[21]] & 15) << 4 | dec[v[22]] >> 1;\n id[14] = (dec[v[22]] & 1) << 7 | dec[v[23]] << 2 | dec[v[24]] >> 3;\n id[15] = (dec[v[24]] & 7) << 5 | dec[v[25]];\n return id;\n}\n\nexport {\n encode,\n decode\n};\n//# sourceMappingURL=chunk-4WQUCFGE.mjs.map","// src/parse_uuid.ts\nfunction parseUUID(uuid) {\n let v;\n const arr = new Uint8Array(16);\n arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n arr[1] = v >>> 16 & 255;\n arr[2] = v >>> 8 & 255;\n arr[3] = v & 255;\n arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n arr[5] = v & 255;\n arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n arr[7] = v & 255;\n arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n arr[9] = v & 255;\n arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 1099511627776 & 255;\n arr[11] = v / 4294967296 & 255;\n arr[12] = v >>> 24 & 255;\n arr[13] = v >>> 16 & 255;\n arr[14] = v >>> 8 & 255;\n arr[15] = v & 255;\n return arr;\n}\n\nexport {\n parseUUID\n};\n//# sourceMappingURL=chunk-5QL2QZCM.mjs.map","var __pow = Math.pow;\n\nexport {\n __pow\n};\n//# sourceMappingURL=chunk-R5Q6Z3GN.mjs.map","import {\n decode,\n encode\n} from \"./chunk-4WQUCFGE.mjs\";\nimport {\n parseUUID\n} from \"./chunk-5QL2QZCM.mjs\";\nimport {\n __pow\n} from \"./chunk-R5Q6Z3GN.mjs\";\n\n// node_modules/.pnpm/uuidv7@0.4.4/node_modules/uuidv7/dist/index.js\nvar DIGITS = \"0123456789abcdef\";\nvar UUID = class {\n /** @param bytes - The 16-byte byte array representation. */\n constructor(bytes) {\n this.bytes = bytes;\n if (bytes.length !== 16) {\n throw new TypeError(\"not 128-bit length\");\n }\n }\n /**\n * Builds a byte array from UUIDv7 field values.\n *\n * @param unixTsMs - A 48-bit `unix_ts_ms` field value.\n * @param randA - A 12-bit `rand_a` field value.\n * @param randBHi - The higher 30 bits of 62-bit `rand_b` field value.\n * @param randBLo - The lower 32 bits of 62-bit `rand_b` field value.\n */\n static fromFieldsV7(unixTsMs, randA, randBHi, randBLo) {\n if (!Number.isInteger(unixTsMs) || !Number.isInteger(randA) || !Number.isInteger(randBHi) || !Number.isInteger(randBLo) || unixTsMs < 0 || randA < 0 || randBHi < 0 || randBLo < 0 || unixTsMs > 281474976710655 || randA > 4095 || randBHi > 1073741823 || randBLo > 4294967295) {\n throw new RangeError(\"invalid field value\");\n }\n const bytes = new Uint8Array(16);\n bytes[0] = unixTsMs / __pow(2, 40);\n bytes[1] = unixTsMs / __pow(2, 32);\n bytes[2] = unixTsMs / __pow(2, 24);\n bytes[3] = unixTsMs / __pow(2, 16);\n bytes[4] = unixTsMs / __pow(2, 8);\n bytes[5] = unixTsMs;\n bytes[6] = 112 | randA >>> 8;\n bytes[7] = randA;\n bytes[8] = 128 | randBHi >>> 24;\n bytes[9] = randBHi >>> 16;\n bytes[10] = randBHi >>> 8;\n bytes[11] = randBHi;\n bytes[12] = randBLo >>> 24;\n bytes[13] = randBLo >>> 16;\n bytes[14] = randBLo >>> 8;\n bytes[15] = randBLo;\n return new UUID(bytes);\n }\n /** @returns The 8-4-4-4-12 canonical hexadecimal string representation. */\n toString() {\n let text = \"\";\n for (let i = 0; i < this.bytes.length; i++) {\n text += DIGITS.charAt(this.bytes[i] >>> 4);\n text += DIGITS.charAt(this.bytes[i] & 15);\n if (i === 3 || i === 5 || i === 7 || i === 9) {\n text += \"-\";\n }\n }\n return text;\n }\n /** Creates an object from `this`. */\n clone() {\n return new UUID(this.bytes.slice(0));\n }\n /** Returns true if `this` is equivalent to `other`. */\n equals(other) {\n return this.compareTo(other) === 0;\n }\n /**\n * Returns a negative integer, zero, or positive integer if `this` is less\n * than, equal to, or greater than `other`, respectively.\n */\n compareTo(other) {\n for (let i = 0; i < 16; i++) {\n const diff = this.bytes[i] - other.bytes[i];\n if (diff !== 0) {\n return Math.sign(diff);\n }\n }\n return 0;\n }\n};\nvar V7Generator = class {\n constructor() {\n this.timestamp = 0;\n this.counter = 0;\n this.random = new DefaultRandom();\n }\n /**\n * Generates a new UUIDv7 object from the current timestamp, or resets the\n * generator upon significant timestamp rollback.\n *\n * This method returns monotonically increasing UUIDs unless the up-to-date\n * timestamp is significantly (by ten seconds or more) smaller than the one\n * embedded in the immediately preceding UUID. If such a significant clock\n * rollback is detected, this method resets the generator and returns a new\n * UUID based on the current timestamp.\n */\n generate() {\n const value = this.generateOrAbort();\n if (value !== void 0) {\n return value;\n } else {\n this.timestamp = 0;\n return this.generateOrAbort();\n }\n }\n /**\n * Generates a new UUIDv7 object from the current timestamp, or returns\n * `undefined` upon significant timestamp rollback.\n *\n * This method returns monotonically increasing UUIDs unless the up-to-date\n * timestamp is significantly (by ten seconds or more) smaller than the one\n * embedded in the immediately preceding UUID. If such a significant clock\n * rollback is detected, this method aborts and returns `undefined`.\n */\n generateOrAbort() {\n const MAX_COUNTER = 4398046511103;\n const ROLLBACK_ALLOWANCE = 1e4;\n const ts = Date.now();\n if (ts > this.timestamp) {\n this.timestamp = ts;\n this.resetCounter();\n } else if (ts + ROLLBACK_ALLOWANCE > this.timestamp) {\n this.counter++;\n if (this.counter > MAX_COUNTER) {\n this.timestamp++;\n this.resetCounter();\n }\n } else {\n return void 0;\n }\n return UUID.fromFieldsV7(this.timestamp, Math.trunc(this.counter / __pow(2, 30)), this.counter & __pow(2, 30) - 1, this.random.nextUint32());\n }\n /** Initializes the counter at a 42-bit random integer. */\n resetCounter() {\n this.counter = this.random.nextUint32() * 1024 + (this.random.nextUint32() & 1023);\n }\n};\nvar getRandomValues = (buffer) => {\n if (typeof UUIDV7_DENY_WEAK_RNG !== \"undefined\" && UUIDV7_DENY_WEAK_RNG) {\n throw new Error(\"no cryptographically strong RNG available\");\n }\n for (let i = 0; i < buffer.length; i++) {\n buffer[i] = Math.trunc(Math.random() * 65536) * 65536 + Math.trunc(Math.random() * 65536);\n }\n return buffer;\n};\nif (typeof crypto !== \"undefined\" && crypto.getRandomValues) {\n getRandomValues = (buffer) => crypto.getRandomValues(buffer);\n}\nvar DefaultRandom = class {\n constructor() {\n this.buffer = new Uint32Array(8);\n this.cursor = 99;\n }\n nextUint32() {\n if (this.cursor >= this.buffer.length) {\n getRandomValues(this.buffer);\n this.cursor = 0;\n }\n return this.buffer[this.cursor++];\n }\n};\nvar defaultGenerator;\nvar uuidv7obj = () => (defaultGenerator || (defaultGenerator = new V7Generator())).generate();\n\n// src/typeid.ts\nfunction isValidPrefix(str) {\n if (str.length > 63) {\n return false;\n }\n let code;\n let i;\n let len;\n for (i = 0, len = str.length; i < len; i += 1) {\n code = str.charCodeAt(i);\n if (!(code > 96 && code < 123)) {\n return false;\n }\n }\n return true;\n}\nvar TypeID = class {\n constructor(prefix, suffix = \"\") {\n this.prefix = prefix;\n this.suffix = suffix;\n if (!isValidPrefix(prefix)) {\n throw new Error(\"Invalid prefix. Must be at most 63 ascii letters [a-z]\");\n }\n this.prefix = prefix;\n if (suffix) {\n this.suffix = suffix;\n } else {\n const uuid = uuidv7obj();\n this.suffix = encode(uuid.bytes);\n }\n if (this.suffix.length !== 26) {\n throw new Error(`Invalid length. Suffix should have 26 characters, got ${suffix.length}`);\n }\n if (this.suffix[0] > \"7\") {\n throw new Error(\"Invalid suffix. First character must be in the range [0-7]\");\n }\n const unused = decode(this.suffix);\n }\n getType() {\n return this.prefix;\n }\n getSuffix() {\n return this.suffix;\n }\n asType(prefix) {\n const self = this;\n if (self.prefix !== prefix) {\n throw new Error(`Cannot convert TypeID of type ${self.prefix} to type ${prefix}`);\n }\n return self;\n }\n toUUIDBytes() {\n return decode(this.suffix);\n }\n toUUID() {\n const uuid = new UUID(this.toUUIDBytes());\n return uuid.toString();\n }\n toString() {\n if (this.prefix === \"\") {\n return this.suffix;\n }\n return `${this.prefix}_${this.suffix}`;\n }\n static fromString(str) {\n const parts = str.split(\"_\");\n if (parts.length === 1) {\n return new TypeID(\"\", parts[0]);\n }\n if (parts.length === 2) {\n if (parts[0] === \"\") {\n throw new Error(`Invalid TypeID. Prefix cannot be empty when there's a separator: ${str}`);\n }\n return new TypeID(parts[0], parts[1]);\n }\n throw new Error(`Invalid TypeID string: ${str}`);\n }\n static fromUUIDBytes(prefix, bytes) {\n const suffix = encode(bytes);\n return new TypeID(prefix, suffix);\n }\n static fromUUID(prefix, uuid) {\n const suffix = encode(parseUUID(uuid));\n return new TypeID(prefix, suffix);\n }\n};\nfunction typeid(prefix = \"\", suffix = \"\") {\n return new TypeID(prefix, suffix);\n}\n\nexport {\n TypeID,\n typeid\n};\n/*! Bundled license information:\n\nuuidv7/dist/index.js:\n (**\n * uuidv7: An experimental implementation of the proposed UUID Version 7\n *\n * @license Apache-2.0\n * @copyright 2021-2023 LiosK\n * @packageDocumentation\n *)\n*/\n//# sourceMappingURL=chunk-FOHWUNKU.mjs.map","import { typeid } from 'typeid-js';\nimport { Subject, tap, map, throttle, concatMap, Observable, EMPTY, combineLatest, of, mergeMap, from, catchError, lastValueFrom } from 'rxjs';\nexport { noopLogger, onPageHide, onVisibilityHidden, registerLifecycleEvents } from './_chunks/noopLogger-b5b1676e.js';\nfunction createSessionId() {\n return typeid(\"session\").toString();\n}\nfunction createTraceId() {\n return typeid(\"trace\").toString();\n}\nfunction splitAt(str, index) {\n return index < 1 ? [str, \"\"] : [str.substring(0, index), str.substring(index)];\n}\nconst MAX_LENGTH = 1024;\nfunction trimErrorMessage(errorMessage) {\n const newLineIndex = errorMessage.indexOf(\"\\n\");\n const splitIndex = newLineIndex === -1 ? MAX_LENGTH : Math.min(newLineIndex, MAX_LENGTH);\n const [first, rest] = splitAt(errorMessage, splitIndex);\n return first + (rest ? \"\\u2026 (+\".concat(rest.length, \")\") : \"\");\n}\nfunction createStore(sessionId) {\n const logEntries$ = new Subject();\n const eventSampleTimes = /* @__PURE__ */new WeakMap();\n function pushTraceError(traceId, telemetryTrace, error, context) {\n logEntries$.next({\n sessionId,\n type: \"trace.error\",\n traceId,\n name: telemetryTrace.name,\n version: telemetryTrace.version,\n data: {\n message: trimErrorMessage(error.message)\n },\n context,\n createdAt: (/* @__PURE__ */new Date()).toISOString()\n });\n }\n function pushTraceEntry(type, traceId, telemetryTrace, data, context) {\n logEntries$.next({\n sessionId,\n type,\n traceId,\n name: telemetryTrace.name,\n version: telemetryTrace.version,\n data,\n context,\n createdAt: (/* @__PURE__ */new Date()).toISOString()\n });\n }\n function pushLogEntry(type, event, data) {\n logEntries$.next({\n sessionId,\n type,\n version: event.version,\n name: event.name,\n data,\n createdAt: (/* @__PURE__ */new Date()).toISOString()\n });\n }\n function pushUserPropertiesEntry(properties) {\n logEntries$.next({\n sessionId,\n type: \"userProperties\",\n properties,\n createdAt: (/* @__PURE__ */new Date()).toISOString()\n });\n }\n function createTrace(traceId, traceDef, context) {\n return {\n start() {\n pushTraceEntry(\"trace.start\", traceId, traceDef, void 0, context);\n },\n newContext(name) {\n return {\n trace(innerTraceDef) {\n return createTrace(\"\".concat(traceId, \".\").concat(name), innerTraceDef, context);\n },\n updateUserProperties() {},\n log\n };\n },\n log(data) {\n pushTraceEntry(\"trace.log\", traceId, traceDef, data, context);\n },\n complete() {\n pushTraceEntry(\"trace.complete\", traceId, traceDef, void 0, context);\n },\n error(error) {\n pushTraceError(traceId, traceDef, error, context);\n },\n await(promise, data) {\n this.start();\n promise.then(result => {\n this.log(data ? data : result);\n this.complete();\n return result;\n }, error => {\n this.error(error);\n throw error;\n });\n return promise;\n }\n };\n }\n function log(event, data) {\n if (typeof event.maxSampleRate === \"number\" && event.maxSampleRate > 0) {\n const lastSampledAt = eventSampleTimes.get(event);\n const now = /* @__PURE__ */new Date();\n if (!lastSampledAt || now.getTime() - lastSampledAt.getTime() > event.maxSampleRate) {\n eventSampleTimes.set(event, now);\n pushLogEntry(\"log\", event, data);\n }\n } else {\n pushLogEntry(\"log\", event, data);\n }\n }\n return {\n events$: logEntries$.asObservable(),\n logger: {\n updateUserProperties(properties) {\n pushUserPropertiesEntry(properties);\n },\n trace: (traceDef, context) => {\n const traceId = createTraceId();\n return createTrace(traceId, traceDef, context);\n },\n log\n }\n };\n}\nconst unrefTimer = ms => new Observable(subscriber => {\n const timeout = setTimeout(() => {\n subscriber.next();\n subscriber.complete();\n }, ms);\n if (typeof timeout.unref === \"function\") {\n timeout.unref();\n }\n return () => clearTimeout(timeout);\n});\nfunction createBatchedStore(sessionId, options) {\n var _a;\n const store = createStore(sessionId);\n function resolveConsent() {\n return options.resolveConsent().catch(err => (\n // if we for some reason can't fetch consent we treat it as \"undetermined\", and try again at next flush\n {\n status: \"undetermined\"\n }));\n }\n const _buffer = [];\n function consume() {\n const buf = _buffer.slice();\n _buffer.length = 0;\n return buf;\n }\n function submit() {\n const pending = consume();\n if (pending.length === 0) {\n return EMPTY;\n }\n return combineLatest([of(pending), resolveConsent()]).pipe(mergeMap(_ref => {\n let [events, consent] = _ref;\n if (events.length === 0 || consent.status !== \"granted\") {\n return EMPTY;\n }\n return from(options.sendEvents(events)).pipe(catchError(err => {\n _buffer.unshift(...events);\n return EMPTY;\n }));\n }));\n }\n const flushInterval = (_a = options.flushInterval) != null ? _a : 3e4;\n const flush$ = store.events$.pipe(tap(ev => _buffer.push(ev)), map(() => {}),\n // void to avoid accidental use of events further down the pipe\n throttle(() => unrefTimer(flushInterval), {\n leading: false,\n trailing: true\n }), concatMap(() => submit()));\n function flush() {\n return lastValueFrom(submit(), {\n defaultValue: void 0\n }).then(() => {});\n }\n const subscription = flush$.subscribe();\n function endWithBeacon() {\n if (!options.sendBeacon) {\n end();\n return true;\n }\n const events = consume();\n subscription.unsubscribe();\n return events.length > 0 ? options.sendBeacon(events) : true;\n }\n function end() {\n return flush().then(() => {},\n // void promise\n () => {}\n // ignore errors\n ).finally(() => {\n subscription.unsubscribe();\n });\n }\n return {\n end,\n endWithBeacon,\n // Note: flush may fail\n flush,\n logger: store.logger\n };\n}\nfunction defineEvent(options) {\n return {\n type: \"log\",\n name: options.name,\n version: options.version,\n description: options.description,\n maxSampleRate: options.maxSampleRate,\n schema: void 0\n };\n}\nfunction defineTrace(options) {\n return {\n type: \"trace\",\n name: options.name,\n version: options.version,\n description: options.description,\n schema: void 0,\n context: void 0\n };\n}\nexport { createBatchedStore, createSessionId, defineEvent, defineTrace };\n//# sourceMappingURL=index.js.map\n","module.exports = shallow\n\nfunction shallow(a, b, compare) {\n var aIsNull = a === null\n var bIsNull = b === null\n\n if (aIsNull !== bIsNull) return false\n\n var aIsArray = Array.isArray(a)\n var bIsArray = Array.isArray(b)\n\n if (aIsArray !== bIsArray) return false\n\n var aTypeof = typeof a\n var bTypeof = typeof b\n\n if (aTypeof !== bTypeof) return false\n if (flat(aTypeof)) return compare\n ? compare(a, b)\n : a === b\n\n return aIsArray\n ? shallowArray(a, b, compare)\n : shallowObject(a, b, compare)\n}\n\nfunction shallowArray(a, b, compare) {\n var l = a.length\n if (l !== b.length) return false\n\n if (compare) {\n for (var i = 0; i < l; i++)\n if (!compare(a[i], b[i])) return false\n } else {\n for (var i = 0; i < l; i++) {\n if (a[i] !== b[i]) return false\n }\n }\n\n return true\n}\n\nfunction shallowObject(a, b, compare) {\n var ka = 0\n var kb = 0\n\n if (compare) {\n for (var key in a) {\n if (\n a.hasOwnProperty(key) &&\n !compare(a[key], b[key])\n ) return false\n\n ka++\n }\n } else {\n for (var key in a) {\n if (\n a.hasOwnProperty(key) &&\n a[key] !== b[key]\n ) return false\n\n ka++\n }\n }\n\n for (var key in b) {\n if (b.hasOwnProperty(key)) kb++\n }\n\n return ka === kb\n}\n\nfunction flat(type) {\n return (\n type !== 'function' &&\n type !== 'object'\n )\n}\n","import { asyncScheduler, defer, scheduled, Subject, } from \"rxjs\";\nimport { exhaustMap, finalize, throttle } from \"rxjs/operators\";\n/**\n * Like exhaustMap, but also includes the trailing value emitted from the source observable while waiting for the preceding inner observable to complete\n *\n * Original code adapted from https://github.com/ReactiveX/rxjs/issues/5004\n * @param {function<T, K>(value: T, ?index: number): ObservableInput<K>} project - A function that, when applied to an item emitted by the\n * source Observable, returns a projected Observable.\n */\nexport function exhaustMapWithTrailing(project) {\n return (source) => defer(() => {\n const release = new Subject();\n return source.pipe(throttle(() => release, {\n leading: true,\n trailing: true,\n }), exhaustMap((value, index) => scheduled(project(value, index), asyncScheduler).pipe(finalize(() => {\n release.next();\n }))));\n });\n}\n/**\n * Like exhaustMap, but also includes the trailing value emitted from the source observable while waiting for the preceding inner observable to complete\n *\n * Original code adapted from https://github.com/ReactiveX/rxjs/issues/5004\n * @param {ObservableInput} innerObservable An Observable to replace each value from\n * the source Observable.\n */\nexport function exhaustMapToWithTrailing(innerObservable) {\n return exhaustMapWithTrailing(() => innerObservable);\n}\n","const IS_MAC = typeof window < \"u\" && /Mac|iPod|iPhone|iPad/.test(window.navigator.platform), MODIFIERS = {\n alt: \"altKey\",\n control: \"ctrlKey\",\n meta: \"metaKey\",\n shift: \"shiftKey\"\n}, ALIASES = {\n add: \"+\",\n break: \"pause\",\n cmd: \"meta\",\n command: \"meta\",\n ctl: \"control\",\n ctrl: \"control\",\n del: \"delete\",\n down: \"arrowdown\",\n esc: \"escape\",\n ins: \"insert\",\n left: \"arrowleft\",\n mod: IS_MAC ? \"meta\" : \"control\",\n opt: \"alt\",\n option: \"alt\",\n return: \"enter\",\n right: \"arrowright\",\n space: \" \",\n spacebar: \" \",\n up: \"arrowup\",\n win: \"meta\",\n windows: \"meta\"\n}, CODES = {\n backspace: 8,\n tab: 9,\n enter: 13,\n shift: 16,\n control: 17,\n alt: 18,\n pause: 19,\n capslock: 20,\n escape: 27,\n \" \": 32,\n pageup: 33,\n pagedown: 34,\n end: 35,\n home: 36,\n arrowleft: 37,\n arrowup: 38,\n arrowright: 39,\n arrowdown: 40,\n insert: 45,\n delete: 46,\n meta: 91,\n numlock: 144,\n scrolllock: 145,\n \";\": 186,\n \"=\": 187,\n \",\": 188,\n \"-\": 189,\n \".\": 190,\n \"/\": 191,\n \"`\": 192,\n \"[\": 219,\n \"\\\\\": 220,\n \"]\": 221,\n \"'\": 222\n};\nfor (var f = 1; f < 20; f++)\n CODES[\"f\" + f] = 111 + f;\nfunction isHotkey(hotkey, options, event) {\n options && !(\"byKey\" in options) && (event = options, options = null), Array.isArray(hotkey) || (hotkey = [hotkey]);\n const array = hotkey.map((string) => parseHotkey(string, options)), check = (e) => array.some((object) => compareHotkey(object, e));\n return event == null ? check : check(event);\n}\nfunction isCodeHotkey(hotkey, event) {\n return isHotkey(hotkey, event);\n}\nfunction isKeyHotkey(hotkey, event) {\n return isHotkey(hotkey, { byKey: !0 }, event);\n}\nfunction parseHotkey(hotkey, options) {\n const byKey = options && options.byKey, ret = {};\n hotkey = hotkey.replace(\"++\", \"+add\");\n const values = hotkey.split(\"+\"), { length } = values;\n for (const k in MODIFIERS)\n ret[MODIFIERS[k]] = !1;\n for (let value of values) {\n const optional = value.endsWith(\"?\") && value.length > 1;\n optional && (value = value.slice(0, -1));\n const name = toKeyName(value), modifier = MODIFIERS[name];\n if (value.length > 1 && !modifier && !ALIASES[value] && !CODES[name])\n throw new TypeError(`Unknown modifier: \"${value}\"`);\n (length === 1 || !modifier) && (byKey ? ret.key = name : ret.which = toKeyCode(value)), modifier && (ret[modifier] = optional ? null : !0);\n }\n return ret;\n}\nfunction compareHotkey(object, event) {\n for (const key in object) {\n const expected = object[key];\n let actual;\n if (expected != null && (key === \"key\" && event.key != null ? actual = event.key.toLowerCase() : key === \"which\" ? actual = expected === 91 && event.which === 93 ? 91 : event.which : actual = event[key], !(actual == null && expected === !1) && actual !== expected))\n return !1;\n }\n return !0;\n}\nfunction toKeyCode(name) {\n return name = toKeyName(name), CODES[name] || name.toUpperCase().charCodeAt(0);\n}\nfunction toKeyName(name) {\n return name = name.toLowerCase(), name = ALIASES[name] || name, name;\n}\nexport {\n compareHotkey,\n isCodeHotkey,\n isHotkey,\n isKeyHotkey,\n parseHotkey,\n toKeyCode,\n toKeyName\n};\n//# sourceMappingURL=index.js.map\n","import debug from \"debug\";\nfunction escapeRegExp(string) {\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\nfunction pathRegExp(pattern) {\n const re = [];\n for (const part of pattern.split(\".\"))\n part === \"*\" ? re.push(\"[^.]+\") : part === \"**\" ? re.push(\".*\") : re.push(escapeRegExp(part));\n return new RegExp(`^${re.join(\".\")}$`);\n}\nclass Path {\n pattern;\n patternRe;\n constructor(pattern) {\n this.pattern = pattern, this.patternRe = pathRegExp(pattern);\n }\n matches(str) {\n return this.patternRe.test(str);\n }\n toJSON() {\n return this.pattern;\n }\n}\nclass StreamValue {\n type = \"stream\";\n generator;\n ticker;\n isDone;\n data;\n constructor(generator) {\n this.generator = generator, this.ticker = null, this.isDone = !1, this.data = [];\n }\n // eslint-disable-next-line class-methods-use-this\n isArray() {\n return !0;\n }\n async get() {\n const result = [];\n for await (const value of this)\n result.push(await value.get());\n return result;\n }\n async *[Symbol.asyncIterator]() {\n let i = 0;\n for (; ; ) {\n for (; i < this.data.length; i++)\n yield this.data[i];\n if (this.isDone)\n return;\n await this._nextTick();\n }\n }\n _nextTick() {\n if (this.ticker)\n return this.ticker;\n let currentResolver;\n const setupTicker = () => {\n this.ticker = new Promise((resolve) => {\n currentResolver = resolve;\n });\n }, tick = () => {\n currentResolver(), setupTicker();\n }, fetch = async () => {\n for await (const value of this.generator())\n this.data.push(value), tick();\n this.isDone = !0, tick();\n };\n return setupTicker(), fetch(), this.ticker;\n }\n}\nconst RFC3339_REGEX = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|([-+]\\d{2}:\\d{2}))$/;\nfunction parseRFC3339(str) {\n return RFC3339_REGEX.test(str) ? new Date(str) : null;\n}\nfunction formatRFC3339(d) {\n const year = addLeadingZero(d.getUTCFullYear(), 4), month = addLeadingZero(d.getUTCMonth() + 1, 2), day = addLeadingZero(d.getUTCDate(), 2), hour = addLeadingZero(d.getUTCHours(), 2), minute = addLeadingZero(d.getUTCMinutes(), 2), second = addLeadingZero(d.getUTCSeconds(), 2);\n let fractionalSecond = \"\";\n const millis = d.getMilliseconds();\n return millis != 0 && (fractionalSecond = `.${addLeadingZero(millis, 3)}`), `${year}-${month}-${day}T${hour}:${minute}:${second}${fractionalSecond}Z`;\n}\nfunction addLeadingZero(num, targetLength) {\n let str = num.toString();\n for (; str.length < targetLength; )\n str = `0${str}`;\n return str;\n}\nclass StaticValue {\n data;\n type;\n constructor(data, type) {\n this.data = data, this.type = type;\n }\n isArray() {\n return this.type === \"array\";\n }\n // eslint-disable-next-line require-await\n async get() {\n return this.data;\n }\n [Symbol.asyncIterator]() {\n if (Array.isArray(this.data))\n return function* (data) {\n for (const element of data)\n yield fromJS(element);\n }(this.data);\n throw new Error(`Cannot iterate over: ${this.type}`);\n }\n}\nconst NULL_VALUE = new StaticValue(null, \"null\"), TRUE_VALUE = new StaticValue(!0, \"boolean\"), FALSE_VALUE = new StaticValue(!1, \"boolean\");\nclass DateTime {\n date;\n constructor(date) {\n this.date = date;\n }\n static parseToValue(str) {\n const date = parseRFC3339(str);\n return date ? new StaticValue(new DateTime(date), \"datetime\") : NULL_VALUE;\n }\n equals(other) {\n return this.date.getTime() == other.date.getTime();\n }\n add(secs) {\n const copy = new Date(this.date.getTime());\n return copy.setTime(copy.getTime() + secs * 1e3), new DateTime(copy);\n }\n difference(other) {\n return (this.date.getTime() - other.date.getTime()) / 1e3;\n }\n compareTo(other) {\n return this.date.getTime() - other.date.getTime();\n }\n toString() {\n return formatRFC3339(this.date);\n }\n toJSON() {\n return this.toString();\n }\n}\nfunction fromNumber(num) {\n return Number.isFinite(num) ? new StaticValue(num, \"number\") : NULL_VALUE;\n}\nfunction fromString(str) {\n return new StaticValue(str, \"string\");\n}\nfunction fromDateTime(dt) {\n return new StaticValue(dt, \"datetime\");\n}\nfunction fromPath(path) {\n return new StaticValue(path, \"path\");\n}\nfunction isIterator(obj) {\n return obj && typeof obj.next == \"function\";\n}\nfunction fromJS(val) {\n return isIterator(val) ? new StreamValue(async function* () {\n for await (const value of val)\n yield fromJS(value);\n }) : val == null ? NULL_VALUE : new StaticValue(val, getType(val));\n}\nfunction getType(data) {\n return data === null || typeof data > \"u\" ? \"null\" : Array.isArray(data) ? \"array\" : data instanceof Path ? \"path\" : data instanceof DateTime ? \"datetime\" : typeof data;\n}\nfunction isEqual(a, b) {\n return a.type === \"string\" && b.type === \"string\" || a.type === \"boolean\" && b.type === \"boolean\" || a.type === \"null\" && b.type === \"null\" || a.type === \"number\" && b.type === \"number\" ? a.data === b.data : a.type === \"datetime\" && b.type === \"datetime\" ? a.data.equals(b.data) : !1;\n}\nconst CHARS = /([^!@#$%^&*(),\\\\/?\";:{}|[\\]+<>\\s-])+/g, CHARS_WITH_WILDCARD = /([^!@#$%^&(),\\\\/?\";:{}|[\\]+<>\\s-])+/g, EDGE_CHARS = /(\\b\\.+|\\.+\\b)/g;\nfunction matchText(tokens, patterns) {\n return tokens.length === 0 || patterns.length === 0 ? !1 : patterns.every((pattern) => pattern(tokens));\n}\nfunction matchTokenize(text2) {\n return text2.replace(EDGE_CHARS, \"\").match(CHARS) || [];\n}\nfunction matchAnalyzePattern(text2) {\n return matchPatternRegex(text2).map((re) => (tokens) => tokens.some((token) => re.test(token)));\n}\nfunction matchPatternRegex(text2) {\n return (text2.replace(EDGE_CHARS, \"\").match(CHARS_WITH_WILDCARD) || []).map(\n (term) => new RegExp(`^${term.slice(0, 1024).replace(/\\*/g, \".*\")}$`, \"i\")\n );\n}\nasync function gatherText(value, cb) {\n if (value.type === \"string\")\n return cb(value.data), !0;\n if (value.isArray()) {\n let success = !0;\n for await (const part of value)\n part.type === \"string\" ? cb(part.data) : success = !1;\n return success;\n }\n return !1;\n}\nconst TYPE_ORDER = {\n datetime: 1,\n number: 2,\n string: 3,\n boolean: 4\n};\nfunction partialCompare(a, b) {\n const aType = getType(a), bType = getType(b);\n if (aType !== bType)\n return null;\n switch (aType) {\n case \"number\":\n case \"boolean\":\n return a - b;\n case \"string\":\n return a < b ? -1 : a > b ? 1 : 0;\n case \"datetime\":\n return a.compareTo(b);\n default:\n return null;\n }\n}\nfunction totalCompare(a, b) {\n const aType = getType(a), bType = getType(b), aTypeOrder = TYPE_ORDER[aType] || 100, bTypeOrder = TYPE_ORDER[bType] || 100;\n if (aTypeOrder !== bTypeOrder)\n return aTypeOrder - bTypeOrder;\n let result = partialCompare(a, b);\n return result === null && (result = 0), result;\n}\nconst operators = {\n \"==\": function(left, right) {\n return isEqual(left, right) ? TRUE_VALUE : FALSE_VALUE;\n },\n \"!=\": function(left, right) {\n return isEqual(left, right) ? FALSE_VALUE : TRUE_VALUE;\n },\n \">\": function(left, right) {\n if (left.type === \"stream\" || right.type === \"stream\") return NULL_VALUE;\n const result = partialCompare(left.data, right.data);\n return result === null ? NULL_VALUE : result > 0 ? TRUE_VALUE : FALSE_VALUE;\n },\n \">=\": function(left, right) {\n if (left.type === \"stream\" || right.type === \"stream\") return NULL_VALUE;\n const result = partialCompare(left.data, right.data);\n return result === null ? NULL_VALUE : result >= 0 ? TRUE_VALUE : FALSE_VALUE;\n },\n \"<\": function(left, right) {\n if (left.type === \"stream\" || right.type === \"stream\") return NULL_VALUE;\n const result = partialCompare(left.data, right.data);\n return result === null ? NULL_VALUE : result < 0 ? TRUE_VALUE : FALSE_VALUE;\n },\n \"<=\": function(left, right) {\n if (left.type === \"stream\" || right.type === \"stream\") return NULL_VALUE;\n const result = partialCompare(left.data, right.data);\n return result === null ? NULL_VALUE : result <= 0 ? TRUE_VALUE : FALSE_VALUE;\n },\n // eslint-disable-next-line func-name-matching\n in: async function(left, right) {\n if (right.type === \"path\")\n return left.type !== \"string\" ? NULL_VALUE : right.data.matches(left.data) ? TRUE_VALUE : FALSE_VALUE;\n if (right.isArray()) {\n for await (const b of right)\n if (isEqual(left, b))\n return TRUE_VALUE;\n return FALSE_VALUE;\n }\n return NULL_VALUE;\n },\n match: async function(left, right) {\n let tokens = [], patterns = [];\n return await gatherText(left, (part) => {\n tokens = tokens.concat(matchTokenize(part));\n }), await gatherText(right, (part) => {\n patterns = patterns.concat(matchAnalyzePattern(part));\n }) && matchText(tokens, patterns) ? TRUE_VALUE : FALSE_VALUE;\n },\n \"+\": function(left, right) {\n return left.type === \"datetime\" && right.type === \"number\" ? fromDateTime(left.data.add(right.data)) : left.type === \"number\" && right.type === \"number\" ? fromNumber(left.data + right.data) : left.type === \"string\" && right.type === \"string\" ? fromString(left.data + right.data) : left.type === \"object\" && right.type === \"object\" ? fromJS({ ...left.data, ...right.data }) : left.type === \"array\" && right.type === \"array\" ? fromJS(left.data.concat(right.data)) : left.isArray() && right.isArray() ? new StreamValue(async function* () {\n for await (const val of left)\n yield val;\n for await (const val of right)\n yield val;\n }) : NULL_VALUE;\n },\n \"-\": function(left, right) {\n return left.type === \"datetime\" && right.type === \"number\" ? fromDateTime(left.data.add(-right.data)) : left.type === \"datetime\" && right.type === \"datetime\" ? fromNumber(left.data.difference(right.data)) : left.type === \"number\" && right.type === \"number\" ? fromNumber(left.data - right.data) : NULL_VALUE;\n },\n \"*\": numericOperator((a, b) => a * b),\n \"/\": numericOperator((a, b) => a / b),\n \"%\": numericOperator((a, b) => a % b),\n \"**\": numericOperator((a, b) => Math.pow(a, b))\n};\nfunction numericOperator(impl) {\n return function(left, right) {\n if (left.type === \"number\" && right.type === \"number\") {\n const result = impl(left.data, right.data);\n return fromNumber(result);\n }\n return NULL_VALUE;\n };\n}\nlet Scope$1 = class Scope {\n params;\n source;\n value;\n parent;\n context;\n isHidden = !1;\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n constructor(params, source, value, context, parent) {\n this.params = params, this.source = source, this.value = value, this.context = context, this.parent = parent;\n }\n createNested(value) {\n return this.isHidden ? new Scope(this.params, this.source, value, this.context, this.parent) : new Scope(this.params, this.source, value, this.context, this);\n }\n createHidden(value) {\n const result = this.createNested(value);\n return result.isHidden = !0, result;\n }\n};\nfunction evaluate(node, scope, execute = evaluate) {\n const func = EXECUTORS[node.type];\n return func(node, scope, execute);\n}\nfunction promiselessApply(value, cb) {\n return \"then\" in value ? value.then(cb) : cb(value);\n}\nconst EXECUTORS = {\n This(_, scope) {\n return scope.value;\n },\n Selector() {\n throw new Error(\"Selectors can not be evaluated\");\n },\n Everything(_, scope) {\n return scope.source;\n },\n Parameter({ name }, scope) {\n return fromJS(scope.params[name]);\n },\n Context({ key }, scope) {\n if (key === \"before\" || key === \"after\")\n return scope.context[key] || NULL_VALUE;\n throw new Error(`unknown context key: ${key}`);\n },\n Parent({ n }, scope) {\n let current = scope;\n for (let i = 0; i < n; i++) {\n if (!current.parent)\n return NULL_VALUE;\n current = current.parent;\n }\n return current.value;\n },\n OpCall({ op, left, right }, scope, execute) {\n const func = operators[op];\n if (!func)\n throw new Error(`Unknown operator: ${op}`);\n const leftValue = execute(left, scope), rightValue = execute(right, scope);\n return \"then\" in leftValue || \"then\" in rightValue ? (async () => func(await leftValue, await rightValue))() : func(leftValue, rightValue);\n },\n async Select({ alternatives, fallback }, scope, execute) {\n for (const alt of alternatives) {\n const altCond = await execute(alt.condition, scope);\n if (altCond.type === \"boolean\" && altCond.data === !0)\n return execute(alt.value, scope);\n }\n return fallback ? execute(fallback, scope) : NULL_VALUE;\n },\n async InRange({ base, left, right, isInclusive }, scope, execute) {\n const value = await execute(base, scope), leftValue = await execute(left, scope), rightValue = await execute(right, scope), leftCmp = partialCompare(await value.get(), await leftValue.get());\n if (leftCmp === null)\n return NULL_VALUE;\n const rightCmp = partialCompare(await value.get(), await rightValue.get());\n return rightCmp === null ? NULL_VALUE : isInclusive ? leftCmp >= 0 && rightCmp <= 0 ? TRUE_VALUE : FALSE_VALUE : leftCmp >= 0 && rightCmp < 0 ? TRUE_VALUE : FALSE_VALUE;\n },\n async Filter({ base, expr }, scope, execute) {\n const baseValue = await execute(base, scope);\n return baseValue.isArray() ? new StreamValue(async function* () {\n for await (const elem of baseValue) {\n const newScope = scope.createNested(elem), exprValue = await execute(expr, newScope);\n exprValue.type === \"boolean\" && exprValue.data === !0 && (yield elem);\n }\n }) : NULL_VALUE;\n },\n async Projection({ base, expr }, scope, execute) {\n const baseValue = await execute(base, scope);\n if (baseValue.type !== \"object\")\n return NULL_VALUE;\n const newScope = scope.createNested(baseValue);\n return execute(expr, newScope);\n },\n FuncCall({ func, args }, scope, execute) {\n return func(args, scope, execute);\n },\n async PipeFuncCall({ func, base, args }, scope, execute) {\n const baseValue = await execute(base, scope);\n return func(baseValue, args, scope, execute);\n },\n async AccessAttribute({ base, name }, scope, execute) {\n let value = scope.value;\n return base && (value = await execute(base, scope)), value.type === \"object\" && value.data.hasOwnProperty(name) ? fromJS(value.data[name]) : NULL_VALUE;\n },\n async AccessElement({ base, index }, scope, execute) {\n const baseValue = await execute(base, scope);\n if (!baseValue.isArray())\n return NULL_VALUE;\n const data = await baseValue.get(), finalIndex = index < 0 ? index + data.length : index;\n return fromJS(data[finalIndex]);\n },\n async Slice({ base, left, right, isInclusive }, scope, execute) {\n const baseValue = await execute(base, scope);\n if (!baseValue.isArray())\n return NULL_VALUE;\n const array2 = await baseValue.get();\n let leftIdx = left, rightIdx = right;\n return leftIdx < 0 && (leftIdx = array2.length + leftIdx), rightIdx < 0 && (rightIdx = array2.length + rightIdx), isInclusive && rightIdx++, leftIdx < 0 && (leftIdx = 0), rightIdx < 0 && (rightIdx = 0), fromJS(array2.slice(leftIdx, rightIdx));\n },\n async Deref({ base }, scope, execute) {\n const value = await execute(base, scope);\n if (!scope.source.isArray() || value.type !== \"object\")\n return NULL_VALUE;\n const id = value.data._ref;\n if (typeof id != \"string\")\n return NULL_VALUE;\n if (scope.context.dereference)\n return fromJS(await scope.context.dereference({ _ref: id }));\n for await (const doc of scope.source)\n if (doc.type === \"object\" && id === doc.data._id)\n return doc;\n return NULL_VALUE;\n },\n Value({ value }) {\n return fromJS(value);\n },\n Group({ base }, scope, execute) {\n return execute(base, scope);\n },\n async Object({ attributes }, scope, execute) {\n const result = {};\n for (const attr of attributes) {\n const attrType = attr.type;\n switch (attr.type) {\n case \"ObjectAttributeValue\": {\n const value = await execute(attr.value, scope);\n result[attr.name] = await value.get();\n break;\n }\n case \"ObjectConditionalSplat\": {\n const cond = await execute(attr.condition, scope);\n if (cond.type !== \"boolean\" || cond.data === !1)\n continue;\n const value = await execute(attr.value, scope);\n value.type === \"object\" && Object.assign(result, value.data);\n break;\n }\n case \"ObjectSplat\": {\n const value = await execute(attr.value, scope);\n value.type === \"object\" && Object.assign(result, value.data);\n break;\n }\n default:\n throw new Error(`Unknown node type: ${attrType}`);\n }\n }\n return fromJS(result);\n },\n Array({ elements }, scope, execute) {\n return new StreamValue(async function* () {\n for (const element of elements) {\n const value = await execute(element.value, scope);\n if (element.isSplat) {\n if (value.isArray())\n for await (const v of value)\n yield v;\n } else\n yield value;\n }\n });\n },\n Tuple() {\n throw new Error(\"tuples can not be evaluated\");\n },\n async Or({ left, right }, scope, execute) {\n const leftValue = await execute(left, scope), rightValue = await execute(right, scope);\n return leftValue.type === \"boolean\" && leftValue.data === !0 || rightValue.type === \"boolean\" && rightValue.data === !0 ? TRUE_VALUE : leftValue.type !== \"boolean\" || rightValue.type !== \"boolean\" ? NULL_VALUE : FALSE_VALUE;\n },\n async And({ left, right }, scope, execute) {\n const leftValue = await execute(left, scope), rightValue = await execute(right, scope);\n return leftValue.type === \"boolean\" && leftValue.data === !1 || rightValue.type === \"boolean\" && rightValue.data === !1 ? FALSE_VALUE : leftValue.type !== \"boolean\" || rightValue.type !== \"boolean\" ? NULL_VALUE : TRUE_VALUE;\n },\n async Not({ base }, scope, execute) {\n const value = await execute(base, scope);\n return value.type !== \"boolean\" ? NULL_VALUE : value.data ? FALSE_VALUE : TRUE_VALUE;\n },\n Neg({ base }, scope, execute) {\n return promiselessApply(execute(base, scope), (value) => value.type !== \"number\" ? NULL_VALUE : fromNumber(-value.data));\n },\n Pos({ base }, scope, execute) {\n return promiselessApply(execute(base, scope), (value) => value.type !== \"number\" ? NULL_VALUE : fromNumber(value.data));\n },\n Asc() {\n return NULL_VALUE;\n },\n Desc() {\n return NULL_VALUE;\n },\n async ArrayCoerce({ base }, scope, execute) {\n const value = await execute(base, scope);\n return value.isArray() ? value : NULL_VALUE;\n },\n async Map({ base, expr }, scope, execute) {\n const value = await execute(base, scope);\n return value.isArray() ? new StreamValue(async function* () {\n for await (const elem of value) {\n const newScope = scope.createHidden(elem);\n yield await execute(expr, newScope);\n }\n }) : NULL_VALUE;\n },\n async FlatMap({ base, expr }, scope, execute) {\n const value = await execute(base, scope);\n return value.isArray() ? new StreamValue(async function* () {\n for await (const elem of value) {\n const newScope = scope.createHidden(elem), innerValue = await execute(expr, newScope);\n if (innerValue.isArray())\n for await (const inner of innerValue)\n yield inner;\n else\n yield innerValue;\n }\n }) : NULL_VALUE;\n }\n};\nfunction evaluateQuery(tree, options = {}) {\n const root = fromJS(options.root), dataset = fromJS(options.dataset), params = { ...options.params }, scope = new Scope$1(\n params,\n dataset,\n root,\n {\n timestamp: options.timestamp || /* @__PURE__ */ new Date(),\n identity: options.identity === void 0 ? \"me\" : options.identity,\n sanity: options.sanity,\n after: options.after ? fromJS(options.after) : null,\n before: options.before ? fromJS(options.before) : null,\n dereference: options.dereference\n },\n null\n );\n return evaluate(tree, scope);\n}\nfunction canConstantEvaluate(node) {\n switch (node.type) {\n case \"Group\":\n return canConstantEvaluate(node.base);\n case \"Value\":\n case \"Parameter\":\n return !0;\n case \"Pos\":\n case \"Neg\":\n return canConstantEvaluate(node.base);\n case \"OpCall\":\n switch (node.op) {\n case \"+\":\n case \"-\":\n case \"*\":\n case \"/\":\n case \"%\":\n case \"**\":\n return canConstantEvaluate(node.left) && canConstantEvaluate(node.right);\n default:\n return !1;\n }\n default:\n return !1;\n }\n}\nconst DUMMY_SCOPE = new Scope$1(\n {},\n NULL_VALUE,\n NULL_VALUE,\n { timestamp: /* @__PURE__ */ new Date(0), identity: \"me\", before: null, after: null },\n null\n);\nfunction tryConstantEvaluate(node) {\n return canConstantEvaluate(node) ? constantEvaluate(node) : null;\n}\nfunction constantEvaluate(node) {\n const value = evaluate(node, DUMMY_SCOPE, constantEvaluate);\n if (\"then\" in value)\n throw new Error(\"BUG: constant evaluate should never return a promise\");\n return value;\n}\nasync function portableTextContent(value) {\n if (value.type === \"object\")\n return blockText(value.data);\n if (value.isArray()) {\n const texts = await arrayText(value);\n if (texts.length > 0)\n return texts.join(`\n\n`);\n }\n return null;\n}\nasync function arrayText(value, result = []) {\n for await (const block of value)\n if (block.type === \"object\") {\n const text2 = blockText(block.data);\n text2 !== null && result.push(text2);\n } else block.isArray() && await arrayText(block, result);\n return result;\n}\nfunction blockText(obj) {\n if (typeof obj._type != \"string\") return null;\n const children = obj.children;\n if (!Array.isArray(children)) return null;\n let result = \"\";\n for (const child of children)\n child && typeof child == \"object\" && typeof child._type == \"string\" && child._type === \"span\" && typeof child.text == \"string\" && (result += child.text);\n return result;\n}\nconst BM25k = 1.2;\nasync function evaluateScore(node, scope, execute) {\n if (node.type === \"OpCall\" && node.op === \"match\")\n return evaluateMatchScore(node.left, node.right, scope, execute);\n if (node.type === \"FuncCall\" && node.name === \"boost\") {\n const innerScore = await evaluateScore(node.args[0], scope, execute), boost = await execute(node.args[1], scope);\n return boost.type === \"number\" && innerScore > 0 ? innerScore + boost.data : 0;\n }\n switch (node.type) {\n case \"Or\": {\n const leftScore = await evaluateScore(node.left, scope, execute), rightScore = await evaluateScore(node.right, scope, execute);\n return leftScore + rightScore;\n }\n case \"And\": {\n const leftScore = await evaluateScore(node.left, scope, execute), rightScore = await evaluateScore(node.right, scope, execute);\n return leftScore === 0 || rightScore === 0 ? 0 : leftScore + rightScore;\n }\n default: {\n const res = await execute(node, scope);\n return res.type === \"boolean\" && res.data === !0 ? 1 : 0;\n }\n }\n}\nasync function evaluateMatchScore(left, right, scope, execute) {\n const text2 = await execute(left, scope), pattern = await execute(right, scope);\n let tokens = [], terms = [];\n if (await gatherText(text2, (part) => {\n tokens = tokens.concat(matchTokenize(part));\n }), !await gatherText(pattern, (part) => {\n terms = terms.concat(matchPatternRegex(part));\n }) || tokens.length === 0 || terms.length === 0)\n return 0;\n let score = 0;\n for (const re of terms) {\n const freq = tokens.reduce((c, token) => c + (re.test(token) ? 1 : 0), 0);\n score += freq * (BM25k + 1) / (freq + BM25k);\n }\n return score;\n}\nfunction hasReference(value, pathSet) {\n switch (getType(value)) {\n case \"array\":\n for (const v of value)\n if (hasReference(v, pathSet))\n return !0;\n break;\n case \"object\":\n if (value._ref)\n return pathSet.has(value._ref);\n for (const v of Object.values(value))\n if (hasReference(v, pathSet))\n return !0;\n break;\n }\n return !1;\n}\nfunction countUTF8(str) {\n let count2 = 0;\n for (let i = 0; i < str.length; i++) {\n const code = str.charCodeAt(i);\n code >= 55296 && code <= 56319 || count2++;\n }\n return count2;\n}\nconst _global = {};\n_global.anywhere = async function() {\n throw new Error(\"not implemented\");\n};\n_global.anywhere.arity = 1;\n_global.coalesce = async function(args, scope, execute) {\n for (const arg of args) {\n const value = await execute(arg, scope);\n if (value.type !== \"null\")\n return value;\n }\n return NULL_VALUE;\n};\n_global.count = async function(args, scope, execute) {\n const inner = await execute(args[0], scope);\n if (!inner.isArray())\n return NULL_VALUE;\n let num = 0;\n for await (const _ of inner)\n num++;\n return fromNumber(num);\n};\n_global.count.arity = 1;\n_global.dateTime = async function(args, scope, execute) {\n const val = await execute(args[0], scope);\n return val.type === \"datetime\" ? val : val.type !== \"string\" ? NULL_VALUE : DateTime.parseToValue(val.data);\n};\n_global.dateTime.arity = 1;\n_global.defined = async function(args, scope, execute) {\n return (await execute(args[0], scope)).type === \"null\" ? FALSE_VALUE : TRUE_VALUE;\n};\n_global.defined.arity = 1;\n_global.identity = async function(_args, scope) {\n return fromString(scope.context.identity);\n};\n_global.identity.arity = 0;\n_global.length = async function(args, scope, execute) {\n const inner = await execute(args[0], scope);\n if (inner.type === \"string\")\n return fromNumber(countUTF8(inner.data));\n if (inner.isArray()) {\n let num = 0;\n for await (const _ of inner)\n num++;\n return fromNumber(num);\n }\n return NULL_VALUE;\n};\n_global.length.arity = 1;\n_global.path = async function(args, scope, execute) {\n const inner = await execute(args[0], scope);\n return inner.type !== \"string\" ? NULL_VALUE : fromPath(new Path(inner.data));\n};\n_global.path.arity = 1;\n_global.string = async function(args, scope, execute) {\n const value = await execute(args[0], scope);\n switch (value.type) {\n case \"number\":\n case \"string\":\n case \"boolean\":\n case \"datetime\":\n return fromString(`${value.data}`);\n default:\n return NULL_VALUE;\n }\n};\n_global.string.arity = 1;\n_global.references = async function(args, scope, execute) {\n const pathSet = /* @__PURE__ */ new Set();\n for (const arg of args) {\n const path2 = await execute(arg, scope);\n if (path2.type === \"string\")\n pathSet.add(path2.data);\n else if (path2.isArray())\n for await (const elem of path2)\n elem.type === \"string\" && pathSet.add(elem.data);\n }\n if (pathSet.size === 0)\n return FALSE_VALUE;\n const scopeValue = await scope.value.get();\n return hasReference(scopeValue, pathSet) ? TRUE_VALUE : FALSE_VALUE;\n};\n_global.references.arity = (c) => c >= 1;\n_global.round = async function(args, scope, execute) {\n const value = await execute(args[0], scope);\n if (value.type !== \"number\")\n return NULL_VALUE;\n const num = value.data;\n let prec = 0;\n if (args.length === 2) {\n const precValue = await execute(args[1], scope);\n if (precValue.type !== \"number\" || precValue.data < 0 || !Number.isInteger(precValue.data))\n return NULL_VALUE;\n prec = precValue.data;\n }\n return prec === 0 ? num < 0 ? fromNumber(-Math.round(-num)) : fromNumber(Math.round(num)) : fromNumber(Number(num.toFixed(prec)));\n};\n_global.round.arity = (count2) => count2 >= 1 && count2 <= 2;\n_global.now = async function(_args, scope) {\n return fromString(scope.context.timestamp.toISOString());\n};\n_global.now.arity = 0;\n_global.boost = async function() {\n throw new Error(\"unexpected boost call\");\n};\n_global.boost.arity = 2;\nconst string2 = {};\nstring2.lower = async function(args, scope, execute) {\n const value = await execute(args[0], scope);\n return value.type !== \"string\" ? NULL_VALUE : fromString(value.data.toLowerCase());\n};\nstring2.lower.arity = 1;\nstring2.upper = async function(args, scope, execute) {\n const value = await execute(args[0], scope);\n return value.type !== \"string\" ? NULL_VALUE : fromString(value.data.toUpperCase());\n};\nstring2.upper.arity = 1;\nstring2.split = async function(args, scope, execute) {\n const str = await execute(args[0], scope);\n if (str.type !== \"string\")\n return NULL_VALUE;\n const sep = await execute(args[1], scope);\n return sep.type !== \"string\" ? NULL_VALUE : str.data.length === 0 ? fromJS([]) : sep.data.length === 0 ? fromJS(Array.from(str.data)) : fromJS(str.data.split(sep.data));\n};\nstring2.split.arity = 2;\n_global.lower = string2.lower;\n_global.upper = string2.upper;\nstring2.startsWith = async function(args, scope, execute) {\n const str = await execute(args[0], scope);\n if (str.type !== \"string\")\n return NULL_VALUE;\n const prefix = await execute(args[1], scope);\n return prefix.type !== \"string\" ? NULL_VALUE : str.data.startsWith(prefix.data) ? TRUE_VALUE : FALSE_VALUE;\n};\nstring2.startsWith.arity = 2;\nconst array = {};\narray.join = async function(args, scope, execute) {\n const arr = await execute(args[0], scope);\n if (!arr.isArray())\n return NULL_VALUE;\n const sep = await execute(args[1], scope);\n if (sep.type !== \"string\")\n return NULL_VALUE;\n let buf = \"\", needSep = !1;\n for await (const elem of arr) {\n switch (needSep && (buf += sep.data), elem.type) {\n case \"number\":\n case \"string\":\n case \"boolean\":\n case \"datetime\":\n buf += `${elem.data}`;\n break;\n default:\n return NULL_VALUE;\n }\n needSep = !0;\n }\n return fromJS(buf);\n};\narray.join.arity = 2;\narray.compact = async function(args, scope, execute) {\n const arr = await execute(args[0], scope);\n return arr.isArray() ? new StreamValue(async function* () {\n for await (const elem of arr)\n elem.type !== \"null\" && (yield elem);\n }) : NULL_VALUE;\n};\narray.compact.arity = 1;\narray.unique = async function(args, scope, execute) {\n const value = await execute(args[0], scope);\n return value.isArray() ? new StreamValue(async function* () {\n const added = /* @__PURE__ */ new Set();\n for await (const iter of value)\n switch (iter.type) {\n case \"number\":\n case \"string\":\n case \"boolean\":\n case \"datetime\":\n added.has(iter.data) || (added.add(iter.data), yield iter);\n break;\n default:\n yield iter;\n }\n }) : NULL_VALUE;\n};\narray.unique.arity = 1;\narray.intersects = async function(args, scope, execute) {\n const arr1 = await execute(args[0], scope);\n if (!arr1.isArray())\n return NULL_VALUE;\n const arr2 = await execute(args[1], scope);\n if (!arr2.isArray())\n return NULL_VALUE;\n for await (const v1 of arr1)\n for await (const v2 of arr2)\n if (isEqual(v1, v2))\n return TRUE_VALUE;\n return FALSE_VALUE;\n};\narray.intersects.arity = 2;\nconst pt = {};\npt.text = async function(args, scope, execute) {\n const value = await execute(args[0], scope), text2 = await portableTextContent(value);\n return text2 === null ? NULL_VALUE : fromString(text2);\n};\npt.text.arity = 1;\nconst sanity = {};\nsanity.projectId = async function(_args, scope) {\n return scope.context.sanity ? fromString(scope.context.sanity.projectId) : NULL_VALUE;\n};\nsanity.dataset = async function(_args, scope) {\n return scope.context.sanity ? fromString(scope.context.sanity.dataset) : NULL_VALUE;\n};\nsanity.versionOf = async function(args, scope, execute) {\n const value = await execute(args[0], scope);\n if (value.type !== \"string\") return NULL_VALUE;\n const baseId = value.data, val = await scope.value.get();\n if (!val || typeof val._id != \"string\") return NULL_VALUE;\n const components = val._id.split(\".\");\n return val._id === baseId || components.length >= 2 && components[0] === \"drafts\" && components.slice(1).join(\".\") === baseId || components.length >= 3 && components[0] === \"versions\" && components.slice(2).join(\".\") === baseId ? TRUE_VALUE : FALSE_VALUE;\n};\nsanity.versionOf.arity = 1;\nsanity.partOfRelease = async function(args, scope, execute) {\n const value = await execute(args[0], scope);\n if (value.type !== \"string\") return NULL_VALUE;\n const baseId = value.data, val = await scope.value.get();\n if (!val || typeof val._id != \"string\") return NULL_VALUE;\n const components = val._id.split(\".\");\n return fromJS(components.length >= 3 && components[0] === \"versions\" && components[1] === baseId);\n};\nsanity.partOfRelease.arity = 1;\nconst releases = {};\nreleases.all = async function(_args, scope) {\n const allReleases = [];\n for await (const value of scope.source)\n if (getType(value) === \"object\") {\n const val = await value.get();\n val && \"_type\" in val && val._type === \"system.release\" && allReleases.push(val);\n }\n return fromJS(allReleases);\n};\nreleases.all.arity = 0;\nconst pipeFunctions = {};\npipeFunctions.order = async function(base, args, scope, execute) {\n if (await !0, !base.isArray())\n return NULL_VALUE;\n const mappers = [], directions = [];\n let n = 0;\n for (let mapper of args) {\n let direction = \"asc\";\n mapper.type === \"Desc\" ? (direction = \"desc\", mapper = mapper.base) : mapper.type === \"Asc\" && (mapper = mapper.base), mappers.push(mapper), directions.push(direction), n++;\n }\n const aux = [];\n let idx = 0;\n for await (const value of base) {\n const newScope = scope.createNested(value), tuple = [await value.get(), idx];\n for (let i = 0; i < n; i++) {\n const result = await execute(mappers[i], newScope);\n tuple.push(await result.get());\n }\n aux.push(tuple), idx++;\n }\n return aux.sort((aTuple, bTuple) => {\n for (let i = 0; i < n; i++) {\n let c = totalCompare(aTuple[i + 2], bTuple[i + 2]);\n if (directions[i] === \"desc\" && (c = -c), c !== 0)\n return c;\n }\n return aTuple[1] - bTuple[1];\n }), fromJS(aux.map((v) => v[0]));\n};\npipeFunctions.order.arity = (count2) => count2 >= 1;\npipeFunctions.score = async function(base, args, scope, execute) {\n if (!base.isArray()) return NULL_VALUE;\n const unknown = [], scored = [];\n for await (const value of base) {\n if (value.type !== \"object\") {\n unknown.push(await value.get());\n continue;\n }\n const newScope = scope.createNested(value);\n let valueScore = typeof value.data._score == \"number\" ? value.data._score : 0;\n for (const arg of args)\n valueScore += await evaluateScore(arg, newScope, execute);\n const newObject = Object.assign({}, value.data, { _score: valueScore });\n scored.push(newObject);\n }\n return scored.sort((a, b) => b._score - a._score), fromJS(scored);\n};\npipeFunctions.score.arity = (count2) => count2 >= 1;\nconst delta = {};\ndelta.operation = async function(_args, scope) {\n const hasBefore = scope.context.before !== null, hasAfter = scope.context.after !== null;\n return hasBefore && hasAfter ? fromString(\"update\") : hasAfter ? fromString(\"create\") : hasBefore ? fromString(\"delete\") : NULL_VALUE;\n};\ndelta.changedAny = () => {\n throw new Error(\"not implemented\");\n};\ndelta.changedAny.arity = 1;\ndelta.changedAny.mode = \"delta\";\ndelta.changedOnly = () => {\n throw new Error(\"not implemented\");\n};\ndelta.changedOnly.arity = 1;\ndelta.changedOnly.mode = \"delta\";\nconst diff = {};\ndiff.changedAny = () => {\n throw new Error(\"not implemented\");\n};\ndiff.changedAny.arity = 3;\ndiff.changedOnly = () => {\n throw new Error(\"not implemented\");\n};\ndiff.changedOnly.arity = 3;\nconst math = {};\nmath.min = async function(args, scope, execute) {\n const arr = await execute(args[0], scope);\n if (!arr.isArray())\n return NULL_VALUE;\n let n;\n for await (const elem of arr)\n if (elem.type !== \"null\") {\n if (elem.type !== \"number\")\n return NULL_VALUE;\n (n === void 0 || elem.data < n) && (n = elem.data);\n }\n return fromJS(n);\n};\nmath.min.arity = 1;\nmath.max = async function(args, scope, execute) {\n const arr = await execute(args[0], scope);\n if (!arr.isArray())\n return NULL_VALUE;\n let n;\n for await (const elem of arr)\n if (elem.type !== \"null\") {\n if (elem.type !== \"number\")\n return NULL_VALUE;\n (n === void 0 || elem.data > n) && (n = elem.data);\n }\n return fromJS(n);\n};\nmath.max.arity = 1;\nmath.sum = async function(args, scope, execute) {\n const arr = await execute(args[0], scope);\n if (!arr.isArray())\n return NULL_VALUE;\n let n = 0;\n for await (const elem of arr)\n if (elem.type !== \"null\") {\n if (elem.type !== \"number\")\n return NULL_VALUE;\n n += elem.data;\n }\n return fromJS(n);\n};\nmath.sum.arity = 1;\nmath.avg = async function(args, scope, execute) {\n const arr = await execute(args[0], scope);\n if (!arr.isArray())\n return NULL_VALUE;\n let n = 0, c = 0;\n for await (const elem of arr)\n if (elem.type !== \"null\") {\n if (elem.type !== \"number\")\n return NULL_VALUE;\n n += elem.data, c++;\n }\n return c === 0 ? NULL_VALUE : fromJS(n / c);\n};\nmath.avg.arity = 1;\nconst dateTime2 = {};\ndateTime2.now = async function(_args, scope) {\n return fromDateTime(new DateTime(scope.context.timestamp));\n};\ndateTime2.now.arity = 0;\nconst text = {};\ntext.query = () => {\n throw new Error(\"not implemented\");\n};\ntext.query.arity = 1;\nconst namespaces = {\n global: _global,\n string: string2,\n array,\n pt,\n delta,\n diff,\n sanity,\n math,\n dateTime: dateTime2,\n releases,\n text\n};\nclass MarkProcessor {\n string;\n marks;\n index;\n parseOptions;\n allowBoost = !1;\n constructor(string, marks, parseOptions) {\n this.string = string, this.marks = marks, this.index = 0, this.parseOptions = parseOptions;\n }\n hasMark(pos = 0) {\n return this.index + pos < this.marks.length;\n }\n getMark(pos = 0) {\n return this.marks[this.index + pos];\n }\n shift() {\n this.index += 1;\n }\n process(visitor) {\n const mark = this.marks[this.index];\n this.shift();\n const func = visitor[mark.name];\n if (!func)\n throw new Error(`Unknown handler: ${mark.name}`);\n return func.call(visitor, this, mark);\n }\n processString() {\n return this.shift(), this.processStringEnd();\n }\n processStringEnd() {\n const prev = this.marks[this.index - 1], curr = this.marks[this.index];\n return this.shift(), this.string.slice(prev.position, curr.position);\n }\n slice(len) {\n const pos = this.marks[this.index].position;\n return this.string.slice(pos, pos + len);\n }\n}\nconst WS = /^([\\t\\n\\v\\f\\r \\u0085\\u00A0]|(\\/\\/[^\\n]*\\n))+/, NUM = /^\\d+/, IDENT = /^[a-zA-Z_][a-zA-Z_0-9]*/;\nfunction parse$1(str) {\n let pos = 0;\n pos = skipWS(str, pos);\n let result = parseExpr(str, pos, 0);\n return result.type === \"error\" ? result : (pos = skipWS(str, result.position), pos !== str.length ? (result.failPosition && (pos = result.failPosition - 1), { type: \"error\", position: pos }) : (delete result.position, delete result.failPosition, result));\n}\nfunction parseExpr(str, pos, level) {\n let startPos = pos, token = str[pos], marks;\n switch (token) {\n case \"+\": {\n let rhs = parseExpr(str, skipWS(str, pos + 1), 10);\n if (rhs.type === \"error\") return rhs;\n marks = [{ name: \"pos\", position: startPos }].concat(rhs.marks), pos = rhs.position;\n break;\n }\n case \"-\": {\n let rhs = parseExpr(str, skipWS(str, pos + 1), 8);\n if (rhs.type === \"error\") return rhs;\n marks = [{ name: \"neg\", position: startPos }].concat(rhs.marks), pos = rhs.position;\n break;\n }\n case \"(\": {\n let rhs = parseExpr(str, skipWS(str, pos + 1), 0);\n if (rhs.type === \"error\") return rhs;\n switch (pos = skipWS(str, rhs.position), str[pos]) {\n case \",\": {\n for (marks = [{ name: \"tuple\", position: startPos }].concat(rhs.marks), pos = skipWS(str, pos + 1); ; ) {\n if (rhs = parseExpr(str, pos, 0), rhs.type === \"error\") return rhs;\n if (pos = skipWS(str, rhs.position), str[pos] !== \",\") break;\n pos = skipWS(str, pos + 1);\n }\n if (str[pos] !== \")\") return { type: \"error\", position: pos };\n pos++, marks.push({ name: \"tuple_end\", position: pos });\n break;\n }\n case \")\": {\n pos++, marks = [{ name: \"group\", position: startPos }].concat(rhs.marks);\n break;\n }\n default:\n return { type: \"error\", position: pos };\n }\n break;\n }\n case \"!\": {\n let rhs = parseExpr(str, skipWS(str, pos + 1), 10);\n if (rhs.type === \"error\") return rhs;\n marks = [{ name: \"not\", position: startPos }].concat(rhs.marks), pos = rhs.position;\n break;\n }\n case \"{\": {\n let result = parseObject(str, pos);\n if (result.type === \"error\") return result;\n marks = result.marks, pos = result.position;\n break;\n }\n case \"[\":\n if (marks = [{ name: \"array\", position: pos }], pos = skipWS(str, pos + 1), str[pos] !== \"]\")\n for (; ; ) {\n str.slice(pos, pos + 3) === \"...\" && (marks.push({ name: \"array_splat\", position: pos }), pos = skipWS(str, pos + 3));\n let res = parseExpr(str, pos, 0);\n if (res.type === \"error\") return res;\n if (marks = marks.concat(res.marks), pos = res.position, pos = skipWS(str, pos), str[pos] !== \",\" || (pos = skipWS(str, pos + 1), str[pos] === \"]\")) break;\n }\n if (str[pos] === \"]\")\n pos++, marks.push({ name: \"array_end\", position: pos });\n else\n return { type: \"error\", position: pos };\n break;\n case \"'\":\n case '\"': {\n let result = parseString(str, pos);\n if (result.type === \"error\") return result;\n marks = result.marks, pos = result.position;\n break;\n }\n case \"^\": {\n for (pos++, marks = []; str[pos] === \".\" && str[pos + 1] === \"^\"; )\n marks.push({ name: \"dblparent\", position: startPos }), pos += 2;\n marks.push({ name: \"parent\", position: startPos });\n break;\n }\n case \"@\":\n marks = [{ name: \"this\", position: startPos }], pos++;\n break;\n case \"*\":\n marks = [{ name: \"everything\", position: startPos }], pos++;\n break;\n case \"$\": {\n let identLen = parseRegex(str, pos + 1, IDENT);\n identLen && (pos += 1 + identLen, marks = [\n { name: \"param\", position: startPos },\n { name: \"ident\", position: startPos + 1 },\n { name: \"ident_end\", position: pos }\n ]);\n break;\n }\n default: {\n let numLen = parseRegex(str, pos, NUM);\n if (numLen) {\n pos += numLen;\n let name = \"integer\";\n if (str[pos] === \".\") {\n let fracLen = parseRegex(str, pos + 1, NUM);\n fracLen && (name = \"float\", pos += 1 + fracLen);\n }\n if (str[pos] === \"e\" || str[pos] === \"E\") {\n name = \"sci\", pos++, (str[pos] === \"+\" || str[pos] === \"-\") && pos++;\n let expLen = parseRegex(str, pos, NUM);\n if (!expLen) return { type: \"error\", position: pos };\n pos += expLen;\n }\n marks = [\n { name, position: startPos },\n { name: name + \"_end\", position: pos }\n ];\n break;\n }\n let identLen = parseRegex(str, pos, IDENT);\n if (identLen) {\n switch (pos += identLen, str[pos]) {\n case \":\":\n case \"(\": {\n let result = parseFuncCall(str, startPos, pos);\n if (result.type === \"error\") return result;\n marks = result.marks, pos = result.position;\n break;\n }\n default:\n marks = [\n { name: \"this_attr\", position: startPos },\n { name: \"ident\", position: startPos },\n { name: \"ident_end\", position: pos }\n ];\n }\n break;\n }\n }\n }\n if (!marks)\n return { type: \"error\", position: pos };\n let lhsLevel = 12, trav;\n loop: for (; ; ) {\n let innerPos = skipWS(str, pos);\n if (innerPos === str.length) {\n pos = innerPos;\n break;\n }\n if (trav = parseTraversal(str, innerPos), trav.type === \"success\") {\n for (marks.unshift({ name: \"traverse\", position: startPos }); trav.type === \"success\"; )\n marks = marks.concat(trav.marks), pos = trav.position, trav = parseTraversal(str, skipWS(str, pos));\n marks.push({ name: \"traversal_end\", position: pos });\n continue;\n }\n switch (str[innerPos]) {\n case \"=\": {\n switch (str[innerPos + 1]) {\n case \">\": {\n if (level > 1 || lhsLevel <= 1) break loop;\n let rhs = parseExpr(str, skipWS(str, innerPos + 2), 1);\n if (rhs.type === \"error\") return rhs;\n marks = marks.concat(rhs.marks), marks.unshift({ name: \"pair\", position: startPos }), pos = rhs.position, lhsLevel = 1;\n break;\n }\n case \"=\": {\n if (level > 4 || lhsLevel <= 4) break loop;\n let rhs = parseExpr(str, skipWS(str, innerPos + 2), 5);\n if (rhs.type === \"error\") return rhs;\n marks.unshift({ name: \"comp\", position: startPos }), marks.push({ name: \"op\", position: innerPos }, { name: \"op_end\", position: innerPos + 2 }), marks = marks.concat(rhs.marks), pos = rhs.position, lhsLevel = 4;\n break;\n }\n default:\n break loop;\n }\n break;\n }\n case \"+\": {\n if (level > 6 || lhsLevel < 6) break loop;\n let rhs = parseExpr(str, skipWS(str, innerPos + 1), 7);\n if (rhs.type === \"error\") return rhs;\n marks = marks.concat(rhs.marks), marks.unshift({ name: \"add\", position: startPos }), pos = rhs.position, lhsLevel = 6;\n break;\n }\n case \"-\": {\n if (level > 6 || lhsLevel < 6) break loop;\n let rhs = parseExpr(str, skipWS(str, innerPos + 1), 7);\n if (rhs.type === \"error\") return rhs;\n marks = marks.concat(rhs.marks), marks.unshift({ name: \"sub\", position: startPos }), pos = rhs.position, lhsLevel = 6;\n break;\n }\n case \"*\": {\n if (str[innerPos + 1] === \"*\") {\n if (level > 8 || lhsLevel <= 8) break loop;\n let rhs2 = parseExpr(str, skipWS(str, innerPos + 2), 8);\n if (rhs2.type === \"error\") return rhs2;\n marks = marks.concat(rhs2.marks), marks.unshift({ name: \"pow\", position: startPos }), pos = rhs2.position, lhsLevel = 8;\n break;\n }\n if (level > 7 || lhsLevel < 7) break loop;\n let rhs = parseExpr(str, skipWS(str, innerPos + 1), 8);\n if (rhs.type === \"error\") return rhs;\n marks = marks.concat(rhs.marks), marks.unshift({ name: \"mul\", position: startPos }), pos = rhs.position, lhsLevel = 7;\n break;\n }\n case \"/\": {\n if (level > 7 || lhsLevel < 7) break loop;\n let rhs = parseExpr(str, skipWS(str, innerPos + 1), 8);\n if (rhs.type === \"error\") return rhs;\n marks = marks.concat(rhs.marks), marks.unshift({ name: \"div\", position: startPos }), pos = rhs.position, lhsLevel = 7;\n break;\n }\n case \"%\": {\n if (level > 7 || lhsLevel < 7) break loop;\n let rhs = parseExpr(str, skipWS(str, innerPos + 1), 8);\n if (rhs.type === \"error\") return rhs;\n marks = marks.concat(rhs.marks), marks.unshift({ name: \"mod\", position: startPos }), pos = rhs.position, lhsLevel = 7;\n break;\n }\n case \"<\":\n case \">\": {\n if (level > 4 || lhsLevel <= 4) break loop;\n let nextPos = innerPos + 1;\n str[nextPos] === \"=\" && nextPos++;\n let rhs = parseExpr(str, skipWS(str, nextPos), 5);\n if (rhs.type === \"error\") return rhs;\n marks.unshift({ name: \"comp\", position: startPos }), marks.push({ name: \"op\", position: innerPos }, { name: \"op_end\", position: nextPos }), marks = marks.concat(rhs.marks), pos = rhs.position, lhsLevel = 4;\n break;\n }\n case \"|\": {\n if (str[innerPos + 1] === \"|\") {\n if (level > 2 || lhsLevel < 2) break loop;\n let rhs = parseExpr(str, skipWS(str, innerPos + 2), 3);\n if (rhs.type === \"error\") return rhs;\n marks = marks.concat(rhs.marks), marks.unshift({ name: \"or\", position: startPos }), pos = rhs.position, lhsLevel = 2;\n } else {\n if (level > 11 || lhsLevel < 11) break loop;\n let identPos = skipWS(str, innerPos + 1), identLen = parseRegex(str, identPos, IDENT);\n if (!identLen) return { type: \"error\", position: identPos };\n if (pos = identPos + identLen, str[pos] === \"(\" || str[pos] === \":\") {\n let result = parseFuncCall(str, identPos, pos);\n if (result.type === \"error\") return result;\n marks = marks.concat(result.marks), marks.unshift({ name: \"pipecall\", position: startPos }), pos = result.position, lhsLevel = 11;\n }\n }\n break;\n }\n case \"&\": {\n if (str[innerPos + 1] != \"&\" || level > 3 || lhsLevel < 3) break loop;\n let rhs = parseExpr(str, skipWS(str, innerPos + 2), 4);\n if (rhs.type === \"error\") return rhs;\n marks = marks.concat(rhs.marks), marks.unshift({ name: \"and\", position: startPos }), pos = rhs.position, lhsLevel = 3;\n break;\n }\n case \"!\": {\n if (str[innerPos + 1] !== \"=\" || level > 4 || lhsLevel <= 4) break loop;\n let rhs = parseExpr(str, skipWS(str, innerPos + 2), 5);\n if (rhs.type === \"error\") return rhs;\n marks.unshift({ name: \"comp\", position: startPos }), marks.push({ name: \"op\", position: innerPos }, { name: \"op_end\", position: innerPos + 2 }), marks = marks.concat(rhs.marks), pos = rhs.position, lhsLevel = 4;\n break;\n }\n case \"d\": {\n if (str.slice(innerPos, innerPos + 4) !== \"desc\" || level > 4 || lhsLevel < 4) break loop;\n marks.unshift({ name: \"desc\", position: startPos }), pos = innerPos + 4, lhsLevel = 4;\n break;\n }\n case \"a\": {\n if (str.slice(innerPos, innerPos + 3) !== \"asc\" || level > 4 || lhsLevel < 4) break loop;\n marks.unshift({ name: \"asc\", position: startPos }), pos = innerPos + 3, lhsLevel = 4;\n break;\n }\n default:\n switch (parseRegexStr(str, innerPos, IDENT)) {\n case \"in\": {\n if (level > 4 || lhsLevel <= 4) break loop;\n pos = skipWS(str, innerPos + 2);\n let isGroup = !1;\n str[pos] === \"(\" && (isGroup = !0, pos = skipWS(str, pos + 1));\n let rangePos = pos, result = parseExpr(str, pos, 5);\n if (result.type === \"error\") return result;\n if (pos = skipWS(str, result.position), str[pos] === \".\" && str[pos + 1] === \".\") {\n let type = \"inc_range\";\n str[pos + 2] === \".\" ? (type = \"exc_range\", pos = skipWS(str, pos + 3)) : pos = skipWS(str, pos + 2);\n let rhs = parseExpr(str, pos, 5);\n if (rhs.type === \"error\") return rhs;\n marks.unshift({ name: \"in_range\", position: startPos }), marks = marks.concat({ name: type, position: rangePos }, result.marks, rhs.marks), pos = rhs.position;\n } else\n marks.unshift({ name: \"comp\", position: startPos }), marks.push({ name: \"op\", position: innerPos }, { name: \"op_end\", position: innerPos + 2 }), marks = marks.concat(result.marks);\n if (isGroup) {\n if (pos = skipWS(str, pos), str[pos] !== \")\") return { type: \"error\", position: pos };\n pos++;\n }\n lhsLevel = 4;\n break;\n }\n case \"match\": {\n if (level > 4 || lhsLevel <= 4) break loop;\n let rhs = parseExpr(str, skipWS(str, innerPos + 5), 5);\n if (rhs.type === \"error\") return rhs;\n marks.unshift({ name: \"comp\", position: startPos }), marks.push({ name: \"op\", position: innerPos }, { name: \"op_end\", position: innerPos + 5 }), marks = marks.concat(rhs.marks), pos = rhs.position, lhsLevel = 4;\n break;\n }\n default:\n break loop;\n }\n }\n }\n let failPosition = trav?.type === \"error\" && trav.position;\n return { type: \"success\", marks, position: pos, failPosition };\n}\nfunction parseTraversal(str, pos) {\n let startPos = pos;\n switch (str[pos]) {\n case \".\": {\n pos = skipWS(str, pos + 1);\n let identStart = pos, identLen2 = parseRegex(str, pos, IDENT);\n return identLen2 ? (pos += identLen2, {\n type: \"success\",\n marks: [\n { name: \"attr_access\", position: startPos },\n { name: \"ident\", position: identStart },\n { name: \"ident_end\", position: pos }\n ],\n position: pos\n }) : { type: \"error\", position: pos };\n }\n case \"-\":\n if (str[pos + 1] !== \">\") return { type: \"error\", position: pos };\n let marks = [{ name: \"deref\", position: startPos }];\n pos += 2;\n let identPos = skipWS(str, pos), identLen = parseRegex(str, identPos, IDENT);\n return identLen && (pos = identPos + identLen, marks.push(\n { name: \"deref_attr\", position: identPos },\n { name: \"ident\", position: identPos },\n { name: \"ident_end\", position: pos }\n )), {\n type: \"success\",\n marks,\n position: pos\n };\n case \"[\": {\n if (pos = skipWS(str, pos + 1), str[pos] === \"]\")\n return {\n type: \"success\",\n marks: [{ name: \"array_postfix\", position: startPos }],\n position: pos + 1\n };\n let rangePos = pos, result = parseExpr(str, pos, 0);\n if (result.type === \"error\") return result;\n if (pos = skipWS(str, result.position), str[pos] === \".\" && str[pos + 1] === \".\") {\n let type = \"inc_range\";\n str[pos + 2] === \".\" ? (type = \"exc_range\", pos += 3) : pos += 2, pos = skipWS(str, pos);\n let rhs = parseExpr(str, pos, 0);\n return rhs.type === \"error\" ? rhs : (pos = skipWS(str, rhs.position), str[pos] !== \"]\" ? { type: \"error\", position: pos } : {\n type: \"success\",\n marks: [\n { name: \"slice\", position: startPos },\n { name: type, position: rangePos }\n ].concat(result.marks, rhs.marks),\n position: pos + 1\n });\n }\n return str[pos] !== \"]\" ? { type: \"error\", position: pos } : {\n type: \"success\",\n marks: [{ name: \"square_bracket\", position: startPos }].concat(result.marks),\n position: pos + 1\n };\n }\n case \"|\": {\n if (pos = skipWS(str, pos + 1), str[pos] === \"{\") {\n let result = parseObject(str, pos);\n return result.type === \"error\" || result.marks.unshift({ name: \"projection\", position: startPos }), result;\n }\n break;\n }\n case \"{\": {\n let result = parseObject(str, pos);\n return result.type === \"error\" || result.marks.unshift({ name: \"projection\", position: startPos }), result;\n }\n }\n return { type: \"error\", position: pos };\n}\nfunction parseFuncCall(str, startPos, pos) {\n let marks = [];\n if (marks.push({ name: \"func_call\", position: startPos }), str[pos] === \":\" && str[pos + 1] === \":\") {\n marks.push({ name: \"namespace\", position: startPos }), marks.push({ name: \"ident\", position: startPos }, { name: \"ident_end\", position: pos }), pos = skipWS(str, pos + 2);\n let nameLen = parseRegex(str, pos, IDENT);\n if (!nameLen) return { type: \"error\", position: pos };\n if (marks.push({ name: \"ident\", position: pos }, { name: \"ident_end\", position: pos + nameLen }), pos = skipWS(str, pos + nameLen), str[pos] !== \"(\") return { type: \"error\", position: pos };\n pos++, pos = skipWS(str, pos);\n } else\n marks.push({ name: \"ident\", position: startPos }, { name: \"ident_end\", position: pos }), pos = skipWS(str, pos + 1);\n let lastPos = pos;\n if (str[pos] !== \")\")\n for (; ; ) {\n let result = parseExpr(str, pos, 0);\n if (result.type === \"error\") return result;\n if (marks = marks.concat(result.marks), lastPos = result.position, pos = skipWS(str, result.position), str[pos] !== \",\" || (pos = skipWS(str, pos + 1), str[pos] === \")\")) break;\n }\n return str[pos] !== \")\" ? { type: \"error\", position: pos } : (marks.push({ name: \"func_args_end\", position: lastPos }), {\n type: \"success\",\n marks,\n position: pos + 1\n });\n}\nfunction parseObject(str, pos) {\n let marks = [{ name: \"object\", position: pos }];\n for (pos = skipWS(str, pos + 1); str[pos] !== \"}\"; ) {\n let pairPos = pos;\n if (str.slice(pos, pos + 3) === \"...\")\n if (pos = skipWS(str, pos + 3), str[pos] !== \"}\" && str[pos] !== \",\") {\n let expr = parseExpr(str, pos, 0);\n if (expr.type === \"error\") return expr;\n marks.push({ name: \"object_splat\", position: pairPos }), marks = marks.concat(expr.marks), pos = expr.position;\n } else\n marks.push({ name: \"object_splat_this\", position: pairPos });\n else {\n let expr = parseExpr(str, pos, 0);\n if (expr.type === \"error\") return expr;\n let nextPos = skipWS(str, expr.position);\n if (expr.marks[0].name === \"str\" && str[nextPos] === \":\") {\n let value = parseExpr(str, skipWS(str, nextPos + 1), 0);\n if (value.type === \"error\") return value;\n marks.push({ name: \"object_pair\", position: pairPos }), marks = marks.concat(expr.marks, value.marks), pos = value.position;\n } else\n marks = marks.concat({ name: \"object_expr\", position: pos }, expr.marks), pos = expr.position;\n }\n if (pos = skipWS(str, pos), str[pos] !== \",\") break;\n pos = skipWS(str, pos + 1);\n }\n return str[pos] !== \"}\" ? { type: \"error\", position: pos } : (pos++, marks.push({ name: \"object_end\", position: pos }), { type: \"success\", marks, position: pos });\n}\nfunction parseString(str, pos) {\n let token = str[pos];\n pos = pos + 1;\n const marks = [{ name: \"str\", position: pos }];\n str: for (; ; pos++) {\n if (pos > str.length) return { type: \"error\", position: pos };\n switch (str[pos]) {\n case token: {\n marks.push({ name: \"str_end\", position: pos }), pos++;\n break str;\n }\n case \"\\\\\":\n marks.push({ name: \"str_pause\", position: pos }), str[pos + 1] === \"u\" ? str[pos + 2] === \"{\" ? (marks.push({ name: \"unicode_hex\", position: pos + 3 }), pos = str.indexOf(\"}\", pos + 3), marks.push({ name: \"unicode_hex_end\", position: pos })) : (marks.push({ name: \"unicode_hex\", position: pos + 2 }), marks.push({ name: \"unicode_hex_end\", position: pos + 6 }), pos += 5) : (marks.push({ name: \"single_escape\", position: pos + 1 }), pos += 1), marks.push({ name: \"str_start\", position: pos + 1 });\n }\n }\n return { type: \"success\", marks, position: pos };\n}\nfunction skipWS(str, pos) {\n return pos + parseRegex(str, pos, WS);\n}\nfunction parseRegex(str, pos, re) {\n let m = re.exec(str.slice(pos));\n return m ? m[0].length : 0;\n}\nfunction parseRegexStr(str, pos, re) {\n let m = re.exec(str.slice(pos));\n return m ? m[0] : null;\n}\nfunction join(a, b) {\n return (base) => b(a(base));\n}\nfunction map(inner) {\n return (base) => ({ type: \"Map\", base, expr: inner({ type: \"This\" }) });\n}\nfunction flatMap(inner) {\n return (base) => ({ type: \"FlatMap\", base, expr: inner({ type: \"This\" }) });\n}\nfunction traverseArray(build, right) {\n if (!right)\n return {\n type: \"a-a\",\n build\n };\n switch (right.type) {\n case \"a-a\":\n return {\n type: \"a-a\",\n build: join(build, right.build)\n };\n case \"a-b\":\n return {\n type: \"a-b\",\n build: join(build, right.build)\n };\n case \"b-b\":\n return {\n type: \"a-a\",\n build: join(build, map(right.build))\n };\n case \"b-a\":\n return {\n type: \"a-a\",\n build: join(build, flatMap(right.build))\n };\n default:\n throw new Error(`unknown type: ${right.type}`);\n }\n}\nfunction traversePlain(mapper, right) {\n if (!right)\n return {\n type: \"b-b\",\n build: mapper\n };\n switch (right.type) {\n case \"a-a\":\n case \"b-a\":\n return {\n type: \"b-a\",\n build: join(mapper, right.build)\n };\n case \"a-b\":\n case \"b-b\":\n return {\n type: \"b-b\",\n build: join(mapper, right.build)\n };\n default:\n throw new Error(`unknown type: ${right.type}`);\n }\n}\nfunction traverseElement(mapper, right) {\n if (!right)\n return {\n type: \"a-b\",\n build: mapper\n };\n switch (right.type) {\n case \"a-a\":\n case \"b-a\":\n return {\n type: \"a-a\",\n build: join(mapper, right.build)\n };\n case \"a-b\":\n case \"b-b\":\n return {\n type: \"a-b\",\n build: join(mapper, right.build)\n };\n default:\n throw new Error(`unknown type: ${right.type}`);\n }\n}\nfunction traverseProjection(mapper, right) {\n if (!right)\n return {\n type: \"b-b\",\n build: mapper\n };\n switch (right.type) {\n case \"a-a\":\n return {\n type: \"a-a\",\n build: join(map(mapper), right.build)\n };\n case \"a-b\":\n return {\n type: \"a-b\",\n build: join(map(mapper), right.build)\n };\n case \"b-a\":\n return {\n type: \"b-a\",\n build: join(mapper, right.build)\n };\n case \"b-b\":\n return {\n type: \"b-b\",\n build: join(mapper, right.build)\n };\n default:\n throw new Error(`unknown type: ${right.type}`);\n }\n}\nconst ESCAPE_SEQUENCE = {\n \"'\": \"'\",\n '\"': '\"',\n \"\\\\\": \"\\\\\",\n \"/\": \"/\",\n b: \"\\b\",\n f: \"\\f\",\n n: `\n`,\n r: \"\\r\",\n t: \"\t\"\n};\nfunction expandHex(str) {\n const charCode = parseInt(str, 16);\n return String.fromCharCode(charCode);\n}\nclass GroqQueryError extends Error {\n name = \"GroqQueryError\";\n}\nconst EXPR_BUILDER = {\n group(p) {\n return {\n type: \"Group\",\n base: p.process(EXPR_BUILDER)\n };\n },\n everything() {\n return { type: \"Everything\" };\n },\n this() {\n return { type: \"This\" };\n },\n parent() {\n return {\n type: \"Parent\",\n n: 1\n };\n },\n dblparent(p) {\n return {\n type: \"Parent\",\n n: p.process(EXPR_BUILDER).n + 1\n };\n },\n traverse(p) {\n const base = p.process(EXPR_BUILDER), traversalList = [];\n for (; p.getMark().name !== \"traversal_end\"; )\n traversalList.push(p.process(TRAVERSE_BUILDER));\n p.shift();\n let traversal = null;\n for (let i = traversalList.length - 1; i >= 0; i--)\n traversal = traversalList[i](traversal);\n if ((base.type === \"Everything\" || base.type === \"Array\" || base.type === \"PipeFuncCall\") && (traversal = traverseArray((val) => val, traversal)), traversal === null) throw new Error(\"BUG: unexpected empty traversal\");\n return traversal.build(base);\n },\n this_attr(p) {\n const name = p.processString();\n return name === \"null\" ? { type: \"Value\", value: null } : name === \"true\" ? { type: \"Value\", value: !0 } : name === \"false\" ? { type: \"Value\", value: !1 } : {\n type: \"AccessAttribute\",\n name\n };\n },\n neg(p) {\n return {\n type: \"Neg\",\n base: p.process(EXPR_BUILDER)\n };\n },\n pos(p) {\n return {\n type: \"Pos\",\n base: p.process(EXPR_BUILDER)\n };\n },\n add(p) {\n const left = p.process(EXPR_BUILDER), right = p.process(EXPR_BUILDER);\n return {\n type: \"OpCall\",\n op: \"+\",\n left,\n right\n };\n },\n sub(p) {\n const left = p.process(EXPR_BUILDER), right = p.process(EXPR_BUILDER);\n return {\n type: \"OpCall\",\n op: \"-\",\n left,\n right\n };\n },\n mul(p) {\n const left = p.process(EXPR_BUILDER), right = p.process(EXPR_BUILDER);\n return {\n type: \"OpCall\",\n op: \"*\",\n left,\n right\n };\n },\n div(p) {\n const left = p.process(EXPR_BUILDER), right = p.process(EXPR_BUILDER);\n return {\n type: \"OpCall\",\n op: \"/\",\n left,\n right\n };\n },\n mod(p) {\n const left = p.process(EXPR_BUILDER), right = p.process(EXPR_BUILDER);\n return {\n type: \"OpCall\",\n op: \"%\",\n left,\n right\n };\n },\n pow(p) {\n const left = p.process(EXPR_BUILDER), right = p.process(EXPR_BUILDER);\n return {\n type: \"OpCall\",\n op: \"**\",\n left,\n right\n };\n },\n comp(p) {\n const left = p.process(EXPR_BUILDER), op = p.processString(), right = p.process(EXPR_BUILDER);\n return {\n type: \"OpCall\",\n op,\n left,\n right\n };\n },\n in_range(p) {\n const base = p.process(EXPR_BUILDER), isInclusive = p.getMark().name === \"inc_range\";\n p.shift();\n const left = p.process(EXPR_BUILDER), right = p.process(EXPR_BUILDER);\n return {\n type: \"InRange\",\n base,\n left,\n right,\n isInclusive\n };\n },\n str(p) {\n let value = \"\";\n loop: for (; p.hasMark(); ) {\n const mark = p.getMark();\n switch (mark.name) {\n case \"str_end\":\n value += p.processStringEnd();\n break loop;\n case \"str_pause\":\n value += p.processStringEnd();\n break;\n case \"str_start\":\n p.shift();\n break;\n case \"single_escape\": {\n const char = p.slice(1);\n p.shift(), value += ESCAPE_SEQUENCE[char];\n break;\n }\n case \"unicode_hex\":\n p.shift(), value += expandHex(p.processStringEnd());\n break;\n default:\n throw new Error(`unexpected mark: ${mark.name}`);\n }\n }\n return { type: \"Value\", value };\n },\n integer(p) {\n const strValue = p.processStringEnd();\n return {\n type: \"Value\",\n value: Number(strValue)\n };\n },\n float(p) {\n const strValue = p.processStringEnd();\n return {\n type: \"Value\",\n value: Number(strValue)\n };\n },\n sci(p) {\n const strValue = p.processStringEnd();\n return {\n type: \"Value\",\n value: Number(strValue)\n };\n },\n object(p) {\n const attributes = [];\n for (; p.getMark().name !== \"object_end\"; )\n attributes.push(p.process(OBJECT_BUILDER));\n return p.shift(), {\n type: \"Object\",\n attributes\n };\n },\n array(p) {\n const elements = [];\n for (; p.getMark().name !== \"array_end\"; ) {\n let isSplat = !1;\n p.getMark().name === \"array_splat\" && (isSplat = !0, p.shift());\n const value = p.process(EXPR_BUILDER);\n elements.push({\n type: \"ArrayElement\",\n value,\n isSplat\n });\n }\n return p.shift(), {\n type: \"Array\",\n elements\n };\n },\n tuple(p) {\n const members = [];\n for (; p.getMark().name !== \"tuple_end\"; )\n members.push(p.process(EXPR_BUILDER));\n return p.shift(), {\n type: \"Tuple\",\n members\n };\n },\n func_call(p) {\n let namespace = \"global\";\n p.getMark().name === \"namespace\" && (p.shift(), namespace = p.processString());\n const name = p.processString();\n if (namespace === \"global\" && name === \"select\") {\n const result = {\n type: \"Select\",\n alternatives: []\n };\n for (; p.getMark().name !== \"func_args_end\"; )\n if (p.getMark().name === \"pair\") {\n if (result.fallback) throw new GroqQueryError(\"unexpected argument to select()\");\n p.shift();\n const condition = p.process(EXPR_BUILDER), value = p.process(EXPR_BUILDER);\n result.alternatives.push({\n type: \"SelectAlternative\",\n condition,\n value\n });\n } else {\n if (result.fallback) throw new GroqQueryError(\"unexpected argument to select()\");\n const value = p.process(EXPR_BUILDER);\n result.fallback = value;\n }\n return p.shift(), result;\n }\n const args = [];\n for (; p.getMark().name !== \"func_args_end\"; )\n argumentShouldBeSelector(namespace, name, args.length) ? (p.process(SELECTOR_BUILDER), args.push({ type: \"Selector\" })) : args.push(p.process(EXPR_BUILDER));\n if (p.shift(), namespace === \"global\" && (name === \"before\" || name === \"after\") && p.parseOptions.mode === \"delta\")\n return {\n type: \"Context\",\n key: name\n };\n if (namespace === \"global\" && name === \"boost\" && !p.allowBoost)\n throw new GroqQueryError(\"unexpected boost\");\n const funcs = namespaces[namespace];\n if (!funcs)\n throw new GroqQueryError(`Undefined namespace: ${namespace}`);\n const func = funcs[name];\n if (!func)\n throw new GroqQueryError(`Undefined function: ${name}`);\n if (func.arity !== void 0 && validateArity(name, func.arity, args.length), func.mode !== void 0 && func.mode !== p.parseOptions.mode)\n throw new GroqQueryError(`Undefined function: ${name}`);\n return {\n type: \"FuncCall\",\n func,\n namespace,\n name,\n args\n };\n },\n pipecall(p) {\n const base = p.process(EXPR_BUILDER);\n p.shift();\n let namespace = \"global\";\n if (p.getMark().name === \"namespace\" && (p.shift(), namespace = p.processString()), namespace !== \"global\")\n throw new GroqQueryError(`Undefined namespace: ${namespace}`);\n const name = p.processString(), args = [], oldAllowBoost = p.allowBoost;\n for (name === \"score\" && (p.allowBoost = !0); ; ) {\n const markName = p.getMark().name;\n if (markName === \"func_args_end\")\n break;\n if (name === \"order\") {\n if (markName === \"asc\") {\n p.shift(), args.push({ type: \"Asc\", base: p.process(EXPR_BUILDER) });\n continue;\n } else if (markName === \"desc\") {\n p.shift(), args.push({ type: \"Desc\", base: p.process(EXPR_BUILDER) });\n continue;\n }\n }\n args.push(p.process(EXPR_BUILDER));\n }\n p.shift(), p.allowBoost = oldAllowBoost;\n const func = pipeFunctions[name];\n if (!func)\n throw new GroqQueryError(`Undefined pipe function: ${name}`);\n return func.arity && validateArity(name, func.arity, args.length), {\n type: \"PipeFuncCall\",\n func,\n base,\n name,\n args\n };\n },\n pair() {\n throw new GroqQueryError(\"unexpected =>\");\n },\n and(p) {\n const left = p.process(EXPR_BUILDER), right = p.process(EXPR_BUILDER);\n return {\n type: \"And\",\n left,\n right\n };\n },\n or(p) {\n const left = p.process(EXPR_BUILDER), right = p.process(EXPR_BUILDER);\n return {\n type: \"Or\",\n left,\n right\n };\n },\n not(p) {\n return {\n type: \"Not\",\n base: p.process(EXPR_BUILDER)\n };\n },\n asc() {\n throw new GroqQueryError(\"unexpected asc\");\n },\n desc() {\n throw new GroqQueryError(\"unexpected desc\");\n },\n param(p) {\n const name = p.processString();\n return p.parseOptions.params && p.parseOptions.params.hasOwnProperty(name) ? {\n type: \"Value\",\n value: p.parseOptions.params[name]\n } : {\n type: \"Parameter\",\n name\n };\n }\n}, OBJECT_BUILDER = {\n object_expr(p) {\n if (p.getMark().name === \"pair\") {\n p.shift();\n const condition = p.process(EXPR_BUILDER), value2 = p.process(EXPR_BUILDER);\n return {\n type: \"ObjectConditionalSplat\",\n condition,\n value: value2\n };\n }\n const value = p.process(EXPR_BUILDER);\n return {\n type: \"ObjectAttributeValue\",\n name: extractPropertyKey(value),\n value\n };\n },\n object_pair(p) {\n const name = p.process(EXPR_BUILDER);\n if (name.type !== \"Value\") throw new Error(\"name must be string\");\n const value = p.process(EXPR_BUILDER);\n return {\n type: \"ObjectAttributeValue\",\n name: name.value,\n value\n };\n },\n object_splat(p) {\n return {\n type: \"ObjectSplat\",\n value: p.process(EXPR_BUILDER)\n };\n },\n object_splat_this() {\n return {\n type: \"ObjectSplat\",\n value: { type: \"This\" }\n };\n }\n}, TRAVERSE_BUILDER = {\n square_bracket(p) {\n const expr = p.process(EXPR_BUILDER), value = tryConstantEvaluate(expr);\n return value && value.type === \"number\" ? (right) => traverseElement((base) => ({ type: \"AccessElement\", base, index: value.data }), right) : value && value.type === \"string\" ? (right) => traversePlain((base) => ({ type: \"AccessAttribute\", base, name: value.data }), right) : (right) => traverseArray(\n (base) => ({\n type: \"Filter\",\n base,\n expr\n }),\n right\n );\n },\n slice(p) {\n const isInclusive = p.getMark().name === \"inc_range\";\n p.shift();\n const left = p.process(EXPR_BUILDER), right = p.process(EXPR_BUILDER), leftValue = tryConstantEvaluate(left), rightValue = tryConstantEvaluate(right);\n if (!leftValue || !rightValue || leftValue.type !== \"number\" || rightValue.type !== \"number\")\n throw new GroqQueryError(\"slicing must use constant numbers\");\n return (rhs) => traverseArray(\n (base) => ({\n type: \"Slice\",\n base,\n left: leftValue.data,\n right: rightValue.data,\n isInclusive\n }),\n rhs\n );\n },\n projection(p) {\n const obj = p.process(EXPR_BUILDER);\n return (right) => traverseProjection((base) => ({ type: \"Projection\", base, expr: obj }), right);\n },\n attr_access(p) {\n const name = p.processString();\n return (right) => traversePlain((base) => ({ type: \"AccessAttribute\", base, name }), right);\n },\n deref(p) {\n let attr = null;\n p.getMark().name === \"deref_attr\" && (p.shift(), attr = p.processString());\n const wrap = (base) => attr ? { type: \"AccessAttribute\", base, name: attr } : base;\n return (right) => traversePlain(\n (base) => wrap({\n type: \"Deref\",\n base\n }),\n right\n );\n },\n array_postfix() {\n return (right) => traverseArray((base) => ({ type: \"ArrayCoerce\", base }), right);\n }\n}, SELECTOR_BUILDER = {\n group(p) {\n return p.process(SELECTOR_BUILDER), null;\n },\n everything() {\n throw new Error(\"Invalid selector syntax\");\n },\n this() {\n throw new Error(\"Invalid selector syntax\");\n },\n parent() {\n throw new Error(\"Invalid selector syntax\");\n },\n dblparent() {\n throw new Error(\"Invalid selector syntax\");\n },\n traverse(p) {\n for (p.process(SELECTOR_BUILDER); p.getMark().name !== \"traversal_end\"; )\n p.process(TRAVERSE_BUILDER);\n return p.shift(), null;\n },\n this_attr(p) {\n return p.processString(), null;\n },\n neg() {\n throw new Error(\"Invalid selector syntax\");\n },\n pos() {\n throw new Error(\"Invalid selector syntax\");\n },\n add() {\n throw new Error(\"Invalid selector syntax\");\n },\n sub() {\n throw new Error(\"Invalid selector syntax\");\n },\n mul() {\n throw new Error(\"Invalid selector syntax\");\n },\n div() {\n throw new Error(\"Invalid selector syntax\");\n },\n mod() {\n throw new Error(\"Invalid selector syntax\");\n },\n pow() {\n throw new Error(\"Invalid selector syntax\");\n },\n comp() {\n throw new Error(\"Invalid selector syntax\");\n },\n in_range() {\n throw new Error(\"Invalid selector syntax\");\n },\n str() {\n throw new Error(\"Invalid selector syntax\");\n },\n integer() {\n throw new Error(\"Invalid selector syntax\");\n },\n float() {\n throw new Error(\"Invalid selector syntax\");\n },\n sci() {\n throw new Error(\"Invalid selector syntax\");\n },\n object() {\n throw new Error(\"Invalid selector syntax\");\n },\n array() {\n throw new Error(\"Invalid selector syntax\");\n },\n tuple() {\n throw new Error(\"Invalid selector syntax\");\n },\n func_call(p, mark) {\n const func = EXPR_BUILDER.func_call(p, mark);\n if (func.name === \"anywhere\" && func.args.length === 1) return null;\n throw new Error(\"Invalid selector syntax\");\n },\n pipecall() {\n throw new Error(\"Invalid selector syntax\");\n },\n pair() {\n throw new Error(\"Invalid selector syntax\");\n },\n and() {\n throw new Error(\"Invalid selector syntax\");\n },\n or() {\n throw new Error(\"Invalid selector syntax\");\n },\n not() {\n throw new Error(\"Invalid selector syntax\");\n },\n asc() {\n throw new Error(\"Invalid selector syntax\");\n },\n desc() {\n throw new Error(\"Invalid selector syntax\");\n },\n param() {\n throw new Error(\"Invalid selector syntax\");\n }\n};\nfunction extractPropertyKey(node) {\n if (node.type === \"AccessAttribute\" && !node.base)\n return node.name;\n if (node.type === \"PipeFuncCall\" || node.type === \"Deref\" || node.type === \"Map\" || node.type === \"Projection\" || node.type === \"Slice\" || node.type === \"Filter\" || node.type === \"AccessElement\" || node.type === \"ArrayCoerce\" || node.type === \"Group\")\n return extractPropertyKey(node.base);\n throw new GroqQueryError(`Cannot determine property key for type: ${node.type}`);\n}\nfunction validateArity(name, arity, count) {\n if (typeof arity == \"number\") {\n if (count !== arity)\n throw new GroqQueryError(\n `Incorrect number of arguments to function ${name}(). Expected ${arity}, got ${count}.`\n );\n } else if (arity && !arity(count))\n throw new GroqQueryError(`Incorrect number of arguments to function ${name}().`);\n}\nfunction argumentShouldBeSelector(namespace, functionName, argCount) {\n const functionsRequiringSelectors = [\"changedAny\", \"changedOnly\"];\n return namespace == \"diff\" && argCount == 2 && functionsRequiringSelectors.includes(functionName);\n}\nclass GroqSyntaxError extends Error {\n position;\n name = \"GroqSyntaxError\";\n constructor(position) {\n super(`Syntax error in GROQ query at position ${position}`), this.position = position;\n }\n}\nfunction parse(input, options = {}) {\n const result = parse$1(input);\n if (result.type === \"error\")\n throw new GroqSyntaxError(result.position);\n return new MarkProcessor(input, result.marks, options).process(EXPR_BUILDER);\n}\nconst { compare } = new Intl.Collator(\"en\");\nfunction typeNodesSorter(a, b) {\n return a.type === \"null\" ? 1 : compare(hashField(a), hashField(b));\n}\nconst hashCache = /* @__PURE__ */ new WeakMap();\nfunction hashField(field) {\n if (hashCache.has(field))\n return hashCache.get(field);\n const hash = calculateFieldHash(field);\n return hashCache.set(field, hash), hash;\n}\nfunction calculateFieldHash(field) {\n switch (field.type) {\n case \"string\":\n case \"number\":\n case \"boolean\":\n return field.value !== void 0 ? `${field.type}(${field.value})` : `${field.type}`;\n case \"null\":\n case \"unknown\":\n return field.type;\n case \"array\":\n return `${field.type}(${hashField(field.of)})`;\n case \"object\": {\n const attributes = Object.entries(field.attributes);\n return attributes.sort(([a], [b]) => compare(a, b)), `${field.type}:(${attributes.map(\n ([key, value]) => `${key}:${hashField(value.value)}(${value.optional ? \"optional\" : \"non-optional\"})`\n ).join(\",\")}):ref-${field.dereferencesTo}:${field.rest ? hashField(field.rest) : \"no-rest\"}`;\n }\n case \"union\": {\n const sorted = [...field.of];\n return sorted.sort(typeNodesSorter), `${field.type}(${sorted.map(hashField).join(\",\")})`;\n }\n case \"inline\":\n return `${field.type}(${field.name})`;\n default:\n return field.type;\n }\n}\nfunction removeDuplicateTypeNodes(typeNodes) {\n const seenTypes = /* @__PURE__ */ new Set(), newTypeNodes = [], sortedTypeNodes = [...typeNodes];\n sortedTypeNodes.sort(typeNodesSorter);\n for (const typeNode of sortedTypeNodes) {\n const hash = hashField(typeNode);\n if (hash === null) {\n newTypeNodes.push(typeNode);\n continue;\n }\n seenTypes.has(hash) || (seenTypes.add(hash), newTypeNodes.push(typeNode));\n }\n return newTypeNodes;\n}\nfunction optimizeUnions(field) {\n if (field.type === \"union\") {\n if (field.of.length === 0)\n return field;\n if (field.of = removeDuplicateTypeNodes(field.of), field.of.length === 1)\n return optimizeUnions(field.of[0]);\n for (let idx = 0; field.of.length > idx; idx++) {\n const subField = field.of[idx];\n if (subField.type === \"union\") {\n field.of.splice(idx, 1, ...subField.of), idx--;\n continue;\n }\n field.of[idx] = optimizeUnions(subField);\n }\n return field.of.sort((a, b) => a.type === \"null\" ? 1 : compare(hashField(a), hashField(b))), field;\n }\n if (field.type === \"array\")\n return field.of = optimizeUnions(field.of), field;\n if (field.type === \"object\") {\n for (const idx in field.attributes)\n Object.hasOwn(field.attributes, idx) && (field.attributes[idx].value = optimizeUnions(field.attributes[idx].value));\n return field;\n }\n return field;\n}\nfunction createReferenceTypeNode(name, inArray = !1) {\n const attributes = {\n _ref: {\n type: \"objectAttribute\",\n value: {\n type: \"string\"\n }\n },\n _type: {\n type: \"objectAttribute\",\n value: {\n type: \"string\",\n value: \"reference\"\n }\n },\n _weak: {\n type: \"objectAttribute\",\n value: {\n type: \"boolean\"\n },\n optional: !0\n }\n };\n return inArray && (attributes._key = {\n type: \"objectAttribute\",\n value: {\n type: \"string\"\n }\n }), {\n type: \"object\",\n attributes,\n dereferencesTo: name\n };\n}\nfunction nullUnion(node) {\n return node.type === \"union\" ? unionOf(...node.of, { type: \"null\" }) : unionOf(node, { type: \"null\" });\n}\nfunction unionOf(...nodes) {\n return {\n type: \"union\",\n of: nodes\n };\n}\nfunction resolveInline(node, scope) {\n if (node.type === \"inline\") {\n const resolvedInline = scope.context.lookupTypeDeclaration(node);\n return resolveInline(resolvedInline, scope);\n }\n return node;\n}\nfunction mapNode(node, scope, mapper, mergeUnions = (nodes) => optimizeUnions({ type: \"union\", of: nodes })) {\n switch (node.type) {\n case \"boolean\":\n case \"array\":\n case \"null\":\n case \"object\":\n case \"string\":\n case \"number\":\n case \"unknown\":\n return mapper(node);\n case \"union\":\n return mergeUnions(node.of.map((inner) => mapNode(inner, scope, mapper), mergeUnions));\n case \"inline\": {\n const resolvedInline = resolveInline(node, scope);\n return mapNode(resolvedInline, scope, mapper, mergeUnions);\n }\n default:\n throw new Error(`Unknown type: ${node.type}`);\n }\n}\nfunction isFuncCall(node, name) {\n return node.type === \"Group\" ? isFuncCall(node.base, name) : node.type === \"FuncCall\" && `${node.namespace}::${node.name}` === name;\n}\nfunction booleanValue(node, scope) {\n switch (node.type) {\n case \"unknown\":\n return { canBeTrue: !0, canBeFalse: !0, canBeNull: !0 };\n case \"boolean\":\n return node.value === !0 ? { canBeTrue: !0, canBeFalse: !1, canBeNull: !1 } : node.value === !1 ? { canBeTrue: !1, canBeFalse: !0, canBeNull: !1 } : { canBeTrue: !0, canBeFalse: !0, canBeNull: !1 };\n case \"union\": {\n const value = { canBeTrue: !1, canBeFalse: !1, canBeNull: !1 };\n for (const sub of node.of) {\n const match2 = booleanValue(sub, scope);\n match2.canBeNull && (value.canBeNull = !0), match2.canBeTrue && (value.canBeTrue = !0), match2.canBeFalse && (value.canBeFalse = !0);\n }\n return value;\n }\n case \"inline\": {\n const resolved = resolveInline(node, scope);\n return booleanValue(resolved, scope);\n }\n case \"null\":\n case \"string\":\n case \"number\":\n case \"object\":\n case \"array\":\n return { canBeTrue: !1, canBeFalse: !1, canBeNull: !0 };\n default:\n throw new Error(`unknown node type ${node.type}`);\n }\n}\nfunction booleanOr(left, right) {\n return left.canBeTrue && !left.canBeFalse && !left.canBeNull ? left : right.canBeTrue && !right.canBeFalse && !right.canBeNull ? right : {\n // Either side can be true for the expression to be true\n canBeTrue: left.canBeTrue || right.canBeTrue,\n // Both sides must be false for the expression to be false\n canBeFalse: left.canBeFalse && right.canBeFalse,\n // if either side can be null, the expression can be null if the other side can't only be true\n canBeNull: left.canBeNull || right.canBeNull\n };\n}\nfunction booleanAnd(left, right) {\n return left.canBeFalse && !left.canBeTrue && !left.canBeNull ? left : right.canBeFalse && !right.canBeTrue && !right.canBeNull ? right : {\n // Both sides must be true for the expression to be true\n canBeTrue: left.canBeTrue && right.canBeTrue,\n // if either side can be false, the expression can be false\n canBeFalse: left.canBeFalse || right.canBeFalse,\n // if either side can be null, the expression can be null\n canBeNull: left.canBeNull || right.canBeNull\n };\n}\nfunction booleanInterpretationToTypeNode(bool) {\n return bool.canBeTrue ? bool.canBeFalse ? bool.canBeNull ? nullUnion({ type: \"boolean\" }) : { type: \"boolean\" } : bool.canBeNull ? nullUnion({ type: \"boolean\", value: !0 }) : { type: \"boolean\", value: !0 } : bool.canBeFalse ? bool.canBeNull ? nullUnion({ type: \"boolean\", value: !1 }) : { type: \"boolean\", value: !1 } : { type: \"null\" };\n}\nconst $trace$1 = debug(\"typeEvaluator:scope:trace\");\n$trace$1.log = console.log.bind(console);\nclass Context {\n schema;\n constructor(schema) {\n this.schema = schema;\n }\n lookupRef(refTo) {\n for (const val of this.schema)\n if (val.type === \"document\" && val.name === refTo)\n return {\n type: \"object\",\n attributes: val.attributes\n };\n return { type: \"null\" };\n }\n lookupTypeDeclaration(alias) {\n for (const val of this.schema)\n if (val.type === \"type\" && val.name === alias.name)\n return val.value;\n return { type: \"null\" };\n }\n}\nclass Scope2 {\n value;\n parent;\n context;\n isHidden;\n constructor(value, parent, context) {\n this.value = { type: \"union\", of: value }, this.parent = parent, this.context = context || parent?.context || new Context([]), this.isHidden = !1;\n }\n createNested(value) {\n return this.isHidden ? new Scope2(value, this.parent, this.context) : new Scope2(value, this, this.context);\n }\n createHidden(value) {\n const result = this.createNested(value);\n return result.isHidden = !0, result;\n }\n}\nfunction unionWithoutNull(unionTypeNode) {\n return unionTypeNode.type === \"union\" ? {\n type: \"union\",\n of: unionTypeNode.of.filter((type) => type.type !== \"null\")\n } : unionTypeNode;\n}\nfunction handleFuncCallNode(node, scope) {\n switch (`${node.namespace}.${node.name}`) {\n case \"array.compact\": {\n const arg = walk({ node: node.args[0], scope });\n return mapNode(arg, scope, (arg2) => {\n if (arg2.type === \"unknown\")\n return nullUnion({ type: \"array\", of: { type: \"unknown\" } });\n if (arg2.type !== \"array\")\n return { type: \"null\" };\n const of = mapNode(arg2.of, scope, (of2) => of2);\n return {\n type: \"array\",\n of: unionWithoutNull(of)\n };\n });\n }\n case \"array.join\": {\n const arrayArg = walk({ node: node.args[0], scope }), sepArg = walk({ node: node.args[1], scope });\n return mapNode(\n arrayArg,\n scope,\n (arrayArg2) => mapNode(sepArg, scope, (sepArg2) => arrayArg2.type === \"unknown\" || sepArg2.type === \"unknown\" ? nullUnion({ type: \"string\" }) : arrayArg2.type !== \"array\" || sepArg2.type !== \"string\" ? { type: \"null\" } : mapNode(arrayArg2.of, scope, (of) => of.type === \"unknown\" ? nullUnion({ type: \"string\" }) : of.type !== \"string\" && of.type !== \"number\" && of.type !== \"boolean\" ? { type: \"null\" } : { type: \"string\" }))\n );\n }\n case \"array.unique\": {\n const arg = walk({ node: node.args[0], scope });\n return mapNode(arg, scope, (arg2) => arg2.type === \"unknown\" ? nullUnion({ type: \"array\", of: { type: \"unknown\" } }) : arg2.type !== \"array\" ? { type: \"null\" } : arg2);\n }\n case \"array.intersects\": {\n const arg1 = walk({ node: node.args[0], scope }), arg2 = walk({ node: node.args[1], scope });\n return mapNode(\n arg1,\n scope,\n (arg12) => mapNode(arg2, scope, (arg22) => arg12.type !== \"array\" ? { type: \"null\" } : arg22.type !== \"array\" ? { type: \"null\" } : { type: \"boolean\" })\n );\n }\n case \"global.lower\": {\n const arg = walk({ node: node.args[0], scope });\n return mapNode(arg, scope, (arg2) => arg2.type === \"unknown\" ? nullUnion({ type: \"string\" }) : arg2.type !== \"string\" ? { type: \"null\" } : arg2.value !== void 0 ? {\n type: \"string\",\n value: arg2.value.toLowerCase()\n } : { type: \"string\" });\n }\n case \"global.upper\": {\n const arg = walk({ node: node.args[0], scope });\n return mapNode(arg, scope, (arg2) => arg2.type === \"unknown\" ? nullUnion({ type: \"string\" }) : arg2.type !== \"string\" ? { type: \"null\" } : arg2.value !== void 0 ? {\n type: \"string\",\n value: arg2.value.toUpperCase()\n } : { type: \"string\" });\n }\n case \"dateTime.now\":\n return { type: \"string\" };\n case \"global.now\":\n return { type: \"string\" };\n case \"global.defined\": {\n const arg = walk({ node: node.args[0], scope });\n return mapNode(arg, scope, (node2) => node2.type === \"unknown\" ? { type: \"boolean\" } : { type: \"boolean\", value: node2.type !== \"null\" });\n }\n case \"global.path\": {\n const arg = walk({ node: node.args[0], scope });\n return mapNode(arg, scope, (arg2) => arg2.type === \"unknown\" ? nullUnion({ type: \"string\" }) : arg2.type === \"string\" ? { type: \"string\" } : { type: \"null\" });\n }\n case \"global.coalesce\": {\n if (node.args.length === 0)\n return { type: \"null\" };\n const typeNodes = [];\n let canBeNull = !0;\n for (const arg of node.args) {\n const argNode = optimizeUnions(walk({ node: arg, scope })), allNull = argNode.type === \"null\" || argNode.type === \"union\" && argNode.of.every((t) => t.type === \"null\");\n if (canBeNull = allNull || argNode.type === \"unknown\" || argNode.type === \"union\" && argNode.of.some((t) => t.type === \"null\" || t.type === \"unknown\"), allNull || typeNodes.push(unionWithoutNull(argNode)), !canBeNull)\n break;\n }\n return canBeNull && typeNodes.push({ type: \"null\" }), {\n type: \"union\",\n of: typeNodes\n };\n }\n case \"global.count\": {\n const arg = walk({ node: node.args[0], scope });\n return mapNode(arg, scope, (arg2) => arg2.type === \"unknown\" ? nullUnion({ type: \"string\" }) : arg2.type === \"array\" ? { type: \"number\" } : { type: \"null\" });\n }\n case \"global.dateTime\": {\n const arg = walk({ node: node.args[0], scope });\n return mapNode(arg, scope, (arg2) => arg2.type === \"unknown\" ? nullUnion({ type: \"string\" }) : arg2.type === \"string\" ? nullUnion({ type: \"string\" }) : { type: \"null\" });\n }\n case \"global.length\": {\n const arg = walk({ node: node.args[0], scope });\n return mapNode(arg, scope, (arg2) => arg2.type === \"unknown\" ? nullUnion({ type: \"number\" }) : arg2.type === \"array\" || arg2.type === \"string\" ? { type: \"number\" } : { type: \"null\" });\n }\n case \"global.references\":\n return { type: \"boolean\" };\n case \"global.round\": {\n const numNode = walk({ node: node.args[0], scope });\n return mapNode(numNode, scope, (num) => {\n if (num.type === \"unknown\")\n return nullUnion({ type: \"number\" });\n if (num.type !== \"number\")\n return { type: \"null\" };\n if (node.args.length === 2) {\n const precisionNode = walk({ node: node.args[1], scope });\n return mapNode(precisionNode, scope, (precision) => precision.type === \"unknown\" ? nullUnion({ type: \"number\" }) : precision.type !== \"number\" ? { type: \"null\" } : { type: \"number\" });\n }\n return { type: \"number\" };\n });\n }\n case \"global.string\": {\n const arg = walk({ node: node.args[0], scope });\n return mapNode(arg, scope, (node2) => node2.type === \"unknown\" ? nullUnion({ type: \"string\" }) : node2.type === \"string\" || node2.type === \"number\" || node2.type === \"boolean\" ? node2.value ? {\n type: \"string\",\n value: node2.value.toString()\n } : {\n type: \"string\"\n } : { type: \"null\" });\n }\n case \"math.sum\": {\n const values = walk({ node: node.args[0], scope });\n return mapNode(values, scope, (node2) => node2.type === \"unknown\" ? nullUnion({ type: \"number\" }) : node2.type !== \"array\" ? { type: \"null\" } : mapNode(node2.of, scope, (node3) => node3.type === \"unknown\" ? nullUnion({ type: \"number\" }) : node3.type === \"number\" || node3.type === \"null\" ? { type: \"number\" } : { type: \"null\" }));\n }\n case \"math.avg\": {\n const values = walk({ node: node.args[0], scope });\n return mapNode(values, scope, (node2) => node2.type === \"unknown\" ? nullUnion({ type: \"number\" }) : node2.type !== \"array\" ? { type: \"null\" } : mapNode(node2.of, scope, (node3) => node3.type === \"unknown\" ? nullUnion({ type: \"number\" }) : node3.type === \"number\" ? { type: \"number\" } : { type: \"null\" }));\n }\n case \"math.max\":\n case \"math.min\": {\n const values = walk({ node: node.args[0], scope });\n return mapNode(values, scope, (node2) => node2.type === \"unknown\" ? nullUnion({ type: \"number\" }) : node2.type !== \"array\" ? { type: \"null\" } : mapNode(node2.of, scope, (node3) => node3.type === \"unknown\" ? nullUnion({ type: \"number\" }) : node3.type === \"number\" ? node3 : { type: \"null\" }));\n }\n case \"pt.text\":\n return node.args.length === 0 ? { type: \"null\" } : {\n type: \"string\"\n };\n case \"string.startsWith\": {\n const strTypeNode = walk({ node: node.args[0], scope }), prefixTypeNode = walk({ node: node.args[1], scope });\n return mapNode(strTypeNode, scope, (strNode) => mapNode(prefixTypeNode, scope, (prefixNode) => strNode.type === \"unknown\" || prefixNode.type === \"unknown\" ? nullUnion({ type: \"boolean\" }) : strNode.type !== \"string\" || prefixNode.type !== \"string\" ? { type: \"null\" } : { type: \"boolean\" }));\n }\n case \"string.split\": {\n const strTypeNode = walk({ node: node.args[0], scope }), sepTypeNode = walk({ node: node.args[1], scope });\n return mapNode(strTypeNode, scope, (strNode) => mapNode(sepTypeNode, scope, (sepNode) => strNode.type === \"unknown\" || sepNode.type === \"unknown\" ? nullUnion({ type: \"array\", of: { type: \"string\" } }) : strNode.type !== \"string\" || sepNode.type !== \"string\" ? { type: \"null\" } : { type: \"array\", of: { type: \"string\" } }));\n }\n case \"sanity.versionOf\": {\n const typeNode = walk({ node: node.args[0], scope });\n return mapNode(typeNode, scope, (typeNode2) => typeNode2.type === \"unknown\" ? nullUnion({ type: \"boolean\" }) : typeNode2.type !== \"string\" ? { type: \"null\" } : { type: \"boolean\" });\n }\n case \"sanity.partOfRelease\": {\n const typeNode = walk({ node: node.args[0], scope });\n return mapNode(typeNode, scope, (typeNode2) => typeNode2.type === \"unknown\" ? nullUnion({ type: \"boolean\" }) : typeNode2.type !== \"string\" ? { type: \"null\" } : { type: \"boolean\" });\n }\n default:\n return { type: \"unknown\" };\n }\n}\nfunction match(left, right) {\n let tokens = [], patterns = [];\n if (left.type === \"string\") {\n if (left.value === void 0)\n return;\n tokens = tokens.concat(matchTokenize(left.value));\n }\n if (left.type === \"array\") {\n if (left.of.type === \"unknown\")\n return;\n if (left.of.type === \"string\") {\n if (left.of.value === void 0)\n return;\n tokens = tokens.concat(matchTokenize(left.of.value));\n }\n if (left.of.type === \"union\")\n for (const node of left.of.of)\n node.type === \"string\" && node.value !== void 0 && (tokens = tokens.concat(matchTokenize(node.value)));\n }\n if (right.type === \"string\") {\n if (right.value === void 0)\n return;\n patterns = patterns.concat(matchAnalyzePattern(right.value));\n }\n if (right.type === \"array\") {\n if (right.of.type === \"unknown\")\n return;\n if (right.of.type === \"string\") {\n if (right.of.value === void 0)\n return;\n patterns = patterns.concat(matchAnalyzePattern(right.of.value));\n }\n if (right.of.type === \"union\")\n for (const node of right.of.of) {\n if (node.type === \"string\") {\n if (node.value === void 0)\n return;\n patterns = patterns.concat(matchAnalyzePattern(node.value));\n }\n if (node.type !== \"string\")\n return !1;\n }\n }\n return matchText(tokens, patterns);\n}\nconst $trace = debug(\"typeEvaluator:evaluate:trace\");\n$trace.log = console.log.bind(console);\nconst $debug = debug(\"typeEvaluator:evaluate:debug\");\n$debug.log = console.log.bind(console);\nconst $warn = debug(\"typeEvaluator:evaluate:warn\");\nfunction typeEvaluate(ast, schema) {\n $debug(\"evaluateQueryType.ast %O\", ast), $debug(\"evaluateQueryType.schema %O\", schema);\n const parsed = walk({\n node: ast,\n scope: new Scope2([], void 0, new Context(schema))\n });\n $trace(\"evaluateQueryType.parsed %O\", parsed);\n const optimized = optimizeUnions(parsed);\n return $debug(\"evaluateQueryType.optimized %O\", optimized), optimized;\n}\nfunction mapDeref(base, scope) {\n return base.type === \"union\" ? {\n type: \"union\",\n of: base.of.map((node) => mapDeref(node, scope))\n } : base.type === \"array\" ? {\n type: \"array\",\n of: mapDeref(base.of, scope)\n } : base.type === \"object\" && base.dereferencesTo !== void 0 ? scope.context.lookupRef(base.dereferencesTo) : { type: \"null\" };\n}\nfunction handleDerefNode(node, scope) {\n $trace(\"deref.node %O\", node);\n const base = walk({ node: node.base, scope });\n if ($trace(\"deref.base %O\", base), base.type === \"null\" || base.type === \"unknown\")\n return { type: \"null\" };\n const derefedNode = mapDeref(base, scope);\n return $trace(\"deref.derefedNode %O\", derefedNode), derefedNode;\n}\nfunction handleObjectSplatNode(attr, scope) {\n const value = walk({ node: attr.value, scope });\n return $trace(\"object.splat.value %O\", value), mapNode(value, scope, (node) => {\n if (node.type === \"unknown\")\n return { type: \"unknown\" };\n if (node.type !== \"object\")\n return { type: \"object\", attributes: {} };\n const attributes = {};\n for (const name in node.attributes)\n node.attributes.hasOwnProperty(name) && (attributes[name] = node.attributes[name]);\n if (node.rest !== void 0) {\n const resolvedRest = resolveInline(node.rest, scope);\n if (resolvedRest.type === \"unknown\")\n return { type: \"unknown\" };\n if (resolvedRest.type !== \"object\")\n return { type: \"null\" };\n for (const name in resolvedRest.attributes)\n resolvedRest.attributes.hasOwnProperty(name) && (attributes[name] = resolvedRest.attributes[name]);\n }\n return { type: \"object\", attributes };\n });\n}\nfunction handleObjectNode(node, scope) {\n if ($trace(\"object.node %O\", node), node.attributes.length === 0)\n return {\n type: \"object\",\n attributes: {}\n };\n const objectAttributes = [], splatVariants = [], conditionalVariants = [];\n for (const [idx, attr] of node.attributes.entries()) {\n if (attr.type === \"ObjectAttributeValue\") {\n const attributeNode = walk({ node: attr.value, scope });\n objectAttributes.push([\n idx,\n attr.name,\n {\n type: \"objectAttribute\",\n value: attributeNode\n }\n ]);\n continue;\n }\n if (attr.type === \"ObjectSplat\") {\n const attributeNode = handleObjectSplatNode(attr, scope);\n switch ($trace(\"object.splat.result %O\", attributeNode), attributeNode.type) {\n case \"object\": {\n splatVariants.push([idx, attributeNode]);\n continue;\n }\n case \"union\": {\n for (const node2 of attributeNode.of)\n if (node2.type === \"unknown\")\n return node2;\n splatVariants.push([idx, attributeNode]);\n continue;\n }\n default:\n return { type: \"unknown\" };\n }\n }\n if (attr.type === \"ObjectConditionalSplat\") {\n const condition = booleanValue(walk({ node: attr.condition, scope }), scope);\n if ($trace(\"object.conditional.splat.condition %O\", condition), condition.canBeTrue === !1)\n continue;\n const attributeNode = handleObjectSplatNode(attr, scope);\n if ($trace(\"object.conditional.splat.result %O\", attributeNode), condition.canBeFalse === !1 && condition.canBeNull === !1)\n switch (attributeNode.type) {\n case \"object\": {\n splatVariants.push([idx, attributeNode]);\n continue;\n }\n case \"union\": {\n for (const node2 of attributeNode.of)\n if (node2.type !== \"object\")\n return { type: \"unknown\" };\n splatVariants.push([idx, attributeNode]);\n continue;\n }\n default:\n return { type: \"unknown\" };\n }\n const variant = mapNode(attributeNode, scope, (attributeNode2) => ($trace(\"object.conditional.splat.result.concrete %O\", attributeNode2), attributeNode2.type !== \"object\" ? { type: \"unknown\" } : {\n type: \"object\",\n attributes: attributeNode2.attributes\n }));\n if (variant.type === \"union\") {\n for (const node2 of variant.of)\n if (node2.type !== \"object\")\n return { type: \"unknown\" };\n variant.of.push({ type: \"object\", attributes: {} }), conditionalVariants.push([idx, variant]);\n continue;\n }\n if (variant.type !== \"object\")\n return { type: \"unknown\" };\n conditionalVariants.push([\n idx,\n {\n type: \"union\",\n of: [{ type: \"object\", attributes: {} }, variant]\n }\n ]);\n continue;\n }\n throw new Error(`Unknown object attribute type: ${attr.type}`);\n }\n const guaranteedAttributes = [];\n guaranteedAttributes.push(...objectAttributes);\n for (const [idx, splatNode] of splatVariants) {\n if (splatNode.type === \"object\") {\n for (const name in splatNode.attributes) {\n if (!splatNode.attributes.hasOwnProperty(name))\n continue;\n const attribute = splatNode.attributes[name];\n guaranteedAttributes.push([idx, name, attribute]);\n }\n continue;\n }\n conditionalVariants.push([idx, splatNode]);\n }\n if (guaranteedAttributes.sort(([a], [b]) => a - b), conditionalVariants.length === 0)\n return {\n type: \"object\",\n attributes: Object.fromEntries(\n guaranteedAttributes.map(([, name, attribute]) => [name, attribute])\n )\n };\n const matrix = [];\n for (const [unionIdx, union] of conditionalVariants) {\n const unionGuaranteedBefore = [], unionGuaranteedAfter = [];\n for (const [guaranteedIndex, name, attribute] of guaranteedAttributes)\n guaranteedIndex < unionIdx && unionGuaranteedBefore.push([guaranteedIndex, name, attribute]), guaranteedIndex > unionIdx && unionGuaranteedAfter.push([guaranteedIndex, name, attribute]);\n const allVariantsAttributes = [];\n for (const [conditionalVariantIdx, otherUnion] of conditionalVariants) {\n const variantAttributes = [];\n for (const node2 of otherUnion.of)\n variantAttributes.push(node2.attributes);\n allVariantsAttributes.push([conditionalVariantIdx, variantAttributes]);\n }\n for (const node2 of union.of) {\n matrix.push({\n type: \"object\",\n attributes: {\n ...Object.fromEntries(\n unionGuaranteedBefore.map(([, name, attribute]) => [name, attribute])\n ),\n ...node2.attributes,\n ...Object.fromEntries(\n unionGuaranteedAfter.map(([, name, attribute]) => [name, attribute])\n )\n }\n });\n for (const [outerIdx, outerAttributes] of allVariantsAttributes)\n for (const outer of outerAttributes)\n for (const [innerIdx, innerAttributes] of allVariantsAttributes)\n if (outerIdx !== innerIdx)\n for (const inner of innerAttributes) {\n const _before = [...unionGuaranteedBefore], _after = [...unionGuaranteedAfter];\n for (const name in outer)\n outer.hasOwnProperty(name) && outerIdx !== unionIdx && (outerIdx < unionIdx && _before.push([outerIdx, name, outer[name]]), outerIdx > unionIdx && _after.push([outerIdx, name, outer[name]]));\n for (const name in inner)\n inner.hasOwnProperty(name) && outerIdx !== unionIdx && (innerIdx < unionIdx && _before.push([innerIdx, name, inner[name]]), innerIdx > unionIdx && _after.push([innerIdx, name, inner[name]]));\n _before.sort(([a], [b]) => a - b), _after.sort(([a], [b]) => a - b);\n const before = Object.fromEntries(\n _before.map(([, name, attribute]) => [name, attribute])\n ), after = Object.fromEntries(\n _after.map(([, name, attribute]) => [name, attribute])\n );\n matrix.push({\n type: \"object\",\n attributes: {\n ...before,\n ...node2.attributes,\n ...after\n }\n });\n }\n }\n }\n return optimizeUnions({\n type: \"union\",\n of: matrix\n });\n}\nfunction handleOpCallNode(node, scope) {\n $trace(\"opcall.node %O\", node);\n const lhs = walk({ node: node.left, scope }), rhs = walk({ node: node.right, scope });\n return mapNode(\n lhs,\n scope,\n (left) => (\n // eslint-disable-next-line complexity, max-statements\n mapNode(rhs, scope, (right) => {\n switch ($trace('opcall.node.concrete \"%s\" %O', node.op, { left, right }), node.op) {\n case \"==\":\n return left.type === \"unknown\" || right.type === \"unknown\" ? { type: \"boolean\" } : left.type !== right.type ? {\n type: \"boolean\",\n value: !1\n } : left.type === \"null\" ? {\n type: \"boolean\",\n value: !0\n } : !isPrimitiveTypeNode(left) || !isPrimitiveTypeNode(right) ? {\n type: \"boolean\",\n value: !1\n } : {\n type: \"boolean\",\n value: evaluateComparison(node.op, left, right)\n };\n case \"!=\": {\n if (left.type === \"unknown\" || right.type === \"unknown\")\n return { type: \"boolean\" };\n if (left.type !== right.type)\n return {\n type: \"boolean\",\n value: !0\n };\n if (left.type === \"null\")\n return {\n type: \"boolean\",\n value: !1\n };\n if (!isPrimitiveTypeNode(left) || !isPrimitiveTypeNode(right))\n return {\n type: \"boolean\",\n value: !0\n };\n let value = evaluateComparison(\"==\", left, right);\n return value !== void 0 && (value = !value), {\n type: \"boolean\",\n value\n };\n }\n case \">\":\n case \">=\":\n case \"<\":\n case \"<=\":\n return left.type === \"unknown\" || right.type === \"unknown\" ? nullUnion({ type: \"boolean\" }) : left.type !== right.type ? { type: \"null\" } : !isPrimitiveTypeNode(left) || !isPrimitiveTypeNode(right) ? { type: \"null\" } : {\n type: \"boolean\",\n value: evaluateComparison(node.op, left, right)\n };\n case \"in\":\n return left.type === \"unknown\" || right.type === \"unknown\" ? nullUnion({ type: \"boolean\" }) : right.type !== \"array\" ? isFuncCall(node.right, \"global::path\") ? { type: \"boolean\" } : { type: \"null\" } : !isPrimitiveTypeNode(left) && left.type !== \"null\" ? {\n type: \"boolean\",\n value: !1\n } : mapNode(right.of, scope, (arrayTypeNode) => arrayTypeNode.type === \"unknown\" ? nullUnion({ type: \"boolean\" }) : left.type === \"null\" ? {\n type: \"boolean\",\n value: arrayTypeNode.type === \"null\"\n } : left.value === void 0 ? {\n type: \"boolean\"\n } : isPrimitiveTypeNode(arrayTypeNode) ? arrayTypeNode.value === void 0 ? {\n type: \"boolean\"\n } : {\n type: \"boolean\",\n value: left.value === arrayTypeNode.value\n } : {\n type: \"boolean\",\n value: !1\n });\n case \"match\":\n return left.type === \"unknown\" || right.type === \"unknown\" ? { type: \"boolean\" } : {\n type: \"boolean\",\n value: match(left, right)\n };\n case \"+\":\n return left.type === \"unknown\" || right.type === \"unknown\" ? { type: \"unknown\" } : left.type === \"string\" && right.type === \"string\" ? {\n type: \"string\",\n value: left.value !== void 0 && right.value !== void 0 ? left.value + right.value : void 0\n } : left.type === \"number\" && right.type === \"number\" ? {\n type: \"number\",\n value: left.value !== void 0 && right.value !== void 0 ? left.value + right.value : void 0\n } : left.type === \"array\" && right.type === \"array\" ? {\n type: \"array\",\n of: {\n type: \"union\",\n of: [left.of, right.of]\n }\n } : left.type === \"object\" && right.type === \"object\" ? {\n type: \"object\",\n attributes: { ...left.attributes, ...right.attributes }\n } : { type: \"null\" };\n case \"-\":\n return left.type === \"unknown\" || right.type === \"unknown\" ? nullUnion({ type: \"number\" }) : left.type === \"number\" && right.type === \"number\" ? {\n type: \"number\",\n value: left.value !== void 0 && right.value !== void 0 ? left.value - right.value : void 0\n } : { type: \"null\" };\n case \"*\":\n return left.type === \"unknown\" || right.type === \"unknown\" ? nullUnion({ type: \"number\" }) : left.type === \"number\" && right.type === \"number\" ? {\n type: \"number\",\n value: left.value !== void 0 && right.value !== void 0 ? left.value * right.value : void 0\n } : { type: \"null\" };\n case \"/\":\n return left.type === \"unknown\" || right.type === \"unknown\" ? nullUnion({ type: \"number\" }) : left.type === \"number\" && right.type === \"number\" ? {\n type: \"number\",\n value: left.value !== void 0 && right.value !== void 0 ? left.value / right.value : void 0\n } : { type: \"null\" };\n case \"**\":\n return left.type === \"unknown\" || right.type === \"unknown\" ? nullUnion({ type: \"number\" }) : left.type === \"number\" && right.type === \"number\" ? {\n type: \"number\",\n value: left.value !== void 0 && right.value !== void 0 ? left.value ** right.value : void 0\n } : { type: \"null\" };\n case \"%\":\n return left.type === \"unknown\" || right.type === \"unknown\" ? nullUnion({ type: \"number\" }) : left.type === \"number\" && right.type === \"number\" ? {\n type: \"number\",\n value: left.value !== void 0 && right.value !== void 0 ? left.value % right.value : void 0\n } : { type: \"null\" };\n default:\n return {\n type: \"unknown\"\n };\n }\n })\n )\n );\n}\nfunction handleSelectNode(node, scope) {\n const values = [];\n let guaranteed = !1;\n for (const alternative of node.alternatives) {\n const conditionValue = walk({ node: alternative.condition, scope }), conditionScope = resolveFilter(alternative.condition, scope);\n conditionScope.type === \"union\" && conditionScope.of.length > 0 && values.push(walk({ node: alternative.value, scope: scope.createHidden(conditionScope.of) })), conditionValue.type === \"boolean\" && conditionValue.value === !0 && (guaranteed = !0);\n }\n return node.fallback && !guaranteed && values.push(walk({ node: node.fallback, scope })), values.length === 0 ? { type: \"null\" } : {\n type: \"union\",\n of: values\n };\n}\nfunction handleArrayCoerceNode(node, scope) {\n const base = walk({ node: node.base, scope });\n return $trace(\"arrayCoerce.base %O\", base), mapArray(base, scope, (base2) => base2);\n}\nfunction handleFlatMap(node, scope) {\n const base = walk({ node: node.base, scope });\n return mapArray(base, scope, (base2) => {\n const inner = walk({ node: node.expr, scope: scope.createHidden([base2.of]) });\n return mapNode(\n inner,\n scope,\n (inner2) => inner2.type === \"array\" ? inner2 : { type: \"array\", of: inner2 },\n (nodes) => {\n const inner2 = [];\n for (const node2 of nodes) {\n if (node2.type === \"unknown\") return { type: \"array\", of: node2 };\n if (node2.type !== \"array\") throw new Error(`Unexpected type: ${node2.type}`);\n inner2.push(node2.of);\n }\n return {\n type: \"array\",\n of: optimizeUnions({ type: \"union\", of: inner2 })\n };\n }\n );\n });\n}\nfunction handleMap(node, scope) {\n const base = walk({ node: node.base, scope });\n return $trace(\"map.base %O\", base), mapArray(base, scope, (base2) => ({\n type: \"array\",\n of: walk({ node: node.expr, scope: scope.createHidden([base2.of]) })\n }));\n}\nfunction handleProjectionNode(node, scope) {\n const base = walk({ node: node.base, scope });\n return $trace(\"projection.base %O\", base), mapObject(\n base,\n scope,\n (base2) => walk({ node: node.expr, scope: scope.createNested([base2]) })\n );\n}\nfunction createFilterScope(base, scope) {\n return base.type === \"array\" ? base.of.type === \"union\" ? scope.createNested(base.of.of) : scope.createNested([base.of]) : scope.createNested([base]);\n}\nfunction handleFilterNode(node, scope) {\n const base = walk({ node: node.base, scope });\n return $trace(\"filter.base %O\", base), mapNode(base, scope, (base2) => {\n if ($trace(\"filter.resolving %O\", base2), base2.type === \"null\")\n return base2;\n const resolved = resolveFilter(node.expr, createFilterScope(base2, scope));\n return $trace(\"filter.resolved %O\", resolved), {\n type: \"array\",\n of: resolved\n };\n });\n}\nfunction handleAccessAttributeNode(node, scope) {\n let attributeBase = scope.value;\n return node.base && (attributeBase = walk({ node: node.base, scope })), $trace(\"accessAttribute.base %s %O\", node.name, attributeBase), handleAccessAttributeBase(attributeBase, node.name, scope);\n}\nfunction handleAccessAttributeBase(base, name, scope) {\n return mapObject(base, scope, (base2) => {\n $trace('Looking for attribute \"%s\" in object %O', name, base2);\n const attribute = base2.attributes[name];\n return attribute !== void 0 ? ($debug(`accessAttribute.attribute found ${name} %O`, attribute), attribute.optional ? nullUnion(attribute.value) : attribute.value) : base2.rest ? handleAccessAttributeBase(base2.rest, name, scope) : ($warn(`attribute \"${name}\" not found in object`), { type: \"null\" });\n });\n}\nfunction handleAccessElementNode(node, scope) {\n const base = walk({ node: node.base, scope });\n return $trace(\"accessElement.base %O\", base), mapArray(base, scope, (base2) => nullUnion(base2.of));\n}\nfunction handleArrayNode(node, scope) {\n const of = [];\n for (const el of node.elements) {\n const node2 = walk({ node: el.value, scope });\n node2 !== null && of.push(node2);\n }\n return {\n type: \"array\",\n of: {\n type: \"union\",\n of\n }\n };\n}\nfunction handleValueNode(node, scope) {\n if (node.value === null)\n return { type: \"null\" };\n switch (typeof node.value) {\n case \"string\":\n return {\n type: \"string\",\n value: node.value\n };\n case \"number\":\n return {\n type: \"number\",\n value: node.value\n };\n case \"boolean\":\n return {\n type: \"boolean\",\n value: node.value\n };\n case \"object\":\n return node.value === null ? { type: \"null\" } : Array.isArray(node.value) ? {\n type: \"array\",\n of: {\n type: \"union\",\n of: node.value.map((value) => walk({ node: { type: \"Value\", value }, scope }))\n }\n } : {\n type: \"object\",\n attributes: Object.fromEntries(\n Object.entries(node.value).map(([key, value]) => [\n key,\n {\n type: \"objectAttribute\",\n value: walk({ node: { type: \"Value\", value }, scope })\n }\n ])\n )\n };\n default:\n return { type: \"unknown\" };\n }\n}\nfunction handleSlice(node, scope) {\n $trace(\"slice.node %O\", node);\n const base = walk({ node: node.base, scope });\n return mapArray(base, scope, (base2) => base2);\n}\nfunction handleParentNode({ n }, scope) {\n $trace(\"handle.parent.currentScope %d %O\", n, scope);\n let current = scope;\n for (let i = 0; i < n; i++) {\n for (; current?.isHidden; )\n current = current.parent;\n current = current?.parent;\n }\n return $trace(\"handle.parent.newScope %d %O\", n, current), current ? current.value.of.length === 0 ? { type: \"null\" } : current.value : { type: \"null\" };\n}\nfunction handleNotNode(node, scope) {\n const base = walk({ node: node.base, scope });\n return mapNode(base, scope, (base2) => base2.type === \"unknown\" ? nullUnion({ type: \"boolean\" }) : base2.type === \"boolean\" ? base2.value !== void 0 ? { type: \"boolean\", value: base2.value === !1 } : { type: \"boolean\" } : { type: \"null\" });\n}\nfunction handleNegNode(node, scope) {\n const base = walk({ node: node.base, scope });\n return mapNode(base, scope, (base2) => base2.type === \"unknown\" ? nullUnion({ type: \"number\" }) : base2.type !== \"number\" ? { type: \"null\" } : base2.value !== void 0 ? { type: \"number\", value: -base2.value } : base2);\n}\nfunction handlePosNode(node, scope) {\n const base = walk({ node: node.base, scope });\n return mapNode(base, scope, (base2) => base2.type === \"unknown\" ? nullUnion({ type: \"number\" }) : base2.type !== \"number\" ? { type: \"null\" } : base2);\n}\nfunction handleEverythingNode(_, scope) {\n return {\n type: \"array\",\n of: {\n type: \"union\",\n of: scope.context.schema.filter((obj) => obj.type === \"document\").map((doc) => ({\n type: \"object\",\n attributes: doc.attributes\n }))\n }\n };\n}\nfunction handleAndNode(node, scope) {\n const left = walk({ node: node.left, scope }), right = walk({ node: node.right, scope });\n return mapNode(\n left,\n scope,\n (lhs) => mapNode(right, scope, (rhs) => {\n const value = booleanAnd(booleanValue(lhs, scope), booleanValue(rhs, scope));\n return booleanInterpretationToTypeNode(value);\n })\n );\n}\nfunction handleOrNode(node, scope) {\n const left = walk({ node: node.left, scope }), right = walk({ node: node.right, scope });\n return mapNode(\n left,\n scope,\n (lhs) => mapNode(right, scope, (rhs) => {\n const value = booleanOr(booleanValue(lhs, scope), booleanValue(rhs, scope));\n return booleanInterpretationToTypeNode(value);\n })\n );\n}\nconst OVERRIDE_TYPE_SYMBOL = Symbol(\"groq-js.type\");\nfunction walk({ node, scope }) {\n if (OVERRIDE_TYPE_SYMBOL in node)\n return node[OVERRIDE_TYPE_SYMBOL];\n switch (node.type) {\n // Filtering, traversal & projections\n case \"Map\":\n return handleMap(node, scope);\n case \"Projection\":\n return handleProjectionNode(node, scope);\n case \"Filter\":\n return handleFilterNode(node, scope);\n case \"AccessAttribute\":\n return optimizeUnions(handleAccessAttributeNode(node, scope));\n case \"AccessElement\":\n return handleAccessElementNode(node, scope);\n case \"ArrayCoerce\":\n return handleArrayCoerceNode(node, scope);\n case \"FlatMap\":\n return handleFlatMap(node, scope);\n // Operations\n case \"OpCall\":\n return handleOpCallNode(node, scope);\n case \"And\":\n return handleAndNode(node, scope);\n case \"Or\":\n return handleOrNode(node, scope);\n case \"Select\":\n return handleSelectNode(node, scope);\n case \"PipeFuncCall\":\n return walk({ node: node.base, scope });\n // Values\n case \"Deref\":\n return handleDerefNode(node, scope);\n case \"Object\":\n return handleObjectNode(node, scope);\n case \"Value\":\n return handleValueNode(node, scope);\n case \"Array\":\n return handleArrayNode(node, scope);\n // Special cases\n case \"Everything\":\n return handleEverythingNode(node, scope);\n case \"This\":\n return $trace(\"this %O\", scope.value), scope.value;\n case \"Parent\":\n return handleParentNode(node, scope);\n case \"FuncCall\":\n return handleFuncCallNode(node, scope);\n case \"Group\":\n return walk({ node: node.base, scope });\n case \"Not\":\n return handleNotNode(node, scope);\n case \"Parameter\":\n return {\n type: \"unknown\"\n };\n case \"Slice\":\n return handleSlice(node, scope);\n case \"Neg\":\n return handleNegNode(node, scope);\n case \"Pos\":\n return handlePosNode(node, scope);\n // everything else\n case \"Asc\":\n case \"Desc\":\n case \"Context\":\n case \"Tuple\":\n case \"Selector\":\n case \"InRange\":\n return { type: \"unknown\" };\n default:\n throw new Error(`unknown node type ${node.type}`);\n }\n}\nfunction isPrimitiveTypeNode(node) {\n return node.type === \"string\" || node.type === \"number\" || node.type === \"boolean\";\n}\nfunction evaluateComparison(opcall, left, right) {\n if (!(left.value === void 0 || right.value === void 0))\n switch (opcall) {\n case \"==\":\n return left.value === right.value;\n case \"<\":\n return left.value < right.value;\n case \"<=\":\n return left.value <= right.value;\n case \">\":\n return left.value > right.value;\n case \">=\":\n return left.value >= right.value;\n default:\n throw new Error(`unknown comparison operator ${opcall}`);\n }\n}\nfunction resolveFilter(expr, scope) {\n $trace(\"resolveFilter.expr %O\", expr);\n const filtered = scope.value.of.filter((node) => {\n const subScope = scope.createHidden([node]), cond = walk({ node: expr, scope: subScope });\n return booleanValue(cond, subScope).canBeTrue;\n });\n return $trace(\n `resolveFilter ${expr.type === \"OpCall\" ? `${expr.type}/${expr.op}` : expr.type} %O`,\n filtered\n ), { type: \"union\", of: filtered };\n}\nfunction mapArray(node, scope, mapper) {\n return mapNode(node, scope, (base) => base.type === \"unknown\" ? base : base.type === \"array\" ? mapper(base) : { type: \"null\" });\n}\nfunction mapObject(node, scope, mapper) {\n return mapNode(node, scope, (base) => base.type === \"unknown\" ? base : base.type === \"object\" ? mapper(base) : { type: \"null\" });\n}\nexport {\n DateTime,\n Path,\n createReferenceTypeNode,\n evaluateQuery as evaluate,\n parse,\n typeEvaluate\n};\n//# sourceMappingURL=1.mjs.map\n","export function replaceProperty<P, V extends P[K], K extends keyof P>(\n parent: P,\n prop: K,\n value: V,\n): V {\n delete parent[prop]\n parent[prop] = value\n return value\n}\n","/*\n * Longest common subsequence implementation, for diffing arrays\n * Reference: http://en.wikipedia.org/wiki/Longest_common_subsequence_problem\n */\n\ntype NumberArray = number[]\ntype LengthMatrix = NumberArray[]\ntype Subsequence<E> = {\n sequence: E[]\n prevIndices: number[]\n nextIndices: number[]\n}\n\nexport function getLongestCommonSubsequence<E>(previous: E[], next: E[]): Subsequence<E> {\n const matrix = getLengthMatrix(previous, next)\n const result = backtrack(matrix, previous, next)\n return result\n}\n\nfunction getLengthMatrix<E>(previous: E[], next: E[]): LengthMatrix {\n const len1 = previous.length\n const len2 = next.length\n let x = 0\n let y = 0\n\n // initialize empty matrix of len1+1 x len2+1\n const matrix: LengthMatrix = new Array(len1 + 1)\n for (x = 0; x < len1 + 1; x++) {\n matrix[x] = [len2 + 1]\n for (y = 0; y < len2 + 1; y++) {\n matrix[x][y] = 0\n }\n }\n\n // save sequence lengths for each coordinate\n for (x = 1; x < len1 + 1; x++) {\n for (y = 1; y < len2 + 1; y++) {\n if (previous[x - 1] === next[y - 1]) {\n matrix[x][y] = matrix[x - 1][y - 1] + 1\n } else {\n matrix[x][y] = Math.max(matrix[x - 1][y], matrix[x][y - 1])\n }\n }\n }\n\n return matrix\n}\n\nfunction backtrack<E>(matrix: LengthMatrix, previous: E[], next: E[]): Subsequence<E> {\n let prevIndex = previous.length\n let nextIndex = next.length\n const subsequence: Subsequence<E> = {\n sequence: [],\n prevIndices: [],\n nextIndices: [],\n }\n\n while (prevIndex !== 0 && nextIndex !== 0) {\n const areEqual = previous[prevIndex - 1] === next[nextIndex - 1]\n if (areEqual) {\n subsequence.sequence.unshift(previous[prevIndex - 1])\n subsequence.prevIndices.unshift(prevIndex - 1)\n subsequence.nextIndices.unshift(nextIndex - 1)\n --prevIndex\n --nextIndex\n } else {\n const valueAtMatrixAbove = matrix[prevIndex][nextIndex - 1]\n const valueAtMatrixLeft = matrix[prevIndex - 1][nextIndex]\n if (valueAtMatrixAbove > valueAtMatrixLeft) {\n --nextIndex\n } else {\n --prevIndex\n }\n }\n }\n return subsequence\n}\n","import {replaceProperty} from '../helpers'\nimport {type ArrayDiff, type ArrayInput, type DiffOptions, type ItemDiff} from '../types'\nimport {addedInput, diffInput, removedInput} from './diffInput'\nimport {getLongestCommonSubsequence} from './lcs'\n\nexport function diffArray<A>(\n fromInput: ArrayInput<A>,\n toInput: ArrayInput<A>,\n options: DiffOptions,\n): ArrayDiff<A> {\n if (fromInput === toInput) {\n const fromValue = fromInput.value\n const toValue = toInput.value\n\n return {\n type: 'array',\n action: 'unchanged',\n isChanged: false,\n fromValue,\n toValue,\n get items(): ItemDiff<A>[] {\n const items = diffExactByPosition(fromInput, toInput, options)\n if (!items) throw new Error('invariant broken: equivalent input, but diff detected')\n return replaceProperty(this, 'items', items)\n },\n }\n }\n\n // The key-ed approach should handle most cases (_key'ed objects, primitives):\n const keyedA = indexByKey(fromInput)\n const keyedB = indexByKey(toInput)\n\n if (keyedA && keyedB) {\n return diffArrayByKey(fromInput, keyedA, toInput, keyedB, options)\n }\n\n // Check if they are 100% equivalent:\n const items = diffExactByPosition(fromInput, toInput, options)\n if (items) return buildArrayDiff(fromInput, toInput, items, false)\n\n // Otherwise we create a diff where we model it as removing the from-items and adding the to-items.\n return diffArrayByReinsert(fromInput, toInput, options)\n}\n\nfunction buildArrayDiff<A>(\n fromInput: ArrayInput<A>,\n toInput: ArrayInput<A>,\n items: ItemDiff<A>[],\n isChanged: boolean,\n): ArrayDiff<A> {\n const fromValue = fromInput.value\n const toValue = toInput.value\n\n return isChanged\n ? {\n type: 'array',\n action: 'changed',\n isChanged: true,\n fromValue,\n toValue,\n items,\n annotation: toInput.annotation,\n }\n : {\n type: 'array',\n action: 'unchanged',\n isChanged: false,\n fromValue,\n toValue,\n items,\n }\n}\n\n/**\n * Diffes the two arrays by position. Returns an `items` array if they are unchanged, or undefined\n * if there are any changes anywhere.\n */\nfunction diffExactByPosition<A>(\n fromInput: ArrayInput<A>,\n toInput: ArrayInput<A>,\n options: DiffOptions,\n): ItemDiff<A>[] | undefined {\n if (fromInput.length !== toInput.length) {\n return undefined\n }\n\n const items: ItemDiff<A>[] = []\n\n for (let idx = 0; idx < fromInput.length; idx++) {\n const diff = diffInput(fromInput.at(idx), toInput.at(idx), options)\n if (diff.isChanged) {\n return undefined\n }\n\n items.push({\n fromIndex: idx,\n toIndex: idx,\n hasMoved: false,\n diff,\n annotation: toInput.annotationAt(idx),\n })\n }\n\n return items\n}\n\nfunction diffArrayByReinsert<A>(\n fromInput: ArrayInput<A>,\n toInput: ArrayInput<A>,\n options: DiffOptions,\n): ArrayDiff<A> {\n const items: ItemDiff<A>[] = []\n\n for (let idx = 0; idx < toInput.length; idx++) {\n const input = toInput.at(idx)\n\n items.push({\n fromIndex: undefined,\n toIndex: idx,\n hasMoved: false,\n diff: addedInput(input, undefined, options),\n annotation: input.annotation,\n })\n }\n\n for (let idx = 0; idx < fromInput.length; idx++) {\n const input = fromInput.at(idx)\n\n items.push({\n fromIndex: idx,\n toIndex: undefined,\n hasMoved: false,\n diff: removedInput(input, undefined, options),\n annotation: input.annotation,\n })\n }\n\n return buildArrayDiff(fromInput, toInput, items, true)\n}\n\ntype Key = string | number | boolean\n\n/**\n * Diff an array when all the elements have _key in the same position.\n */\nfunction diffArrayByKey<A>(\n fromArray: ArrayInput<A>,\n fromKeyIndex: KeyIndex,\n toArray: ArrayInput<A>,\n toKeyIndex: KeyIndex,\n options: DiffOptions,\n): ArrayDiff<A> {\n const items: ItemDiff<A>[] = []\n let isChanged = false\n\n function diffCommon(key: Key, fromIndex: number, toIndex: number, hasMoved: boolean) {\n deletePositionInIndex(fromKeyIndex.index, key, fromIndex)\n deletePositionInIndex(toKeyIndex.index, key, toIndex)\n\n const fromInput = fromArray.at(fromIndex)\n const toInput = toArray.at(toIndex)\n\n const diff = diffInput(fromInput, toInput)\n items.push({\n fromIndex,\n toIndex,\n hasMoved,\n diff,\n annotation: toArray.annotationAt(toIndex),\n })\n\n if (diff.isChanged || fromIndex !== toIndex) {\n isChanged = true\n }\n }\n\n const lcs = getLongestCommonSubsequence(fromKeyIndex.keys, toKeyIndex.keys)\n\n for (let fromIndex = 0; fromIndex < fromKeyIndex.keys.length; fromIndex++) {\n const key = fromKeyIndex.keys[fromIndex]\n\n const subsequenceIdx = lcs.prevIndices.indexOf(fromIndex)\n if (subsequenceIdx !== -1) {\n // Part of the common subsequence => hasMoved:false\n diffCommon(key, fromIndex, lcs.nextIndices[subsequenceIdx], false)\n continue\n }\n\n // Not a part of the subsequence. Try to find another item which has the same key\n // and also is not part of the common subsequence.\n const toIndexes = toKeyIndex.index.get(key)\n const toIndex = toIndexes && toIndexes.find((idx) => !lcs.nextIndices.includes(idx))\n if (toIndex !== undefined) {\n diffCommon(key, fromIndex, toIndex, true)\n continue\n }\n\n const input = fromArray.at(fromIndex)\n\n items.push({\n fromIndex,\n toIndex: undefined,\n hasMoved: false,\n diff: removedInput(input, undefined, options),\n annotation: fromArray.annotationAt(fromIndex),\n })\n\n isChanged = true\n }\n\n // The remaining data in toKeyIndex are the new elements which has been added\n for (const positions of toKeyIndex.index.values()) {\n for (const toIndex of positions) {\n const input = toArray.at(toIndex)\n items.push({\n fromIndex: undefined,\n toIndex,\n hasMoved: false,\n diff: addedInput(input, undefined, options),\n annotation: toArray.annotationAt(toIndex),\n })\n }\n\n isChanged = true\n }\n\n items.sort(compareItemDiff)\n\n return buildArrayDiff(fromArray, toArray, items, isChanged)\n}\n\nfunction compareItemDiff<A>(a: ItemDiff<A>, b: ItemDiff<A>): number {\n if (a.toIndex !== undefined && b.toIndex !== undefined) {\n return a.toIndex - b.toIndex\n }\n\n if (a.fromIndex !== undefined && b.fromIndex !== undefined) {\n return a.fromIndex - b.fromIndex\n }\n\n if (a.fromIndex !== undefined && b.toIndex !== undefined) {\n // A was removed and B was added. Prefer to sort removals last.\n return -1\n }\n\n if (a.toIndex !== undefined && b.fromIndex !== undefined) {\n // A was added and B was removed. Prefer to sort removals last.\n return 1\n }\n\n throw new Error('invalid item diff comparison')\n}\n\nfunction deletePositionInIndex(index: Map<Key, number[]>, key: Key, pos: number) {\n const positions = index.get(key)!\n deleteArrayValue(positions, pos)\n if (positions.length === 0) {\n index.delete(key)\n }\n}\n\nfunction deleteArrayValue<E>(arr: E[], value: E) {\n const idx = arr.indexOf(value)\n if (idx === -1) throw new Error('value not found')\n arr.splice(idx, 1)\n}\n\ntype KeyIndex = {\n keys: Key[]\n index: Map<Key, number[]>\n}\n\n/**\n * Indexes the array by a key. This handles cases where the items are:\n *\n * - Objects with _key\n * - Strings\n * - Numbers\n */\nfunction indexByKey<A>(arr: ArrayInput<A>): KeyIndex | undefined {\n const index = new Map<Key, number[]>()\n const keys: Key[] = []\n const length = arr.length\n\n for (let i = 0; i < length; i++) {\n const item = arr.at(i)\n\n let key: Key | null = null\n\n switch (item.type) {\n case 'string':\n key = `s${item.value}`\n break\n case 'number':\n key = item.value\n break\n case 'boolean':\n key = item.value\n break\n case 'null':\n key = 'n'\n break\n case 'object':\n {\n const keyField = item.get('_key')\n if (keyField && keyField.type === 'string') {\n key = `k${keyField.value}`\n\n // We do not handle duplicate _key\n if (index.has(key)) return undefined\n }\n }\n break\n default:\n }\n\n // No key => abort\n if (key === null) return undefined\n\n keys.push(key)\n let positions = index.get(key)\n if (!positions) {\n positions = []\n index.set(key, positions)\n }\n positions.push(i)\n }\n\n // All is good.\n return {keys, index}\n}\n\nexport function removedArray<A>(\n input: ArrayInput<A>,\n toValue: null | undefined,\n options: DiffOptions,\n): ArrayDiff<A> & {action: 'removed'} {\n return {\n type: 'array',\n action: 'removed',\n isChanged: true,\n fromValue: input.value,\n toValue,\n annotation: input.annotation,\n\n get items(): ArrayDiff<A>['items'] {\n const items: ArrayDiff<A>['items'] = []\n for (let i = 0; i < input.length; i++) {\n const item = input.at(i)\n items.push({\n fromIndex: i,\n toIndex: undefined,\n hasMoved: false,\n diff: removedInput(item, undefined, options),\n annotation: input.annotationAt(i),\n })\n }\n\n return replaceProperty(this, 'items', items)\n },\n }\n}\n\nexport function addedArray<A>(\n input: ArrayInput<A>,\n fromValue: null | undefined,\n options: DiffOptions,\n): ArrayDiff<A> & {action: 'added'} {\n return {\n type: 'array',\n action: 'added',\n isChanged: true,\n fromValue,\n toValue: input.value,\n annotation: input.annotation,\n\n get items(): ArrayDiff<A>['items'] {\n const items: ArrayDiff<A>['items'] = []\n for (let i = 0; i < input.length; i++) {\n const item = input.at(i)\n items.push({\n fromIndex: undefined,\n toIndex: i,\n hasMoved: false,\n diff: addedInput(item, undefined, options),\n annotation: input.annotationAt(i),\n })\n }\n\n return replaceProperty(this, 'items', items)\n },\n }\n}\n","import {replaceProperty} from '../helpers'\nimport {type DiffOptions, type ObjectDiff, type ObjectInput} from '../types'\nimport {addedInput, diffInput, removedInput} from './diffInput'\n\nconst ignoredFields = new Set(['_id', '_type', '_createdAt', '_updatedAt', '_rev', '_weak'])\n\nexport function diffObject<A>(\n fromInput: ObjectInput<A>,\n toInput: ObjectInput<A>,\n options: DiffOptions,\n): ObjectDiff<A> {\n const fields: ObjectDiff<A>['fields'] = {}\n let isChanged = false\n\n for (const key of fromInput.keys) {\n if (ignoredFields.has(key)) continue\n\n const fromField = fromInput.get(key)!\n\n const toField = toInput.get(key)\n if (toField) {\n const fieldDiff = diffInput(fromField, toField, options)\n fields[key] = fieldDiff\n if (fieldDiff.isChanged) isChanged = true\n } else {\n fields[key] = removedInput(fromField, undefined, options)\n isChanged = true\n }\n }\n\n for (const key of toInput.keys) {\n if (ignoredFields.has(key)) continue\n\n // Already handled above\n if (fromInput.get(key)) continue\n\n const toField = toInput.get(key)!\n fields[key] = addedInput(toField, undefined, options)\n isChanged = true\n }\n\n const fromValue = fromInput.value\n const toValue = toInput.value\n\n if (!isChanged) {\n return {\n type: 'object',\n action: 'unchanged',\n isChanged: false,\n fromValue,\n toValue,\n fields,\n }\n }\n\n return {\n type: 'object',\n action: 'changed',\n isChanged: true,\n fromValue,\n toValue,\n fields,\n annotation: toInput.annotation,\n }\n}\n\nexport function removedObject<A>(\n input: ObjectInput<A>,\n toValue: null | undefined,\n options: DiffOptions,\n): ObjectDiff<A> & {action: 'removed'} {\n return {\n type: 'object',\n action: 'removed',\n isChanged: true,\n fromValue: input.value,\n toValue,\n annotation: input.annotation,\n\n get fields(): ObjectDiff<A>['fields'] {\n const fields: ObjectDiff<A>['fields'] = {}\n for (const key of input.keys) {\n const value = input.get(key)!\n fields[key] = removedInput(value, undefined, options)\n }\n return replaceProperty(this, 'fields', fields)\n },\n }\n}\n\nexport function addedObject<A>(\n input: ObjectInput<A>,\n fromValue: null | undefined,\n options: DiffOptions,\n): ObjectDiff<A> & {action: 'added'} {\n return {\n type: 'object',\n action: 'added',\n isChanged: true,\n fromValue,\n toValue: input.value,\n annotation: input.annotation,\n\n get fields(): ObjectDiff<A>['fields'] {\n const fields: ObjectDiff<A>['fields'] = {}\n for (const key of input.keys) {\n const value = input.get(key)!\n fields[key] = addedInput(value, undefined, options)\n }\n return replaceProperty(this, 'fields', fields)\n },\n }\n}\n","import {\n type BooleanDiff,\n type BooleanInput,\n type DiffOptions,\n type NumberDiff,\n type NumberInput,\n} from '../types'\n\nexport function diffNumber<A>(\n fromInput: NumberInput<A>,\n toInput: NumberInput<A>,\n options: DiffOptions,\n): NumberDiff<A> {\n const fromValue = fromInput.value\n const toValue = toInput.value\n const type = fromInput.type\n\n if (fromValue === toValue)\n return {\n type,\n action: 'unchanged',\n fromValue,\n toValue,\n isChanged: false,\n }\n\n return {\n type: fromInput.type,\n action: 'changed',\n isChanged: true,\n fromValue: fromValue,\n toValue: toValue,\n annotation: toInput.annotation,\n }\n}\n\nexport function diffBoolean<A>(\n fromInput: BooleanInput<A>,\n toInput: BooleanInput<A>,\n options: DiffOptions,\n): BooleanDiff<A> {\n const fromValue = fromInput.value\n const toValue = toInput.value\n const type = fromInput.type\n\n if (fromValue === toValue)\n return {\n type,\n action: 'unchanged',\n fromValue,\n toValue,\n isChanged: false,\n }\n\n return {\n type: fromInput.type,\n action: 'changed',\n isChanged: true,\n fromValue: fromValue,\n toValue: toValue,\n annotation: toInput.annotation,\n }\n}\n","import {\n cleanupSemantic,\n DIFF_DELETE,\n DIFF_EQUAL,\n DIFF_INSERT,\n makeDiff,\n} from '@sanity/diff-match-patch'\n\nimport {replaceProperty} from '../helpers'\nimport {type DiffOptions, type StringDiff, type StringDiffSegment, type StringInput} from '../types'\n\nexport function diffString<A>(\n fromInput: StringInput<A>,\n toInput: StringInput<A>,\n options: DiffOptions,\n): StringDiff<A> {\n const fromValue = fromInput.value\n const toValue = toInput.value\n\n if (fromValue === toValue) {\n return {\n type: 'string',\n action: 'unchanged',\n isChanged: false,\n fromValue,\n toValue,\n segments: [{type: 'stringSegment', action: 'unchanged', text: fromValue}],\n }\n }\n\n return {\n type: 'string',\n action: 'changed',\n isChanged: true,\n fromValue,\n toValue,\n annotation: toInput.annotation,\n\n // Compute and memoize string segments only when accessed\n get segments(): StringDiffSegment<A>[] {\n const segments = buildSegments(fromInput, toInput)\n return replaceProperty(this, 'segments', segments)\n },\n }\n}\n\nfunction buildSegments<A>(\n fromInput: StringInput<A>,\n toInput: StringInput<A>,\n): StringDiffSegment<A>[] {\n const segments: StringDiffSegment<A>[] = []\n const dmpDiffs = cleanupSemantic(makeDiff(fromInput.value, toInput.value))\n\n let fromIdx = 0\n let toIdx = 0\n\n for (const [op, text] of dmpDiffs) {\n switch (op) {\n case DIFF_EQUAL:\n segments.push({type: 'stringSegment', action: 'unchanged', text})\n fromIdx += text.length\n toIdx += text.length\n break\n case DIFF_DELETE:\n for (const segment of fromInput.sliceAnnotation(fromIdx, fromIdx + text.length)) {\n segments.push({\n type: 'stringSegment',\n action: 'removed',\n text: segment.text,\n annotation: segment.annotation,\n })\n }\n fromIdx += text.length\n break\n case DIFF_INSERT:\n for (const segment of toInput.sliceAnnotation(toIdx, toIdx + text.length)) {\n segments.push({\n type: 'stringSegment',\n action: 'added',\n text: segment.text,\n annotation: segment.annotation,\n })\n }\n toIdx += text.length\n break\n default:\n throw new Error(`Unhandled diff-match-patch operation \"${op}\"`)\n }\n }\n\n return segments\n}\n\nexport function removedString<A>(\n input: StringInput<A>,\n toValue: null | undefined,\n options: DiffOptions,\n): StringDiff<A> & {action: 'removed'} {\n return {\n type: 'string',\n action: 'removed',\n isChanged: true,\n fromValue: input.value,\n toValue,\n annotation: input.annotation,\n\n get segments(): StringDiffSegment<A>[] {\n const segments: StringDiffSegment<A>[] = input\n .sliceAnnotation(0, input.value.length)\n .map((segment) => ({type: 'stringSegment', action: 'removed', ...segment}))\n\n return replaceProperty(this, 'segments', segments)\n },\n }\n}\n\nexport function addedString<A>(\n input: StringInput<A>,\n fromValue: null | undefined,\n options: DiffOptions,\n): StringDiff<A> & {action: 'added'} {\n return {\n type: 'string',\n action: 'added',\n isChanged: true,\n fromValue,\n toValue: input.value,\n annotation: input.annotation,\n\n get segments(): StringDiffSegment<A>[] {\n const segments: StringDiffSegment<A>[] = input\n .sliceAnnotation(0, input.value.length)\n .map((segment) => ({type: 'stringSegment', action: 'added', ...segment}))\n\n return replaceProperty(this, 'segments', segments)\n },\n }\n}\n","import {type DiffOptions, type Input, type TypeChangeDiff} from '../types'\nimport {addedInput, removedInput} from './diffInput'\n\nexport function diffTypeChange<A>(\n fromInput: Input<A>,\n toInput: Input<A>,\n options: DiffOptions,\n): TypeChangeDiff<A> {\n return {\n type: 'typeChange',\n action: 'changed',\n isChanged: true,\n\n fromType: fromInput.type,\n fromValue: fromInput.value,\n fromDiff: removedInput(fromInput, undefined, options),\n\n toType: toInput.type,\n toValue: toInput.value,\n toDiff: addedInput(toInput, undefined, options),\n\n annotation: toInput.annotation,\n }\n}\n","import {\n type ArrayInput,\n type BooleanInput,\n type Diff,\n type DiffOptions,\n type Input,\n type NumberInput,\n type ObjectInput,\n type StringInput,\n} from '../types'\nimport {addedArray, diffArray, removedArray} from './diffArray'\nimport {addedObject, diffObject, removedObject} from './diffObject'\nimport {diffBoolean, diffNumber} from './diffSimple'\nimport {addedString, diffString, removedString} from './diffString'\nimport {diffTypeChange} from './diffTypeChange'\n\n/**\n * Takes a `from` and `to` input and calulates a diff between the two\n *\n * @param fromInput - The source (`from`) input - use {@link wrap | the wrap() method} to generate an \"input\"\n * @param toInput - The destination (`to`) input - use {@link wrap | the wrap() method} to generate an \"input\"\n * @param options - Options for the diffing process - currently no options are defined\n * @returns A diff object representing the change\n * @public\n */\nexport function diffInput<A>(\n fromInput: Input<A>,\n toInput: Input<A>,\n options: DiffOptions = {},\n): Diff<A> {\n if (fromInput.type !== toInput.type) {\n if (fromInput.type === 'null') {\n return addedInput(toInput, null, options)\n }\n\n if (toInput.type === 'null') {\n return removedInput(fromInput, null, options)\n }\n\n return diffTypeChange(fromInput, toInput, options)\n }\n\n return diffWithType(fromInput.type, fromInput, toInput, options)\n}\n\nfunction diffWithType<A>(\n type: Input<A>['type'],\n fromInput: Input<A>,\n toInput: Input<A>,\n options: DiffOptions,\n): Diff<A> {\n switch (type) {\n case 'null':\n return {\n type: 'null',\n action: 'unchanged',\n isChanged: false,\n toValue: null,\n fromValue: null,\n }\n case 'boolean':\n return diffBoolean(fromInput as BooleanInput<A>, toInput as BooleanInput<A>, options)\n case 'number':\n return diffNumber(fromInput as NumberInput<A>, toInput as NumberInput<A>, options)\n case 'string':\n return diffString(fromInput as StringInput<A>, toInput as StringInput<A>, options)\n case 'array':\n return diffArray(fromInput as ArrayInput<A>, toInput as ArrayInput<A>, options)\n case 'object':\n return diffObject(fromInput as ObjectInput<A>, toInput as ObjectInput<A>, options)\n default:\n throw new Error(`Unhandled diff type \"${type}\"`)\n }\n}\n\nexport function removedInput<A>(\n input: Input<A>,\n toValue: null | undefined,\n options: DiffOptions,\n): Diff<A> & {action: 'removed'} {\n switch (input.type) {\n case 'null':\n return {\n type: 'null',\n action: 'removed',\n isChanged: true,\n fromValue: null,\n toValue,\n annotation: input.annotation,\n }\n case 'boolean':\n return {\n type: 'boolean',\n action: 'removed',\n isChanged: true,\n fromValue: input.value,\n toValue,\n annotation: input.annotation,\n }\n case 'number':\n return {\n type: 'number',\n action: 'removed',\n isChanged: true,\n fromValue: input.value,\n toValue,\n annotation: input.annotation,\n }\n case 'string':\n return removedString(input, toValue, options)\n case 'array':\n return removedArray(input, toValue, options)\n case 'object':\n return removedObject(input, toValue, options)\n default:\n throw new Error('Unhandled diff type')\n }\n}\n\nexport function addedInput<A>(\n input: Input<A>,\n fromValue: null | undefined,\n options: DiffOptions,\n): Diff<A> & {action: 'added'} {\n switch (input.type) {\n case 'null':\n return {\n type: 'null',\n action: 'added',\n isChanged: true,\n fromValue,\n toValue: null,\n annotation: input.annotation,\n }\n case 'boolean':\n return {\n type: 'boolean',\n action: 'added',\n isChanged: true,\n fromValue,\n toValue: input.value,\n annotation: input.annotation,\n }\n case 'number':\n return {\n type: 'number',\n action: 'added',\n isChanged: true,\n fromValue,\n toValue: input.value,\n annotation: input.annotation,\n }\n case 'string':\n return addedString(input, fromValue, options)\n case 'array':\n return addedArray(input, fromValue, options)\n case 'object':\n return addedObject(input, fromValue, options)\n default:\n throw new Error('Unhandled diff type')\n }\n}\n","import {type ArrayInput, type Input} from '../types'\nimport {wrap} from './index'\n\nexport default class ArrayWrapper<A> implements ArrayInput<A> {\n type = 'array' as const\n length: number\n value: unknown[]\n annotation: A\n\n private elements: Input<A>[] = []\n\n constructor(value: unknown[], annotation: A) {\n this.annotation = annotation\n this.value = value\n this.length = value.length\n }\n\n at(idx: number): Input<A> {\n if (idx >= this.length) throw new Error('out of bounds')\n const input = this.elements[idx]\n if (input) {\n return input\n }\n\n return (this.elements[idx] = wrap(this.value[idx], this.annotation))\n }\n\n annotationAt(): A {\n return this.annotation\n }\n}\n","type SimpleType = 'boolean' | 'number' | 'null'\n\nexport default class BasicWrapper<K extends SimpleType, V, A> {\n type: K\n value: V\n annotation: A\n\n constructor(type: K, value: V, annotation: A) {\n this.type = type\n this.value = value\n this.annotation = annotation\n }\n}\n","import {type Input, type ObjectInput} from '../types'\nimport {wrap} from './index'\n\nexport default class ObjectWrapper<A> implements ObjectInput<A> {\n type = 'object' as const\n value: Record<string, unknown>\n keys: string[]\n annotation: A\n\n private fields: Record<string, Input<A>> = {}\n\n constructor(value: Record<string, unknown>, annotation: A) {\n this.value = value\n this.annotation = annotation\n this.keys = Object.keys(value)\n }\n\n get(key: string): Input<A> | undefined {\n const input = this.fields[key]\n if (input) {\n return input\n }\n\n if (!this.value.hasOwnProperty(key)) {\n return undefined\n }\n\n const raw = this.value[key]\n return (this.fields[key] = wrap(raw, this.annotation))\n }\n}\n","import {type StringInput} from '../types'\n\nexport default class StringWrapper<A> implements StringInput<A> {\n type = 'string' as const\n value: string\n annotation: A\n\n constructor(value: string, annotation: A) {\n this.value = value\n this.annotation = annotation\n }\n\n sliceAnnotation(start: number, end: number): {text: string; annotation: A}[] {\n return [{text: this.value.slice(start, end), annotation: this.annotation}]\n }\n}\n","import {type Input} from '../types'\nimport ArrayWrapper from './array'\nimport BasicWrapper from './basic'\nimport ObjectWrapper from './object'\nimport StringWrapper from './string'\n\n/**\n * Takes an input (any JSON-serializable value) and an annotation, and generates an input\n * object for it, to be used with {@link diffInput | the diffInput() method} and others.\n *\n * @param input - The value to wrap in an input object\n * @param annotation - Annotation attached to the input - will be bound to generated diffs\n * @returns A input object\n * @throws if `input` is not a JSON-serializable type\n * @public\n */\nexport function wrap<A>(input: unknown, annotation: A): Input<A> {\n if (Array.isArray(input)) {\n return new ArrayWrapper(input, annotation)\n } else if (input === null) {\n return new BasicWrapper('null', input, annotation)\n }\n\n const type = typeof input\n switch (type) {\n case 'number':\n return new BasicWrapper(type, input as number, annotation)\n case 'boolean':\n return new BasicWrapper(type, input as boolean, annotation)\n case 'object':\n return new ObjectWrapper(input as Record<string, unknown>, annotation)\n case 'string':\n return new StringWrapper(input as string, annotation)\n default:\n throw new Error(`cannot wrap value of type: ${type}`)\n }\n}\n"],"names":["nextHandle","resolved","activeHandles","findAndClearHandle","handle","Immediate","cb","setImmediate","clearImmediate","immediateProvider","args","_i","__spreadArray","__read","AsapAction","_super","__extends","scheduler","work","_this","id","delay","_a","actions","AsyncAction","AsapScheduler","action","flushId","error","AsyncScheduler","asapScheduler","not","pred","thisArg","value","index","partition","source","predicate","filter","innerFrom","scanInternals","accumulator","seed","hasSeed","emitOnNext","emitBeforeComplete","subscriber","hasState","state","createOperatorSubscriber","i","debounce","durationSelector","operate","hasValue","lastValue","durationSubscriber","emit","noop","mapTo","map","delayWhen","delayDurationSelector","subscriptionDelay","mergeMap","take","due","asyncScheduler","duration","timer","distinctUntilChanged","comparator","keySelector","identity","defaultCompare","previousKey","first","currentKey","a","b","exhaustMap","project","resultSelector","innerSub","isComplete","outerValue","scan","startWith","values","popScheduler","concat","throttle","config","_b","leading","_c","trailing","sendValue","throttled","endThrottling","send","cleanupThrottling","startThrottle","throttleTime","duration$","withLatestFrom","inputs","popResultSelector","len","otherValues","ready","_loop_1","isObject","obj","Array","isArray","isSanityDocument","document","_id","_type","isTypedObject","isKeyedObject","_key","isValidationErrorMarker","marker","level","isValidationWarningMarker","isValidationInfoMarker","reKeySegment","reIndexTuple","isIndexSegment","segment","test","isKeySegment","trim","isIndexTuple","length","from","to","isRecord","isDocumentSchemaType","type","isObjectSchemaType","current","name","jsonType","isArraySchemaType","isArrayOfBlocksSchemaType","of","some","memberType","isBlockSchemaType","isArrayOfObjectsSchemaType","every","isArrayOfPrimitivesSchemaType","isPrimitiveSchemaType","isBooleanSchemaType","isStringSchemaType","isDateTimeSchemaType","isNumberSchemaType","isReferenceSchemaType","isImageSchemaType","isFileSchemaType","isDeprecatedSchemaType","deprecated","isDeprecationConfiguration","isCrossDatasetReferenceSchemaType","isTitledListValue","item","isSpanSchemaType","annotations","decorators","fields","maybeSpanChildren","find","isBlockChildrenObjectField","maybeStyle","isBlockStyleObjectField","maybeList","isBlockListObjectField","field","rePropName","EMPTY_PATH","FOCUS_TERMINATOR","GROQ_DATA_TYPE_VALUES","get","path","defaultVal","select","fromString","Error","acc","undefined","pathsMemo","Map","pathFor","asString","toString","has","set","Object","freeze","isEqual","otherPath","isSegmentEqual","numEqualSegments","Math","min","segmentA","segmentB","Number","startsWith","prefix","trimLeft","prefixHead","prefixTail","pathHead","pathTail","trimChildPath","childPath","reduce","target","isHead","includes","JSON","stringify","_resolveKeyedPath","next","rest","nextVal","resolveKeyedPath","segments","match","normalizePathSegment","normalizeIndexSegment","normalizeKeySegment","normalizeIndexTupleSegment","replace","split","seg","hasElementType","hasMap","hasSet","hasArrayBuffer","equal","keys","it","reactFastCompare","warn","_len","alreadyWarned","warnOnce","_len2","_key2","loadedClb","i18n","initialized","loadNamespaces","ns","loadLanguages","lng","n","oldI18nextHasLoadedNamespace","options","fallbackLng","lastLng","loadNotPending","l","loadState","hasLoadedNamespace","i18nInstance","matchHtmlEntity","htmlEntities","unescapeHtmlEntity","m","unescape","text","defaultOptions","setDefaults","getDefaults","setI18n","instance","getI18n","I18nContext","createContext","ReportNamespaces","namespaces","usePrevious","ignore","ref","useRef","useEffect","alwaysNewT","language","namespace","keyPrefix","useMemoizedT","useCallback","useTranslation","props","i18nFromProps","i18nFromContext","defaultNSFromContext","useContext","notReadyT","k","optsOrDefaultValue","retNotReady","i18nOptions","useSuspense","memoGetT","getT","t","setT","useState","joinedNS","previousJoinedNS","isMounted","bindI18n","bindI18nStore","boundReset","e","isInitial","ret","resolve","Dialog","forwardRef","t0","$","bodyHeight","children","footer","t1","padding","t2","confirmButton","cancelButton","Flex","description","jsx","Box","Text","onClose","UIButton","t3","t4","t5","UIDialog","MenuGroup","tooltipProps","Tooltip","content","renderWrapper","UIMenuGroup","ConditionalWrapper","Popover","UIPopover","Tab","tone","UITab","pass","input$","observableCallback","operator","subject","Subject","arg","getValue","cache","useObservable","observable","initialValue","c","entry","_temp$1","catchError","_temp2","tap","t12","snapshot","error_0","_temp3","finalize","share","_temp4","initialValue_0","onStoreChange","subscription_0","subscribe","useSyncExternalStore","value_0","useObservableEvent","handleEvent","_temp","calls$","call","onEvent","useEffectEvent","subscription","observable_0","_typeof","o","toInteger","dirtyNumber","number","requiredArgs","required","toDate","argument","argStr","addDays","dirtyDate","dirtyAmount","date","amount","addMilliseconds","timestamp","getDefaultOptions","getTimezoneOffsetInMilliseconds","utcDate","addWeeks","days","isDate","isValid","subMilliseconds","MILLISECONDS_IN_DAY","getUTCDayOfYear","startOfYearTimestamp","difference","startOfUTCISOWeek","weekStartsOn","day","diff","getUTCISOWeekYear","year","fourthOfJanuaryOfNextYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","startOfUTCISOWeekYear","fourthOfJanuary","MILLISECONDS_IN_WEEK","getUTCISOWeek","startOfUTCWeek","_ref","_ref2","_ref3","_options$weekStartsOn","_options$locale","_options$locale$optio","_defaultOptions$local","_defaultOptions$local2","getUTCWeekYear","_options$firstWeekCon","firstWeekContainsDate","firstWeekOfNextYear","firstWeekOfThisYear","startOfUTCWeekYear","firstWeek","getUTCWeek","addLeadingZeros","targetLength","sign","output","formatters","token","signedYear","month","dayPeriodEnumValue","numberOfDigits","milliseconds","fractionalSeconds","dayPeriodEnum","localize","era","lightFormatters","signedWeekYear","weekYear","twoDigitYear","isoWeekYear","quarter","week","isoWeek","dayOfYear","dayOfWeek","localDayOfWeek","isoDayOfWeek","hours","_localize","originalDate","timezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","formatTimezoneShort","offset","dirtyDelimiter","absOffset","minutes","delimiter","dateLongFormatter","pattern","formatLong","timeLongFormatter","dateTimeLongFormatter","matchResult","datePattern","timePattern","dateTimeFormat","longFormatters","protectedDayOfYearTokens","protectedWeekYearTokens","isProtectedDayOfYearToken","isProtectedWeekYearToken","throwProtectedError","format","input","formatDistanceLocale","formatDistance","count","result","tokenValue","buildFormatLongFn","width","dateFormats","timeFormats","dateTimeFormats","formatRelativeLocale","formatRelative","_date","_baseDate","_options","buildLocalizeFn","dirtyIndex","context","valuesArray","defaultWidth","_defaultWidth","_width","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","rem100","buildMatchFn","string","matchPattern","matchedString","parsePatterns","key","findIndex","findKey","object","array","buildMatchPatternFn","parseResult","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","locale","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","dirtyFormatStr","_ref4","_options$locale2","_options$locale2$opti","_ref5","_ref6","_ref7","_options$locale3","_options$locale3$opti","_defaultOptions$local3","_defaultOptions$local4","formatStr","defaultLocale","formatterOptions","substring","firstCharacter","longFormatter","cleanEscapedString","formatter","matched","isAfter","dirtyDateToCompare","dateToCompare","isBefore","QuickLRU","deleted","oldCacheSize","quickLru","cloneDiff","diff2","patch","getCommonOverlap","textA","textB","text1","text2","text1Length","text2Length","textLength","best","found","getCommonPrefix","pointerMin","pointerMax","pointerMid","pointerStart","getCommonSuffix","pointerEnd","isHighSurrogate","char","charCode","isLowSurrogate","bisect","deadline","maxD","vOffset","vLength","v1","v2","x","delta","front","k1start","k1end","k2start","k2end","d","k1","k1Offset","x1","y1","k2Offset","x2","bisectSplit","k2","y2","DIFF_DELETE","DIFF_INSERT","y","text1a","text2a","text1b","text2b","diffs","doDiff","diffsb","findHalfMatch","timeout","longText","shortText","halfMatch1","halfMatchI","halfMatch2","halfMatch","text1A","text1B","text2A","text2B","midCommon","j","bestCommon","bestLongTextA","bestLongTextB","bestShortTextA","bestShortTextB","prefixLength","suffixLength","charsToLines","lineArray","chars","linesToChars","lineHash","diffLinesToMunge","lineStart","lineEnd","lineArrayLength","line","maxLines","chars1","chars2","doLineModeDiff","opts","linearray","cleanupSemantic","DIFF_EQUAL","pointer","countDelete","countInsert","textDelete","textInsert","aa","computeDiff","longtext","shorttext","diffsA","diffsB","__defProp$2","__getOwnPropSymbols$2","__hasOwnProp$2","__propIsEnum$2","__defNormalProp$2","__spreadValues$2","prop","createInternalOpts","adjustDiffForSurrogatePairs","commonlength","commonprefix","commonsuffix","cleanupMerge","createDeadLine","combineChar","data","dir","splitChar","hasSharedChar","deisolateChar","inv","insertIdx","deleteIdx","op","char2","insertText","insertChar","deleteText","diffType","diffText","firstChar","lastChar","rawDiffs","hasChanges","equalities","equalitiesLength","lastEquality","lengthInsertions1","lengthDeletions1","lengthInsertions2","lengthDeletions2","cleanupSemanticLossless","deletion","insertion","overlapLength1","overlapLength2","nonAlphaNumericRegex","whitespaceRegex","linebreakRegex","blanklineEndRegex","blanklineStartRegex","diffCleanupSemanticScore","one","two","char1","nonAlphaNumeric1","nonAlphaNumeric2","whitespace1","whitespace2","lineBreak1","lineBreak2","blankLine1","blankLine2","equality1","edit","equality2","commonOffset","commonString","bestEquality1","bestEdit","bestEquality2","bestScore","score","trueCount","bool","cleanupEfficiency","editCost","preIns","preDel","postIns","postDel","__defProp$1","__getOwnPropSymbols$1","__hasOwnProp$1","__propIsEnum$1","__defNormalProp$1","__spreadValues$1","DEFAULT_OPTIONS","applyDefaults","MAX_BITS$1","bitap","loc","s","getAlphabetFromPattern","getBitapScore","accuracy","proximity","scoreThreshold","bestLoc","matchmask","binMin","binMid","binMax","lastRd","start","finish","rd","charMatch","searchLocation","diffText1","diffText2","levenshtein","leven","insertions","deletions","xIndex","location","lastChars1","lastChars2","countUtf8Bytes","str","bytes","codePoint","utf8len","adjustIndiciesToUcs2","patches","base","byteOffset","idx","advanceTo","adjusted","MAX_BITS","DEFAULT_MARGIN","addPadding","margin","paddingLength","nullPadding","p","firstDiffLength","extraLength","createPatchObject","start1","start2","splitMax","patchSize","bigpatch","preContext","empty","precontextByteCount","diffTextByteCount","postContext","postContextByteCount","apply","originalText","parsed","deleteThreshold","results","expectedLoc","startLoc","endLoc","index1","index2","mod","__defProp","__getOwnPropSymbols","__hasOwnProp","__propIsEnum","__defNormalProp","__spreadValues","DEFAULT_OPTS","getDefaultOpts","make","_make","patchDiffLength","charCount1","charCount2","utf8Count1","utf8Count2","prepatchText","postpatchText","currentDiff","diffTextLength","diffByteLength","addContext","prefixStart","prefixUtf8Length","suffixEnd","suffix","suffixUtf8Length","patchHeader","parse","textline","lines","textPointer","toInt","currentLine","utf8Diff","num","stringifyPatch","utf8Length1","utf8Length2","utf8Start1","utf8Start2","coords1","coords2","alphabet","dec","encode","src","dst","decode","v","parseUUID","uuid","arr","__pow","DIGITS","UUID","unixTsMs","randA","randBHi","randBLo","other","V7Generator","DefaultRandom","ts","getRandomValues","buffer","defaultGenerator","uuidv7obj","isValidPrefix","code","TypeID","self","parts","typeid","createSessionId","createTraceId","splitAt","MAX_LENGTH","trimErrorMessage","errorMessage","newLineIndex","splitIndex","createStore","sessionId","logEntries$","eventSampleTimes","pushTraceError","traceId","telemetryTrace","pushTraceEntry","pushLogEntry","event","pushUserPropertiesEntry","properties","createTrace","traceDef","innerTraceDef","log","promise","lastSampledAt","now","unrefTimer","ms","Observable","createBatchedStore","store","resolveConsent","err","_buffer","consume","buf","submit","pending","EMPTY","combineLatest","events","consent","flushInterval","flush$","ev","concatMap","flush","lastValueFrom","endWithBeacon","end","defineEvent","shallowEquals","shallow","compare","aIsNull","bIsNull","aIsArray","bIsArray","aTypeof","bTypeof","flat","shallowArray","shallowObject","ka","kb","exhaustMapWithTrailing","defer","release","scheduled","IS_MAC","MODIFIERS","ALIASES","CODES","f","isHotkey","hotkey","parseHotkey","check","compareHotkey","byKey","optional","toKeyName","modifier","toKeyCode","expected","actual","escapeRegExp","pathRegExp","re","part","Path","__publicField","StreamValue","generator","currentResolver","setupTicker","tick","fetch","RFC3339_REGEX","parseRFC3339","formatRFC3339","addLeadingZero","hour","minute","second","fractionalSecond","millis","StaticValue","element","fromJS","NULL_VALUE","TRUE_VALUE","FALSE_VALUE","DateTime","secs","copy","fromNumber","fromDateTime","dt","fromPath","isIterator","val","getType","CHARS","CHARS_WITH_WILDCARD","EDGE_CHARS","matchText","tokens","patterns","matchTokenize","matchAnalyzePattern","matchPatternRegex","term","gatherText","success","TYPE_ORDER","partialCompare","aType","bType","totalCompare","aTypeOrder","bTypeOrder","operators","left","right","numericOperator","impl","Scope$1","Scope","params","parent","evaluate","node","scope","execute","func","EXECUTORS","promiselessApply","_","leftValue","rightValue","alternatives","fallback","alt","altCond","isInclusive","leftCmp","rightCmp","expr","baseValue","elem","newScope","exprValue","finalIndex","array2","leftIdx","rightIdx","doc","attributes","attr","attrType","cond","elements","innerValue","inner","evaluateQuery","tree","root","dataset","canConstantEvaluate","DUMMY_SCOPE","tryConstantEvaluate","constantEvaluate","portableTextContent","blockText","texts","arrayText","block","child","BM25k","evaluateScore","evaluateMatchScore","innerScore","boost","leftScore","rightScore","res","terms","freq","hasReference","pathSet","countUTF8","count2","_global","_args","path2","scopeValue","prec","precValue","string2","sep","needSep","added","iter","arr1","arr2","pt","sanity","baseId","components","releases","allReleases","pipeFunctions","mappers","directions","mapper","direction","aux","tuple","aTuple","bTuple","unknown","scored","valueScore","newObject","hasBefore","hasAfter","math","dateTime2","MarkProcessor","marks","parseOptions","pos","visitor","mark","prev","curr","WS","NUM","IDENT","parse$1","skipWS","parseExpr","startPos","rhs","parseObject","parseString","identLen","parseRegex","numLen","fracLen","expLen","parseFuncCall","lhsLevel","trav","loop","innerPos","parseTraversal","rhs2","nextPos","identPos","parseRegexStr","isGroup","rangePos","failPosition","identStart","identLen2","nameLen","lastPos","pairPos","join","flatMap","traverseArray","build","traversePlain","traverseElement","traverseProjection","ESCAPE_SEQUENCE","expandHex","GroqQueryError","EXPR_BUILDER","traversalList","TRAVERSE_BUILDER","traversal","strValue","OBJECT_BUILDER","isSplat","members","condition","argumentShouldBeSelector","SELECTOR_BUILDER","funcs","validateArity","oldAllowBoost","markName","value2","extractPropertyKey","wrap","arity","functionName","argCount","functionsRequiringSelectors","GroqSyntaxError","position","$trace$1","debug","$trace","$debug","replaceProperty","getLongestCommonSubsequence","previous","matrix","getLengthMatrix","backtrack","len1","len2","max","prevIndex","nextIndex","subsequence","sequence","prevIndices","nextIndices","unshift","valueAtMatrixAbove","valueAtMatrixLeft","diffArray","fromInput","toInput","fromValue","toValue","isChanged","items","diffExactByPosition","keyedA","indexByKey","keyedB","diffArrayByKey","buildArrayDiff","diffArrayByReinsert","annotation","diffInput","at","push","fromIndex","toIndex","hasMoved","annotationAt","addedInput","removedInput","fromArray","fromKeyIndex","toArray","toKeyIndex","diffCommon","lcs","subsequenceIdx","indexOf","toIndexes","positions","sort","compareItemDiff","deletePositionInIndex","deleteArrayValue","delete","splice","keyField","removedArray","addedArray","ignoredFields","Set","diffObject","fromField","toField","fieldDiff","removedObject","addedObject","diffNumber","diffBoolean","diffString","buildSegments","dmpDiffs","makeDiff","fromIdx","toIdx","sliceAnnotation","removedString","addedString","diffTypeChange","fromType","fromDiff","toType","toDiff","diffWithType","ArrayWrapper","constructor","BasicWrapper","ObjectWrapper","hasOwnProperty","raw","StringWrapper","slice"],"mappings":"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;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,25,26,27,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87]}