vinext 0.0.0 → 0.0.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 (272) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1 -0
  3. package/dist/build/static-export.d.ts +78 -0
  4. package/dist/build/static-export.d.ts.map +1 -0
  5. package/dist/build/static-export.js +553 -0
  6. package/dist/build/static-export.js.map +1 -0
  7. package/dist/check.d.ts +52 -0
  8. package/dist/check.d.ts.map +1 -0
  9. package/dist/check.js +483 -0
  10. package/dist/check.js.map +1 -0
  11. package/dist/cli.d.ts +15 -0
  12. package/dist/cli.d.ts.map +1 -0
  13. package/dist/cli.js +565 -0
  14. package/dist/cli.js.map +1 -0
  15. package/dist/client/entry.d.ts +2 -0
  16. package/dist/client/entry.d.ts.map +1 -0
  17. package/dist/client/entry.js +85 -0
  18. package/dist/client/entry.js.map +1 -0
  19. package/dist/cloudflare/index.d.ts +8 -0
  20. package/dist/cloudflare/index.d.ts.map +1 -0
  21. package/dist/cloudflare/index.js +8 -0
  22. package/dist/cloudflare/index.js.map +1 -0
  23. package/dist/cloudflare/kv-cache-handler.d.ts +68 -0
  24. package/dist/cloudflare/kv-cache-handler.d.ts.map +1 -0
  25. package/dist/cloudflare/kv-cache-handler.js +304 -0
  26. package/dist/cloudflare/kv-cache-handler.js.map +1 -0
  27. package/dist/cloudflare/tpr.d.ts +78 -0
  28. package/dist/cloudflare/tpr.d.ts.map +1 -0
  29. package/dist/cloudflare/tpr.js +672 -0
  30. package/dist/cloudflare/tpr.js.map +1 -0
  31. package/dist/config/config-matchers.d.ts +106 -0
  32. package/dist/config/config-matchers.d.ts.map +1 -0
  33. package/dist/config/config-matchers.js +499 -0
  34. package/dist/config/config-matchers.js.map +1 -0
  35. package/dist/config/next-config.d.ts +153 -0
  36. package/dist/config/next-config.d.ts.map +1 -0
  37. package/dist/config/next-config.js +274 -0
  38. package/dist/config/next-config.js.map +1 -0
  39. package/dist/deploy.d.ts +87 -0
  40. package/dist/deploy.d.ts.map +1 -0
  41. package/dist/deploy.js +644 -0
  42. package/dist/deploy.js.map +1 -0
  43. package/dist/index.d.ts +156 -0
  44. package/dist/index.d.ts.map +1 -0
  45. package/dist/index.js +3287 -0
  46. package/dist/index.js.map +1 -0
  47. package/dist/init.d.ts +55 -0
  48. package/dist/init.d.ts.map +1 -0
  49. package/dist/init.js +201 -0
  50. package/dist/init.js.map +1 -0
  51. package/dist/routing/app-router.d.ts +96 -0
  52. package/dist/routing/app-router.d.ts.map +1 -0
  53. package/dist/routing/app-router.js +815 -0
  54. package/dist/routing/app-router.js.map +1 -0
  55. package/dist/routing/pages-router.d.ts +52 -0
  56. package/dist/routing/pages-router.d.ts.map +1 -0
  57. package/dist/routing/pages-router.js +239 -0
  58. package/dist/routing/pages-router.js.map +1 -0
  59. package/dist/server/api-handler.d.ts +18 -0
  60. package/dist/server/api-handler.d.ts.map +1 -0
  61. package/dist/server/api-handler.js +169 -0
  62. package/dist/server/api-handler.js.map +1 -0
  63. package/dist/server/app-dev-server.d.ts +42 -0
  64. package/dist/server/app-dev-server.d.ts.map +1 -0
  65. package/dist/server/app-dev-server.js +2718 -0
  66. package/dist/server/app-dev-server.js.map +1 -0
  67. package/dist/server/app-router-entry.d.ts +18 -0
  68. package/dist/server/app-router-entry.d.ts.map +1 -0
  69. package/dist/server/app-router-entry.js +34 -0
  70. package/dist/server/app-router-entry.js.map +1 -0
  71. package/dist/server/dev-server.d.ts +40 -0
  72. package/dist/server/dev-server.d.ts.map +1 -0
  73. package/dist/server/dev-server.js +758 -0
  74. package/dist/server/dev-server.js.map +1 -0
  75. package/dist/server/html.d.ts +22 -0
  76. package/dist/server/html.d.ts.map +1 -0
  77. package/dist/server/html.js +29 -0
  78. package/dist/server/html.js.map +1 -0
  79. package/dist/server/image-optimization.d.ts +56 -0
  80. package/dist/server/image-optimization.d.ts.map +1 -0
  81. package/dist/server/image-optimization.js +103 -0
  82. package/dist/server/image-optimization.js.map +1 -0
  83. package/dist/server/instrumentation.d.ts +68 -0
  84. package/dist/server/instrumentation.d.ts.map +1 -0
  85. package/dist/server/instrumentation.js +90 -0
  86. package/dist/server/instrumentation.js.map +1 -0
  87. package/dist/server/isr-cache.d.ts +61 -0
  88. package/dist/server/isr-cache.d.ts.map +1 -0
  89. package/dist/server/isr-cache.js +134 -0
  90. package/dist/server/isr-cache.js.map +1 -0
  91. package/dist/server/metadata-routes.d.ts +103 -0
  92. package/dist/server/metadata-routes.d.ts.map +1 -0
  93. package/dist/server/metadata-routes.js +270 -0
  94. package/dist/server/metadata-routes.js.map +1 -0
  95. package/dist/server/middleware.d.ts +77 -0
  96. package/dist/server/middleware.d.ts.map +1 -0
  97. package/dist/server/middleware.js +228 -0
  98. package/dist/server/middleware.js.map +1 -0
  99. package/dist/server/prod-server.d.ts +78 -0
  100. package/dist/server/prod-server.d.ts.map +1 -0
  101. package/dist/server/prod-server.js +712 -0
  102. package/dist/server/prod-server.js.map +1 -0
  103. package/dist/shims/amp.d.ts +17 -0
  104. package/dist/shims/amp.d.ts.map +1 -0
  105. package/dist/shims/amp.js +21 -0
  106. package/dist/shims/amp.js.map +1 -0
  107. package/dist/shims/app.d.ts +12 -0
  108. package/dist/shims/app.d.ts.map +1 -0
  109. package/dist/shims/app.js +2 -0
  110. package/dist/shims/app.js.map +1 -0
  111. package/dist/shims/cache-runtime.d.ts +68 -0
  112. package/dist/shims/cache-runtime.d.ts.map +1 -0
  113. package/dist/shims/cache-runtime.js +437 -0
  114. package/dist/shims/cache-runtime.js.map +1 -0
  115. package/dist/shims/cache.d.ts +243 -0
  116. package/dist/shims/cache.d.ts.map +1 -0
  117. package/dist/shims/cache.js +415 -0
  118. package/dist/shims/cache.js.map +1 -0
  119. package/dist/shims/client-only.d.ts +18 -0
  120. package/dist/shims/client-only.d.ts.map +1 -0
  121. package/dist/shims/client-only.js +18 -0
  122. package/dist/shims/client-only.js.map +1 -0
  123. package/dist/shims/config.d.ts +27 -0
  124. package/dist/shims/config.d.ts.map +1 -0
  125. package/dist/shims/config.js +30 -0
  126. package/dist/shims/config.js.map +1 -0
  127. package/dist/shims/constants.d.ts +13 -0
  128. package/dist/shims/constants.d.ts.map +1 -0
  129. package/dist/shims/constants.js +13 -0
  130. package/dist/shims/constants.js.map +1 -0
  131. package/dist/shims/document.d.ts +33 -0
  132. package/dist/shims/document.d.ts.map +1 -0
  133. package/dist/shims/document.js +32 -0
  134. package/dist/shims/document.js.map +1 -0
  135. package/dist/shims/dynamic.d.ts +33 -0
  136. package/dist/shims/dynamic.d.ts.map +1 -0
  137. package/dist/shims/dynamic.js +148 -0
  138. package/dist/shims/dynamic.js.map +1 -0
  139. package/dist/shims/error-boundary.d.ts +33 -0
  140. package/dist/shims/error-boundary.d.ts.map +1 -0
  141. package/dist/shims/error-boundary.js +88 -0
  142. package/dist/shims/error-boundary.js.map +1 -0
  143. package/dist/shims/error.d.ts +16 -0
  144. package/dist/shims/error.d.ts.map +1 -0
  145. package/dist/shims/error.js +45 -0
  146. package/dist/shims/error.js.map +1 -0
  147. package/dist/shims/fetch-cache.d.ts +61 -0
  148. package/dist/shims/fetch-cache.d.ts.map +1 -0
  149. package/dist/shims/fetch-cache.js +307 -0
  150. package/dist/shims/fetch-cache.js.map +1 -0
  151. package/dist/shims/font-google.d.ts +122 -0
  152. package/dist/shims/font-google.d.ts.map +1 -0
  153. package/dist/shims/font-google.js +387 -0
  154. package/dist/shims/font-google.js.map +1 -0
  155. package/dist/shims/font-local.d.ts +61 -0
  156. package/dist/shims/font-local.d.ts.map +1 -0
  157. package/dist/shims/font-local.js +303 -0
  158. package/dist/shims/font-local.js.map +1 -0
  159. package/dist/shims/form.d.ts +30 -0
  160. package/dist/shims/form.d.ts.map +1 -0
  161. package/dist/shims/form.js +78 -0
  162. package/dist/shims/form.js.map +1 -0
  163. package/dist/shims/head-state.d.ts +11 -0
  164. package/dist/shims/head-state.d.ts.map +1 -0
  165. package/dist/shims/head-state.js +47 -0
  166. package/dist/shims/head-state.js.map +1 -0
  167. package/dist/shims/head.d.ts +28 -0
  168. package/dist/shims/head.d.ts.map +1 -0
  169. package/dist/shims/head.js +148 -0
  170. package/dist/shims/head.js.map +1 -0
  171. package/dist/shims/headers.d.ts +150 -0
  172. package/dist/shims/headers.d.ts.map +1 -0
  173. package/dist/shims/headers.js +412 -0
  174. package/dist/shims/headers.js.map +1 -0
  175. package/dist/shims/image-config.d.ts +30 -0
  176. package/dist/shims/image-config.d.ts.map +1 -0
  177. package/dist/shims/image-config.js +91 -0
  178. package/dist/shims/image-config.js.map +1 -0
  179. package/dist/shims/image.d.ts +63 -0
  180. package/dist/shims/image.d.ts.map +1 -0
  181. package/dist/shims/image.js +284 -0
  182. package/dist/shims/image.js.map +1 -0
  183. package/dist/shims/internal/api-utils.d.ts +12 -0
  184. package/dist/shims/internal/api-utils.d.ts.map +1 -0
  185. package/dist/shims/internal/api-utils.js +7 -0
  186. package/dist/shims/internal/api-utils.js.map +1 -0
  187. package/dist/shims/internal/app-router-context.d.ts +21 -0
  188. package/dist/shims/internal/app-router-context.d.ts.map +1 -0
  189. package/dist/shims/internal/app-router-context.js +15 -0
  190. package/dist/shims/internal/app-router-context.js.map +1 -0
  191. package/dist/shims/internal/cookies.d.ts +9 -0
  192. package/dist/shims/internal/cookies.d.ts.map +1 -0
  193. package/dist/shims/internal/cookies.js +9 -0
  194. package/dist/shims/internal/cookies.js.map +1 -0
  195. package/dist/shims/internal/router-context.d.ts +2 -0
  196. package/dist/shims/internal/router-context.d.ts.map +1 -0
  197. package/dist/shims/internal/router-context.js +9 -0
  198. package/dist/shims/internal/router-context.js.map +1 -0
  199. package/dist/shims/internal/utils.d.ts +48 -0
  200. package/dist/shims/internal/utils.d.ts.map +1 -0
  201. package/dist/shims/internal/utils.js +35 -0
  202. package/dist/shims/internal/utils.js.map +1 -0
  203. package/dist/shims/internal/work-unit-async-storage.d.ts +12 -0
  204. package/dist/shims/internal/work-unit-async-storage.d.ts.map +1 -0
  205. package/dist/shims/internal/work-unit-async-storage.js +13 -0
  206. package/dist/shims/internal/work-unit-async-storage.js.map +1 -0
  207. package/dist/shims/layout-segment-context.d.ts +21 -0
  208. package/dist/shims/layout-segment-context.d.ts.map +1 -0
  209. package/dist/shims/layout-segment-context.js +27 -0
  210. package/dist/shims/layout-segment-context.js.map +1 -0
  211. package/dist/shims/legacy-image.d.ts +52 -0
  212. package/dist/shims/legacy-image.d.ts.map +1 -0
  213. package/dist/shims/legacy-image.js +46 -0
  214. package/dist/shims/legacy-image.js.map +1 -0
  215. package/dist/shims/link.d.ts +48 -0
  216. package/dist/shims/link.d.ts.map +1 -0
  217. package/dist/shims/link.js +395 -0
  218. package/dist/shims/link.js.map +1 -0
  219. package/dist/shims/metadata.d.ts +184 -0
  220. package/dist/shims/metadata.d.ts.map +1 -0
  221. package/dist/shims/metadata.js +472 -0
  222. package/dist/shims/metadata.js.map +1 -0
  223. package/dist/shims/navigation-state.d.ts +14 -0
  224. package/dist/shims/navigation-state.d.ts.map +1 -0
  225. package/dist/shims/navigation-state.js +77 -0
  226. package/dist/shims/navigation-state.js.map +1 -0
  227. package/dist/shims/navigation.d.ts +201 -0
  228. package/dist/shims/navigation.d.ts.map +1 -0
  229. package/dist/shims/navigation.js +672 -0
  230. package/dist/shims/navigation.js.map +1 -0
  231. package/dist/shims/og.d.ts +20 -0
  232. package/dist/shims/og.d.ts.map +1 -0
  233. package/dist/shims/og.js +19 -0
  234. package/dist/shims/og.js.map +1 -0
  235. package/dist/shims/router-state.d.ts +11 -0
  236. package/dist/shims/router-state.d.ts.map +1 -0
  237. package/dist/shims/router-state.js +56 -0
  238. package/dist/shims/router-state.js.map +1 -0
  239. package/dist/shims/router.d.ts +103 -0
  240. package/dist/shims/router.d.ts.map +1 -0
  241. package/dist/shims/router.js +536 -0
  242. package/dist/shims/router.js.map +1 -0
  243. package/dist/shims/script.d.ts +58 -0
  244. package/dist/shims/script.d.ts.map +1 -0
  245. package/dist/shims/script.js +163 -0
  246. package/dist/shims/script.js.map +1 -0
  247. package/dist/shims/server-only.d.ts +19 -0
  248. package/dist/shims/server-only.d.ts.map +1 -0
  249. package/dist/shims/server-only.js +19 -0
  250. package/dist/shims/server-only.js.map +1 -0
  251. package/dist/shims/server.d.ts +178 -0
  252. package/dist/shims/server.d.ts.map +1 -0
  253. package/dist/shims/server.js +377 -0
  254. package/dist/shims/server.js.map +1 -0
  255. package/dist/shims/web-vitals.d.ts +24 -0
  256. package/dist/shims/web-vitals.d.ts.map +1 -0
  257. package/dist/shims/web-vitals.js +17 -0
  258. package/dist/shims/web-vitals.js.map +1 -0
  259. package/dist/utils/hash.d.ts +6 -0
  260. package/dist/utils/hash.d.ts.map +1 -0
  261. package/dist/utils/hash.js +20 -0
  262. package/dist/utils/hash.js.map +1 -0
  263. package/dist/utils/project.d.ts +36 -0
  264. package/dist/utils/project.d.ts.map +1 -0
  265. package/dist/utils/project.js +112 -0
  266. package/dist/utils/project.js.map +1 -0
  267. package/dist/utils/query.d.ts +10 -0
  268. package/dist/utils/query.d.ts.map +1 -0
  269. package/dist/utils/query.js +27 -0
  270. package/dist/utils/query.js.map +1 -0
  271. package/package.json +65 -7
  272. package/index.js +0 -1
