convex-cms 0.0.2 → 0.0.3

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 (265) hide show
  1. package/admin-dist/nitro.json +15 -0
  2. package/admin-dist/public/assets/CmsEmptyState-CRswfTzk.js +5 -0
  3. package/admin-dist/public/assets/CmsPageHeader-CirpXndm.js +1 -0
  4. package/admin-dist/public/assets/CmsStatusBadge-CbEUpQu-.js +1 -0
  5. package/admin-dist/public/assets/CmsToolbar-BI2nZOXp.js +1 -0
  6. package/admin-dist/public/assets/ContentEntryEditor-CBeCyK_m.js +4 -0
  7. package/admin-dist/public/assets/ErrorState-BIVaWmom.js +1 -0
  8. package/admin-dist/public/assets/TaxonomyFilter-ChaY6Y_x.js +1 -0
  9. package/admin-dist/public/assets/_contentTypeId-DQ8k_Rvw.js +1 -0
  10. package/admin-dist/public/assets/_entryId-CKU_glsK.js +1 -0
  11. package/admin-dist/public/assets/alert-BXjTqrwQ.js +1 -0
  12. package/admin-dist/public/assets/badge-hvUOzpVZ.js +1 -0
  13. package/admin-dist/public/assets/circle-check-big-CF_pR17r.js +1 -0
  14. package/admin-dist/public/assets/command-DU82cJlt.js +1 -0
  15. package/admin-dist/public/assets/content-_LXl3pp7.js +1 -0
  16. package/admin-dist/public/assets/content-types-KjxaXGxY.js +2 -0
  17. package/admin-dist/public/assets/globals-CS6BZ0zp.css +1 -0
  18. package/admin-dist/public/assets/index-DNGIZHL-.js +1 -0
  19. package/admin-dist/public/assets/label-KNtpL71g.js +1 -0
  20. package/admin-dist/public/assets/link-2-Bw2aI4V4.js +1 -0
  21. package/admin-dist/public/assets/list-sYepHjt_.js +1 -0
  22. package/admin-dist/public/assets/main-CKj5yfEi.js +97 -0
  23. package/admin-dist/public/assets/media-Bkrkffm7.js +1 -0
  24. package/admin-dist/public/assets/new._contentTypeId-C3LstjNs.js +1 -0
  25. package/admin-dist/public/assets/plus-DUn8v_Xf.js +1 -0
  26. package/admin-dist/public/assets/rotate-ccw-DJEoHcRI.js +1 -0
  27. package/admin-dist/public/assets/scroll-area-DfIlT0in.js +1 -0
  28. package/admin-dist/public/assets/search-MuAUDJKR.js +1 -0
  29. package/admin-dist/public/assets/select-BD29IXCI.js +1 -0
  30. package/admin-dist/public/assets/settings-DmMyn_6A.js +1 -0
  31. package/admin-dist/public/assets/switch-h3Rrnl5i.js +1 -0
  32. package/admin-dist/public/assets/tabs-imc8h-Dp.js +1 -0
  33. package/admin-dist/public/assets/taxonomies-dAsrT65H.js +1 -0
  34. package/admin-dist/public/assets/textarea-BTy7nwzR.js +1 -0
  35. package/admin-dist/public/assets/trash-SAWKZZHv.js +1 -0
  36. package/admin-dist/public/assets/triangle-alert-E52Vfeuh.js +1 -0
  37. package/admin-dist/public/assets/useBreadcrumbLabel-BECBMCzM.js +1 -0
  38. package/admin-dist/public/assets/usePermissions-Basjs9BT.js +1 -0
  39. package/admin-dist/public/favicon.ico +0 -0
  40. package/admin-dist/server/_chunks/_libs/@date-fns/tz.mjs +217 -0
  41. package/admin-dist/server/_chunks/_libs/@floating-ui/core.mjs +719 -0
  42. package/admin-dist/server/_chunks/_libs/@floating-ui/dom.mjs +622 -0
  43. package/admin-dist/server/_chunks/_libs/@floating-ui/react-dom.mjs +292 -0
  44. package/admin-dist/server/_chunks/_libs/@floating-ui/utils.mjs +320 -0
  45. package/admin-dist/server/_chunks/_libs/@radix-ui/number.mjs +6 -0
  46. package/admin-dist/server/_chunks/_libs/@radix-ui/primitive.mjs +11 -0
  47. package/admin-dist/server/_chunks/_libs/@radix-ui/react-arrow.mjs +23 -0
  48. package/admin-dist/server/_chunks/_libs/@radix-ui/react-avatar.mjs +119 -0
  49. package/admin-dist/server/_chunks/_libs/@radix-ui/react-checkbox.mjs +270 -0
  50. package/admin-dist/server/_chunks/_libs/@radix-ui/react-collection.mjs +69 -0
  51. package/admin-dist/server/_chunks/_libs/@radix-ui/react-compose-refs.mjs +39 -0
  52. package/admin-dist/server/_chunks/_libs/@radix-ui/react-context.mjs +137 -0
  53. package/admin-dist/server/_chunks/_libs/@radix-ui/react-dialog.mjs +325 -0
  54. package/admin-dist/server/_chunks/_libs/@radix-ui/react-direction.mjs +9 -0
  55. package/admin-dist/server/_chunks/_libs/@radix-ui/react-dismissable-layer.mjs +210 -0
  56. package/admin-dist/server/_chunks/_libs/@radix-ui/react-dropdown-menu.mjs +253 -0
  57. package/admin-dist/server/_chunks/_libs/@radix-ui/react-focus-guards.mjs +29 -0
  58. package/admin-dist/server/_chunks/_libs/@radix-ui/react-focus-scope.mjs +206 -0
  59. package/admin-dist/server/_chunks/_libs/@radix-ui/react-id.mjs +14 -0
  60. package/admin-dist/server/_chunks/_libs/@radix-ui/react-label.mjs +23 -0
  61. package/admin-dist/server/_chunks/_libs/@radix-ui/react-menu.mjs +812 -0
  62. package/admin-dist/server/_chunks/_libs/@radix-ui/react-popover.mjs +300 -0
  63. package/admin-dist/server/_chunks/_libs/@radix-ui/react-popper.mjs +286 -0
  64. package/admin-dist/server/_chunks/_libs/@radix-ui/react-portal.mjs +16 -0
  65. package/admin-dist/server/_chunks/_libs/@radix-ui/react-presence.mjs +128 -0
  66. package/admin-dist/server/_chunks/_libs/@radix-ui/react-primitive.mjs +141 -0
  67. package/admin-dist/server/_chunks/_libs/@radix-ui/react-roving-focus.mjs +224 -0
  68. package/admin-dist/server/_chunks/_libs/@radix-ui/react-scroll-area.mjs +721 -0
  69. package/admin-dist/server/_chunks/_libs/@radix-ui/react-select.mjs +1163 -0
  70. package/admin-dist/server/_chunks/_libs/@radix-ui/react-separator.mjs +28 -0
  71. package/admin-dist/server/_chunks/_libs/@radix-ui/react-slot.mjs +601 -0
  72. package/admin-dist/server/_chunks/_libs/@radix-ui/react-switch.mjs +152 -0
  73. package/admin-dist/server/_chunks/_libs/@radix-ui/react-tabs.mjs +189 -0
  74. package/admin-dist/server/_chunks/_libs/@radix-ui/react-use-callback-ref.mjs +11 -0
  75. package/admin-dist/server/_chunks/_libs/@radix-ui/react-use-controllable-state.mjs +69 -0
  76. package/admin-dist/server/_chunks/_libs/@radix-ui/react-use-effect-event.mjs +1 -0
  77. package/admin-dist/server/_chunks/_libs/@radix-ui/react-use-escape-keydown.mjs +17 -0
  78. package/admin-dist/server/_chunks/_libs/@radix-ui/react-use-is-hydrated.mjs +15 -0
  79. package/admin-dist/server/_chunks/_libs/@radix-ui/react-use-layout-effect.mjs +6 -0
  80. package/admin-dist/server/_chunks/_libs/@radix-ui/react-use-previous.mjs +14 -0
  81. package/admin-dist/server/_chunks/_libs/@radix-ui/react-use-size.mjs +39 -0
  82. package/admin-dist/server/_chunks/_libs/@radix-ui/react-visually-hidden.mjs +33 -0
  83. package/admin-dist/server/_chunks/_libs/@tanstack/history.mjs +409 -0
  84. package/admin-dist/server/_chunks/_libs/@tanstack/react-router.mjs +1711 -0
  85. package/admin-dist/server/_chunks/_libs/@tanstack/react-store.mjs +56 -0
  86. package/admin-dist/server/_chunks/_libs/@tanstack/router-core.mjs +4829 -0
  87. package/admin-dist/server/_chunks/_libs/@tanstack/store.mjs +134 -0
  88. package/admin-dist/server/_chunks/_libs/react-dom.mjs +10781 -0
  89. package/admin-dist/server/_chunks/_libs/react.mjs +513 -0
  90. package/admin-dist/server/_libs/aria-hidden.mjs +122 -0
  91. package/admin-dist/server/_libs/class-variance-authority.mjs +44 -0
  92. package/admin-dist/server/_libs/clsx.mjs +16 -0
  93. package/admin-dist/server/_libs/cmdk.mjs +315 -0
  94. package/admin-dist/server/_libs/convex.mjs +4841 -0
  95. package/admin-dist/server/_libs/cookie-es.mjs +58 -0
  96. package/admin-dist/server/_libs/croner.mjs +1 -0
  97. package/admin-dist/server/_libs/crossws.mjs +1 -0
  98. package/admin-dist/server/_libs/date-fns.mjs +1716 -0
  99. package/admin-dist/server/_libs/detect-node-es.mjs +1 -0
  100. package/admin-dist/server/_libs/get-nonce.mjs +9 -0
  101. package/admin-dist/server/_libs/h3-v2.mjs +277 -0
  102. package/admin-dist/server/_libs/h3.mjs +401 -0
  103. package/admin-dist/server/_libs/hookable.mjs +1 -0
  104. package/admin-dist/server/_libs/isbot.mjs +20 -0
  105. package/admin-dist/server/_libs/lucide-react.mjs +850 -0
  106. package/admin-dist/server/_libs/ohash.mjs +1 -0
  107. package/admin-dist/server/_libs/react-day-picker.mjs +2201 -0
  108. package/admin-dist/server/_libs/react-remove-scroll-bar.mjs +82 -0
  109. package/admin-dist/server/_libs/react-remove-scroll.mjs +328 -0
  110. package/admin-dist/server/_libs/react-style-singleton.mjs +69 -0
  111. package/admin-dist/server/_libs/rou3.mjs +8 -0
  112. package/admin-dist/server/_libs/seroval-plugins.mjs +58 -0
  113. package/admin-dist/server/_libs/seroval.mjs +1765 -0
  114. package/admin-dist/server/_libs/srvx.mjs +719 -0
  115. package/admin-dist/server/_libs/tailwind-merge.mjs +3010 -0
  116. package/admin-dist/server/_libs/tiny-invariant.mjs +12 -0
  117. package/admin-dist/server/_libs/tiny-warning.mjs +5 -0
  118. package/admin-dist/server/_libs/tslib.mjs +39 -0
  119. package/admin-dist/server/_libs/ufo.mjs +54 -0
  120. package/admin-dist/server/_libs/unctx.mjs +1 -0
  121. package/admin-dist/server/_libs/unstorage.mjs +1 -0
  122. package/admin-dist/server/_libs/use-callback-ref.mjs +66 -0
  123. package/admin-dist/server/_libs/use-sidecar.mjs +106 -0
  124. package/admin-dist/server/_libs/use-sync-external-store.mjs +139 -0
  125. package/admin-dist/server/_libs/zod.mjs +4223 -0
  126. package/admin-dist/server/_ssr/CmsEmptyState-DU7-7-mV.mjs +290 -0
  127. package/admin-dist/server/_ssr/CmsPageHeader-CseW0AHm.mjs +24 -0
  128. package/admin-dist/server/_ssr/CmsStatusBadge-B_pi4KCp.mjs +127 -0
  129. package/admin-dist/server/_ssr/CmsToolbar-X75ex6ek.mjs +49 -0
  130. package/admin-dist/server/_ssr/ContentEntryEditor-CepusRsA.mjs +3720 -0
  131. package/admin-dist/server/_ssr/ErrorState-cI-bKLez.mjs +89 -0
  132. package/admin-dist/server/_ssr/TaxonomyFilter-Bwrq0-cz.mjs +188 -0
  133. package/admin-dist/server/_ssr/_contentTypeId-BqYKEcLr.mjs +379 -0
  134. package/admin-dist/server/_ssr/_entryId-CRfnqeDf.mjs +161 -0
  135. package/admin-dist/server/_ssr/_tanstack-start-manifest_v-BwDlABVk.mjs +4 -0
  136. package/admin-dist/server/_ssr/alert-CVt45UUP.mjs +92 -0
  137. package/admin-dist/server/_ssr/badge-6BsP37vG.mjs +125 -0
  138. package/admin-dist/server/_ssr/command-fy8epIKf.mjs +128 -0
  139. package/admin-dist/server/_ssr/config.server-D7JHDcDv.mjs +117 -0
  140. package/admin-dist/server/_ssr/content-B5RhL7uW.mjs +532 -0
  141. package/admin-dist/server/_ssr/content-types-BIOqCQYN.mjs +1166 -0
  142. package/admin-dist/server/_ssr/index-DHSHDPt1.mjs +193 -0
  143. package/admin-dist/server/_ssr/index.mjs +1275 -0
  144. package/admin-dist/server/_ssr/label-C8Dko1j7.mjs +22 -0
  145. package/admin-dist/server/_ssr/media-CSx3XttC.mjs +1832 -0
  146. package/admin-dist/server/_ssr/new._contentTypeId-DzanEZQM.mjs +144 -0
  147. package/admin-dist/server/_ssr/router-DDWcF-kt.mjs +1556 -0
  148. package/admin-dist/server/_ssr/scroll-area-bjPYwhXN.mjs +59 -0
  149. package/admin-dist/server/_ssr/select-BUhDDf4T.mjs +142 -0
  150. package/admin-dist/server/_ssr/settings-DAsxnw2q.mjs +348 -0
  151. package/admin-dist/server/_ssr/start-HYkvq4Ni.mjs +4 -0
  152. package/admin-dist/server/_ssr/switch-BgyRtQ1Z.mjs +31 -0
  153. package/admin-dist/server/_ssr/tabs-DzMdRB1A.mjs +628 -0
  154. package/admin-dist/server/_ssr/taxonomies-C8j8g5Q5.mjs +915 -0
  155. package/admin-dist/server/_ssr/textarea-9jNeYJSc.mjs +18 -0
  156. package/admin-dist/server/_ssr/trash-DYMxwhZB.mjs +291 -0
  157. package/admin-dist/server/_ssr/useBreadcrumbLabel-FNSAr2Ha.mjs +16 -0
  158. package/admin-dist/server/_ssr/usePermissions-BJGGahrJ.mjs +68 -0
  159. package/admin-dist/server/favicon.ico +0 -0
  160. package/admin-dist/server/index.mjs +627 -0
  161. package/dist/cli/index.js +0 -0
  162. package/dist/client/admin-config.d.ts +0 -1
  163. package/dist/client/admin-config.d.ts.map +1 -1
  164. package/dist/client/admin-config.js +0 -1
  165. package/dist/client/admin-config.js.map +1 -1
  166. package/dist/client/adminApi.d.ts.map +1 -1
  167. package/dist/client/agentTools.d.ts +1237 -135
  168. package/dist/client/agentTools.d.ts.map +1 -1
  169. package/dist/client/agentTools.js +33 -9
  170. package/dist/client/agentTools.js.map +1 -1
  171. package/dist/client/index.d.ts +1 -1
  172. package/dist/client/index.d.ts.map +1 -1
  173. package/dist/client/index.js.map +1 -1
  174. package/dist/component/_generated/component.d.ts +9 -0
  175. package/dist/component/_generated/component.d.ts.map +1 -1
  176. package/dist/component/mediaAssets.d.ts +35 -0
  177. package/dist/component/mediaAssets.d.ts.map +1 -1
  178. package/dist/component/mediaAssets.js +81 -0
  179. package/dist/component/mediaAssets.js.map +1 -1
  180. package/dist/test.d.ts.map +1 -1
  181. package/dist/test.js +2 -1
  182. package/dist/test.js.map +1 -1
  183. package/package.json +9 -5
  184. package/dist/component/auditLog.d.ts +0 -410
  185. package/dist/component/auditLog.d.ts.map +0 -1
  186. package/dist/component/auditLog.js +0 -607
  187. package/dist/component/auditLog.js.map +0 -1
  188. package/dist/component/types.d.ts +0 -4
  189. package/dist/component/types.d.ts.map +0 -1
  190. package/dist/component/types.js +0 -2
  191. package/dist/component/types.js.map +0 -1
  192. package/src/cli/commands/admin.ts +0 -104
  193. package/src/cli/index.ts +0 -21
  194. package/src/cli/utils/detectConvexUrl.ts +0 -54
  195. package/src/cli/utils/openBrowser.ts +0 -16
  196. package/src/client/admin-config.ts +0 -138
  197. package/src/client/adminApi.ts +0 -942
  198. package/src/client/agentTools.ts +0 -1311
  199. package/src/client/argTypes.ts +0 -316
  200. package/src/client/field-types.ts +0 -187
  201. package/src/client/index.ts +0 -1301
  202. package/src/client/queryBuilder.ts +0 -1100
  203. package/src/client/schema/codegen.ts +0 -500
  204. package/src/client/schema/defineContentType.ts +0 -501
  205. package/src/client/schema/index.ts +0 -169
  206. package/src/client/schema/schemaDrift.ts +0 -574
  207. package/src/client/schema/typedClient.ts +0 -688
  208. package/src/client/schema/types.ts +0 -666
  209. package/src/client/types.ts +0 -723
  210. package/src/client/workflows.ts +0 -141
  211. package/src/client/wrapper.ts +0 -4304
  212. package/src/component/_generated/api.ts +0 -140
  213. package/src/component/_generated/component.ts +0 -5029
  214. package/src/component/_generated/dataModel.ts +0 -60
  215. package/src/component/_generated/server.ts +0 -156
  216. package/src/component/authorization.ts +0 -647
  217. package/src/component/authorizationHooks.ts +0 -668
  218. package/src/component/bulkOperations.ts +0 -687
  219. package/src/component/contentEntries.ts +0 -1976
  220. package/src/component/contentEntryMutations.ts +0 -1223
  221. package/src/component/contentEntryValidation.ts +0 -707
  222. package/src/component/contentLock.ts +0 -550
  223. package/src/component/contentTypeMigration.ts +0 -1064
  224. package/src/component/contentTypeMutations.ts +0 -969
  225. package/src/component/contentTypes.ts +0 -346
  226. package/src/component/convex.config.ts +0 -44
  227. package/src/component/documentTypes.ts +0 -240
  228. package/src/component/eventEmitter.ts +0 -485
  229. package/src/component/exportImport.ts +0 -1169
  230. package/src/component/index.ts +0 -491
  231. package/src/component/lib/deepReferenceResolver.ts +0 -999
  232. package/src/component/lib/errors.ts +0 -816
  233. package/src/component/lib/index.ts +0 -145
  234. package/src/component/lib/mediaReferenceResolver.ts +0 -495
  235. package/src/component/lib/metadataExtractor.ts +0 -792
  236. package/src/component/lib/mutationAuth.ts +0 -199
  237. package/src/component/lib/queries.ts +0 -79
  238. package/src/component/lib/ragContentChunker.ts +0 -1371
  239. package/src/component/lib/referenceResolver.ts +0 -430
  240. package/src/component/lib/slugGenerator.ts +0 -262
  241. package/src/component/lib/slugUniqueness.ts +0 -333
  242. package/src/component/lib/softDelete.ts +0 -44
  243. package/src/component/localeFallbackChain.ts +0 -673
  244. package/src/component/localeFields.ts +0 -896
  245. package/src/component/mediaAssetMutations.ts +0 -725
  246. package/src/component/mediaAssets.ts +0 -932
  247. package/src/component/mediaFolderMutations.ts +0 -1046
  248. package/src/component/mediaUploadMutations.ts +0 -224
  249. package/src/component/mediaVariantMutations.ts +0 -900
  250. package/src/component/mediaVariants.ts +0 -793
  251. package/src/component/ragContentIndexer.ts +0 -1067
  252. package/src/component/rateLimitHooks.ts +0 -572
  253. package/src/component/roles.ts +0 -1360
  254. package/src/component/scheduledPublish.ts +0 -358
  255. package/src/component/schema.ts +0 -617
  256. package/src/component/taxonomies.ts +0 -949
  257. package/src/component/taxonomyMutations.ts +0 -1210
  258. package/src/component/trash.ts +0 -724
  259. package/src/component/userContext.ts +0 -898
  260. package/src/component/validation.ts +0 -1388
  261. package/src/component/validators.ts +0 -949
  262. package/src/component/versionMutations.ts +0 -392
  263. package/src/component/webhookTrigger.ts +0 -1922
  264. package/src/react/index.ts +0 -898
  265. package/src/test.ts +0 -1580
