@websolutespa/bom-next 3.0.0 → 3.0.2

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 (313) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/dist/_virtual/_rolldown/runtime.js +24 -0
  3. package/dist/client/client.d.ts +9 -0
  4. package/dist/client/client.d.ts.map +1 -0
  5. package/dist/client/client.js +18 -0
  6. package/dist/client/client.js.map +1 -0
  7. package/dist/client/extra.d.ts +17 -0
  8. package/dist/client/extra.d.ts.map +1 -0
  9. package/dist/client/extra.js +13 -0
  10. package/dist/client/extra.js.map +1 -0
  11. package/dist/client/label.d.ts +15 -0
  12. package/dist/client/label.d.ts.map +1 -0
  13. package/dist/client/label.js +20 -0
  14. package/dist/client/label.js.map +1 -0
  15. package/dist/client/layout.d.ts +18 -0
  16. package/dist/client/layout.d.ts.map +1 -0
  17. package/dist/client/layout.js +13 -0
  18. package/dist/client/layout.js.map +1 -0
  19. package/dist/client/local.collection.d.ts +32 -0
  20. package/dist/client/local.collection.d.ts.map +1 -0
  21. package/dist/client/local.collection.js +49 -0
  22. package/dist/client/local.collection.js.map +1 -0
  23. package/dist/client/metadata.d.ts +43 -0
  24. package/dist/client/metadata.d.ts.map +1 -0
  25. package/dist/client/metadata.js +146 -0
  26. package/dist/client/metadata.js.map +1 -0
  27. package/dist/client/page.d.ts +404 -0
  28. package/dist/client/page.d.ts.map +1 -0
  29. package/dist/client/page.js +13 -0
  30. package/dist/client/page.js.map +1 -0
  31. package/dist/client/useApi.d.ts +21 -0
  32. package/dist/client/useApi.d.ts.map +1 -0
  33. package/dist/client/useApi.js +65 -0
  34. package/dist/client/useApi.js.map +1 -0
  35. package/dist/client/useCollectionApi.d.ts +21 -0
  36. package/dist/client/useCollectionApi.d.ts.map +1 -0
  37. package/dist/client/useCollectionApi.js +65 -0
  38. package/dist/client/useCollectionApi.js.map +1 -0
  39. package/dist/client/useExtra.d.ts +9 -0
  40. package/dist/client/useExtra.d.ts.map +1 -0
  41. package/dist/client/useExtra.js +13 -0
  42. package/dist/client/useExtra.js.map +1 -0
  43. package/dist/client/useHttp.d.ts +15 -0
  44. package/dist/client/useHttp.d.ts.map +1 -0
  45. package/dist/client/useHttp.js +70 -0
  46. package/dist/client/useHttp.js.map +1 -0
  47. package/dist/client/useLabel.d.ts +9 -0
  48. package/dist/client/useLabel.d.ts.map +1 -0
  49. package/dist/client/useLabel.js +13 -0
  50. package/dist/client/useLabel.js.map +1 -0
  51. package/dist/client/useLayout.d.ts +9 -0
  52. package/dist/client/useLayout.d.ts.map +1 -0
  53. package/dist/client/useLayout.js +13 -0
  54. package/dist/client/useLayout.js.map +1 -0
  55. package/dist/client/useLink.d.ts +7 -0
  56. package/dist/client/useLink.d.ts.map +1 -0
  57. package/dist/client/useLink.js +15 -0
  58. package/dist/client/useLink.js.map +1 -0
  59. package/dist/client/useMetaData.d.ts +9 -0
  60. package/dist/client/useMetaData.d.ts.map +1 -0
  61. package/dist/client/useMetaData.js +13 -0
  62. package/dist/client/useMetaData.js.map +1 -0
  63. package/dist/client/usePage.d.ts +394 -0
  64. package/dist/client/usePage.d.ts.map +1 -0
  65. package/dist/client/usePage.js +13 -0
  66. package/dist/client/usePage.js.map +1 -0
  67. package/dist/client/useUser.d.ts +9 -0
  68. package/dist/client/useUser.d.ts.map +1 -0
  69. package/dist/client/useUser.js +13 -0
  70. package/dist/client/useUser.js.map +1 -0
  71. package/dist/client/user.d.ts +20 -0
  72. package/dist/client/user.d.ts.map +1 -0
  73. package/dist/client/user.js +33 -0
  74. package/dist/client/user.js.map +1 -0
  75. package/dist/exports/client.d.ts +20 -0
  76. package/dist/exports/client.js +19 -5734
  77. package/dist/exports/instrumentation.d.ts +2 -0
  78. package/dist/exports/instrumentation.js +1 -24
  79. package/dist/exports/proxy.d.ts +5 -0
  80. package/dist/exports/proxy.js +4 -253
  81. package/dist/exports/server.d.ts +19 -0
  82. package/dist/exports/server.js +18 -1973
  83. package/dist/index.d.ts +18 -0
  84. package/dist/index.js +10 -200
  85. package/dist/instrumentation/client.d.ts +8 -0
  86. package/dist/instrumentation/client.d.ts.map +1 -0
  87. package/dist/instrumentation/client.js +15 -0
  88. package/dist/instrumentation/client.js.map +1 -0
  89. package/dist/instrumentation/sentry/capture.requestError.js +10 -0
  90. package/dist/instrumentation/sentry/capture.requestError.js.map +1 -0
  91. package/dist/instrumentation/sentry/capture.routerTransitionStart.js +7 -0
  92. package/dist/instrumentation/sentry/capture.routerTransitionStart.js.map +1 -0
  93. package/dist/{exports/instrumentation-DBO6QH4d.d.ts → instrumentation/server.d.ts} +2 -2
  94. package/dist/instrumentation/server.d.ts.map +1 -0
  95. package/dist/instrumentation/server.js +19 -0
  96. package/dist/instrumentation/server.js.map +1 -0
  97. package/dist/{types-BatUTdbZ.d.ts → instrumentation/types.d.ts} +2 -2
  98. package/dist/instrumentation/types.d.ts.map +1 -0
  99. package/dist/lib/breadcrumb.d.ts +15 -0
  100. package/dist/lib/breadcrumb.d.ts.map +1 -0
  101. package/dist/lib/breadcrumb.js +20 -0
  102. package/dist/lib/breadcrumb.js.map +1 -0
  103. package/dist/lib/const.d.ts +9 -0
  104. package/dist/lib/const.d.ts.map +1 -0
  105. package/dist/lib/const.js +9 -0
  106. package/dist/lib/const.js.map +1 -0
  107. package/dist/lib/http.d.ts +36 -0
  108. package/dist/lib/http.d.ts.map +1 -0
  109. package/dist/{http-_2M-UFRx.js → lib/http.js} +2 -2
  110. package/dist/lib/http.js.map +1 -0
  111. package/dist/lib/label.d.ts +16 -0
  112. package/dist/lib/label.d.ts.map +1 -0
  113. package/dist/lib/label.js +33 -0
  114. package/dist/lib/label.js.map +1 -0
  115. package/dist/lib/layout.defaults.d.ts +9 -0
  116. package/dist/lib/layout.defaults.d.ts.map +1 -0
  117. package/dist/lib/layout.defaults.js +161 -0
  118. package/dist/lib/layout.defaults.js.map +1 -0
  119. package/dist/lib/link.d.ts +9 -0
  120. package/dist/lib/link.d.ts.map +1 -0
  121. package/dist/lib/link.js +16 -0
  122. package/dist/lib/link.js.map +1 -0
  123. package/dist/lib/meta-data.d.ts +56 -0
  124. package/dist/lib/meta-data.d.ts.map +1 -0
  125. package/dist/lib/open-graph.d.ts +143 -0
  126. package/dist/lib/open-graph.d.ts.map +1 -0
  127. package/dist/lib/pagination.d.ts +27 -0
  128. package/dist/lib/pagination.d.ts.map +1 -0
  129. package/dist/lib/pagination.js +39 -0
  130. package/dist/lib/pagination.js.map +1 -0
  131. package/dist/lib/route.d.ts +17 -0
  132. package/dist/lib/route.d.ts.map +1 -0
  133. package/dist/{route-DzFwERQP.js → lib/route.js} +2 -2
  134. package/dist/lib/route.js.map +1 -0
  135. package/dist/lib/store.d.ts +27 -0
  136. package/dist/lib/store.d.ts.map +1 -0
  137. package/dist/{store-CJzqrHsl.js → lib/store.js} +2 -25
  138. package/dist/lib/store.js.map +1 -0
  139. package/dist/lib/structured-data.d.ts +9 -0
  140. package/dist/lib/structured-data.d.ts.map +1 -0
  141. package/dist/lib/twitter-card.d.ts +43 -0
  142. package/dist/lib/twitter-card.d.ts.map +1 -0
  143. package/dist/lib/utils.d.ts +13 -0
  144. package/dist/lib/utils.d.ts.map +1 -0
  145. package/dist/lib/utils.js +35 -0
  146. package/dist/lib/utils.js.map +1 -0
  147. package/dist/mock.d.ts +127 -0
  148. package/dist/mock.d.ts.map +1 -0
  149. package/dist/node_modules/@selderee/plugin-htmlparser2/lib/hp2-builder.js +75 -0
  150. package/dist/node_modules/@selderee/plugin-htmlparser2/lib/hp2-builder.js.map +1 -0
  151. package/dist/node_modules/deepmerge/dist/cjs.js +86 -0
  152. package/dist/node_modules/deepmerge/dist/cjs.js.map +1 -0
  153. package/dist/node_modules/dom-serializer/lib/esm/foreignNames.js +105 -0
  154. package/dist/node_modules/dom-serializer/lib/esm/foreignNames.js.map +1 -0
  155. package/dist/node_modules/dom-serializer/lib/esm/index.js +146 -0
  156. package/dist/node_modules/dom-serializer/lib/esm/index.js.map +1 -0
  157. package/dist/node_modules/domelementtype/lib/esm/index.js +53 -0
  158. package/dist/node_modules/domelementtype/lib/esm/index.js.map +1 -0
  159. package/dist/node_modules/domhandler/lib/esm/index.js +130 -0
  160. package/dist/node_modules/domhandler/lib/esm/index.js.map +1 -0
  161. package/dist/node_modules/domhandler/lib/esm/node.js +307 -0
  162. package/dist/node_modules/domhandler/lib/esm/node.js.map +1 -0
  163. package/dist/node_modules/entities/lib/esm/decode.js +363 -0
  164. package/dist/node_modules/entities/lib/esm/decode.js.map +1 -0
  165. package/dist/node_modules/entities/lib/esm/decode_codepoint.js +59 -0
  166. package/dist/node_modules/entities/lib/esm/decode_codepoint.js.map +1 -0
  167. package/dist/node_modules/entities/lib/esm/escape.js +85 -0
  168. package/dist/node_modules/entities/lib/esm/escape.js.map +1 -0
  169. package/dist/node_modules/entities/lib/esm/generated/decode-data-html.js +6 -0
  170. package/dist/node_modules/entities/lib/esm/generated/decode-data-html.js.map +1 -0
  171. package/dist/node_modules/entities/lib/esm/generated/decode-data-xml.js +6 -0
  172. package/dist/node_modules/entities/lib/esm/generated/decode-data-xml.js.map +1 -0
  173. package/dist/node_modules/html-to-text/lib/html-to-text.js +1816 -0
  174. package/dist/node_modules/html-to-text/lib/html-to-text.js.map +1 -0
  175. package/dist/node_modules/html-to-text/node_modules/htmlparser2/lib/esm/Parser.js +435 -0
  176. package/dist/node_modules/html-to-text/node_modules/htmlparser2/lib/esm/Parser.js.map +1 -0
  177. package/dist/node_modules/html-to-text/node_modules/htmlparser2/lib/esm/Tokenizer.js +736 -0
  178. package/dist/node_modules/html-to-text/node_modules/htmlparser2/lib/esm/Tokenizer.js.map +1 -0
  179. package/dist/node_modules/html-to-text/node_modules/htmlparser2/lib/esm/index.js +19 -0
  180. package/dist/node_modules/html-to-text/node_modules/htmlparser2/lib/esm/index.js.map +1 -0
  181. package/dist/node_modules/leac/lib/leac.js +101 -0
  182. package/dist/node_modules/leac/lib/leac.js.map +1 -0
  183. package/dist/node_modules/parseley/lib/parseley.js +310 -0
  184. package/dist/node_modules/parseley/lib/parseley.js.map +1 -0
  185. package/dist/node_modules/peberminta/lib/core.js +149 -0
  186. package/dist/node_modules/peberminta/lib/core.js.map +1 -0
  187. package/dist/node_modules/selderee/lib/selderee.js +319 -0
  188. package/dist/node_modules/selderee/lib/selderee.js.map +1 -0
  189. package/dist/proxy/protected-route.d.ts +9 -0
  190. package/dist/proxy/protected-route.d.ts.map +1 -0
  191. package/dist/proxy/protected-route.js +40 -0
  192. package/dist/proxy/protected-route.js.map +1 -0
  193. package/dist/proxy/proxy.d.ts +31 -0
  194. package/dist/proxy/proxy.d.ts.map +1 -0
  195. package/dist/proxy/proxy.js +49 -0
  196. package/dist/proxy/proxy.js.map +1 -0
  197. package/dist/proxy/route-auto-detection.d.ts +12 -0
  198. package/dist/proxy/route-auto-detection.d.ts.map +1 -0
  199. package/dist/proxy/route-auto-detection.js +82 -0
  200. package/dist/proxy/route-auto-detection.js.map +1 -0
  201. package/dist/proxy/route-proxy.d.ts +36 -0
  202. package/dist/proxy/route-proxy.d.ts.map +1 -0
  203. package/dist/proxy/route-proxy.js +103 -0
  204. package/dist/proxy/route-proxy.js.map +1 -0
  205. package/dist/server/context.d.ts +30 -0
  206. package/dist/server/context.d.ts.map +1 -0
  207. package/dist/server/context.js +106 -0
  208. package/dist/server/context.js.map +1 -0
  209. package/dist/server/handlers/auth.handler.d.ts +10 -0
  210. package/dist/server/handlers/auth.handler.d.ts.map +1 -0
  211. package/dist/server/handlers/auth.handler.js +29 -0
  212. package/dist/server/handlers/auth.handler.js.map +1 -0
  213. package/dist/server/handlers/captions.handler.d.ts +10 -0
  214. package/dist/server/handlers/captions.handler.d.ts.map +1 -0
  215. package/dist/server/handlers/captions.handler.js +33 -0
  216. package/dist/server/handlers/captions.handler.js.map +1 -0
  217. package/dist/server/handlers/collection.handler.d.ts +36 -0
  218. package/dist/server/handlers/collection.handler.d.ts.map +1 -0
  219. package/dist/server/handlers/collection.handler.js +166 -0
  220. package/dist/server/handlers/collection.handler.js.map +1 -0
  221. package/dist/server/handlers/error-response.js +24 -0
  222. package/dist/server/handlers/error-response.js.map +1 -0
  223. package/dist/server/handlers/index.handler.d.ts +9 -0
  224. package/dist/server/handlers/index.handler.d.ts.map +1 -0
  225. package/dist/server/handlers/index.handler.js +145 -0
  226. package/dist/server/handlers/index.handler.js.map +1 -0
  227. package/dist/server/handlers/preview.handler.d.ts +9 -0
  228. package/dist/server/handlers/preview.handler.d.ts.map +1 -0
  229. package/dist/server/handlers/preview.handler.js +15 -0
  230. package/dist/server/handlers/preview.handler.js.map +1 -0
  231. package/dist/server/handlers/registry.handler.d.ts +16 -0
  232. package/dist/server/handlers/registry.handler.d.ts.map +1 -0
  233. package/dist/server/handlers/registry.handler.js +260 -0
  234. package/dist/server/handlers/registry.handler.js.map +1 -0
  235. package/dist/server/handlers/route.handler.d.ts +20 -0
  236. package/dist/server/handlers/route.handler.d.ts.map +1 -0
  237. package/dist/server/handlers/route.handler.js +122 -0
  238. package/dist/server/handlers/route.handler.js.map +1 -0
  239. package/dist/server/handlers/sitemap.handler.d.ts +30 -0
  240. package/dist/server/handlers/sitemap.handler.d.ts.map +1 -0
  241. package/dist/server/handlers/sitemap.handler.js +338 -0
  242. package/dist/server/handlers/sitemap.handler.js.map +1 -0
  243. package/dist/server/handlers/static-params.handler.d.ts +24 -0
  244. package/dist/server/handlers/static-params.handler.d.ts.map +1 -0
  245. package/dist/server/handlers/static-params.handler.js +56 -0
  246. package/dist/server/handlers/static-params.handler.js.map +1 -0
  247. package/dist/server/handlers/vars.handler.d.ts +10 -0
  248. package/dist/server/handlers/vars.handler.d.ts.map +1 -0
  249. package/dist/server/handlers/vars.handler.js +159 -0
  250. package/dist/server/handlers/vars.handler.js.map +1 -0
  251. package/dist/server/layout.js +88 -0
  252. package/dist/server/layout.js.map +1 -0
  253. package/dist/server/lazy.d.ts +11 -0
  254. package/dist/server/lazy.d.ts.map +1 -0
  255. package/dist/server/lazy.js +33 -0
  256. package/dist/server/lazy.js.map +1 -0
  257. package/dist/server/local-api.d.ts +9 -0
  258. package/dist/server/local-api.d.ts.map +1 -0
  259. package/dist/server/local-api.js +60 -0
  260. package/dist/server/local-api.js.map +1 -0
  261. package/dist/server/metadata.d.ts +21 -0
  262. package/dist/server/metadata.d.ts.map +1 -0
  263. package/dist/server/metadata.js +20 -0
  264. package/dist/server/metadata.js.map +1 -0
  265. package/dist/server/mixer-payload.d.ts +63 -0
  266. package/dist/server/mixer-payload.d.ts.map +1 -0
  267. package/dist/server/mixer.d.ts +214 -0
  268. package/dist/server/mixer.d.ts.map +1 -0
  269. package/dist/server/mixer.js +355 -0
  270. package/dist/server/mixer.js.map +1 -0
  271. package/dist/server/page.d.ts +22 -0
  272. package/dist/server/page.d.ts.map +1 -0
  273. package/dist/server/page.js +57 -0
  274. package/dist/server/page.js.map +1 -0
  275. package/dist/server/utils.d.ts +12 -0
  276. package/dist/server/utils.d.ts.map +1 -0
  277. package/dist/{utils-YwteTbk7.js → server/utils.js} +3 -3
  278. package/dist/server/utils.js.map +1 -0
  279. package/dist/server/utmz.d.ts +9 -0
  280. package/dist/server/utmz.d.ts.map +1 -0
  281. package/dist/server/utmz.js +14 -0
  282. package/dist/server/utmz.js.map +1 -0
  283. package/dist/types.d.ts +136 -0
  284. package/dist/types.d.ts.map +1 -0
  285. package/package.json +1 -1
  286. package/src/index.ts +0 -1
  287. package/dist/exports/client-xcFJNcG7.d.ts +0 -979
  288. package/dist/exports/client-xcFJNcG7.d.ts.map +0 -1
  289. package/dist/exports/client.js.map +0 -1
  290. package/dist/exports/instrumentation-DBO6QH4d.d.ts.map +0 -1
  291. package/dist/exports/instrumentation.js.map +0 -1
  292. package/dist/exports/proxy-Cv7QFVci.d.ts +0 -71
  293. package/dist/exports/proxy-Cv7QFVci.d.ts.map +0 -1
  294. package/dist/exports/proxy.js.map +0 -1
  295. package/dist/exports/server-BHObJHJ6.d.ts +0 -402
  296. package/dist/exports/server-BHObJHJ6.d.ts.map +0 -1
  297. package/dist/exports/server.js.map +0 -1
  298. package/dist/http-_2M-UFRx.js.map +0 -1
  299. package/dist/index-CdYcvudT.d.ts +0 -4
  300. package/dist/index-CtfAJ0y7.d.ts +0 -499
  301. package/dist/index-CtfAJ0y7.d.ts.map +0 -1
  302. package/dist/index.js.map +0 -1
  303. package/dist/route-DzFwERQP.js.map +0 -1
  304. package/dist/store-CJzqrHsl.js.map +0 -1
  305. package/dist/types-BatUTdbZ.d.ts.map +0 -1
  306. package/dist/types-D29_snYY.d.ts +0 -191
  307. package/dist/types-D29_snYY.d.ts.map +0 -1
  308. package/dist/utils-Ca7xh5mm.js +0 -78
  309. package/dist/utils-Ca7xh5mm.js.map +0 -1
  310. package/dist/utils-YwteTbk7.js.map +0 -1
  311. /package/dist/{config.client-B8As5DY0.js → instrumentation/sentry/config.client.js} +0 -0
  312. /package/dist/{config.edge-B8As5DY0.js → instrumentation/sentry/config.edge.js} +0 -0
  313. /package/dist/{config.server-B8As5DY0.js → instrumentation/sentry/config.server.js} +0 -0