@@ -0,0 +1,536 @@
1
+ /**
2
+ * next/router shim
3
+ *
4
+ * Provides useRouter() hook and Router singleton for Pages Router.
5
+ * Backed by the browser History API. Supports client-side navigation
6
+ * by fetching new page data and re-rendering the React root.
7
+ */
8
+ import { useState, useEffect, useCallback, useMemo } from "react";
9
+ /** basePath from next.config.js, injected by the plugin at build time */
10
+ const __basePath = process.env.__NEXT_ROUTER_BASEPATH ?? "";
11
+ /** Prepend basePath to a path for browser URLs / fetches */
12
+ function withBasePath(p) {
13
+ if (!__basePath)
14
+ return p;
15
+ return __basePath + p;
16
+ }
17
+ /** Strip basePath prefix from a browser pathname */
18
+ function stripBasePath(p) {
19
+ if (!__basePath)
20
+ return p;
21
+ if (p.startsWith(__basePath))
22
+ return p.slice(__basePath.length) || "/";
23
+ return p;
24
+ }
25
+ function createRouterEvents() {
26
+ const listeners = new Map();
27
+ return {
28
+ on(event, handler) {
29
+ if (!listeners.has(event))
30
+ listeners.set(event, new Set());
31
+ listeners.get(event).add(handler);
32
+ },
33
+ off(event, handler) {
34
+ listeners.get(event)?.delete(handler);
35
+ },
36
+ emit(event, ...args) {
37
+ listeners.get(event)?.forEach((handler) => handler(...args));
38
+ },
39
+ };
40
+ }
41
+ // Singleton events instance
42
+ const routerEvents = createRouterEvents();
43
+ function resolveUrl(url) {
44
+ if (typeof url === "string")
45
+ return url;
46
+ let result = url.pathname ?? "/";
47
+ if (url.query) {
48
+ const params = new URLSearchParams(url.query);
49
+ result += `?${params.toString()}`;
50
+ }
51
+ return result;
52
+ }
53
+ /**
54
+ * Apply locale prefix to a URL for client-side navigation.
55
+ * Same logic as Link's applyLocaleToHref but reads from window globals.
56
+ */
57
+ export function applyNavigationLocale(url, locale) {
58
+ if (!locale || typeof window === "undefined")
59
+ return url;
60
+ const defaultLocale = window.__VINEXT_DEFAULT_LOCALE__;
61
+ // Default locale doesn't get a prefix
62
+ if (locale === defaultLocale)
63
+ return url;
64
+ // Don't double-prefix
65
+ if (url.startsWith(`/${locale}/`) || url === `/${locale}`)
66
+ return url;
67
+ return `/${locale}${url.startsWith("/") ? url : `/${url}`}`;
68
+ }
69
+ /** Check if a URL is external */
70
+ export function isExternalUrl(url) {
71
+ return url.startsWith("http://") || url.startsWith("https://") || url.startsWith("//");
72
+ }
73
+ /** Check if a href is only a hash change relative to the current URL */
74
+ export function isHashOnlyChange(href) {
75
+ if (href.startsWith("#"))
76
+ return true;
77
+ if (typeof window === "undefined")
78
+ return false;
79
+ try {
80
+ const current = new URL(window.location.href);
81
+ const next = new URL(href, window.location.href);
82
+ return current.pathname === next.pathname && current.search === next.search && next.hash !== "";
83
+ }
84
+ catch {
85
+ return false;
86
+ }
87
+ }
88
+ /** Scroll to hash target element, or top if no hash */
89
+ function scrollToHash(hash) {
90
+ if (!hash || hash === "#") {
91
+ window.scrollTo(0, 0);
92
+ return;
93
+ }
94
+ const el = document.getElementById(hash.slice(1));
95
+ if (el)
96
+ el.scrollIntoView({ behavior: "auto" });
97
+ }
98
+ /** Save current scroll position into history state for back/forward restoration */
99
+ function saveScrollPosition() {
100
+ const state = window.history.state ?? {};
101
+ window.history.replaceState({ ...state, __vinext_scrollX: window.scrollX, __vinext_scrollY: window.scrollY }, "");
102
+ }
103
+ /** Restore scroll position from history state */
104
+ function restoreScrollPosition(state) {
105
+ if (state && typeof state === "object" && "__vinext_scrollY" in state) {
106
+ const { __vinext_scrollX: x, __vinext_scrollY: y } = state;
107
+ requestAnimationFrame(() => window.scrollTo(x, y));
108
+ }
109
+ }
110
+ // ---------------------------------------------------------------------------
111
+ // Server-side SSR state uses a registration pattern so this module can be
112
+ // bundled for the browser. The ALS-backed implementation lives in
113
+ // router-state.ts (server-only) and registers itself on import.
114
+ // ---------------------------------------------------------------------------
115
+ let _ssrContext = null;
116
+ let _getSSRContext = () => _ssrContext;
117
+ let _setSSRContextImpl = (ctx) => { _ssrContext = ctx; };
118
+ /**
119
+ * Register ALS-backed state accessors. Called by router-state.ts on import.
120
+ * @internal
121
+ */
122
+ export function _registerRouterStateAccessors(accessors) {
123
+ _getSSRContext = accessors.getSSRContext;
124
+ _setSSRContextImpl = accessors.setSSRContext;
125
+ }
126
+ export function setSSRContext(ctx) {
127
+ _setSSRContextImpl(ctx);
128
+ }
129
+ /**
130
+ * Extract param names from a Next.js route pattern.
131
+ * E.g., "/posts/[id]" → ["id"], "/docs/[...slug]" → ["slug"],
132
+ * "/shop/[[...path]]" → ["path"], "/blog/[year]/[month]" → ["year", "month"]
133
+ * Also handles internal format: "/posts/:id" → ["id"], "/docs/:slug+" → ["slug"]
134
+ */
135
+ function extractRouteParamNames(pattern) {
136
+ const names = [];
137
+ // Match Next.js bracket format: [id], [...slug], [[...slug]]
138
+ const bracketMatches = pattern.matchAll(/\[{1,2}(?:\.\.\.)?([\w-]+)\]{1,2}/g);
139
+ for (const m of bracketMatches) {
140
+ names.push(m[1]);
141
+ }
142
+ if (names.length > 0)
143
+ return names;
144
+ // Fallback: match internal :param format
145
+ const colonMatches = pattern.matchAll(/:([\w-]+)[+*]?/g);
146
+ for (const m of colonMatches) {
147
+ names.push(m[1]);
148
+ }
149
+ return names;
150
+ }
151
+ function getPathnameAndQuery() {
152
+ if (typeof window === "undefined") {
153
+ const _ssrCtx = _getSSRContext();
154
+ if (_ssrCtx) {
155
+ const query = {};
156
+ for (const [key, value] of Object.entries(_ssrCtx.query)) {
157
+ query[key] = Array.isArray(value) ? value.join(",") : value;
158
+ }
159
+ return { pathname: _ssrCtx.pathname, query, asPath: _ssrCtx.asPath };
160
+ }
161
+ return { pathname: "/", query: {}, asPath: "/" };
162
+ }
163
+ const pathname = stripBasePath(window.location.pathname);
164
+ const query = {};
165
+ // Include dynamic route params from __NEXT_DATA__ (e.g., { id: "42" } from /posts/[id]).
166
+ // Only include keys that are part of the route pattern (not stale query params).
167
+ const nextData = window.__NEXT_DATA__;
168
+ if (nextData && nextData.query && nextData.page) {
169
+ const routeParamNames = extractRouteParamNames(nextData.page);
170
+ for (const key of routeParamNames) {
171
+ const value = nextData.query[key];
172
+ if (typeof value === "string") {
173
+ query[key] = value;
174
+ }
175
+ else if (Array.isArray(value)) {
176
+ query[key] = value.join(",");
177
+ }
178
+ }
179
+ }
180
+ // URL search params always reflect the current URL
181
+ const params = new URLSearchParams(window.location.search);
182
+ for (const [key, value] of params) {
183
+ query[key] = value;
184
+ }
185
+ const asPath = pathname + window.location.search;
186
+ return { pathname, query, asPath };
187
+ }
188
+ /**
189
+ * Perform client-side navigation: fetch the target page's HTML,
190
+ * extract __NEXT_DATA__, and re-render the React root.
191
+ */
192
+ let _navInProgress = false;
193
+ async function navigateClient(url) {
194
+ if (typeof window === "undefined")
195
+ return;
196
+ const win = window;
197
+ const root = win.__VINEXT_ROOT__;
198
+ if (!root) {
199
+ // No React root yet — fall back to hard navigation
200
+ window.location.href = url;
201
+ return;
202
+ }
203
+ // Prevent re-entrant navigation (e.g., double popstate events)
204
+ if (_navInProgress)
205
+ return;
206
+ _navInProgress = true;
207
+ try {
208
+ // Fetch the target page's SSR HTML
209
+ const res = await fetch(url, { headers: { Accept: "text/html" } });
210
+ if (!res.ok) {
211
+ window.location.href = url;
212
+ return;
213
+ }
214
+ const html = await res.text();
215
+ // Extract __NEXT_DATA__ from the HTML
216
+ const match = html.match(/<script>window\.__NEXT_DATA__\s*=\s*(.*?)<\/script>/);
217
+ if (!match) {
218
+ window.location.href = url;
219
+ return;
220
+ }
221
+ const nextData = JSON.parse(match[1]);
222
+ const { pageProps } = nextData.props;
223
+ win.__NEXT_DATA__ = nextData;
224
+ // Get the page module URL from __NEXT_DATA__.__vinext (preferred),
225
+ // or fall back to parsing the hydration script
226
+ let pageModuleUrl = nextData.__vinext?.pageModuleUrl;
227
+ if (!pageModuleUrl) {
228
+ // Legacy fallback: try to find the module URL in the inline script
229
+ const moduleMatch = html.match(/import\("([^"]+)"\);\s*\n\s*const PageComponent/);
230
+ const altMatch = html.match(/await import\("([^"]+pages\/[^"]+)"\)/);
231
+ pageModuleUrl = moduleMatch?.[1] ?? altMatch?.[1] ?? undefined;
232
+ }
233
+ if (!pageModuleUrl) {
234
+ window.location.href = url;
235
+ return;
236
+ }
237
+ // Dynamically import the new page module
238
+ const pageModule = await import(/* @vite-ignore */ pageModuleUrl);
239
+ const PageComponent = pageModule.default;
240
+ if (!PageComponent) {
241
+ window.location.href = url;
242
+ return;
243
+ }
244
+ // Import React for createElement
245
+ const React = (await import("react")).default;
246
+ // Re-render with the new page, loading _app if needed
247
+ let AppComponent = win.__VINEXT_APP__;
248
+ const appModuleUrl = nextData.__vinext?.appModuleUrl;
249
+ if (!AppComponent && appModuleUrl) {
250
+ try {
251
+ const appModule = await import(/* @vite-ignore */ appModuleUrl);
252
+ AppComponent = appModule.default;
253
+ win.__VINEXT_APP__ = AppComponent;
254
+ }
255
+ catch {
256
+ // _app not available — continue without it
257
+ }
258
+ }
259
+ let element;
260
+ if (AppComponent) {
261
+ element = React.createElement(AppComponent, {
262
+ Component: PageComponent,
263
+ pageProps,
264
+ });
265
+ }
266
+ else {
267
+ element = React.createElement(PageComponent, pageProps);
268
+ }
269
+ root.render(element);
270
+ }
271
+ catch (err) {
272
+ console.error("[vinext] Client navigation failed:", err);
273
+ routerEvents.emit("routeChangeError", err, url);
274
+ window.location.href = url;
275
+ }
276
+ finally {
277
+ _navInProgress = false;
278
+ }
279
+ }
280
+ /**
281
+ * useRouter hook - Pages Router compatible.
282
+ */
283
+ export function useRouter() {
284
+ const [{ pathname, query, asPath }, setState] = useState(getPathnameAndQuery);
285
+ useEffect(() => {
286
+ const onPopState = (e) => {
287
+ setState(getPathnameAndQuery());
288
+ // Re-render with the new page on back/forward navigation
289
+ navigateClient(window.location.pathname + window.location.search).then(() => {
290
+ restoreScrollPosition(e.state);
291
+ });
292
+ };
293
+ window.addEventListener("popstate", onPopState);
294
+ return () => window.removeEventListener("popstate", onPopState);
295
+ }, []);
296
+ // Listen for custom navigation events from Link component
297
+ useEffect(() => {
298
+ const onNavigate = ((_e) => {
299
+ setState(getPathnameAndQuery());
300
+ });
301
+ window.addEventListener("vinext:navigate", onNavigate);
302
+ return () => window.removeEventListener("vinext:navigate", onNavigate);
303
+ }, []);
304
+ const push = useCallback(async (url, _as, options) => {
305
+ const resolved = applyNavigationLocale(resolveUrl(url), options?.locale);
306
+ // External URLs — delegate to browser
307
+ if (isExternalUrl(resolved)) {
308
+ window.location.assign(resolved);
309
+ return true;
310
+ }
311
+ // Hash-only change — no page fetch needed
312
+ if (isHashOnlyChange(resolved)) {
313
+ const hash = resolved.includes("#") ? resolved.slice(resolved.indexOf("#")) : "";
314
+ window.history.pushState({}, "", resolved.startsWith("#") ? resolved : withBasePath(resolved));
315
+ scrollToHash(hash);
316
+ setState(getPathnameAndQuery());
317
+ window.dispatchEvent(new CustomEvent("vinext:navigate"));
318
+ return true;
319
+ }
320
+ saveScrollPosition();
321
+ const full = withBasePath(resolved);
322
+ routerEvents.emit("routeChangeStart", resolved);
323
+ window.history.pushState({}, "", full);
324
+ if (!options?.shallow) {
325
+ await navigateClient(full);
326
+ }
327
+ setState(getPathnameAndQuery());
328
+ routerEvents.emit("routeChangeComplete", resolved);
329
+ // Scroll: handle hash target, else scroll to top unless scroll:false
330
+ const hash = resolved.includes("#") ? resolved.slice(resolved.indexOf("#")) : "";
331
+ if (hash) {
332
+ scrollToHash(hash);
333
+ }
334
+ else if (options?.scroll !== false) {
335
+ window.scrollTo(0, 0);
336
+ }
337
+ window.dispatchEvent(new CustomEvent("vinext:navigate"));
338
+ return true;
339
+ }, []);
340
+ const replace = useCallback(async (url, _as, options) => {
341
+ const resolved = applyNavigationLocale(resolveUrl(url), options?.locale);
342
+ // External URLs — delegate to browser
343
+ if (isExternalUrl(resolved)) {
344
+ window.location.replace(resolved);
345
+ return true;
346
+ }
347
+ // Hash-only change — no page fetch needed
348
+ if (isHashOnlyChange(resolved)) {
349
+ const hash = resolved.includes("#") ? resolved.slice(resolved.indexOf("#")) : "";
350
+ window.history.replaceState({}, "", resolved.startsWith("#") ? resolved : withBasePath(resolved));
351
+ scrollToHash(hash);
352
+ setState(getPathnameAndQuery());
353
+ window.dispatchEvent(new CustomEvent("vinext:navigate"));
354
+ return true;
355
+ }
356
+ const full = withBasePath(resolved);
357
+ routerEvents.emit("routeChangeStart", resolved);
358
+ window.history.replaceState({}, "", full);
359
+ if (!options?.shallow) {
360
+ await navigateClient(full);
361
+ }
362
+ setState(getPathnameAndQuery());
363
+ routerEvents.emit("routeChangeComplete", resolved);
364
+ // Scroll: handle hash target, else scroll to top unless scroll:false
365
+ const hash = resolved.includes("#") ? resolved.slice(resolved.indexOf("#")) : "";
366
+ if (hash) {
367
+ scrollToHash(hash);
368
+ }
369
+ else if (options?.scroll !== false) {
370
+ window.scrollTo(0, 0);
371
+ }
372
+ window.dispatchEvent(new CustomEvent("vinext:navigate"));
373
+ return true;
374
+ }, []);
375
+ const back = useCallback(() => {
376
+ window.history.back();
377
+ }, []);
378
+ const reload = useCallback(() => {
379
+ window.location.reload();
380
+ }, []);
381
+ const prefetch = useCallback(async (url) => {
382
+ // Inject a <link rel="prefetch"> for the target page
383
+ if (typeof document !== "undefined") {
384
+ const link = document.createElement("link");
385
+ link.rel = "prefetch";
386
+ link.href = url;
387
+ link.as = "document";
388
+ document.head.appendChild(link);
389
+ }
390
+ }, []);
391
+ // Get i18n info from SSR context or window
392
+ const _ssrState = _getSSRContext();
393
+ const locale = typeof window === "undefined"
394
+ ? _ssrState?.locale
395
+ : window.__VINEXT_LOCALE__;
396
+ const locales = typeof window === "undefined"
397
+ ? _ssrState?.locales
398
+ : window.__VINEXT_LOCALES__;
399
+ const defaultLocale = typeof window === "undefined"
400
+ ? _ssrState?.defaultLocale
401
+ : window.__VINEXT_DEFAULT_LOCALE__;
402
+ // route is the route pattern (e.g., "/posts/[id]"), not the actual path
403
+ const route = typeof window !== "undefined"
404
+ ? (window.__NEXT_DATA__?.page ?? pathname)
405
+ : pathname;
406
+ const router = useMemo(() => ({
407
+ pathname,
408
+ route,
409
+ query,
410
+ asPath,
411
+ basePath: __basePath,
412
+ locale,
413
+ locales,
414
+ defaultLocale,
415
+ isReady: true,
416
+ isPreview: false,
417
+ isFallback: typeof window !== "undefined" && window.__NEXT_DATA__?.isFallback === true,
418
+ push,
419
+ replace,
420
+ back,
421
+ reload,
422
+ prefetch,
423
+ beforePopState: (cb) => { _beforePopStateCb = cb; },
424
+ events: routerEvents,
425
+ }), [pathname, query, asPath, locale, locales, defaultLocale, push, replace, back, reload, prefetch, route]);
426
+ return router;
427
+ }
428
+ // beforePopState callback: called before handling browser back/forward.
429
+ // If it returns false, the navigation is cancelled.
430
+ let _beforePopStateCb;
431
+ // Module-level popstate listener: handles browser back/forward by re-rendering
432
+ // the React root with the page at the new URL. This runs regardless of whether
433
+ // any component calls useRouter().
434
+ if (typeof window !== "undefined") {
435
+ window.addEventListener("popstate", (e) => {
436
+ const browserUrl = window.location.pathname + window.location.search;
437
+ const appUrl = stripBasePath(window.location.pathname) + window.location.search;
438
+ // Check beforePopState callback
439
+ if (_beforePopStateCb !== undefined) {
440
+ const shouldContinue = _beforePopStateCb({ url: appUrl, as: appUrl, options: { shallow: false } });
441
+ if (!shouldContinue)
442
+ return;
443
+ }
444
+ routerEvents.emit("routeChangeStart", appUrl);
445
+ navigateClient(browserUrl).then(() => {
446
+ routerEvents.emit("routeChangeComplete", appUrl);
447
+ restoreScrollPosition(e.state);
448
+ window.dispatchEvent(new CustomEvent("vinext:navigate"));
449
+ });
450
+ });
451
+ }
452
+ // Also export a default Router singleton for `import Router from 'next/router'`
453
+ const Router = {
454
+ push: async (url, _as, options) => {
455
+ const resolved = applyNavigationLocale(resolveUrl(url), options?.locale);
456
+ // External URLs
457
+ if (isExternalUrl(resolved)) {
458
+ window.location.assign(resolved);
459
+ return true;
460
+ }
461
+ // Hash-only change
462
+ if (isHashOnlyChange(resolved)) {
463
+ const hash = resolved.includes("#") ? resolved.slice(resolved.indexOf("#")) : "";
464
+ window.history.pushState({}, "", resolved.startsWith("#") ? resolved : withBasePath(resolved));
465
+ scrollToHash(hash);
466
+ window.dispatchEvent(new CustomEvent("vinext:navigate"));
467
+ return true;
468
+ }
469
+ saveScrollPosition();
470
+ const full = withBasePath(resolved);
471
+ routerEvents.emit("routeChangeStart", resolved);
472
+ window.history.pushState({}, "", full);
473
+ if (!options?.shallow) {
474
+ await navigateClient(full);
475
+ }
476
+ routerEvents.emit("routeChangeComplete", resolved);
477
+ const hash = resolved.includes("#") ? resolved.slice(resolved.indexOf("#")) : "";
478
+ if (hash) {
479
+ scrollToHash(hash);
480
+ }
481
+ else if (options?.scroll !== false) {
482
+ window.scrollTo(0, 0);
483
+ }
484
+ window.dispatchEvent(new CustomEvent("vinext:navigate"));
485
+ return true;
486
+ },
487
+ replace: async (url, _as, options) => {
488
+ const resolved = applyNavigationLocale(resolveUrl(url), options?.locale);
489
+ // External URLs
490
+ if (isExternalUrl(resolved)) {
491
+ window.location.replace(resolved);
492
+ return true;
493
+ }
494
+ // Hash-only change
495
+ if (isHashOnlyChange(resolved)) {
496
+ const hash = resolved.includes("#") ? resolved.slice(resolved.indexOf("#")) : "";
497
+ window.history.replaceState({}, "", resolved.startsWith("#") ? resolved : withBasePath(resolved));
498
+ scrollToHash(hash);
499
+ window.dispatchEvent(new CustomEvent("vinext:navigate"));
500
+ return true;
501
+ }
502
+ const full = withBasePath(resolved);
503
+ routerEvents.emit("routeChangeStart", resolved);
504
+ window.history.replaceState({}, "", full);
505
+ if (!options?.shallow) {
506
+ await navigateClient(full);
507
+ }
508
+ routerEvents.emit("routeChangeComplete", resolved);
509
+ const hash = resolved.includes("#") ? resolved.slice(resolved.indexOf("#")) : "";
510
+ if (hash) {
511
+ scrollToHash(hash);
512
+ }
513
+ else if (options?.scroll !== false) {
514
+ window.scrollTo(0, 0);
515
+ }
516
+ window.dispatchEvent(new CustomEvent("vinext:navigate"));
517
+ return true;
518
+ },
519
+ back: () => window.history.back(),
520
+ reload: () => window.location.reload(),
521
+ prefetch: async (url) => {
522
+ if (typeof document !== "undefined") {
523
+ const link = document.createElement("link");
524
+ link.rel = "prefetch";
525
+ link.href = url;
526
+ link.as = "document";
527
+ document.head.appendChild(link);
528
+ }
529
+ },
530
+ beforePopState: (cb) => {
531
+ _beforePopStateCb = cb;
532
+ },
533
+ events: routerEvents,
534
+ };
535
+ export default Router;
536
+ //# sourceMappingURL=router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/shims/router.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAElE,yEAAyE;AACzE,MAAM,UAAU,GAAW,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,EAAE,CAAC;AAEpE,4DAA4D;AAC5D,SAAS,YAAY,CAAC,CAAS;IAC7B,IAAI,CAAC,UAAU;QAAE,OAAO,CAAC,CAAC;IAC1B,OAAO,UAAU,GAAG,CAAC,CAAC;AACxB,CAAC;AAED,oDAAoD;AACpD,SAAS,aAAa,CAAC,CAAS;IAC9B,IAAI,CAAC,UAAU;QAAE,OAAO,CAAC,CAAC;IAC1B,IAAI,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC;IACvE,OAAO,CAAC,CAAC;AACX,CAAC;AAiED,SAAS,kBAAkB;IACzB,MAAM,SAAS,GAAG,IAAI,GAAG,EAA6C,CAAC;IAEvE,OAAO;QACL,EAAE,CAAC,KAAa,EAAE,OAAqC;YACrD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;gBAAE,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;YAC3D,SAAS,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACrC,CAAC;QACD,GAAG,CAAC,KAAa,EAAE,OAAqC;YACtD,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QACxC,CAAC;QACD,IAAI,CAAC,KAAa,EAAE,GAAG,IAAe;YACpC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QAC/D,CAAC;KACF,CAAC;AACJ,CAAC;AAED,4BAA4B;AAC5B,MAAM,YAAY,GAAG,kBAAkB,EAAE,CAAC;AAE1C,SAAS,UAAU,CAAC,GAAuB;IACzC,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC;IACxC,IAAI,MAAM,GAAG,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC;IACjC,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;QACd,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,IAAI,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;IACpC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,GAAW,EAAE,MAAe;IAChE,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,GAAG,CAAC;IACzD,MAAM,aAAa,GAAI,MAAc,CAAC,yBAAyB,CAAC;IAChE,sCAAsC;IACtC,IAAI,MAAM,KAAK,aAAa;QAAE,OAAO,GAAG,CAAC;IACzC,sBAAsB;IACtB,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,GAAG,KAAK,IAAI,MAAM,EAAE;QAAE,OAAO,GAAG,CAAC;IACtE,OAAO,IAAI,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC;AAC9D,CAAC;AAED,iCAAiC;AACjC,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,OAAO,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACzF,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,KAAK,CAAC;IAChD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACjD,OAAO,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC;IAClG,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,uDAAuD;AACvD,SAAS,YAAY,CAAC,IAAY;IAChC,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;QAC1B,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtB,OAAO;IACT,CAAC;IACD,MAAM,EAAE,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,IAAI,EAAE;QAAE,EAAE,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;AAClD,CAAC;AAED,mFAAmF;AACnF,SAAS,kBAAkB;IACzB,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;IACzC,MAAM,CAAC,OAAO,CAAC,YAAY,CACzB,EAAE,GAAG,KAAK,EAAE,gBAAgB,EAAE,MAAM,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,CAAC,OAAO,EAAE,EAChF,EAAE,CACH,CAAC;AACJ,CAAC;AAED,iDAAiD;AACjD,SAAS,qBAAqB,CAAC,KAAc;IAC3C,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,kBAAkB,IAAI,KAAK,EAAE,CAAC;QACtE,MAAM,EAAE,gBAAgB,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,GAAG,KAGpD,CAAC;QACF,qBAAqB,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACrD,CAAC;AACH,CAAC;AAcD,8EAA8E;AAC9E,0EAA0E;AAC1E,kEAAkE;AAClE,gEAAgE;AAChE,8EAA8E;AAE9E,IAAI,WAAW,GAAsB,IAAI,CAAC;AAE1C,IAAI,cAAc,GAAG,GAAsB,EAAE,CAAC,WAAW,CAAC;AAC1D,IAAI,kBAAkB,GAAG,CAAC,GAAsB,EAAQ,EAAE,GAAG,WAAW,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AAElF;;;GAGG;AACH,MAAM,UAAU,6BAA6B,CAAC,SAG7C;IACC,cAAc,GAAG,SAAS,CAAC,aAAa,CAAC;IACzC,kBAAkB,GAAG,SAAS,CAAC,aAAa,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAsB;IAClD,kBAAkB,CAAC,GAAG,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;GAKG;AACH,SAAS,sBAAsB,CAAC,OAAe;IAC7C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,6DAA6D;IAC7D,MAAM,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC,oCAAoC,CAAC,CAAC;IAC9E,KAAK,MAAM,CAAC,IAAI,cAAc,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACnC,yCAAyC;IACzC,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IACzD,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,mBAAmB;IAK1B,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;QACjC,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,KAAK,GAA2B,EAAE,CAAC;YACzC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzD,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAC9D,CAAC;YACD,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;QACvE,CAAC;QACD,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IACnD,CAAC;IACD,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACzD,MAAM,KAAK,GAA2B,EAAE,CAAC;IACzC,yFAAyF;IACzF,iFAAiF;IACjF,MAAM,QAAQ,GAAI,MAAc,CAAC,aAAa,CAAC;IAC/C,IAAI,QAAQ,IAAI,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;QAChD,MAAM,eAAe,GAAG,sBAAsB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC9D,KAAK,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;YAClC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAClC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC9B,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACrB,CAAC;iBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;IACH,CAAC;IACD,mDAAmD;IACnD,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC3D,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;QAClC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACrB,CAAC;IACD,MAAM,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;IACjD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AACrC,CAAC;AAED;;;GAGG;AACH,IAAI,cAAc,GAAG,KAAK,CAAC;AAC3B,KAAK,UAAU,cAAc,CAAC,GAAW;IACvC,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO;IAE1C,MAAM,GAAG,GAAG,MAAa,CAAC;IAC1B,MAAM,IAAI,GAAG,GAAG,CAAC,eAAe,CAAC;IACjC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,mDAAmD;QACnD,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,GAAG,CAAC;QAC3B,OAAO;IACT,CAAC;IAED,+DAA+D;IAC/D,IAAI,cAAc;QAAE,OAAO;IAC3B,cAAc,GAAG,IAAI,CAAC;IAEtB,IAAI,CAAC;QACH,mCAAmC;QACnC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;QACnE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,GAAG,CAAC;YAC3B,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAE9B,sCAAsC;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;QAChF,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,GAAG,CAAC;YAC3B,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACtC,MAAM,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC;QACrC,GAAG,CAAC,aAAa,GAAG,QAAQ,CAAC;QAE7B,mEAAmE;QACnE,+CAA+C;QAC/C,IAAI,aAAa,GACf,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;QAEnC,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,mEAAmE;YACnE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;YAClF,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;YACrE,aAAa,GAAG,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;QACjE,CAAC;QAED,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,GAAG,CAAC;YAC3B,OAAO;QACT,CAAC;QAED,yCAAyC;QACzC,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;QAClE,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,CAAC;QAEzC,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,GAAG,CAAC;YAC3B,OAAO;QACT,CAAC;QAED,iCAAiC;QACjC,MAAM,KAAK,GAAG,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;QAE9C,sDAAsD;QACtD,IAAI,YAAY,GAAG,GAAG,CAAC,cAAc,CAAC;QACtC,MAAM,YAAY,GAChB,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;QAElC,IAAI,CAAC,YAAY,IAAI,YAAY,EAAE,CAAC;YAClC,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;gBAChE,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC;gBACjC,GAAG,CAAC,cAAc,GAAG,YAAY,CAAC;YACpC,CAAC;YAAC,MAAM,CAAC;gBACP,2CAA2C;YAC7C,CAAC;QACH,CAAC;QAED,IAAI,OAAO,CAAC;QACZ,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC,YAAY,EAAE;gBAC1C,SAAS,EAAE,aAAa;gBACxB,SAAS;aACV,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,GAAG,CAAC,CAAC;QACzD,YAAY,CAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAChD,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,GAAG,CAAC;IAC7B,CAAC;YAAS,CAAC;QACT,cAAc,GAAG,KAAK,CAAC;IACzB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS;IACvB,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,mBAAmB,CAAC,CAAC;IAE9E,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,UAAU,GAAG,CAAC,CAAgB,EAAE,EAAE;YACtC,QAAQ,CAAC,mBAAmB,EAAE,CAAC,CAAC;YAChC,yDAAyD;YACzD,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;gBAC1E,qBAAqB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACjC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QACF,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAChD,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAClE,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,0DAA0D;IAC1D,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,UAAU,GAAG,CAAC,CAAC,EAAe,EAAE,EAAE;YACtC,QAAQ,CAAC,mBAAmB,EAAE,CAAC,CAAC;QAClC,CAAC,CAAkB,CAAC;QACpB,MAAM,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC;QACvD,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC;IACzE,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,IAAI,GAAG,WAAW,CACtB,KAAK,EAAE,GAAuB,EAAE,GAAY,EAAE,OAA2B,EAAoB,EAAE;QAC7F,MAAM,QAAQ,GAAG,qBAAqB,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAEzE,sCAAsC;QACtC,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACjC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,0CAA0C;QAC1C,IAAI,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACjF,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC/F,YAAY,CAAC,IAAI,CAAC,CAAC;YACnB,QAAQ,CAAC,mBAAmB,EAAE,CAAC,CAAC;YAChC,MAAM,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC;YACzD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,kBAAkB,EAAE,CAAC;QACrB,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;QACpC,YAAY,CAAC,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;QAChD,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;YACtB,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;QACD,QAAQ,CAAC,mBAAmB,EAAE,CAAC,CAAC;QAChC,YAAY,CAAC,IAAI,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAC;QAEnD,qEAAqE;QACrE,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACjF,IAAI,IAAI,EAAE,CAAC;YACT,YAAY,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;aAAM,IAAI,OAAO,EAAE,MAAM,KAAK,KAAK,EAAE,CAAC;YACrC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACxB,CAAC;QACD,MAAM,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC;IACd,CAAC,EACD,EAAE,CACH,CAAC;IAEF,MAAM,OAAO,GAAG,WAAW,CACzB,KAAK,EAAE,GAAuB,EAAE,GAAY,EAAE,OAA2B,EAAoB,EAAE;QAC7F,MAAM,QAAQ,GAAG,qBAAqB,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAEzE,sCAAsC;QACtC,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,0CAA0C;QAC1C,IAAI,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACjF,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;YAClG,YAAY,CAAC,IAAI,CAAC,CAAC;YACnB,QAAQ,CAAC,mBAAmB,EAAE,CAAC,CAAC;YAChC,MAAM,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC;YACzD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;QACpC,YAAY,CAAC,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;QAChD,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;YACtB,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;QACD,QAAQ,CAAC,mBAAmB,EAAE,CAAC,CAAC;QAChC,YAAY,CAAC,IAAI,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAC;QAEnD,qEAAqE;QACrE,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACjF,IAAI,IAAI,EAAE,CAAC;YACT,YAAY,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;aAAM,IAAI,OAAO,EAAE,MAAM,KAAK,KAAK,EAAE,CAAC;YACrC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACxB,CAAC;QACD,MAAM,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC;IACd,CAAC,EACD,EAAE,CACH,CAAC;IAEF,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE;QAC5B,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACxB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE;QAC9B,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;IAC3B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,EAAE,GAAW,EAAiB,EAAE;QAChE,qDAAqD;QACrD,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;YACpC,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC5C,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC;YACtB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;YAChB,IAAI,CAAC,EAAE,GAAG,UAAU,CAAC;YACrB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,2CAA2C;IAC3C,MAAM,SAAS,GAAG,cAAc,EAAE,CAAC;IACnC,MAAM,MAAM,GAAG,OAAO,MAAM,KAAK,WAAW;QAC1C,CAAC,CAAC,SAAS,EAAE,MAAM;QACnB,CAAC,CAAE,MAAc,CAAC,iBAAiB,CAAC;IACtC,MAAM,OAAO,GAAG,OAAO,MAAM,KAAK,WAAW;QAC3C,CAAC,CAAC,SAAS,EAAE,OAAO;QACpB,CAAC,CAAE,MAAc,CAAC,kBAAkB,CAAC;IACvC,MAAM,aAAa,GAAG,OAAO,MAAM,KAAK,WAAW;QACjD,CAAC,CAAC,SAAS,EAAE,aAAa;QAC1B,CAAC,CAAE,MAAc,CAAC,yBAAyB,CAAC;IAE9C,wEAAwE;IACxE,MAAM,KAAK,GAAG,OAAO,MAAM,KAAK,WAAW;QACzC,CAAC,CAAC,CAAE,MAAc,CAAC,aAAa,EAAE,IAAI,IAAI,QAAQ,CAAC;QACnD,CAAC,CAAC,QAAQ,CAAC;IAEb,MAAM,MAAM,GAAG,OAAO,CACpB,GAAe,EAAE,CAAC,CAAC;QACjB,QAAQ;QACR,KAAK;QACL,KAAK;QACL,MAAM;QACN,QAAQ,EAAE,UAAU;QACpB,MAAM;QACN,OAAO;QACP,aAAa;QACb,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,KAAK;QAChB,UAAU,EAAE,OAAO,MAAM,KAAK,WAAW,IAAK,MAAc,CAAC,aAAa,EAAE,UAAU,KAAK,IAAI;QAC/F,IAAI;QACJ,OAAO;QACP,IAAI;QACJ,MAAM;QACN,QAAQ;QACR,cAAc,EAAE,CAAC,EAA0B,EAAE,EAAE,GAAG,iBAAiB,GAAG,EAAE,CAAC,CAAC,CAAC;QAC3E,MAAM,EAAE,YAAY;KACrB,CAAC,EACF,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CACxG,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,wEAAwE;AACxE,oDAAoD;AACpD,IAAI,iBAAqD,CAAC;AAE1D,+EAA+E;AAC/E,+EAA+E;AAC/E,mCAAmC;AACnC,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;IAClC,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,CAAgB,EAAE,EAAE;QACvD,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QACrE,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QAEhF,gCAAgC;QAChC,IAAI,iBAAiB,KAAK,SAAS,EAAE,CAAC;YACpC,MAAM,cAAc,GAAI,iBAA4C,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YAC/H,IAAI,CAAC,cAAc;gBAAE,OAAO;QAC9B,CAAC;QAED,YAAY,CAAC,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;QAC9C,cAAc,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;YACnC,YAAY,CAAC,IAAI,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;YACjD,qBAAqB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAC/B,MAAM,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,gFAAgF;AAChF,MAAM,MAAM,GAAG;IACb,IAAI,EAAE,KAAK,EAAE,GAAuB,EAAE,GAAY,EAAE,OAA2B,EAAE,EAAE;QACjF,MAAM,QAAQ,GAAG,qBAAqB,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAEzE,gBAAgB;QAChB,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACjC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,mBAAmB;QACnB,IAAI,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACjF,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC/F,YAAY,CAAC,IAAI,CAAC,CAAC;YACnB,MAAM,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC;YACzD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,kBAAkB,EAAE,CAAC;QACrB,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;QACpC,YAAY,CAAC,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;QAChD,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;YACtB,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;QACD,YAAY,CAAC,IAAI,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAC;QAEnD,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACjF,IAAI,IAAI,EAAE,CAAC;YACT,YAAY,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;aAAM,IAAI,OAAO,EAAE,MAAM,KAAK,KAAK,EAAE,CAAC;YACrC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACxB,CAAC;QACD,MAAM,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,GAAuB,EAAE,GAAY,EAAE,OAA2B,EAAE,EAAE;QACpF,MAAM,QAAQ,GAAG,qBAAqB,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAEzE,gBAAgB;QAChB,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,mBAAmB;QACnB,IAAI,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACjF,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;YAClG,YAAY,CAAC,IAAI,CAAC,CAAC;YACnB,MAAM,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC;YACzD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;QACpC,YAAY,CAAC,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;QAChD,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;YACtB,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;QACD,YAAY,CAAC,IAAI,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAC;QAEnD,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACjF,IAAI,IAAI,EAAE,CAAC;YACT,YAAY,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;aAAM,IAAI,OAAO,EAAE,MAAM,KAAK,KAAK,EAAE,CAAC;YACrC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACxB,CAAC;QACD,MAAM,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE;IACjC,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;IACtC,QAAQ,EAAE,KAAK,EAAE,GAAW,EAAE,EAAE;QAC9B,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;YACpC,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC5C,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC;YACtB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;YAChB,IAAI,CAAC,EAAE,GAAG,UAAU,CAAC;YACrB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IACD,cAAc,EAAE,CAAC,EAA0B,EAAE,EAAE;QAC7C,iBAAiB,GAAG,EAAE,CAAC;IACzB,CAAC;IACD,MAAM,EAAE,YAAY;CACrB,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * next/script shim
3
+ *
4
+ * Provides the <Script> component for loading third-party scripts with
5
+ * configurable loading strategies.
6
+ *
7
+ * Strategies:
8
+ * - "beforeInteractive": rendered as a <script> tag in SSR output
9
+ * - "afterInteractive" (default): loaded client-side after hydration
10
+ * - "lazyOnload": deferred until window.load + requestIdleCallback
11
+ * - "worker": sets type="text/partytown" (requires Partytown setup)
12
+ */
13
+ import React from "react";
14
+ export interface ScriptProps {
15
+ /** Script source URL */
16
+ src?: string;
17
+ /** Loading strategy. Default: "afterInteractive" */
18
+ strategy?: "beforeInteractive" | "afterInteractive" | "lazyOnload" | "worker";
19
+ /** Unique identifier for the script */
20
+ id?: string;
21
+ /** Called when the script has loaded */
22
+ onLoad?: (e: Event) => void;
23
+ /** Called when the script is ready (after load, and on every re-render if already loaded) */
24
+ onReady?: () => void;
25
+ /** Called on script load error */
26
+ onError?: (e: Event) => void;
27
+ /** Inline script content */
28
+ children?: React.ReactNode;
29
+ /** Dangerous inner HTML */
30
+ dangerouslySetInnerHTML?: {
31
+ __html: string;
32
+ };
33
+ /** Script type attribute */
34
+ type?: string;
35
+ /** Async attribute */
36
+ async?: boolean;
37
+ /** Defer attribute */
38
+ defer?: boolean;
39
+ /** Crossorigin attribute */
40
+ crossOrigin?: string;
41
+ /** Nonce for CSP */
42
+ nonce?: string;
43
+ /** Integrity hash */
44
+ integrity?: string;
45
+ /** Additional attributes */
46
+ [key: string]: unknown;
47
+ }
48
+ /**
49
+ * Load a script imperatively (outside of React).
50
+ */
51
+ export declare function handleClientScriptLoad(props: ScriptProps): void;
52
+ /**
53
+ * Initialize multiple scripts at once (called during app bootstrap).
54
+ */
55
+ export declare function initScriptLoader(scripts: ScriptProps[]): void;
56
+ declare function Script(props: ScriptProps): React.ReactElement | null;
57
+ export default Script;
58
+ //# sourceMappingURL=script.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"script.d.ts","sourceRoot":"","sources":["../../src/shims/script.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,OAAO,KAA4B,MAAM,OAAO,CAAC;AAEjD,MAAM,WAAW,WAAW;IAC1B,wBAAwB;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oDAAoD;IACpD,QAAQ,CAAC,EAAE,mBAAmB,GAAG,kBAAkB,GAAG,YAAY,GAAG,QAAQ,CAAC;IAC9E,uCAAuC;IACvC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,wCAAwC;IACxC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;IAC5B,6FAA6F;IAC7F,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,kCAAkC;IAClC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;IAC7B,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,2BAA2B;IAC3B,uBAAuB,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,4BAA4B;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sBAAsB;IACtB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,sBAAsB;IACtB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,4BAA4B;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oBAAoB;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qBAAqB;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4BAA4B;IAC5B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAKD;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CA6B/D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,IAAI,CAI7D;AAED,iBAAS,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CAgH7D;AAED,eAAe,MAAM,CAAC"}