@@ -0,0 +1,409 @@
1
+ const stateIndexKey = "__TSR_index";
2
+ const popStateEvent = "popstate";
3
+ const beforeUnloadEvent = "beforeunload";
4
+ function createHistory(opts) {
5
+ let location = opts.getLocation();
6
+ const subscribers = /* @__PURE__ */ new Set();
7
+ const notify = (action, navigateOpts) => {
8
+ location = opts.getLocation();
9
+ subscribers.forEach(
10
+ (subscriber) => subscriber({ location, action, navigateOpts })
11
+ );
12
+ };
13
+ const handleIndexChange = (action) => {
14
+ if (opts.notifyOnIndexChange ?? true) notify(action);
15
+ else location = opts.getLocation();
16
+ };
17
+ const tryNavigation = async ({
18
+ task,
19
+ navigateOpts,
20
+ ...actionInfo
21
+ }) => {
22
+ const ignoreBlocker = navigateOpts?.ignoreBlocker ?? false;
23
+ if (ignoreBlocker) {
24
+ task();
25
+ return { type: "SUCCESS" };
26
+ }
27
+ const blockers = opts.getBlockers?.() ?? [];
28
+ const isPushOrReplace = actionInfo.type === "PUSH" || actionInfo.type === "REPLACE";
29
+ if (typeof document !== "undefined" && blockers.length && isPushOrReplace) {
30
+ for (const blocker of blockers) {
31
+ const nextLocation = parseHref(actionInfo.path, actionInfo.state);
32
+ const isBlocked = await blocker.blockerFn({
33
+ currentLocation: location,
34
+ nextLocation,
35
+ action: actionInfo.type
36
+ });
37
+ if (isBlocked) {
38
+ opts.onBlocked?.();
39
+ return { type: "BLOCKED" };
40
+ }
41
+ }
42
+ }
43
+ task();
44
+ return { type: "SUCCESS" };
45
+ };
46
+ return {
47
+ get location() {
48
+ return location;
49
+ },
50
+ get length() {
51
+ return opts.getLength();
52
+ },
53
+ subscribers,
54
+ subscribe: (cb) => {
55
+ subscribers.add(cb);
56
+ return () => {
57
+ subscribers.delete(cb);
58
+ };
59
+ },
60
+ push: (path, state, navigateOpts) => {
61
+ const currentIndex = location.state[stateIndexKey];
62
+ state = assignKeyAndIndex(currentIndex + 1, state);
63
+ return tryNavigation({
64
+ task: () => {
65
+ opts.pushState(path, state);
66
+ notify({ type: "PUSH" }, navigateOpts);
67
+ },
68
+ navigateOpts,
69
+ type: "PUSH",
70
+ path,
71
+ state
72
+ });
73
+ },
74
+ replace: (path, state, navigateOpts) => {
75
+ const currentIndex = location.state[stateIndexKey];
76
+ state = assignKeyAndIndex(currentIndex, state);
77
+ return tryNavigation({
78
+ task: () => {
79
+ opts.replaceState(path, state);
80
+ notify({ type: "REPLACE" }, navigateOpts);
81
+ },
82
+ navigateOpts,
83
+ type: "REPLACE",
84
+ path,
85
+ state
86
+ });
87
+ },
88
+ go: (index, navigateOpts) => {
89
+ tryNavigation({
90
+ task: () => {
91
+ opts.go(index);
92
+ handleIndexChange({ type: "GO", index });
93
+ },
94
+ navigateOpts,
95
+ type: "GO"
96
+ });
97
+ },
98
+ back: (navigateOpts) => {
99
+ tryNavigation({
100
+ task: () => {
101
+ opts.back(navigateOpts?.ignoreBlocker ?? false);
102
+ handleIndexChange({ type: "BACK" });
103
+ },
104
+ navigateOpts,
105
+ type: "BACK"
106
+ });
107
+ },
108
+ forward: (navigateOpts) => {
109
+ tryNavigation({
110
+ task: () => {
111
+ opts.forward(navigateOpts?.ignoreBlocker ?? false);
112
+ handleIndexChange({ type: "FORWARD" });
113
+ },
114
+ navigateOpts,
115
+ type: "FORWARD"
116
+ });
117
+ },
118
+ canGoBack: () => location.state[stateIndexKey] !== 0,
119
+ createHref: (str) => opts.createHref(str),
120
+ block: (blocker) => {
121
+ if (!opts.setBlockers) return () => {
122
+ };
123
+ const blockers = opts.getBlockers?.() ?? [];
124
+ opts.setBlockers([...blockers, blocker]);
125
+ return () => {
126
+ const blockers2 = opts.getBlockers?.() ?? [];
127
+ opts.setBlockers?.(blockers2.filter((b) => b !== blocker));
128
+ };
129
+ },
130
+ flush: () => opts.flush?.(),
131
+ destroy: () => opts.destroy?.(),
132
+ notify
133
+ };
134
+ }
135
+ function assignKeyAndIndex(index, state) {
136
+ if (!state) {
137
+ state = {};
138
+ }
139
+ const key = createRandomKey();
140
+ return {
141
+ ...state,
142
+ key,
143
+ // TODO: Remove in v2 - use __TSR_key instead
144
+ __TSR_key: key,
145
+ [stateIndexKey]: index
146
+ };
147
+ }
148
+ function createBrowserHistory(opts) {
149
+ const win = typeof document !== "undefined" ? window : void 0;
150
+ const originalPushState = win.history.pushState;
151
+ const originalReplaceState = win.history.replaceState;
152
+ let blockers = [];
153
+ const _getBlockers = () => blockers;
154
+ const _setBlockers = (newBlockers) => blockers = newBlockers;
155
+ const createHref = ((path) => path);
156
+ const parseLocation = (() => parseHref(
157
+ `${win.location.pathname}${win.location.search}${win.location.hash}`,
158
+ win.history.state
159
+ ));
160
+ if (!win.history.state?.__TSR_key && !win.history.state?.key) {
161
+ const addedKey = createRandomKey();
162
+ win.history.replaceState(
163
+ {
164
+ [stateIndexKey]: 0,
165
+ key: addedKey,
166
+ // TODO: Remove in v2 - use __TSR_key instead
167
+ __TSR_key: addedKey
168
+ },
169
+ ""
170
+ );
171
+ }
172
+ let currentLocation = parseLocation();
173
+ let rollbackLocation;
174
+ let nextPopIsGo = false;
175
+ let ignoreNextPop = false;
176
+ let skipBlockerNextPop = false;
177
+ let ignoreNextBeforeUnload = false;
178
+ const getLocation = () => currentLocation;
179
+ let next;
180
+ let scheduled;
181
+ const flush = () => {
182
+ if (!next) {
183
+ return;
184
+ }
185
+ history._ignoreSubscribers = true;
186
+ (next.isPush ? win.history.pushState : win.history.replaceState)(
187
+ next.state,
188
+ "",
189
+ next.href
190
+ );
191
+ history._ignoreSubscribers = false;
192
+ next = void 0;
193
+ scheduled = void 0;
194
+ rollbackLocation = void 0;
195
+ };
196
+ const queueHistoryAction = (type, destHref, state) => {
197
+ const href = createHref(destHref);
198
+ if (!scheduled) {
199
+ rollbackLocation = currentLocation;
200
+ }
201
+ currentLocation = parseHref(destHref, state);
202
+ next = {
203
+ href,
204
+ state,
205
+ isPush: next?.isPush || type === "push"
206
+ };
207
+ if (!scheduled) {
208
+ scheduled = Promise.resolve().then(() => flush());
209
+ }
210
+ };
211
+ const onPushPop = (type) => {
212
+ currentLocation = parseLocation();
213
+ history.notify({ type });
214
+ };
215
+ const onPushPopEvent = async () => {
216
+ if (ignoreNextPop) {
217
+ ignoreNextPop = false;
218
+ return;
219
+ }
220
+ const nextLocation = parseLocation();
221
+ const delta = nextLocation.state[stateIndexKey] - currentLocation.state[stateIndexKey];
222
+ const isForward = delta === 1;
223
+ const isBack = delta === -1;
224
+ const isGo = !isForward && !isBack || nextPopIsGo;
225
+ nextPopIsGo = false;
226
+ const action = isGo ? "GO" : isBack ? "BACK" : "FORWARD";
227
+ const notify = isGo ? {
228
+ type: "GO",
229
+ index: delta
230
+ } : {
231
+ type: isBack ? "BACK" : "FORWARD"
232
+ };
233
+ if (skipBlockerNextPop) {
234
+ skipBlockerNextPop = false;
235
+ } else {
236
+ const blockers2 = _getBlockers();
237
+ if (typeof document !== "undefined" && blockers2.length) {
238
+ for (const blocker of blockers2) {
239
+ const isBlocked = await blocker.blockerFn({
240
+ currentLocation,
241
+ nextLocation,
242
+ action
243
+ });
244
+ if (isBlocked) {
245
+ ignoreNextPop = true;
246
+ win.history.go(1);
247
+ history.notify(notify);
248
+ return;
249
+ }
250
+ }
251
+ }
252
+ }
253
+ currentLocation = parseLocation();
254
+ history.notify(notify);
255
+ };
256
+ const onBeforeUnload = (e) => {
257
+ if (ignoreNextBeforeUnload) {
258
+ ignoreNextBeforeUnload = false;
259
+ return;
260
+ }
261
+ let shouldBlock = false;
262
+ const blockers2 = _getBlockers();
263
+ if (typeof document !== "undefined" && blockers2.length) {
264
+ for (const blocker of blockers2) {
265
+ const shouldHaveBeforeUnload = blocker.enableBeforeUnload ?? true;
266
+ if (shouldHaveBeforeUnload === true) {
267
+ shouldBlock = true;
268
+ break;
269
+ }
270
+ if (typeof shouldHaveBeforeUnload === "function" && shouldHaveBeforeUnload() === true) {
271
+ shouldBlock = true;
272
+ break;
273
+ }
274
+ }
275
+ }
276
+ if (shouldBlock) {
277
+ e.preventDefault();
278
+ return e.returnValue = "";
279
+ }
280
+ return;
281
+ };
282
+ const history = createHistory({
283
+ getLocation,
284
+ getLength: () => win.history.length,
285
+ pushState: (href, state) => queueHistoryAction("push", href, state),
286
+ replaceState: (href, state) => queueHistoryAction("replace", href, state),
287
+ back: (ignoreBlocker) => {
288
+ if (ignoreBlocker) skipBlockerNextPop = true;
289
+ ignoreNextBeforeUnload = true;
290
+ return win.history.back();
291
+ },
292
+ forward: (ignoreBlocker) => {
293
+ if (ignoreBlocker) skipBlockerNextPop = true;
294
+ ignoreNextBeforeUnload = true;
295
+ win.history.forward();
296
+ },
297
+ go: (n) => {
298
+ nextPopIsGo = true;
299
+ win.history.go(n);
300
+ },
301
+ createHref: (href) => createHref(href),
302
+ flush,
303
+ destroy: () => {
304
+ win.history.pushState = originalPushState;
305
+ win.history.replaceState = originalReplaceState;
306
+ win.removeEventListener(beforeUnloadEvent, onBeforeUnload, {
307
+ capture: true
308
+ });
309
+ win.removeEventListener(popStateEvent, onPushPopEvent);
310
+ },
311
+ onBlocked: () => {
312
+ if (rollbackLocation && currentLocation !== rollbackLocation) {
313
+ currentLocation = rollbackLocation;
314
+ }
315
+ },
316
+ getBlockers: _getBlockers,
317
+ setBlockers: _setBlockers,
318
+ notifyOnIndexChange: false
319
+ });
320
+ win.addEventListener(beforeUnloadEvent, onBeforeUnload, { capture: true });
321
+ win.addEventListener(popStateEvent, onPushPopEvent);
322
+ win.history.pushState = function(...args) {
323
+ const res = originalPushState.apply(win.history, args);
324
+ if (!history._ignoreSubscribers) onPushPop("PUSH");
325
+ return res;
326
+ };
327
+ win.history.replaceState = function(...args) {
328
+ const res = originalReplaceState.apply(win.history, args);
329
+ if (!history._ignoreSubscribers) onPushPop("REPLACE");
330
+ return res;
331
+ };
332
+ return history;
333
+ }
334
+ function createMemoryHistory(opts = {
335
+ initialEntries: ["/"]
336
+ }) {
337
+ const entries = opts.initialEntries;
338
+ let index = opts.initialIndex ? Math.min(Math.max(opts.initialIndex, 0), entries.length - 1) : entries.length - 1;
339
+ const states = entries.map(
340
+ (_entry, index2) => assignKeyAndIndex(index2, void 0)
341
+ );
342
+ const getLocation = () => parseHref(entries[index], states[index]);
343
+ let blockers = [];
344
+ const _getBlockers = () => blockers;
345
+ const _setBlockers = (newBlockers) => blockers = newBlockers;
346
+ return createHistory({
347
+ getLocation,
348
+ getLength: () => entries.length,
349
+ pushState: (path, state) => {
350
+ if (index < entries.length - 1) {
351
+ entries.splice(index + 1);
352
+ states.splice(index + 1);
353
+ }
354
+ states.push(state);
355
+ entries.push(path);
356
+ index = Math.max(entries.length - 1, 0);
357
+ },
358
+ replaceState: (path, state) => {
359
+ states[index] = state;
360
+ entries[index] = path;
361
+ },
362
+ back: () => {
363
+ index = Math.max(index - 1, 0);
364
+ },
365
+ forward: () => {
366
+ index = Math.min(index + 1, entries.length - 1);
367
+ },
368
+ go: (n) => {
369
+ index = Math.min(Math.max(index + n, 0), entries.length - 1);
370
+ },
371
+ createHref: (path) => path,
372
+ getBlockers: _getBlockers,
373
+ setBlockers: _setBlockers
374
+ });
375
+ }
376
+ function sanitizePath(path) {
377
+ let sanitized = path.replace(/[\x00-\x1f\x7f]/g, "");
378
+ if (sanitized.startsWith("//")) {
379
+ sanitized = "/" + sanitized.replace(/^\/+/, "");
380
+ }
381
+ return sanitized;
382
+ }
383
+ function parseHref(href, state) {
384
+ const sanitizedHref = sanitizePath(href);
385
+ const hashIndex = sanitizedHref.indexOf("#");
386
+ const searchIndex = sanitizedHref.indexOf("?");
387
+ const addedKey = createRandomKey();
388
+ return {
389
+ href: sanitizedHref,
390
+ pathname: sanitizedHref.substring(
391
+ 0,
392
+ hashIndex > 0 ? searchIndex > 0 ? Math.min(hashIndex, searchIndex) : hashIndex : searchIndex > 0 ? searchIndex : sanitizedHref.length
393
+ ),
394
+ hash: hashIndex > -1 ? sanitizedHref.substring(hashIndex) : "",
395
+ search: searchIndex > -1 ? sanitizedHref.slice(
396
+ searchIndex,
397
+ hashIndex === -1 ? void 0 : hashIndex
398
+ ) : "",
399
+ state: state || { [stateIndexKey]: 0, key: addedKey, __TSR_key: addedKey }
400
+ };
401
+ }
402
+ function createRandomKey() {
403
+ return (Math.random() + 1).toString(36).substring(7);
404
+ }
405
+ export {
406
+ createMemoryHistory as a,
407
+ createBrowserHistory as c,
408
+ parseHref as p
409
+ };