@@ -0,0 +1,149 @@
1
+ //#region ../../node_modules/peberminta/lib/core.mjs
2
+ function token(onToken, onEnd) {
3
+ return (data, i) => {
4
+ let position = i;
5
+ let value = void 0;
6
+ if (i < data.tokens.length) {
7
+ value = onToken(data.tokens[i], data, i);
8
+ if (value !== void 0) position++;
9
+ } else onEnd?.(data, i);
10
+ return value === void 0 ? { matched: false } : {
11
+ matched: true,
12
+ position,
13
+ value
14
+ };
15
+ };
16
+ }
17
+ function mapInner(r, f) {
18
+ return r.matched ? {
19
+ matched: true,
20
+ position: r.position,
21
+ value: f(r.value, r.position)
22
+ } : r;
23
+ }
24
+ function mapOuter(r, f) {
25
+ return r.matched ? f(r) : r;
26
+ }
27
+ function map(p, mapper) {
28
+ return (data, i) => mapInner(p(data, i), (v, j) => mapper(v, data, i, j));
29
+ }
30
+ function option(p, def) {
31
+ return (data, i) => {
32
+ const r = p(data, i);
33
+ return r.matched ? r : {
34
+ matched: true,
35
+ position: i,
36
+ value: def
37
+ };
38
+ };
39
+ }
40
+ function choice(...ps) {
41
+ return (data, i) => {
42
+ for (const p of ps) {
43
+ const result = p(data, i);
44
+ if (result.matched) return result;
45
+ }
46
+ return { matched: false };
47
+ };
48
+ }
49
+ function otherwise(pa, pb) {
50
+ return (data, i) => {
51
+ const r1 = pa(data, i);
52
+ return r1.matched ? r1 : pb(data, i);
53
+ };
54
+ }
55
+ function takeWhile(p, test) {
56
+ return (data, i) => {
57
+ const values = [];
58
+ let success = true;
59
+ do {
60
+ const r = p(data, i);
61
+ if (r.matched && test(r.value, values.length + 1, data, i, r.position)) {
62
+ values.push(r.value);
63
+ i = r.position;
64
+ } else success = false;
65
+ } while (success);
66
+ return {
67
+ matched: true,
68
+ position: i,
69
+ value: values
70
+ };
71
+ };
72
+ }
73
+ function many(p) {
74
+ return takeWhile(p, () => true);
75
+ }
76
+ function many1(p) {
77
+ return ab(p, many(p), (head, tail) => [head, ...tail]);
78
+ }
79
+ function ab(pa, pb, join) {
80
+ return (data, i) => mapOuter(pa(data, i), (ma) => mapInner(pb(data, ma.position), (vb, j) => join(ma.value, vb, data, i, j)));
81
+ }
82
+ function left(pa, pb) {
83
+ return ab(pa, pb, (va) => va);
84
+ }
85
+ function right(pa, pb) {
86
+ return ab(pa, pb, (va, vb) => vb);
87
+ }
88
+ function abc(pa, pb, pc, join) {
89
+ return (data, i) => mapOuter(pa(data, i), (ma) => mapOuter(pb(data, ma.position), (mb) => mapInner(pc(data, mb.position), (vc, j) => join(ma.value, mb.value, vc, data, i, j))));
90
+ }
91
+ function middle(pa, pb, pc) {
92
+ return abc(pa, pb, pc, (ra, rb) => rb);
93
+ }
94
+ function all(...ps) {
95
+ return (data, i) => {
96
+ const result = [];
97
+ let position = i;
98
+ for (const p of ps) {
99
+ const r1 = p(data, position);
100
+ if (r1.matched) {
101
+ result.push(r1.value);
102
+ position = r1.position;
103
+ } else return { matched: false };
104
+ }
105
+ return {
106
+ matched: true,
107
+ position,
108
+ value: result
109
+ };
110
+ };
111
+ }
112
+ function flatten(...ps) {
113
+ return flatten1(all(...ps));
114
+ }
115
+ function flatten1(p) {
116
+ return map(p, (vs) => vs.flatMap((v) => v));
117
+ }
118
+ function chainReduce(acc, f) {
119
+ return (data, i) => {
120
+ let loop = true;
121
+ let acc1 = acc;
122
+ let pos = i;
123
+ do {
124
+ const r = f(acc1, data, pos)(data, pos);
125
+ if (r.matched) {
126
+ acc1 = r.value;
127
+ pos = r.position;
128
+ } else loop = false;
129
+ } while (loop);
130
+ return {
131
+ matched: true,
132
+ position: pos,
133
+ value: acc1
134
+ };
135
+ };
136
+ }
137
+ function reduceLeft(acc, p, reducer) {
138
+ return chainReduce(acc, (acc) => map(p, (v, data, i, j) => reducer(acc, v, data, i, j)));
139
+ }
140
+ function leftAssoc2(pLeft, pOper, pRight) {
141
+ return chain(pLeft, (v0) => reduceLeft(v0, ab(pOper, pRight, (f, y) => [f, y]), (acc, [f, y]) => f(acc, y)));
142
+ }
143
+ function chain(p, f) {
144
+ return (data, i) => mapOuter(p(data, i), (m1) => f(m1.value, data, i, m1.position)(data, m1.position));
145
+ }
146
+ //#endregion
147
+ export { ab, abc, all, all as and, chain, chainReduce, choice, choice as or, otherwise as eitherOr, otherwise, flatten, flatten1, left, leftAssoc2, many, many1, many1 as some, map, middle, option, reduceLeft, right, takeWhile, token };
148
+
149
+ //# sourceMappingURL=core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.js","names":[],"sources":["../../../../../../node_modules/peberminta/lib/core.mjs"],"sourcesContent":["import { clamp, escapeWhitespace } from './util.mjs';\n\nfunction emit(value) {\n return (data, i) => ({\n matched: true,\n position: i,\n value: value\n });\n}\nfunction make(\nf) {\n return (data, i) => ({\n matched: true,\n position: i,\n value: f(data, i)\n });\n}\nfunction action(\nf) {\n return (data, i) => {\n f(data, i);\n return {\n matched: true,\n position: i,\n value: null\n };\n };\n}\nfunction fail(\ndata, i) {\n return { matched: false };\n}\nfunction error(message) {\n return (data, i) => {\n throw new Error((message instanceof Function) ? message(data, i) : message);\n };\n}\nfunction token(\nonToken,\nonEnd) {\n return (data, i) => {\n let position = i;\n let value = undefined;\n if (i < data.tokens.length) {\n value = onToken(data.tokens[i], data, i);\n if (value !== undefined) {\n position++;\n }\n }\n else {\n onEnd?.(data, i);\n }\n return (value === undefined)\n ? { matched: false }\n : {\n matched: true,\n position: position,\n value: value\n };\n };\n}\nfunction any(data, i) {\n return (i < data.tokens.length)\n ? {\n matched: true,\n position: i + 1,\n value: data.tokens[i]\n }\n : { matched: false };\n}\nfunction satisfy(\ntest) {\n return (data, i) => (i < data.tokens.length && test(data.tokens[i], data, i))\n ? {\n matched: true,\n position: i + 1,\n value: data.tokens[i]\n }\n : { matched: false };\n}\nfunction mapInner(r, f) {\n return (r.matched) ? ({\n matched: true,\n position: r.position,\n value: f(r.value, r.position)\n }) : r;\n}\nfunction mapOuter(r, f) {\n return (r.matched) ? f(r) : r;\n}\nfunction map(p, mapper) {\n return (data, i) => mapInner(p(data, i), (v, j) => mapper(v, data, i, j));\n}\nfunction map1(p,\nmapper) {\n return (data, i) => mapOuter(p(data, i), (m) => mapper(m, data, i));\n}\nfunction peek(p, f) {\n return (data, i) => {\n const r = p(data, i);\n f(r, data, i);\n return r;\n };\n}\nfunction option(p, def) {\n return (data, i) => {\n const r = p(data, i);\n return (r.matched)\n ? r\n : {\n matched: true,\n position: i,\n value: def\n };\n };\n}\nfunction not(p) {\n return (data, i) => {\n const r = p(data, i);\n return (r.matched)\n ? { matched: false }\n : {\n matched: true,\n position: i,\n value: true\n };\n };\n}\nfunction choice(...ps) {\n return (data, i) => {\n for (const p of ps) {\n const result = p(data, i);\n if (result.matched) {\n return result;\n }\n }\n return { matched: false };\n };\n}\nfunction otherwise(pa, pb) {\n return (data, i) => {\n const r1 = pa(data, i);\n return (r1.matched)\n ? r1\n : pb(data, i);\n };\n}\nfunction longest(...ps) {\n return (data, i) => {\n let match = undefined;\n for (const p of ps) {\n const result = p(data, i);\n if (result.matched && (!match || match.position < result.position)) {\n match = result;\n }\n }\n return match || { matched: false };\n };\n}\nfunction takeWhile(p,\ntest) {\n return (data, i) => {\n const values = [];\n let success = true;\n do {\n const r = p(data, i);\n if (r.matched && test(r.value, values.length + 1, data, i, r.position)) {\n values.push(r.value);\n i = r.position;\n }\n else {\n success = false;\n }\n } while (success);\n return {\n matched: true,\n position: i,\n value: values\n };\n };\n}\nfunction takeUntil(p,\ntest) {\n return takeWhile(p, (value, n, data, i, j) => !test(value, n, data, i, j));\n}\nfunction takeWhileP(pValue, pTest) {\n return takeWhile(pValue, (value, n, data, i) => pTest(data, i).matched);\n}\nfunction takeUntilP(pValue, pTest) {\n return takeWhile(pValue, (value, n, data, i) => !pTest(data, i).matched);\n}\nfunction many(p) {\n return takeWhile(p, () => true);\n}\nfunction many1(p) {\n return ab(p, many(p), (head, tail) => [head, ...tail]);\n}\nfunction ab(pa, pb, join) {\n return (data, i) => mapOuter(pa(data, i), (ma) => mapInner(pb(data, ma.position), (vb, j) => join(ma.value, vb, data, i, j)));\n}\nfunction left(pa, pb) {\n return ab(pa, pb, (va) => va);\n}\nfunction right(pa, pb) {\n return ab(pa, pb, (va, vb) => vb);\n}\nfunction abc(pa, pb, pc, join) {\n return (data, i) => mapOuter(pa(data, i), (ma) => mapOuter(pb(data, ma.position), (mb) => mapInner(pc(data, mb.position), (vc, j) => join(ma.value, mb.value, vc, data, i, j))));\n}\nfunction middle(pa, pb, pc) {\n return abc(pa, pb, pc, (ra, rb) => rb);\n}\nfunction all(...ps) {\n return (data, i) => {\n const result = [];\n let position = i;\n for (const p of ps) {\n const r1 = p(data, position);\n if (r1.matched) {\n result.push(r1.value);\n position = r1.position;\n }\n else {\n return { matched: false };\n }\n }\n return {\n matched: true,\n position: position,\n value: result\n };\n };\n}\nfunction skip(...ps) {\n return map(all(...ps), () => null);\n}\nfunction flatten(...ps) {\n return flatten1(all(...ps));\n}\nfunction flatten1(p) {\n return map(p, (vs) => vs.flatMap((v) => v));\n}\nfunction sepBy1(pValue, pSep) {\n return ab(pValue, many(right(pSep, pValue)), (head, tail) => [head, ...tail]);\n}\nfunction sepBy(pValue, pSep) {\n return otherwise(sepBy1(pValue, pSep), emit([]));\n}\nfunction chainReduce(acc,\nf) {\n return (data, i) => {\n let loop = true;\n let acc1 = acc;\n let pos = i;\n do {\n const r = f(acc1, data, pos)(data, pos);\n if (r.matched) {\n acc1 = r.value;\n pos = r.position;\n }\n else {\n loop = false;\n }\n } while (loop);\n return {\n matched: true,\n position: pos,\n value: acc1\n };\n };\n}\nfunction reduceLeft(acc, p,\nreducer) {\n return chainReduce(acc, (acc) => map(p, (v, data, i, j) => reducer(acc, v, data, i, j)));\n}\nfunction reduceRight(p, acc,\nreducer) {\n return map(many(p), (vs, data, i, j) => vs.reduceRight((acc, v) => reducer(v, acc, data, i, j), acc));\n}\nfunction leftAssoc1(pLeft, pOper) {\n return chain(pLeft, (v0) => reduceLeft(v0, pOper, (acc, f) => f(acc)));\n}\nfunction rightAssoc1(pOper, pRight) {\n return ab(reduceRight(pOper, (y) => y, (f, acc) => (y) => f(acc(y))), pRight, (f, v) => f(v));\n}\nfunction leftAssoc2(pLeft, pOper, pRight) {\n return chain(pLeft, (v0) => reduceLeft(v0, ab(pOper, pRight, (f, y) => [f, y]), (acc, [f, y]) => f(acc, y)));\n}\nfunction rightAssoc2(pLeft, pOper, pRight) {\n return ab(reduceRight(ab(pLeft, pOper, (x, f) => [x, f]), (y) => y, ([x, f], acc) => (y) => f(x, acc(y))), pRight, (f, v) => f(v));\n}\nfunction condition(cond, pTrue, pFalse) {\n return (data, i) => (cond(data, i))\n ? pTrue(data, i)\n : pFalse(data, i);\n}\nfunction decide(p) {\n return (data, i) => mapOuter(p(data, i), (m1) => m1.value(data, m1.position));\n}\nfunction chain(p,\nf) {\n return (data, i) => mapOuter(p(data, i), (m1) => f(m1.value, data, i, m1.position)(data, m1.position));\n}\nfunction ahead(p) {\n return (data, i) => mapOuter(p(data, i), (m1) => ({\n matched: true,\n position: i,\n value: m1.value\n }));\n}\nfunction recursive(f) {\n return function (data, i) {\n return f()(data, i);\n };\n}\nfunction start(data, i) {\n return (i !== 0)\n ? { matched: false }\n : {\n matched: true,\n position: i,\n value: true\n };\n}\nfunction end(data, i) {\n return (i < data.tokens.length)\n ? { matched: false }\n : {\n matched: true,\n position: i,\n value: true\n };\n}\nfunction remainingTokensNumber(data, i) {\n return data.tokens.length - i;\n}\nfunction parserPosition(data, i, formatToken, contextTokens = 3) {\n const len = data.tokens.length;\n const lowIndex = clamp(0, i - contextTokens, len - contextTokens);\n const highIndex = clamp(contextTokens, i + 1 + contextTokens, len);\n const tokensSlice = data.tokens.slice(lowIndex, highIndex);\n const lines = [];\n const indexWidth = String(highIndex - 1).length + 1;\n if (i < 0) {\n lines.push(`${String(i).padStart(indexWidth)} >>`);\n }\n if (0 < lowIndex) {\n lines.push('...'.padStart(indexWidth + 6));\n }\n for (let j = 0; j < tokensSlice.length; j++) {\n const index = lowIndex + j;\n lines.push(`${String(index).padStart(indexWidth)} ${(index === i ? '>' : ' ')} ${escapeWhitespace(formatToken(tokensSlice[j]))}`);\n }\n if (highIndex < len) {\n lines.push('...'.padStart(indexWidth + 6));\n }\n if (len <= i) {\n lines.push(`${String(i).padStart(indexWidth)} >>`);\n }\n return lines.join('\\n');\n}\nfunction parse(parser, tokens, options, formatToken = JSON.stringify) {\n const data = { tokens: tokens, options: options };\n const result = parser(data, 0);\n if (!result.matched) {\n throw new Error('No match');\n }\n if (result.position < data.tokens.length) {\n throw new Error(`Partial match. Parsing stopped at:\\n${parserPosition(data, result.position, formatToken)}`);\n }\n return result.value;\n}\nfunction tryParse(parser, tokens, options) {\n const result = parser({ tokens: tokens, options: options }, 0);\n return (result.matched)\n ? result.value\n : undefined;\n}\nfunction match(matcher, tokens, options) {\n const result = matcher({ tokens: tokens, options: options }, 0);\n return result.value;\n}\n\nexport { ab, abc, action, ahead, all, all as and, any, chain, chainReduce, choice, condition, decide, skip as discard, otherwise as eitherOr, emit, end, end as eof, error, fail, flatten, flatten1, left, leftAssoc1, leftAssoc2, longest, ahead as lookAhead, make, many, many1, map, map1, match, middle, not, emit as of, option, choice as or, otherwise, parse, parserPosition, peek, recursive, reduceLeft, reduceRight, remainingTokensNumber, right, rightAssoc1, rightAssoc2, satisfy, sepBy, sepBy1, skip, many1 as some, start, takeUntil, takeUntilP, takeWhile, takeWhileP, token, tryParse };\n"],"x_google_ignoreList":[0],"mappings":";AAqCA,SAAS,MACT,SACA,OAAO;CACH,QAAQ,MAAM,MAAM;EAChB,IAAI,WAAW;EACf,IAAI,QAAQ,KAAA;EACZ,IAAI,IAAI,KAAK,OAAO,QAAQ;GACxB,QAAQ,QAAQ,KAAK,OAAO,IAAI,MAAM,CAAC;GACvC,IAAI,UAAU,KAAA,GACV;EAER,OAEI,QAAQ,MAAM,CAAC;EAEnB,OAAQ,UAAU,KAAA,IACZ,EAAE,SAAS,MAAM,IACjB;GACE,SAAS;GACC;GACH;EACX;CACR;AACJ;AAoBA,SAAS,SAAS,GAAG,GAAG;CACpB,OAAQ,EAAE,UAAY;EAClB,SAAS;EACT,UAAU,EAAE;EACZ,OAAO,EAAE,EAAE,OAAO,EAAE,QAAQ;CAChC,IAAK;AACT;AACA,SAAS,SAAS,GAAG,GAAG;CACpB,OAAQ,EAAE,UAAW,EAAE,CAAC,IAAI;AAChC;AACA,SAAS,IAAI,GAAG,QAAQ;CACpB,QAAQ,MAAM,MAAM,SAAS,EAAE,MAAM,CAAC,IAAI,GAAG,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,CAAC;AAC5E;AAYA,SAAS,OAAO,GAAG,KAAK;CACpB,QAAQ,MAAM,MAAM;EAChB,MAAM,IAAI,EAAE,MAAM,CAAC;EACnB,OAAQ,EAAE,UACJ,IACA;GACE,SAAS;GACT,UAAU;GACV,OAAO;EACX;CACR;AACJ;AAaA,SAAS,OAAO,GAAG,IAAI;CACnB,QAAQ,MAAM,MAAM;EAChB,KAAK,MAAM,KAAK,IAAI;GAChB,MAAM,SAAS,EAAE,MAAM,CAAC;GACxB,IAAI,OAAO,SACP,OAAO;EAEf;EACA,OAAO,EAAE,SAAS,MAAM;CAC5B;AACJ;AACA,SAAS,UAAU,IAAI,IAAI;CACvB,QAAQ,MAAM,MAAM;EAChB,MAAM,KAAK,GAAG,MAAM,CAAC;EACrB,OAAQ,GAAG,UACL,KACA,GAAG,MAAM,CAAC;CACpB;AACJ;AAaA,SAAS,UAAU,GACnB,MAAM;CACF,QAAQ,MAAM,MAAM;EAChB,MAAM,SAAS,CAAC;EAChB,IAAI,UAAU;EACd,GAAG;GACC,MAAM,IAAI,EAAE,MAAM,CAAC;GACnB,IAAI,EAAE,WAAW,KAAK,EAAE,OAAO,OAAO,SAAS,GAAG,MAAM,GAAG,EAAE,QAAQ,GAAG;IACpE,OAAO,KAAK,EAAE,KAAK;IACnB,IAAI,EAAE;GACV,OAEI,UAAU;EAElB,SAAS;EACT,OAAO;GACH,SAAS;GACT,UAAU;GACV,OAAO;EACX;CACJ;AACJ;AAWA,SAAS,KAAK,GAAG;CACb,OAAO,UAAU,SAAS,IAAI;AAClC;AACA,SAAS,MAAM,GAAG;CACd,OAAO,GAAG,GAAG,KAAK,CAAC,IAAI,MAAM,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC;AACzD;AACA,SAAS,GAAG,IAAI,IAAI,MAAM;CACtB,QAAQ,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,OAAO,SAAS,GAAG,MAAM,GAAG,QAAQ,IAAI,IAAI,MAAM,KAAK,GAAG,OAAO,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC;AAChI;AACA,SAAS,KAAK,IAAI,IAAI;CAClB,OAAO,GAAG,IAAI,KAAK,OAAO,EAAE;AAChC;AACA,SAAS,MAAM,IAAI,IAAI;CACnB,OAAO,GAAG,IAAI,KAAK,IAAI,OAAO,EAAE;AACpC;AACA,SAAS,IAAI,IAAI,IAAI,IAAI,MAAM;CAC3B,QAAQ,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,OAAO,SAAS,GAAG,MAAM,GAAG,QAAQ,IAAI,OAAO,SAAS,GAAG,MAAM,GAAG,QAAQ,IAAI,IAAI,MAAM,KAAK,GAAG,OAAO,GAAG,OAAO,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AACnL;AACA,SAAS,OAAO,IAAI,IAAI,IAAI;CACxB,OAAO,IAAI,IAAI,IAAI,KAAK,IAAI,OAAO,EAAE;AACzC;AACA,SAAS,IAAI,GAAG,IAAI;CAChB,QAAQ,MAAM,MAAM;EAChB,MAAM,SAAS,CAAC;EAChB,IAAI,WAAW;EACf,KAAK,MAAM,KAAK,IAAI;GAChB,MAAM,KAAK,EAAE,MAAM,QAAQ;GAC3B,IAAI,GAAG,SAAS;IACZ,OAAO,KAAK,GAAG,KAAK;IACpB,WAAW,GAAG;GAClB,OAEI,OAAO,EAAE,SAAS,MAAM;EAEhC;EACA,OAAO;GACH,SAAS;GACC;GACV,OAAO;EACX;CACJ;AACJ;AAIA,SAAS,QAAQ,GAAG,IAAI;CACpB,OAAO,SAAS,IAAI,GAAG,EAAE,CAAC;AAC9B;AACA,SAAS,SAAS,GAAG;CACjB,OAAO,IAAI,IAAI,OAAO,GAAG,SAAS,MAAM,CAAC,CAAC;AAC9C;AAOA,SAAS,YAAY,KACrB,GAAG;CACC,QAAQ,MAAM,MAAM;EAChB,IAAI,OAAO;EACX,IAAI,OAAO;EACX,IAAI,MAAM;EACV,GAAG;GACC,MAAM,IAAI,EAAE,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,GAAG;GACtC,IAAI,EAAE,SAAS;IACX,OAAO,EAAE;IACT,MAAM,EAAE;GACZ,OAEI,OAAO;EAEf,SAAS;EACT,OAAO;GACH,SAAS;GACT,UAAU;GACV,OAAO;EACX;CACJ;AACJ;AACA,SAAS,WAAW,KAAK,GACzB,SAAS;CACL,OAAO,YAAY,MAAM,QAAQ,IAAI,IAAI,GAAG,MAAM,GAAG,MAAM,QAAQ,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC;AAC3F;AAWA,SAAS,WAAW,OAAO,OAAO,QAAQ;CACtC,OAAO,MAAM,QAAQ,OAAO,WAAW,IAAI,GAAG,OAAO,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;AAC/G;AAYA,SAAS,MAAM,GACf,GAAG;CACC,QAAQ,MAAM,MAAM,SAAS,EAAE,MAAM,CAAC,IAAI,OAAO,EAAE,GAAG,OAAO,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,MAAM,GAAG,QAAQ,CAAC;AACzG"}
@@ -0,0 +1,319 @@
1
+ import { compareSpecificity, normalize, parse1, serialize } from "../../parseley/lib/parseley.js";
2
+ //#region ../../node_modules/selderee/lib/selderee.mjs
3
+ var DecisionTree = class {
4
+ constructor(input) {
5
+ this.branches = weave(toAstTerminalPairs(input));
6
+ }
7
+ build(builder) {
8
+ return builder(this.branches);
9
+ }
10
+ };
11
+ function toAstTerminalPairs(array) {
12
+ const len = array.length;
13
+ const results = new Array(len);
14
+ for (let i = 0; i < len; i++) {
15
+ const [selectorString, val] = array[i];
16
+ const ast = preprocess(parse1(selectorString));
17
+ results[i] = {
18
+ ast,
19
+ terminal: {
20
+ type: "terminal",
21
+ valueContainer: {
22
+ index: i,
23
+ value: val,
24
+ specificity: ast.specificity
25
+ }
26
+ }
27
+ };
28
+ }
29
+ return results;
30
+ }
31
+ function preprocess(ast) {
32
+ reduceSelectorVariants(ast);
33
+ normalize(ast);
34
+ return ast;
35
+ }
36
+ function reduceSelectorVariants(ast) {
37
+ const newList = [];
38
+ ast.list.forEach((sel) => {
39
+ switch (sel.type) {
40
+ case "class":
41
+ newList.push({
42
+ matcher: "~=",
43
+ modifier: null,
44
+ name: "class",
45
+ namespace: null,
46
+ specificity: sel.specificity,
47
+ type: "attrValue",
48
+ value: sel.name
49
+ });
50
+ break;
51
+ case "id":
52
+ newList.push({
53
+ matcher: "=",
54
+ modifier: null,
55
+ name: "id",
56
+ namespace: null,
57
+ specificity: sel.specificity,
58
+ type: "attrValue",
59
+ value: sel.name
60
+ });
61
+ break;
62
+ case "combinator":
63
+ reduceSelectorVariants(sel.left);
64
+ newList.push(sel);
65
+ break;
66
+ case "universal": break;
67
+ default: newList.push(sel);
68
+ }
69
+ });
70
+ ast.list = newList;
71
+ }
72
+ function weave(items) {
73
+ const branches = [];
74
+ while (items.length) {
75
+ const topKind = findTopKey(items, (sel) => true, getSelectorKind);
76
+ const { matches, nonmatches, empty } = breakByKind(items, topKind);
77
+ items = nonmatches;
78
+ if (matches.length) branches.push(branchOfKind(topKind, matches));
79
+ if (empty.length) branches.push(...terminate(empty));
80
+ }
81
+ return branches;
82
+ }
83
+ function terminate(items) {
84
+ const results = [];
85
+ for (const item of items) {
86
+ const terminal = item.terminal;
87
+ if (terminal.type === "terminal") results.push(terminal);
88
+ else {
89
+ const { matches, rest } = partition(terminal.cont, (node) => node.type === "terminal");
90
+ matches.forEach((node) => results.push(node));
91
+ if (rest.length) {
92
+ terminal.cont = rest;
93
+ results.push(terminal);
94
+ }
95
+ }
96
+ }
97
+ return results;
98
+ }
99
+ function breakByKind(items, selectedKind) {
100
+ const matches = [];
101
+ const nonmatches = [];
102
+ const empty = [];
103
+ for (const item of items) {
104
+ const simpsels = item.ast.list;
105
+ if (simpsels.length) (simpsels.some((node) => getSelectorKind(node) === selectedKind) ? matches : nonmatches).push(item);
106
+ else empty.push(item);
107
+ }
108
+ return {
109
+ matches,
110
+ nonmatches,
111
+ empty
112
+ };
113
+ }
114
+ function getSelectorKind(sel) {
115
+ switch (sel.type) {
116
+ case "attrPresence": return `attrPresence ${sel.name}`;
117
+ case "attrValue": return `attrValue ${sel.name}`;
118
+ case "combinator": return `combinator ${sel.combinator}`;
119
+ default: return sel.type;
120
+ }
121
+ }
122
+ function branchOfKind(kind, items) {
123
+ if (kind === "tag") return tagNameBranch(items);
124
+ if (kind.startsWith("attrValue ")) return attrValueBranch(kind.substring(10), items);
125
+ if (kind.startsWith("attrPresence ")) return attrPresenceBranch(kind.substring(13), items);
126
+ if (kind === "combinator >") return combinatorBranch(">", items);
127
+ if (kind === "combinator +") return combinatorBranch("+", items);
128
+ throw new Error(`Unsupported selector kind: ${kind}`);
129
+ }
130
+ function tagNameBranch(items) {
131
+ const groups = spliceAndGroup(items, (x) => x.type === "tag", (x) => x.name);
132
+ return {
133
+ type: "tagName",
134
+ variants: Object.entries(groups).map(([name, group]) => ({
135
+ type: "variant",
136
+ value: name,
137
+ cont: weave(group.items)
138
+ }))
139
+ };
140
+ }
141
+ function attrPresenceBranch(name, items) {
142
+ for (const item of items) spliceSimpleSelector(item, (x) => x.type === "attrPresence" && x.name === name);
143
+ return {
144
+ type: "attrPresence",
145
+ name,
146
+ cont: weave(items)
147
+ };
148
+ }
149
+ function attrValueBranch(name, items) {
150
+ const groups = spliceAndGroup(items, (x) => x.type === "attrValue" && x.name === name, (x) => `${x.matcher} ${x.modifier || ""} ${x.value}`);
151
+ const matchers = [];
152
+ for (const group of Object.values(groups)) {
153
+ const sel = group.oneSimpleSelector;
154
+ const predicate = getAttrPredicate(sel);
155
+ const continuation = weave(group.items);
156
+ matchers.push({
157
+ type: "matcher",
158
+ matcher: sel.matcher,
159
+ modifier: sel.modifier,
160
+ value: sel.value,
161
+ predicate,
162
+ cont: continuation
163
+ });
164
+ }
165
+ return {
166
+ type: "attrValue",
167
+ name,
168
+ matchers
169
+ };
170
+ }
171
+ function getAttrPredicate(sel) {
172
+ if (sel.modifier === "i") {
173
+ const expected = sel.value.toLowerCase();
174
+ switch (sel.matcher) {
175
+ case "=": return (actual) => expected === actual.toLowerCase();
176
+ case "~=": return (actual) => actual.toLowerCase().split(/[ \t]+/).includes(expected);
177
+ case "^=": return (actual) => actual.toLowerCase().startsWith(expected);
178
+ case "$=": return (actual) => actual.toLowerCase().endsWith(expected);
179
+ case "*=": return (actual) => actual.toLowerCase().includes(expected);
180
+ case "|=": return (actual) => {
181
+ const lower = actual.toLowerCase();
182
+ return expected === lower || lower.startsWith(expected) && lower[expected.length] === "-";
183
+ };
184
+ }
185
+ } else {
186
+ const expected = sel.value;
187
+ switch (sel.matcher) {
188
+ case "=": return (actual) => expected === actual;
189
+ case "~=": return (actual) => actual.split(/[ \t]+/).includes(expected);
190
+ case "^=": return (actual) => actual.startsWith(expected);
191
+ case "$=": return (actual) => actual.endsWith(expected);
192
+ case "*=": return (actual) => actual.includes(expected);
193
+ case "|=": return (actual) => expected === actual || actual.startsWith(expected) && actual[expected.length] === "-";
194
+ }
195
+ }
196
+ }
197
+ function combinatorBranch(combinator, items) {
198
+ const groups = spliceAndGroup(items, (x) => x.type === "combinator" && x.combinator === combinator, (x) => serialize(x.left));
199
+ const leftItems = [];
200
+ for (const group of Object.values(groups)) {
201
+ const rightCont = weave(group.items);
202
+ const leftAst = group.oneSimpleSelector.left;
203
+ leftItems.push({
204
+ ast: leftAst,
205
+ terminal: {
206
+ type: "popElement",
207
+ cont: rightCont
208
+ }
209
+ });
210
+ }
211
+ return {
212
+ type: "pushElement",
213
+ combinator,
214
+ cont: weave(leftItems)
215
+ };
216
+ }
217
+ function spliceAndGroup(items, predicate, keyCallback) {
218
+ const groups = {};
219
+ while (items.length) {
220
+ const bestKey = findTopKey(items, predicate, keyCallback);
221
+ const bestKeyPredicate = (sel) => predicate(sel) && keyCallback(sel) === bestKey;
222
+ const hasBestKeyPredicate = (item) => item.ast.list.some(bestKeyPredicate);
223
+ const { matches, rest } = partition1(items, hasBestKeyPredicate);
224
+ let oneSimpleSelector = null;
225
+ for (const item of matches) {
226
+ const splicedNode = spliceSimpleSelector(item, bestKeyPredicate);
227
+ if (!oneSimpleSelector) oneSimpleSelector = splicedNode;
228
+ }
229
+ if (oneSimpleSelector == null) throw new Error("No simple selector is found.");
230
+ groups[bestKey] = {
231
+ oneSimpleSelector,
232
+ items: matches
233
+ };
234
+ items = rest;
235
+ }
236
+ return groups;
237
+ }
238
+ function spliceSimpleSelector(item, predicate) {
239
+ const simpsels = item.ast.list;
240
+ const matches = new Array(simpsels.length);
241
+ let firstIndex = -1;
242
+ for (let i = simpsels.length; i-- > 0;) if (predicate(simpsels[i])) {
243
+ matches[i] = true;
244
+ firstIndex = i;
245
+ }
246
+ if (firstIndex == -1) throw new Error(`Couldn't find the required simple selector.`);
247
+ const result = simpsels[firstIndex];
248
+ item.ast.list = simpsels.filter((sel, i) => !matches[i]);
249
+ return result;
250
+ }
251
+ function findTopKey(items, predicate, keyCallback) {
252
+ const candidates = {};
253
+ for (const item of items) {
254
+ const candidates1 = {};
255
+ for (const node of item.ast.list.filter(predicate)) candidates1[keyCallback(node)] = true;
256
+ for (const key of Object.keys(candidates1)) if (candidates[key]) candidates[key]++;
257
+ else candidates[key] = 1;
258
+ }
259
+ let topKind = "";
260
+ let topCounter = 0;
261
+ for (const entry of Object.entries(candidates)) if (entry[1] > topCounter) {
262
+ topKind = entry[0];
263
+ topCounter = entry[1];
264
+ }
265
+ return topKind;
266
+ }
267
+ function partition(src, predicate) {
268
+ const matches = [];
269
+ const rest = [];
270
+ for (const x of src) if (predicate(x)) matches.push(x);
271
+ else rest.push(x);
272
+ return {
273
+ matches,
274
+ rest
275
+ };
276
+ }
277
+ function partition1(src, predicate) {
278
+ const matches = [];
279
+ const rest = [];
280
+ for (const x of src) if (predicate(x)) matches.push(x);
281
+ else rest.push(x);
282
+ return {
283
+ matches,
284
+ rest
285
+ };
286
+ }
287
+ var Picker = class {
288
+ constructor(f) {
289
+ this.f = f;
290
+ }
291
+ pickAll(el) {
292
+ return this.f(el);
293
+ }
294
+ pick1(el, preferFirst = false) {
295
+ const results = this.f(el);
296
+ const len = results.length;
297
+ if (len === 0) return null;
298
+ if (len === 1) return results[0].value;
299
+ const comparator = preferFirst ? comparatorPreferFirst : comparatorPreferLast;
300
+ let result = results[0];
301
+ for (let i = 1; i < len; i++) {
302
+ const next = results[i];
303
+ if (comparator(result, next)) result = next;
304
+ }
305
+ return result.value;
306
+ }
307
+ };
308
+ function comparatorPreferFirst(acc, next) {
309
+ const diff = compareSpecificity(next.specificity, acc.specificity);
310
+ return diff > 0 || diff === 0 && next.index < acc.index;
311
+ }
312
+ function comparatorPreferLast(acc, next) {
313
+ const diff = compareSpecificity(next.specificity, acc.specificity);
314
+ return diff > 0 || diff === 0 && next.index > acc.index;
315
+ }
316
+ //#endregion
317
+ export { DecisionTree, Picker };
318
+
319
+ //# sourceMappingURL=selderee.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selderee.js","names":["parseley.parse1","parseley.serialize"],"sources":["../../../../../../node_modules/selderee/lib/selderee.mjs"],"sourcesContent":["import * as parseley from 'parseley';\nimport { compareSpecificity } from 'parseley';\n\nvar Ast = /*#__PURE__*/Object.freeze({\n __proto__: null\n});\n\nvar Types = /*#__PURE__*/Object.freeze({\n __proto__: null\n});\n\nconst treeify = (nodes) => '▽\\n' + treeifyArray(nodes, thinLines);\nconst thinLines = [['├─', '│ '], ['└─', ' ']];\nconst heavyLines = [['┠─', '┃ '], ['┖─', ' ']];\nconst doubleLines = [['╟─', '║ '], ['╙─', ' ']];\nfunction treeifyArray(nodes, tpl = heavyLines) {\n return prefixItems(tpl, nodes.map(n => treeifyNode(n)));\n}\nfunction treeifyNode(node) {\n switch (node.type) {\n case 'terminal': {\n const vctr = node.valueContainer;\n return `◁ #${vctr.index} ${JSON.stringify(vctr.specificity)} ${vctr.value}`;\n }\n case 'tagName':\n return `◻ Tag name\\n${treeifyArray(node.variants, doubleLines)}`;\n case 'attrValue':\n return `▣ Attr value: ${node.name}\\n${treeifyArray(node.matchers, doubleLines)}`;\n case 'attrPresence':\n return `◨ Attr presence: ${node.name}\\n${treeifyArray(node.cont)}`;\n case 'pushElement':\n return `◉ Push element: ${node.combinator}\\n${treeifyArray(node.cont, thinLines)}`;\n case 'popElement':\n return `◌ Pop element\\n${treeifyArray(node.cont, thinLines)}`;\n case 'variant':\n return `◇ = ${node.value}\\n${treeifyArray(node.cont)}`;\n case 'matcher':\n return `◈ ${node.matcher} \"${node.value}\"${node.modifier || ''}\\n${treeifyArray(node.cont)}`;\n }\n}\nfunction prefixItems(tpl, items) {\n return items\n .map((item, i, { length }) => prefixItem(tpl, item, i === length - 1))\n .join('\\n');\n}\nfunction prefixItem(tpl, item, tail = true) {\n const tpl1 = tpl[tail ? 1 : 0];\n return tpl1[0] + item.split('\\n').join('\\n' + tpl1[1]);\n}\n\nvar TreeifyBuilder = /*#__PURE__*/Object.freeze({\n __proto__: null,\n treeify: treeify\n});\n\nclass DecisionTree {\n constructor(input) {\n this.branches = weave(toAstTerminalPairs(input));\n }\n build(builder) {\n return builder(this.branches);\n }\n}\nfunction toAstTerminalPairs(array) {\n const len = array.length;\n const results = new Array(len);\n for (let i = 0; i < len; i++) {\n const [selectorString, val] = array[i];\n const ast = preprocess(parseley.parse1(selectorString));\n results[i] = {\n ast: ast,\n terminal: {\n type: 'terminal',\n valueContainer: { index: i, value: val, specificity: ast.specificity }\n }\n };\n }\n return results;\n}\nfunction preprocess(ast) {\n reduceSelectorVariants(ast);\n parseley.normalize(ast);\n return ast;\n}\nfunction reduceSelectorVariants(ast) {\n const newList = [];\n ast.list.forEach(sel => {\n switch (sel.type) {\n case 'class':\n newList.push({\n matcher: '~=',\n modifier: null,\n name: 'class',\n namespace: null,\n specificity: sel.specificity,\n type: 'attrValue',\n value: sel.name,\n });\n break;\n case 'id':\n newList.push({\n matcher: '=',\n modifier: null,\n name: 'id',\n namespace: null,\n specificity: sel.specificity,\n type: 'attrValue',\n value: sel.name,\n });\n break;\n case 'combinator':\n reduceSelectorVariants(sel.left);\n newList.push(sel);\n break;\n case 'universal':\n break;\n default:\n newList.push(sel);\n break;\n }\n });\n ast.list = newList;\n}\nfunction weave(items) {\n const branches = [];\n while (items.length) {\n const topKind = findTopKey(items, (sel) => true, getSelectorKind);\n const { matches, nonmatches, empty } = breakByKind(items, topKind);\n items = nonmatches;\n if (matches.length) {\n branches.push(branchOfKind(topKind, matches));\n }\n if (empty.length) {\n branches.push(...terminate(empty));\n }\n }\n return branches;\n}\nfunction terminate(items) {\n const results = [];\n for (const item of items) {\n const terminal = item.terminal;\n if (terminal.type === 'terminal') {\n results.push(terminal);\n }\n else {\n const { matches, rest } = partition(terminal.cont, (node) => node.type === 'terminal');\n matches.forEach((node) => results.push(node));\n if (rest.length) {\n terminal.cont = rest;\n results.push(terminal);\n }\n }\n }\n return results;\n}\nfunction breakByKind(items, selectedKind) {\n const matches = [];\n const nonmatches = [];\n const empty = [];\n for (const item of items) {\n const simpsels = item.ast.list;\n if (simpsels.length) {\n const isMatch = simpsels.some(node => getSelectorKind(node) === selectedKind);\n (isMatch ? matches : nonmatches).push(item);\n }\n else {\n empty.push(item);\n }\n }\n return { matches, nonmatches, empty };\n}\nfunction getSelectorKind(sel) {\n switch (sel.type) {\n case 'attrPresence':\n return `attrPresence ${sel.name}`;\n case 'attrValue':\n return `attrValue ${sel.name}`;\n case 'combinator':\n return `combinator ${sel.combinator}`;\n default:\n return sel.type;\n }\n}\nfunction branchOfKind(kind, items) {\n if (kind === 'tag') {\n return tagNameBranch(items);\n }\n if (kind.startsWith('attrValue ')) {\n return attrValueBranch(kind.substring(10), items);\n }\n if (kind.startsWith('attrPresence ')) {\n return attrPresenceBranch(kind.substring(13), items);\n }\n if (kind === 'combinator >') {\n return combinatorBranch('>', items);\n }\n if (kind === 'combinator +') {\n return combinatorBranch('+', items);\n }\n throw new Error(`Unsupported selector kind: ${kind}`);\n}\nfunction tagNameBranch(items) {\n const groups = spliceAndGroup(items, (x) => x.type === 'tag', (x) => x.name);\n const variants = Object.entries(groups).map(([name, group]) => ({\n type: 'variant',\n value: name,\n cont: weave(group.items)\n }));\n return {\n type: 'tagName',\n variants: variants\n };\n}\nfunction attrPresenceBranch(name, items) {\n for (const item of items) {\n spliceSimpleSelector(item, (x) => (x.type === 'attrPresence') && (x.name === name));\n }\n return {\n type: 'attrPresence',\n name: name,\n cont: weave(items)\n };\n}\nfunction attrValueBranch(name, items) {\n const groups = spliceAndGroup(items, (x) => (x.type === 'attrValue') && (x.name === name), (x) => `${x.matcher} ${x.modifier || ''} ${x.value}`);\n const matchers = [];\n for (const group of Object.values(groups)) {\n const sel = group.oneSimpleSelector;\n const predicate = getAttrPredicate(sel);\n const continuation = weave(group.items);\n matchers.push({\n type: 'matcher',\n matcher: sel.matcher,\n modifier: sel.modifier,\n value: sel.value,\n predicate: predicate,\n cont: continuation\n });\n }\n return {\n type: 'attrValue',\n name: name,\n matchers: matchers\n };\n}\nfunction getAttrPredicate(sel) {\n if (sel.modifier === 'i') {\n const expected = sel.value.toLowerCase();\n switch (sel.matcher) {\n case '=':\n return (actual) => expected === actual.toLowerCase();\n case '~=':\n return (actual) => actual.toLowerCase().split(/[ \\t]+/).includes(expected);\n case '^=':\n return (actual) => actual.toLowerCase().startsWith(expected);\n case '$=':\n return (actual) => actual.toLowerCase().endsWith(expected);\n case '*=':\n return (actual) => actual.toLowerCase().includes(expected);\n case '|=':\n return (actual) => {\n const lower = actual.toLowerCase();\n return (expected === lower) || (lower.startsWith(expected) && lower[expected.length] === '-');\n };\n }\n }\n else {\n const expected = sel.value;\n switch (sel.matcher) {\n case '=':\n return (actual) => expected === actual;\n case '~=':\n return (actual) => actual.split(/[ \\t]+/).includes(expected);\n case '^=':\n return (actual) => actual.startsWith(expected);\n case '$=':\n return (actual) => actual.endsWith(expected);\n case '*=':\n return (actual) => actual.includes(expected);\n case '|=':\n return (actual) => (expected === actual) || (actual.startsWith(expected) && actual[expected.length] === '-');\n }\n }\n}\nfunction combinatorBranch(combinator, items) {\n const groups = spliceAndGroup(items, (x) => (x.type === 'combinator') && (x.combinator === combinator), (x) => parseley.serialize(x.left));\n const leftItems = [];\n for (const group of Object.values(groups)) {\n const rightCont = weave(group.items);\n const leftAst = group.oneSimpleSelector.left;\n leftItems.push({\n ast: leftAst,\n terminal: { type: 'popElement', cont: rightCont }\n });\n }\n return {\n type: 'pushElement',\n combinator: combinator,\n cont: weave(leftItems)\n };\n}\nfunction spliceAndGroup(items, predicate, keyCallback) {\n const groups = {};\n while (items.length) {\n const bestKey = findTopKey(items, predicate, keyCallback);\n const bestKeyPredicate = (sel) => predicate(sel) && keyCallback(sel) === bestKey;\n const hasBestKeyPredicate = (item) => item.ast.list.some(bestKeyPredicate);\n const { matches, rest } = partition1(items, hasBestKeyPredicate);\n let oneSimpleSelector = null;\n for (const item of matches) {\n const splicedNode = spliceSimpleSelector(item, bestKeyPredicate);\n if (!oneSimpleSelector) {\n oneSimpleSelector = splicedNode;\n }\n }\n if (oneSimpleSelector == null) {\n throw new Error('No simple selector is found.');\n }\n groups[bestKey] = { oneSimpleSelector: oneSimpleSelector, items: matches };\n items = rest;\n }\n return groups;\n}\nfunction spliceSimpleSelector(item, predicate) {\n const simpsels = item.ast.list;\n const matches = new Array(simpsels.length);\n let firstIndex = -1;\n for (let i = simpsels.length; i-- > 0;) {\n if (predicate(simpsels[i])) {\n matches[i] = true;\n firstIndex = i;\n }\n }\n if (firstIndex == -1) {\n throw new Error(`Couldn't find the required simple selector.`);\n }\n const result = simpsels[firstIndex];\n item.ast.list = simpsels.filter((sel, i) => !matches[i]);\n return result;\n}\nfunction findTopKey(items, predicate, keyCallback) {\n const candidates = {};\n for (const item of items) {\n const candidates1 = {};\n for (const node of item.ast.list.filter(predicate)) {\n candidates1[keyCallback(node)] = true;\n }\n for (const key of Object.keys(candidates1)) {\n if (candidates[key]) {\n candidates[key]++;\n }\n else {\n candidates[key] = 1;\n }\n }\n }\n let topKind = '';\n let topCounter = 0;\n for (const entry of Object.entries(candidates)) {\n if (entry[1] > topCounter) {\n topKind = entry[0];\n topCounter = entry[1];\n }\n }\n return topKind;\n}\nfunction partition(src, predicate) {\n const matches = [];\n const rest = [];\n for (const x of src) {\n if (predicate(x)) {\n matches.push(x);\n }\n else {\n rest.push(x);\n }\n }\n return { matches, rest };\n}\nfunction partition1(src, predicate) {\n const matches = [];\n const rest = [];\n for (const x of src) {\n if (predicate(x)) {\n matches.push(x);\n }\n else {\n rest.push(x);\n }\n }\n return { matches, rest };\n}\n\nclass Picker {\n constructor(f) {\n this.f = f;\n }\n pickAll(el) {\n return this.f(el);\n }\n pick1(el, preferFirst = false) {\n const results = this.f(el);\n const len = results.length;\n if (len === 0) {\n return null;\n }\n if (len === 1) {\n return results[0].value;\n }\n const comparator = (preferFirst)\n ? comparatorPreferFirst\n : comparatorPreferLast;\n let result = results[0];\n for (let i = 1; i < len; i++) {\n const next = results[i];\n if (comparator(result, next)) {\n result = next;\n }\n }\n return result.value;\n }\n}\nfunction comparatorPreferFirst(acc, next) {\n const diff = compareSpecificity(next.specificity, acc.specificity);\n return diff > 0 || (diff === 0 && next.index < acc.index);\n}\nfunction comparatorPreferLast(acc, next) {\n const diff = compareSpecificity(next.specificity, acc.specificity);\n return diff > 0 || (diff === 0 && next.index > acc.index);\n}\n\nexport { Ast, DecisionTree, Picker, TreeifyBuilder as Treeify, Types };\n"],"x_google_ignoreList":[0],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { RouteMiddleware } from "./route-proxy.js";
2
+
3
+ //#region src/proxy/protected-route.d.ts
4
+ declare const protectedRouteProxy: RouteMiddleware;
5
+ //# sourceMappingURL=protected-route.d.ts.map
6
+
7
+ //#endregion
8
+ export { protectedRouteProxy };
9
+ //# sourceMappingURL=protected-route.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protected-route.d.ts","names":[],"sources":["../../src/proxy/protected-route.ts"],"mappings":";;;cAca,qBAAqB"}
@@ -0,0 +1,40 @@
1
+ import { localApiGet } from "../lib/http.js";
2
+ import { getNextUrl } from "../server/utils.js";
3
+ import { getRequestOrigin } from "./proxy.js";
4
+ import { NextResponse } from "next/server";
5
+ //#region src/proxy/protected-route.ts
6
+ function getPublicRedirectUrl(request, href) {
7
+ if (!href.startsWith("/") || href.startsWith("//")) return;
8
+ const url = new URL(href, getRequestOrigin(request));
9
+ return url.pathname === request.nextUrl.pathname ? void 0 : url;
10
+ }
11
+ const protectedRouteProxy = async ({ request, route }) => {
12
+ if (route.isProtected) {
13
+ const isAuthenticated = request.cookies.get("payload-token");
14
+ console.log("protectedRouteProxy.isAuthenticated", isAuthenticated);
15
+ if (!isAuthenticated) {
16
+ if (route.publicRedirect) {
17
+ const redirectUrl = getPublicRedirectUrl(request, route.publicRedirect);
18
+ if (redirectUrl) return NextResponse.redirect(redirectUrl);
19
+ }
20
+ const { pathname } = request.nextUrl;
21
+ const reqHeaders = new Headers(request.headers);
22
+ reqHeaders.set("x-pathname", pathname);
23
+ const nextRoute = (await localApiGet(`/-route?schema=login&market=${encodeURIComponent(route.market)}&locale=${encodeURIComponent(route.locale)}`, {}, void 0, getRequestOrigin(request)))?.route;
24
+ if (nextRoute) {
25
+ const nextUrl = getNextUrl(request, nextRoute);
26
+ reqHeaders.set("x-market", nextRoute.market);
27
+ reqHeaders.set("x-locale", nextRoute.locale);
28
+ reqHeaders.set("x-schema", nextRoute.schema);
29
+ reqHeaders.set("x-id", String(nextRoute.page));
30
+ reqHeaders.set("x-forwarded-pathname", nextUrl.pathname);
31
+ console.log("protectedRouteProxy.Protected", pathname, ">", nextUrl.pathname);
32
+ return NextResponse.rewrite(nextUrl, { request: { headers: reqHeaders } });
33
+ }
34
+ }
35
+ }
36
+ };
37
+ //#endregion
38
+ export { protectedRouteProxy };
39
+
40
+ //# sourceMappingURL=protected-route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protected-route.js","names":[],"sources":["../../src/proxy/protected-route.ts"],"sourcesContent":["import { NextResponse } from 'next/server';\r\nimport { localApiGet } from '../lib/http';\r\nimport { getNextUrl } from '../server/utils';\r\nimport { getRequestOrigin } from './proxy';\r\nimport type { RouteMiddleware, RouteMiddlewareOptions, RouteResolverResponse } from './route-proxy';\r\n\r\nfunction getPublicRedirectUrl(request: RouteMiddlewareOptions['request'], href: string): URL | undefined {\r\n if (!href.startsWith('/') || href.startsWith('//')) {\r\n return undefined;\r\n }\r\n const url = new URL(href, getRequestOrigin(request));\r\n return url.pathname === request.nextUrl.pathname ? undefined : url;\r\n}\r\n\r\nexport const protectedRouteProxy: RouteMiddleware = async ({ request, route }: RouteMiddlewareOptions) => {\r\n // console.log('protectedRouteProxy', 'token', token);\r\n if (route.isProtected) {\r\n const token = request.cookies.get('payload-token');\r\n const isAuthenticated = token; // await hasValidSession();\r\n console.log('protectedRouteProxy.isAuthenticated', isAuthenticated);\r\n if (!isAuthenticated) {\r\n if (route.publicRedirect) {\r\n const redirectUrl = getPublicRedirectUrl(request, route.publicRedirect);\r\n if (redirectUrl) {\r\n return NextResponse.redirect(redirectUrl);\r\n }\r\n }\r\n const url = request.nextUrl;\r\n const { pathname } = url;\r\n const reqHeaders = new Headers(request.headers);\r\n reqHeaders.set('x-pathname', pathname);\r\n const resolution = await localApiGet<RouteResolverResponse>(\r\n `/-route?schema=login&market=${encodeURIComponent(route.market)}&locale=${encodeURIComponent(route.locale)}`,\r\n {},\r\n undefined,\r\n getRequestOrigin(request)\r\n );\r\n const nextRoute = resolution?.route;\r\n if (nextRoute) {\r\n const nextUrl = getNextUrl(request, nextRoute);\r\n reqHeaders.set('x-market', nextRoute.market);\r\n reqHeaders.set('x-locale', nextRoute.locale);\r\n reqHeaders.set('x-schema', nextRoute.schema);\r\n reqHeaders.set('x-id', String(nextRoute.page));\r\n reqHeaders.set('x-forwarded-pathname', nextUrl.pathname);\r\n console.log('protectedRouteProxy.Protected', pathname, '>', nextUrl.pathname);\r\n const response = NextResponse\r\n .rewrite(nextUrl, {\r\n request: {\r\n headers: reqHeaders,\r\n },\r\n });\r\n return response;\r\n }\r\n }\r\n }\r\n};\r\n"],"mappings":";;;;;AAMA,SAAS,qBAAqB,SAA4C,MAA+B;CACvG,IAAI,CAAC,KAAK,WAAW,GAAG,KAAK,KAAK,WAAW,IAAI,GAC/C;CAEF,MAAM,MAAM,IAAI,IAAI,MAAM,iBAAiB,OAAO,CAAC;CACnD,OAAO,IAAI,aAAa,QAAQ,QAAQ,WAAW,KAAA,IAAY;AACjE;AAEA,MAAa,sBAAuC,OAAO,EAAE,SAAS,YAAoC;CAExG,IAAI,MAAM,aAAa;EAErB,MAAM,kBADQ,QAAQ,QAAQ,IAAI,eACN;EAC5B,QAAQ,IAAI,uCAAuC,eAAe;EAClE,IAAI,CAAC,iBAAiB;GACpB,IAAI,MAAM,gBAAgB;IACxB,MAAM,cAAc,qBAAqB,SAAS,MAAM,cAAc;IACtE,IAAI,aACF,OAAO,aAAa,SAAS,WAAW;GAE5C;GAEA,MAAM,EAAE,aADI,QAAQ;GAEpB,MAAM,aAAa,IAAI,QAAQ,QAAQ,OAAO;GAC9C,WAAW,IAAI,cAAc,QAAQ;GAOrC,MAAM,aAAY,MANO,YACvB,+BAA+B,mBAAmB,MAAM,MAAM,EAAE,UAAU,mBAAmB,MAAM,MAAM,KACzG,CAAC,GACD,KAAA,GACA,iBAAiB,OAAO,CAC1B,EAAA,EAC8B;GAC9B,IAAI,WAAW;IACb,MAAM,UAAU,WAAW,SAAS,SAAS;IAC7C,WAAW,IAAI,YAAY,UAAU,MAAM;IAC3C,WAAW,IAAI,YAAY,UAAU,MAAM;IAC3C,WAAW,IAAI,YAAY,UAAU,MAAM;IAC3C,WAAW,IAAI,QAAQ,OAAO,UAAU,IAAI,CAAC;IAC7C,WAAW,IAAI,wBAAwB,QAAQ,QAAQ;IACvD,QAAQ,IAAI,iCAAiC,UAAU,KAAK,QAAQ,QAAQ;IAO5E,OANiB,aACd,QAAQ,SAAS,EAChB,SAAS,EACP,SAAS,WACX,EACF,CACY;GAChB;EACF;CACF;AACF"}
@@ -0,0 +1,31 @@
1
+ import { NextFetchEvent, NextRequest } from "next/server";
2
+ import { NextMiddlewareResult } from "next/dist/server/web/types";
3
+
4
+ //#region src/proxy/proxy.d.ts
5
+ type MiddlewareOptions = {
6
+ request: NextRequest;
7
+ next: NextFetchEvent;
8
+ disabled?: boolean;
9
+ };
10
+ type Middleware = (props: MiddlewareOptions) => NextMiddlewareResult | Promise<NextMiddlewareResult>;
11
+ /**
12
+ * Returns the externally visible origin for an internal middleware request.
13
+ *
14
+ * Deployments commonly terminate TLS or change ports before forwarding to
15
+ * Next.js. Honoring valid forwarded headers keeps resolver requests on the
16
+ * public host and prevents an avoidable proxy redirect; direct-origin fallback
17
+ * keeps local development and untrusted/invalid header values deterministic.
18
+ */
19
+ declare function getRequestOrigin(request: NextRequest): string;
20
+ /**
21
+ * Composes middleware into an ordered, short-circuiting proxy pipeline.
22
+ *
23
+ * A disabled proxy returns immediately, avoiding all downstream request work.
24
+ * Otherwise each middleware can claim the response; stopping at its first
25
+ * result prevents duplicate rewrites, redirects, and expensive policy checks.
26
+ */
27
+ declare function createProxy(...proxies: Middleware[]): Middleware;
28
+ //# sourceMappingURL=proxy.d.ts.map
29
+ //#endregion
30
+ export { Middleware, MiddlewareOptions, createProxy, getRequestOrigin };
31
+ //# sourceMappingURL=proxy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy.d.ts","names":[],"sources":["../../src/proxy/proxy.ts"],"mappings":";;;;KAKY,iBAAA;WACD;EADC,IAAA,EAEJ,cAFqB;EAAA,QAAA,CAAA,EAAA,OAAA;AAClB,CAAA;AACH,KAGI,UAAA,GAHJ,CAAA,KAAA,EAGyB,iBAHzB,EAAA,GAG+C,oBAH/C,GAGsE,OAHtE,CAG8E,oBAH9E,CAAA;AAAc;AAGtB;AAAsB;AAAW;AAAsB;AAA+B;AAAR;AAAO;AAUrE,iBAAA,gBAAA,CAA0B,OAAW,EAAX,WAAW,CAAA,EAAA,MAAA;AAwBrD;AAA2B;AAAa;AAAe;AAAU;;;iBAAjD,WAAA,aAAwB,eAAe"}