@absolutejs/absolute 0.19.0-beta.782 → 0.19.0-beta.784

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 (254) hide show
  1. package/dist/angular/browser.js +57 -9801
  2. package/dist/angular/browser.js.map +4 -246
  3. package/dist/angular/index.js +61 -14880
  4. package/dist/angular/index.js.map +4 -282
  5. package/dist/angular/server.js +46 -5613
  6. package/dist/angular/server.js.map +3 -52
  7. package/dist/build.js +45 -17902
  8. package/dist/build.js.map +3 -100
  9. package/dist/chunk-102fp7xe.js +63 -0
  10. package/dist/chunk-102fp7xe.js.map +10 -0
  11. package/dist/chunk-11zpfqz6.js +19 -0
  12. package/dist/chunk-11zpfqz6.js.map +10 -0
  13. package/dist/chunk-1e9vsfyh.js +100 -0
  14. package/dist/chunk-1e9vsfyh.js.map +10 -0
  15. package/dist/chunk-25v9t56f.js +29 -0
  16. package/dist/chunk-25v9t56f.js.map +11 -0
  17. package/dist/chunk-2f21eenc.js +21 -0
  18. package/dist/chunk-2f21eenc.js.map +10 -0
  19. package/dist/chunk-2ga2znex.js +13 -0
  20. package/dist/chunk-2ga2znex.js.map +9 -0
  21. package/dist/chunk-30yrw0f6.js +33 -0
  22. package/dist/chunk-30yrw0f6.js.map +10 -0
  23. package/dist/chunk-3c7mpj3m.js +784 -0
  24. package/dist/chunk-3c7mpj3m.js.map +10 -0
  25. package/dist/chunk-3g91wb4f.js +358 -0
  26. package/dist/chunk-3g91wb4f.js.map +10 -0
  27. package/dist/chunk-3yjzpcne.js +34 -0
  28. package/dist/chunk-3yjzpcne.js.map +10 -0
  29. package/dist/chunk-4bq79t8v.js +136 -0
  30. package/dist/chunk-4bq79t8v.js.map +10 -0
  31. package/dist/chunk-4d39r92n.js +81 -0
  32. package/dist/chunk-4d39r92n.js.map +10 -0
  33. package/dist/chunk-4m75s5xf.js +184 -0
  34. package/dist/chunk-4m75s5xf.js.map +11 -0
  35. package/dist/chunk-5003emhv.js +17 -0
  36. package/dist/chunk-5003emhv.js.map +10 -0
  37. package/dist/chunk-5fhp1jap.js +9169 -0
  38. package/dist/chunk-5fhp1jap.js.map +236 -0
  39. package/dist/chunk-6fkgm9s5.js +569 -0
  40. package/dist/chunk-6fkgm9s5.js.map +10 -0
  41. package/dist/chunk-6pdj08z3.js +73 -0
  42. package/dist/chunk-6pdj08z3.js.map +12 -0
  43. package/dist/chunk-6qjbrt0k.js +13 -0
  44. package/dist/chunk-6qjbrt0k.js.map +9 -0
  45. package/dist/chunk-6sccb4jr.js +14 -0
  46. package/dist/chunk-6sccb4jr.js.map +9 -0
  47. package/dist/chunk-73brtyw5.js +16 -0
  48. package/dist/chunk-73brtyw5.js.map +9 -0
  49. package/dist/chunk-77cqkarb.js +25 -0
  50. package/dist/chunk-77cqkarb.js.map +9 -0
  51. package/dist/chunk-798spvzv.js +50 -0
  52. package/dist/chunk-798spvzv.js.map +10 -0
  53. package/dist/chunk-7fw6x3js.js +131 -0
  54. package/dist/chunk-7fw6x3js.js.map +11 -0
  55. package/dist/chunk-7kjj42xm.js +11 -0
  56. package/dist/chunk-7kjj42xm.js.map +10 -0
  57. package/dist/chunk-851whwc7.js +17 -0
  58. package/dist/chunk-851whwc7.js.map +10 -0
  59. package/dist/chunk-85n68sy6.js +103 -0
  60. package/dist/chunk-85n68sy6.js.map +10 -0
  61. package/dist/chunk-8feq2qek.js +17 -0
  62. package/dist/chunk-8feq2qek.js.map +9 -0
  63. package/dist/chunk-8kcfffry.js +35 -0
  64. package/dist/chunk-8kcfffry.js.map +10 -0
  65. package/dist/chunk-93sqk7be.js +139 -0
  66. package/dist/chunk-93sqk7be.js.map +12 -0
  67. package/dist/chunk-97572s32.js +262 -0
  68. package/dist/chunk-97572s32.js.map +12 -0
  69. package/dist/chunk-9a307ca6.js +1742 -0
  70. package/dist/chunk-9a307ca6.js.map +11 -0
  71. package/dist/chunk-9c5tj4k3.js +130 -0
  72. package/dist/chunk-9c5tj4k3.js.map +10 -0
  73. package/dist/chunk-9xrsjeem.js +12 -0
  74. package/dist/chunk-9xrsjeem.js.map +9 -0
  75. package/dist/chunk-a9mvyp04.js +87 -0
  76. package/dist/chunk-a9mvyp04.js.map +10 -0
  77. package/dist/chunk-b3gbnrwe.js +21 -0
  78. package/dist/chunk-b3gbnrwe.js.map +10 -0
  79. package/dist/chunk-bmgqm774.js +65 -0
  80. package/dist/chunk-bmgqm774.js.map +9 -0
  81. package/dist/chunk-bxfghpma.js +69 -0
  82. package/dist/chunk-bxfghpma.js.map +10 -0
  83. package/dist/chunk-c1jfjnka.js +74 -0
  84. package/dist/chunk-c1jfjnka.js.map +10 -0
  85. package/dist/chunk-cbkrwmvh.js +80 -0
  86. package/dist/chunk-cbkrwmvh.js.map +10 -0
  87. package/dist/chunk-cdxd7sy2.js +71 -0
  88. package/dist/chunk-cdxd7sy2.js.map +10 -0
  89. package/dist/chunk-cg95827x.js +21 -0
  90. package/dist/chunk-cg95827x.js.map +10 -0
  91. package/dist/chunk-d9c0am65.js +12 -0
  92. package/dist/chunk-d9c0am65.js.map +10 -0
  93. package/dist/chunk-daqghmg8.js +12 -0
  94. package/dist/chunk-daqghmg8.js.map +9 -0
  95. package/dist/chunk-dr9yqsdb.js +203 -0
  96. package/dist/chunk-dr9yqsdb.js.map +10 -0
  97. package/dist/chunk-e8eecyrq.js +244 -0
  98. package/dist/chunk-e8eecyrq.js.map +10 -0
  99. package/dist/chunk-ex2hxe0v.js +160 -0
  100. package/dist/chunk-ex2hxe0v.js.map +11 -0
  101. package/dist/chunk-ey5hs6x6.js +253 -0
  102. package/dist/chunk-ey5hs6x6.js.map +11 -0
  103. package/dist/chunk-fak944et.js +91 -0
  104. package/dist/chunk-fak944et.js.map +10 -0
  105. package/dist/chunk-fygx2ymm.js +118 -0
  106. package/dist/chunk-fygx2ymm.js.map +12 -0
  107. package/dist/chunk-g15qj669.js +271 -0
  108. package/dist/chunk-g15qj669.js.map +11 -0
  109. package/dist/chunk-g3j22qf6.js +51 -0
  110. package/dist/chunk-g3j22qf6.js.map +9 -0
  111. package/dist/chunk-gd6wmknh.js +121 -0
  112. package/dist/chunk-gd6wmknh.js.map +11 -0
  113. package/dist/chunk-gf0ygptk.js +85 -0
  114. package/dist/chunk-gf0ygptk.js.map +11 -0
  115. package/dist/chunk-gq0zxpm0.js +90 -0
  116. package/dist/chunk-gq0zxpm0.js.map +10 -0
  117. package/dist/chunk-gytkmthr.js +220 -0
  118. package/dist/chunk-gytkmthr.js.map +10 -0
  119. package/dist/chunk-h5bbfn3n.js +28 -0
  120. package/dist/chunk-h5bbfn3n.js.map +11 -0
  121. package/dist/chunk-h6mye9r3.js +93 -0
  122. package/dist/chunk-h6mye9r3.js.map +10 -0
  123. package/dist/chunk-hcsmxw1v.js +85 -0
  124. package/dist/chunk-hcsmxw1v.js.map +10 -0
  125. package/dist/chunk-hep68ja7.js +4444 -0
  126. package/dist/chunk-hep68ja7.js.map +29 -0
  127. package/dist/chunk-hhqh49fz.js +149 -0
  128. package/dist/chunk-hhqh49fz.js.map +10 -0
  129. package/dist/chunk-hyjs4bqs.js +8 -0
  130. package/dist/chunk-hyjs4bqs.js.map +10 -0
  131. package/dist/chunk-hza0n8qm.js +20 -0
  132. package/dist/chunk-hza0n8qm.js.map +9 -0
  133. package/dist/chunk-jn91vzkh.js +66 -0
  134. package/dist/chunk-jn91vzkh.js.map +10 -0
  135. package/dist/chunk-jwxt8gnp.js +13 -0
  136. package/dist/chunk-jwxt8gnp.js.map +9 -0
  137. package/dist/chunk-kk8w9rh5.js +195 -0
  138. package/dist/chunk-kk8w9rh5.js.map +10 -0
  139. package/dist/chunk-kndkjsya.js +261 -0
  140. package/dist/chunk-kndkjsya.js.map +10 -0
  141. package/dist/chunk-kvq01j35.js +36 -0
  142. package/dist/chunk-kvq01j35.js.map +10 -0
  143. package/dist/chunk-mbazhahf.js +60 -0
  144. package/dist/chunk-mbazhahf.js.map +10 -0
  145. package/dist/chunk-mgfwq18r.js +15 -0
  146. package/dist/chunk-mgfwq18r.js.map +9 -0
  147. package/dist/chunk-mtgf69xn.js +88 -0
  148. package/dist/chunk-mtgf69xn.js.map +10 -0
  149. package/dist/chunk-nehhtthw.js +225 -0
  150. package/dist/chunk-nehhtthw.js.map +10 -0
  151. package/dist/chunk-nhzf4az4.js +149 -0
  152. package/dist/chunk-nhzf4az4.js.map +10 -0
  153. package/dist/chunk-p5504p14.js +16 -0
  154. package/dist/chunk-p5504p14.js.map +10 -0
  155. package/dist/chunk-pnscgw95.js +90 -0
  156. package/dist/chunk-pnscgw95.js.map +10 -0
  157. package/dist/chunk-pvpp4pvs.js +17 -0
  158. package/dist/chunk-pvpp4pvs.js.map +10 -0
  159. package/dist/chunk-qh75agse.js +95 -0
  160. package/dist/chunk-qh75agse.js.map +10 -0
  161. package/dist/chunk-qk8kd3hr.js +526 -0
  162. package/dist/chunk-qk8kd3hr.js.map +12 -0
  163. package/dist/chunk-qxq2zcty.js +52 -0
  164. package/dist/chunk-qxq2zcty.js.map +10 -0
  165. package/dist/chunk-r7jmgqnw.js +114 -0
  166. package/dist/chunk-r7jmgqnw.js.map +10 -0
  167. package/dist/chunk-s6defjk2.js +116 -0
  168. package/dist/chunk-s6defjk2.js.map +10 -0
  169. package/dist/chunk-sd39p726.js +619 -0
  170. package/dist/chunk-sd39p726.js.map +10 -0
  171. package/dist/chunk-smgj0epn.js +18 -0
  172. package/dist/chunk-smgj0epn.js.map +9 -0
  173. package/dist/chunk-swrnzs4c.js +63 -0
  174. package/dist/chunk-swrnzs4c.js.map +10 -0
  175. package/dist/chunk-t81a331y.js +27 -0
  176. package/dist/chunk-t81a331y.js.map +10 -0
  177. package/dist/chunk-tfe3sb44.js +33 -0
  178. package/dist/chunk-tfe3sb44.js.map +10 -0
  179. package/dist/chunk-tx9edm1x.js +34 -0
  180. package/dist/chunk-tx9edm1x.js.map +10 -0
  181. package/dist/chunk-vkrpm7kc.js +247 -0
  182. package/dist/chunk-vkrpm7kc.js.map +12 -0
  183. package/dist/chunk-vvz7dcvq.js +434 -0
  184. package/dist/chunk-vvz7dcvq.js.map +13 -0
  185. package/dist/chunk-w3m4m5we.js +4925 -0
  186. package/dist/chunk-w3m4m5we.js.map +12 -0
  187. package/dist/chunk-wrxtn9ve.js +18 -0
  188. package/dist/chunk-wrxtn9ve.js.map +10 -0
  189. package/dist/chunk-xpkjbmd3.js +428 -0
  190. package/dist/chunk-xpkjbmd3.js.map +14 -0
  191. package/dist/chunk-xrmjy8kk.js +454 -0
  192. package/dist/chunk-xrmjy8kk.js.map +10 -0
  193. package/dist/chunk-xw0tx842.js +13 -0
  194. package/dist/chunk-xw0tx842.js.map +9 -0
  195. package/dist/chunk-xx5b6b9m.js +69 -0
  196. package/dist/chunk-xx5b6b9m.js.map +10 -0
  197. package/dist/chunk-xz1kdswj.js +21 -0
  198. package/dist/chunk-xz1kdswj.js.map +9 -0
  199. package/dist/chunk-xzvy9hr4.js +377 -0
  200. package/dist/chunk-xzvy9hr4.js.map +10 -0
  201. package/dist/chunk-yfqhr31t.js +39 -0
  202. package/dist/chunk-yfqhr31t.js.map +9 -0
  203. package/dist/chunk-ygzd5s4z.js +184 -0
  204. package/dist/chunk-ygzd5s4z.js.map +10 -0
  205. package/dist/chunk-ywjn0rad.js +14 -0
  206. package/dist/chunk-ywjn0rad.js.map +9 -0
  207. package/dist/chunk-z9nvhm6r.js +13 -0
  208. package/dist/chunk-z9nvhm6r.js.map +9 -0
  209. package/dist/chunk-zhmvdpk6.js +15 -0
  210. package/dist/chunk-zhmvdpk6.js.map +9 -0
  211. package/dist/cli/index.js +6 -3
  212. package/dist/client/index.js +32 -1112
  213. package/dist/client/index.js.map +4 -22
  214. package/dist/core/streamingSlotRegistrar.js +11 -108
  215. package/dist/core/streamingSlotRegistrar.js.map +3 -4
  216. package/dist/core/streamingSlotRegistry.js +7 -169
  217. package/dist/core/streamingSlotRegistry.js.map +3 -5
  218. package/dist/index.js +537 -19714
  219. package/dist/index.js.map +3 -117
  220. package/dist/islands/browser.js +9 -228
  221. package/dist/islands/browser.js.map +4 -9
  222. package/dist/islands/index.js +18 -1900
  223. package/dist/islands/index.js.map +3 -28
  224. package/dist/react/browser.js +12 -328
  225. package/dist/react/browser.js.map +4 -12
  226. package/dist/react/components/index.js +16 -167
  227. package/dist/react/components/index.js.map +3 -6
  228. package/dist/react/hooks/index.js +8 -183
  229. package/dist/react/hooks/index.js.map +3 -7
  230. package/dist/react/index.js +37 -3619
  231. package/dist/react/index.js.map +4 -46
  232. package/dist/react/jsxDevRuntimeCompat.js +2 -61
  233. package/dist/react/jsxDevRuntimeCompat.js.map +2 -2
  234. package/dist/react/server.js +18 -1789
  235. package/dist/react/server.js.map +3 -21
  236. package/dist/src/build/stylePreprocessor.d.ts +3 -0
  237. package/dist/src/core/index.d.ts +0 -2
  238. package/dist/svelte/browser.js +12 -247
  239. package/dist/svelte/browser.js.map +3 -10
  240. package/dist/svelte/index.js +38 -3724
  241. package/dist/svelte/index.js.map +4 -48
  242. package/dist/svelte/server.js +22 -2701
  243. package/dist/svelte/server.js.map +3 -27
  244. package/dist/vue/browser.js +12 -348
  245. package/dist/vue/browser.js.map +4 -12
  246. package/dist/vue/components/Image.js +7 -240
  247. package/dist/vue/components/Image.js.map +3 -6
  248. package/dist/vue/components/index.js +11 -544
  249. package/dist/vue/components/index.js.map +3 -9
  250. package/dist/vue/index.js +53 -4204
  251. package/dist/vue/index.js.map +4 -51
  252. package/dist/vue/server.js +18 -1849
  253. package/dist/vue/server.js.map +3 -21
  254. package/package.json +7 -7
@@ -0,0 +1,149 @@
1
+ // @bun
2
+ import {
3
+ resolveAngularPackage
4
+ } from "./chunk-kvq01j35.js";
5
+ import"./chunk-bmgqm774.js";
6
+
7
+ // src/angular/angularPatch.ts
8
+ var ensureHead = (doc) => {
9
+ if (!doc || doc.head || !doc.documentElement) {
10
+ return;
11
+ }
12
+ const head = doc.createElement("head");
13
+ doc.documentElement.insertBefore(head, doc.documentElement.firstChild);
14
+ };
15
+ var SSR_LAYOUT_RECT = Object.freeze({
16
+ bottom: 0,
17
+ height: 0,
18
+ left: 0,
19
+ right: 0,
20
+ top: 0,
21
+ width: 0,
22
+ x: 0,
23
+ y: 0,
24
+ toJSON() {
25
+ return this;
26
+ }
27
+ });
28
+ var layoutPatchApplied = false;
29
+ var collectPrototypeChain = (instance) => {
30
+ const protos = [];
31
+ let current = instance ? Object.getPrototypeOf(instance) : null;
32
+ while (current && current !== Object.prototype) {
33
+ protos.push(current);
34
+ current = Object.getPrototypeOf(current);
35
+ }
36
+ return protos;
37
+ };
38
+ var patchElementLayout = (doc) => {
39
+ if (layoutPatchApplied || !doc) {
40
+ return;
41
+ }
42
+ let element;
43
+ try {
44
+ element = doc.createElement("div");
45
+ } catch {
46
+ return;
47
+ }
48
+ const protos = collectPrototypeChain(element);
49
+ if (protos.length === 0)
50
+ return;
51
+ const copyLayoutRect = (rect) => ({ ...rect });
52
+ const createLayoutRect = () => copyLayoutRect(SSR_LAYOUT_RECT);
53
+ const getClientRects = () => [];
54
+ const noop = () => {
55
+ return;
56
+ };
57
+ const numericProps = [
58
+ "clientWidth",
59
+ "clientHeight",
60
+ "clientLeft",
61
+ "clientTop",
62
+ "offsetWidth",
63
+ "offsetHeight",
64
+ "offsetLeft",
65
+ "offsetTop",
66
+ "scrollWidth",
67
+ "scrollHeight",
68
+ "scrollLeft",
69
+ "scrollTop"
70
+ ];
71
+ for (const proto of protos) {
72
+ const define = (name, value) => {
73
+ const descriptor = Object.getOwnPropertyDescriptor(proto, name);
74
+ if (typeof descriptor?.value === "function")
75
+ return;
76
+ Object.defineProperty(proto, name, {
77
+ configurable: true,
78
+ value,
79
+ writable: true
80
+ });
81
+ };
82
+ define("getBoundingClientRect", createLayoutRect);
83
+ define("getClientRects", getClientRects);
84
+ define("scrollTo", noop);
85
+ define("scrollBy", noop);
86
+ define("scrollIntoView", noop);
87
+ define("focus", noop);
88
+ define("blur", noop);
89
+ for (const prop of numericProps) {
90
+ const desc = Object.getOwnPropertyDescriptor(proto, prop);
91
+ if (desc)
92
+ continue;
93
+ Object.defineProperty(proto, prop, {
94
+ configurable: true,
95
+ get: () => 0
96
+ });
97
+ }
98
+ }
99
+ layoutPatchApplied = true;
100
+ };
101
+ var applyPatches = async () => {
102
+ const { \u{275}DominoAdapter } = await import(resolveAngularPackage("@angular/platform-server"));
103
+ if (!\u{275}DominoAdapter?.prototype) {
104
+ console.warn("[Angular Patch] \u0275DominoAdapter not found, skipping patches");
105
+ return false;
106
+ }
107
+ try {
108
+ const adapter = new \u{275}DominoAdapter;
109
+ const seedDoc = typeof adapter.createHtmlDocument === "function" ? adapter.createHtmlDocument() : typeof adapter.getDefaultDocument === "function" ? adapter.getDefaultDocument() : null;
110
+ if (seedDoc) {
111
+ patchElementLayout(seedDoc);
112
+ const probe = seedDoc.createElement("div");
113
+ if (typeof probe.getBoundingClientRect !== "function") {
114
+ console.warn("[Angular Patch] Layout shim did not stick on probe element prototype chain");
115
+ }
116
+ }
117
+ } catch (error) {
118
+ console.warn("[Angular Patch] Could not eagerly patch Element prototypes:", error);
119
+ }
120
+ const proto = \u{275}DominoAdapter.prototype;
121
+ const origGetBaseHref = proto.getBaseHref;
122
+ proto.getBaseHref = function(doc) {
123
+ if (!doc || !doc.head || typeof doc.head.children === "undefined") {
124
+ return "";
125
+ }
126
+ return origGetBaseHref.call(this, doc);
127
+ };
128
+ const origCreateHtmlDocument = proto.createHtmlDocument;
129
+ proto.createHtmlDocument = function() {
130
+ const doc = origCreateHtmlDocument.call(this);
131
+ ensureHead(doc);
132
+ patchElementLayout(doc);
133
+ return doc;
134
+ };
135
+ const origGetDefaultDocument = proto.getDefaultDocument;
136
+ proto.getDefaultDocument = function() {
137
+ const doc = origGetDefaultDocument.call(this);
138
+ ensureHead(doc);
139
+ patchElementLayout(doc);
140
+ return doc;
141
+ };
142
+ return true;
143
+ };
144
+ export {
145
+ applyPatches
146
+ };
147
+
148
+ //# debugId=F6E1647B46B104AB64756E2164756E21
149
+ //# sourceMappingURL=chunk-hhqh49fz.js.map
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/angular/angularPatch.ts"],
4
+ "sourcesContent": [
5
+ "import { resolveAngularPackage } from './resolveAngularPackage';\n\n// Patches Angular SSR's DominoAdapter to guard against null doc.head\n\nconst ensureHead = (doc: Document) => {\n\tif (!doc || doc.head || !doc.documentElement) {\n\t\treturn;\n\t}\n\n\tconst head = doc.createElement('head');\n\tdoc.documentElement.insertBefore(head, doc.documentElement.firstChild);\n};\n\n// Domino's Element does not implement layout APIs that browser components\n// (e.g. ngx-datatable, swiper, drag-drop) call eagerly during change detection.\n// Returning a zeroed DOMRect lets those components render in SSR without\n// crashing — the real values get computed once the page hydrates client-side.\nconst SSR_LAYOUT_RECT = Object.freeze({\n\tbottom: 0,\n\theight: 0,\n\tleft: 0,\n\tright: 0,\n\ttop: 0,\n\twidth: 0,\n\tx: 0,\n\ty: 0,\n\ttoJSON() {\n\t\treturn this;\n\t}\n});\nlet layoutPatchApplied = false;\nconst collectPrototypeChain = (instance: object | null) => {\n\tconst protos: object[] = [];\n\tlet current: object | null = instance\n\t\t? Object.getPrototypeOf(instance)\n\t\t: null;\n\twhile (current && current !== Object.prototype) {\n\t\tprotos.push(current);\n\t\tcurrent = Object.getPrototypeOf(current);\n\t}\n\n\treturn protos;\n};\n\nconst patchElementLayout = (doc: Document) => {\n\tif (layoutPatchApplied || !doc) {\n\t\treturn;\n\t}\n\tlet element: Element;\n\ttry {\n\t\telement = doc.createElement('div');\n\t} catch {\n\t\treturn;\n\t}\n\t// Walk the entire prototype chain so HTMLElement → Element → Node all get\n\t// the layout shims. Domino's base Element.prototype is several hops above\n\t// HTMLDivElement.prototype, and 3rd-party libs call methods anywhere along\n\t// the chain.\n\tconst protos = collectPrototypeChain(element);\n\tif (protos.length === 0) return;\n\n\tconst copyLayoutRect = (rect: typeof SSR_LAYOUT_RECT) => ({ ...rect });\n\tconst createLayoutRect = () => copyLayoutRect(SSR_LAYOUT_RECT);\n\tconst getClientRects = () => [];\n\tconst noop = () => undefined;\n\tconst numericProps = [\n\t\t'clientWidth',\n\t\t'clientHeight',\n\t\t'clientLeft',\n\t\t'clientTop',\n\t\t'offsetWidth',\n\t\t'offsetHeight',\n\t\t'offsetLeft',\n\t\t'offsetTop',\n\t\t'scrollWidth',\n\t\t'scrollHeight',\n\t\t'scrollLeft',\n\t\t'scrollTop'\n\t];\n\n\tfor (const proto of protos) {\n\t\tconst define = (name: string, value: unknown) => {\n\t\t\tconst descriptor = Object.getOwnPropertyDescriptor(proto, name);\n\t\t\tif (typeof descriptor?.value === 'function') return;\n\n\t\t\tObject.defineProperty(proto, name, {\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue,\n\t\t\t\twritable: true\n\t\t\t});\n\t\t};\n\n\t\tdefine('getBoundingClientRect', createLayoutRect);\n\t\tdefine('getClientRects', getClientRects);\n\t\tdefine('scrollTo', noop);\n\t\tdefine('scrollBy', noop);\n\t\tdefine('scrollIntoView', noop);\n\t\tdefine('focus', noop);\n\t\tdefine('blur', noop);\n\n\t\tfor (const prop of numericProps) {\n\t\t\tconst desc = Object.getOwnPropertyDescriptor(proto, prop);\n\t\t\tif (desc) continue;\n\t\t\tObject.defineProperty(proto, prop, {\n\t\t\t\tconfigurable: true,\n\t\t\t\tget: () => 0\n\t\t\t});\n\t\t}\n\t}\n\n\tlayoutPatchApplied = true;\n};\n\nexport const applyPatches = async () => {\n\tconst { ɵDominoAdapter } = await import(\n\t\tresolveAngularPackage('@angular/platform-server')\n\t);\n\tif (!ɵDominoAdapter?.prototype) {\n\t\tconsole.warn(\n\t\t\t'[Angular Patch] ɵDominoAdapter not found, skipping patches'\n\t\t);\n\n\t\treturn false;\n\t}\n\n\t// Patch the layout shims onto Domino's Element prototypes immediately\n\t// (don't wait for the first createHtmlDocument call). Components that\n\t// hold an ElementRef from the very first change-detection pass call\n\t// these methods before the lazy patch path would have run.\n\ttry {\n\t\tconst adapter = new ɵDominoAdapter();\n\t\tconst seedDoc =\n\t\t\ttypeof adapter.createHtmlDocument === 'function'\n\t\t\t\t? adapter.createHtmlDocument()\n\t\t\t\t: typeof adapter.getDefaultDocument === 'function'\n\t\t\t\t\t? adapter.getDefaultDocument()\n\t\t\t\t\t: null;\n\t\tif (seedDoc) {\n\t\t\tpatchElementLayout(seedDoc);\n\t\t\tconst probe = seedDoc.createElement('div') as Element & {\n\t\t\t\tgetBoundingClientRect?: () => DOMRect;\n\t\t\t};\n\t\t\tif (typeof probe.getBoundingClientRect !== 'function') {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t'[Angular Patch] Layout shim did not stick on probe element prototype chain'\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\tconsole.warn(\n\t\t\t'[Angular Patch] Could not eagerly patch Element prototypes:',\n\t\t\terror\n\t\t);\n\t}\n\n\tconst proto = ɵDominoAdapter.prototype;\n\n\tconst origGetBaseHref = proto.getBaseHref;\n\tproto.getBaseHref = function (doc: Document) {\n\t\tif (!doc || !doc.head || typeof doc.head.children === 'undefined') {\n\t\t\treturn '';\n\t\t}\n\n\t\treturn origGetBaseHref.call(this, doc);\n\t};\n\n\tconst origCreateHtmlDocument = proto.createHtmlDocument;\n\tproto.createHtmlDocument = function () {\n\t\tconst doc = origCreateHtmlDocument.call(this);\n\t\tensureHead(doc);\n\t\tpatchElementLayout(doc);\n\n\t\treturn doc;\n\t};\n\n\tconst origGetDefaultDocument = proto.getDefaultDocument;\n\tproto.getDefaultDocument = function () {\n\t\tconst doc = origGetDefaultDocument.call(this);\n\t\tensureHead(doc);\n\t\tpatchElementLayout(doc);\n\n\t\treturn doc;\n\t};\n\n\treturn true;\n};\n"
6
+ ],
7
+ "mappings": "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",
8
+ "debugId": "F6E1647B46B104AB64756E2164756E21",
9
+ "names": []
10
+ }
@@ -0,0 +1,8 @@
1
+ // @bun
2
+ // src/utils/normalizePath.ts
3
+ var normalizePath = (path) => path.replace(/\\/g, "/");
4
+
5
+ export { normalizePath };
6
+
7
+ //# debugId=7C9EFCBF611DC4AE64756E2164756E21
8
+ //# sourceMappingURL=chunk-hyjs4bqs.js.map
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/utils/normalizePath.ts"],
4
+ "sourcesContent": [
5
+ "/**\n * Normalize file paths to use forward slashes for cross-platform compatibility.\n * Windows uses backslashes, but this codebase standardizes on forward slashes.\n */\nexport const normalizePath = (path: string) => path.replace(/\\\\/g, '/');\n\n/**\n * Normalize all paths in an array.\n */\nexport const normalizePaths = (paths: string[]) => paths.map(normalizePath);\n"
6
+ ],
7
+ "mappings": ";;AAIO,IAAM,gBAAgB,CAAC,SAAiB,KAAK,QAAQ,OAAO,GAAG;",
8
+ "debugId": "7C9EFCBF611DC4AE64756E2164756E21",
9
+ "names": []
10
+ }
@@ -0,0 +1,20 @@
1
+ // @bun
2
+ import {
3
+ getAngularIslandSelector,
4
+ mountAngularIsland,
5
+ renderAngularIslandToHtml
6
+ } from "./chunk-ygzd5s4z.js";
7
+ import"./chunk-97572s32.js";
8
+ import"./chunk-kvq01j35.js";
9
+ import"./chunk-pnscgw95.js";
10
+ import"./chunk-p5504p14.js";
11
+ import"./chunk-25v9t56f.js";
12
+ import"./chunk-bmgqm774.js";
13
+ export {
14
+ renderAngularIslandToHtml,
15
+ mountAngularIsland,
16
+ getAngularIslandSelector
17
+ };
18
+
19
+ //# debugId=C1AFCC34B998790A64756E2164756E21
20
+ //# sourceMappingURL=chunk-hza0n8qm.js.map
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [
5
+ ],
6
+ "mappings": "",
7
+ "debugId": "C1AFCC34B998790A64756E2164756E21",
8
+ "names": []
9
+ }
@@ -0,0 +1,66 @@
1
+ // @bun
2
+ // src/build/nativeRewrite.ts
3
+ import { dlopen, FFIType, ptr } from "bun:ffi";
4
+ import { platform, arch } from "os";
5
+ import { resolve } from "path";
6
+ var ffiDefinition = {
7
+ rewrite_imports: {
8
+ args: [
9
+ FFIType.ptr,
10
+ FFIType.u64,
11
+ FFIType.ptr,
12
+ FFIType.u64,
13
+ FFIType.ptr,
14
+ FFIType.ptr
15
+ ],
16
+ returns: FFIType.i32
17
+ }
18
+ };
19
+ var nativeLib = null;
20
+ var loadNative = () => {
21
+ if (nativeLib !== null)
22
+ return nativeLib;
23
+ const osPlatform = platform();
24
+ const cpu = arch();
25
+ const platformMap = {
26
+ "darwin-arm64": "darwin-arm64/fast_ops.dylib",
27
+ "darwin-x64": "darwin-x64/fast_ops.dylib",
28
+ "linux-arm64": "linux-arm64/fast_ops.so",
29
+ "linux-x64": "linux-x64/fast_ops.so",
30
+ "win32-arm64": "windows-arm64/fast_ops.dll",
31
+ "win32-x64": "windows-x64/fast_ops.dll"
32
+ };
33
+ const libPath = platformMap[`${osPlatform}-${cpu}`];
34
+ if (!libPath)
35
+ return null;
36
+ try {
37
+ const fullPath = resolve(import.meta.dir, "../../native/packages", libPath);
38
+ const lib = dlopen(fullPath, ffiDefinition);
39
+ nativeLib = lib.symbols;
40
+ return nativeLib;
41
+ } catch {
42
+ return null;
43
+ }
44
+ };
45
+ var nativeRewriteImports = (content, replacements) => {
46
+ const lib = loadNative();
47
+ if (!lib)
48
+ return null;
49
+ const jsonStr = JSON.stringify(replacements);
50
+ const contentBuf = Buffer.from(content);
51
+ const jsonBuf = Buffer.from(jsonStr);
52
+ const outBuf = Buffer.alloc(content.length * 2);
53
+ const outLenBuf = new BigUint64Array([BigInt(outBuf.length)]);
54
+ const result = lib.rewrite_imports(ptr(contentBuf), contentBuf.length, ptr(jsonBuf), jsonBuf.length, ptr(outBuf), ptr(new Uint8Array(outLenBuf.buffer)));
55
+ if (result < 0)
56
+ return null;
57
+ if (result === 0)
58
+ return content;
59
+ const outLen = Number(outLenBuf[0]);
60
+ return outBuf.subarray(0, outLen).toString("utf-8");
61
+ };
62
+
63
+ export { nativeRewriteImports };
64
+
65
+ //# debugId=24F357D4DEE84F5564756E2164756E21
66
+ //# sourceMappingURL=chunk-jn91vzkh.js.map
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/build/nativeRewrite.ts"],
4
+ "sourcesContent": [
5
+ "/** Native Zig import rewriter — 15x faster than JS regex on large files.\n * Falls back to JS if the native addon isn't available (Windows, missing .so). */\n\nimport { dlopen, FFIType, ptr } from 'bun:ffi';\nimport { platform, arch } from 'node:os';\nimport { resolve } from 'node:path';\n\nconst ffiDefinition = {\n\trewrite_imports: {\n\t\targs: [\n\t\t\tFFIType.ptr,\n\t\t\tFFIType.u64,\n\t\t\tFFIType.ptr,\n\t\t\tFFIType.u64,\n\t\t\tFFIType.ptr,\n\t\t\tFFIType.ptr\n\t\t],\n\t\treturns: FFIType.i32\n\t}\n} as const;\n\ntype NativeLib = ReturnType<typeof dlopen<typeof ffiDefinition>>['symbols'];\n\nlet nativeLib: NativeLib | null = null;\n\nconst loadNative = () => {\n\tif (nativeLib !== null) return nativeLib;\n\n\tconst osPlatform = platform();\n\tconst cpu = arch();\n\n\tconst platformMap: Record<string, string> = {\n\t\t'darwin-arm64': 'darwin-arm64/fast_ops.dylib',\n\t\t'darwin-x64': 'darwin-x64/fast_ops.dylib',\n\t\t'linux-arm64': 'linux-arm64/fast_ops.so',\n\t\t'linux-x64': 'linux-x64/fast_ops.so',\n\t\t'win32-arm64': 'windows-arm64/fast_ops.dll',\n\t\t'win32-x64': 'windows-x64/fast_ops.dll'\n\t};\n\n\tconst libPath = platformMap[`${osPlatform}-${cpu}`];\n\tif (!libPath) return null;\n\n\ttry {\n\t\tconst fullPath = resolve(\n\t\t\timport.meta.dir,\n\t\t\t'../../native/packages',\n\t\t\tlibPath\n\t\t);\n\t\tconst lib = dlopen(fullPath, ffiDefinition);\n\t\tnativeLib = lib.symbols;\n\n\t\treturn nativeLib;\n\t} catch {\n\t\treturn null;\n\t}\n};\n\n/** Rewrite import specifiers in a string using the native Zig scanner.\n * Returns the rewritten string, or null if native isn't available. */\nexport const nativeRewriteImports = (\n\tcontent: string,\n\treplacements: [string, string][]\n) => {\n\tconst lib = loadNative();\n\tif (!lib) return null;\n\n\t// Format replacements as JSON array of [specifier, webPath] pairs\n\tconst jsonStr = JSON.stringify(replacements);\n\tconst contentBuf = Buffer.from(content);\n\tconst jsonBuf = Buffer.from(jsonStr);\n\tconst outBuf = Buffer.alloc(content.length * 2);\n\n\t// outLenPtr is a pointer to a usize (8 bytes on 64-bit)\n\tconst outLenBuf = new BigUint64Array([BigInt(outBuf.length)]);\n\n\tconst result = lib.rewrite_imports(\n\t\tptr(contentBuf),\n\t\tcontentBuf.length,\n\t\tptr(jsonBuf),\n\t\tjsonBuf.length,\n\t\tptr(outBuf),\n\t\tptr(new Uint8Array(outLenBuf.buffer))\n\t);\n\n\tif (result < 0) return null;\n\tif (result === 0) return content; // no changes\n\n\tconst outLen = Number(outLenBuf[0]);\n\n\treturn outBuf.subarray(0, outLen).toString('utf-8');\n};\n"
6
+ ],
7
+ "mappings": ";;AAGA;AACA;AACA;AAEA,IAAM,gBAAgB;AAAA,EACrB,iBAAiB;AAAA,IAChB,MAAM;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,QAAQ;AAAA,IACT;AAAA,IACA,SAAS,QAAQ;AAAA,EAClB;AACD;AAIA,IAAI,YAA8B;AAElC,IAAM,aAAa,MAAM;AAAA,EACxB,IAAI,cAAc;AAAA,IAAM,OAAO;AAAA,EAE/B,MAAM,aAAa,SAAS;AAAA,EAC5B,MAAM,MAAM,KAAK;AAAA,EAEjB,MAAM,cAAsC;AAAA,IAC3C,gBAAgB;AAAA,IAChB,cAAc;AAAA,IACd,eAAe;AAAA,IACf,aAAa;AAAA,IACb,eAAe;AAAA,IACf,aAAa;AAAA,EACd;AAAA,EAEA,MAAM,UAAU,YAAY,GAAG,cAAc;AAAA,EAC7C,IAAI,CAAC;AAAA,IAAS,OAAO;AAAA,EAErB,IAAI;AAAA,IACH,MAAM,WAAW,QAChB,YAAY,KACZ,yBACA,OACD;AAAA,IACA,MAAM,MAAM,OAAO,UAAU,aAAa;AAAA,IAC1C,YAAY,IAAI;AAAA,IAEhB,OAAO;AAAA,IACN,MAAM;AAAA,IACP,OAAO;AAAA;AAAA;AAMF,IAAM,uBAAuB,CACnC,SACA,iBACI;AAAA,EACJ,MAAM,MAAM,WAAW;AAAA,EACvB,IAAI,CAAC;AAAA,IAAK,OAAO;AAAA,EAGjB,MAAM,UAAU,KAAK,UAAU,YAAY;AAAA,EAC3C,MAAM,aAAa,OAAO,KAAK,OAAO;AAAA,EACtC,MAAM,UAAU,OAAO,KAAK,OAAO;AAAA,EACnC,MAAM,SAAS,OAAO,MAAM,QAAQ,SAAS,CAAC;AAAA,EAG9C,MAAM,YAAY,IAAI,eAAe,CAAC,OAAO,OAAO,MAAM,CAAC,CAAC;AAAA,EAE5D,MAAM,SAAS,IAAI,gBAClB,IAAI,UAAU,GACd,WAAW,QACX,IAAI,OAAO,GACX,QAAQ,QACR,IAAI,MAAM,GACV,IAAI,IAAI,WAAW,UAAU,MAAM,CAAC,CACrC;AAAA,EAEA,IAAI,SAAS;AAAA,IAAG,OAAO;AAAA,EACvB,IAAI,WAAW;AAAA,IAAG,OAAO;AAAA,EAEzB,MAAM,SAAS,OAAO,UAAU,EAAE;AAAA,EAElC,OAAO,OAAO,SAAS,GAAG,MAAM,EAAE,SAAS,OAAO;AAAA;",
8
+ "debugId": "24F357D4DEE84F5564756E2164756E21",
9
+ "names": []
10
+ }
@@ -0,0 +1,13 @@
1
+ // @bun
2
+ import {
3
+ updateAssetPaths
4
+ } from "./chunk-93sqk7be.js";
5
+ import"./chunk-11zpfqz6.js";
6
+ import"./chunk-p5504p14.js";
7
+ import"./chunk-bmgqm774.js";
8
+ export {
9
+ updateAssetPaths
10
+ };
11
+
12
+ //# debugId=22F4A6E9A0F2B2A364756E2164756E21
13
+ //# sourceMappingURL=chunk-jwxt8gnp.js.map
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [
5
+ ],
6
+ "mappings": "",
7
+ "debugId": "22F4A6E9A0F2B2A364756E2164756E21",
8
+ "names": []
9
+ }
@@ -0,0 +1,195 @@
1
+ // @bun
2
+ import {
3
+ IMAGE_DEFAULT_DEVICE_SIZES,
4
+ IMAGE_DEFAULT_IMAGE_SIZES,
5
+ IMAGE_DEFAULT_QUALITY,
6
+ IMAGE_GLOB_SUFFIX_LENGTH
7
+ } from "./chunk-qh75agse.js";
8
+
9
+ // src/utils/imageProcessing.ts
10
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
11
+ import { join, resolve } from "path";
12
+ var DEFAULT_DEVICE_SIZES = IMAGE_DEFAULT_DEVICE_SIZES;
13
+ var DEFAULT_IMAGE_SIZES = IMAGE_DEFAULT_IMAGE_SIZES;
14
+ var DEFAULT_QUALITY = IMAGE_DEFAULT_QUALITY;
15
+ var OPTIMIZATION_ENDPOINT = "/_absolute/image";
16
+ var BLUR_DEVIATION = 20;
17
+ var sharpModule = undefined;
18
+ var sharpLoaded = false;
19
+ var sharpWarned = false;
20
+ var snapToSize = (target, sizes) => {
21
+ for (const size of sizes) {
22
+ if (size >= target)
23
+ return size;
24
+ }
25
+ return sizes[sizes.length - 1] ?? target;
26
+ };
27
+ var matchHostname = (actual, pattern) => {
28
+ if (pattern === actual)
29
+ return true;
30
+ if (pattern.startsWith("*.")) {
31
+ const suffix = pattern.slice(1);
32
+ return actual.endsWith(suffix) && actual.length > suffix.length;
33
+ }
34
+ return false;
35
+ };
36
+ var matchPathname = (actual, pattern) => {
37
+ if (pattern.endsWith("/**")) {
38
+ const prefix = pattern.slice(0, -IMAGE_GLOB_SUFFIX_LENGTH);
39
+ return actual.startsWith(prefix);
40
+ }
41
+ return actual === pattern;
42
+ };
43
+ var MIME_MAP = {
44
+ avif: "image/avif",
45
+ jpeg: "image/jpeg",
46
+ png: "image/png",
47
+ webp: "image/webp"
48
+ };
49
+ var isSharpFactory = (value) => typeof value === "function";
50
+ var callSharp = (sharpRef, input) => {
51
+ if (!isSharpFactory(sharpRef)) {
52
+ throw new Error("Loaded sharp module is not callable.");
53
+ }
54
+ return sharpRef(input);
55
+ };
56
+ var toBuffer = (input) => {
57
+ if (Buffer.isBuffer(input))
58
+ return input;
59
+ return Buffer.from(input);
60
+ };
61
+ var buildOptimizedUrl = (src, width, quality, basePath = OPTIMIZATION_ENDPOINT) => `${basePath}?url=${encodeURIComponent(src)}&w=${width}&q=${quality}`;
62
+ var formatToMime = (format) => MIME_MAP[format];
63
+ var generateBlurSvg = (base64Thumbnail) => {
64
+ const svg = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 320"><filter id="b" color-interpolation-filters="sRGB"><feGaussianBlur stdDeviation="${BLUR_DEVIATION}"/><feColorMatrix values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1"/></filter><image filter="url(#b)" x="0" y="0" width="100%" height="100%" href="${base64Thumbnail}"/></svg>`;
65
+ const encoded = encodeURIComponent(svg);
66
+ return `url("data:image/svg+xml,${encoded}")`;
67
+ };
68
+ var generateSrcSet = (src, width, sizes, config, loader) => {
69
+ const quality = config?.quality ?? DEFAULT_QUALITY;
70
+ const basePath = config?.path ?? OPTIMIZATION_ENDPOINT;
71
+ const buildUrl = loader ?? ((params) => buildOptimizedUrl(params.src, params.width, params.quality, basePath));
72
+ if (sizes) {
73
+ const allSizes = getAllSizes(config);
74
+ return allSizes.map((sizeWidth) => `${buildUrl({ quality, src, width: sizeWidth })} ${sizeWidth}w`).join(", ");
75
+ }
76
+ if (width) {
77
+ const allSizes = getAllSizes(config);
78
+ const w1x = snapToSize(width, allSizes);
79
+ const w2x = snapToSize(width * 2, allSizes);
80
+ return `${buildUrl({ quality, src, width: w1x })} 1x, ${buildUrl({ quality, src, width: w2x })} 2x`;
81
+ }
82
+ const deviceSizes = config?.deviceSizes ?? DEFAULT_DEVICE_SIZES;
83
+ return deviceSizes.map((sizeWidth) => `${buildUrl({ quality, src, width: sizeWidth })} ${sizeWidth}w`).join(", ");
84
+ };
85
+ var getAllSizes = (config) => {
86
+ const device = config?.deviceSizes ?? DEFAULT_DEVICE_SIZES;
87
+ const image = config?.imageSizes ?? DEFAULT_IMAGE_SIZES;
88
+ return [...device, ...image].sort((left, right) => left - right);
89
+ };
90
+ var getCacheDir = (buildDir) => {
91
+ const dir = join(buildDir, ".cache", "images");
92
+ if (!existsSync(dir))
93
+ mkdirSync(dir, { recursive: true });
94
+ return dir;
95
+ };
96
+ var getCacheKey = (url, width, quality, format) => {
97
+ const hasher = new Bun.CryptoHasher("sha256");
98
+ hasher.update(`${url}|${width}|${quality}|${format}`);
99
+ return hasher.digest("hex");
100
+ };
101
+ var isCacheStale = (meta) => Date.now() > meta.expireAt;
102
+ var matchRemotePattern = (urlString, patterns) => {
103
+ let parsed;
104
+ try {
105
+ parsed = new URL(urlString);
106
+ } catch {
107
+ return false;
108
+ }
109
+ return patterns.some((pattern) => {
110
+ if (pattern.protocol && parsed.protocol !== `${pattern.protocol}:`)
111
+ return false;
112
+ if (!matchHostname(parsed.hostname, pattern.hostname))
113
+ return false;
114
+ if (pattern.port && parsed.port !== pattern.port)
115
+ return false;
116
+ if (pattern.pathname && !matchPathname(parsed.pathname, pattern.pathname))
117
+ return false;
118
+ return true;
119
+ });
120
+ };
121
+ var negotiateFormat = (acceptHeader, configuredFormats) => {
122
+ for (const format of configuredFormats) {
123
+ const mime = MIME_MAP[format];
124
+ if (mime && acceptHeader.includes(mime))
125
+ return format;
126
+ }
127
+ if (configuredFormats.includes("webp") && acceptHeader.includes("image/webp")) {
128
+ return "webp";
129
+ }
130
+ return "jpeg";
131
+ };
132
+ var AVIF_QUALITY_OFFSET = 20;
133
+ var AVIF_EFFORT = 3;
134
+ var optimizeImage = async (buffer, width, quality, format) => {
135
+ const sharp = await tryLoadSharp();
136
+ if (!sharp)
137
+ return toBuffer(buffer);
138
+ const pipeline = callSharp(sharp, toBuffer(buffer)).rotate().resize(width, undefined, { withoutEnlargement: true });
139
+ switch (format) {
140
+ case "avif":
141
+ return pipeline.avif({
142
+ effort: AVIF_EFFORT,
143
+ quality: Math.max(1, quality - AVIF_QUALITY_OFFSET)
144
+ }).toBuffer();
145
+ case "jpeg":
146
+ return pipeline.jpeg({ mozjpeg: true, quality }).toBuffer();
147
+ case "png":
148
+ return pipeline.png({ quality }).toBuffer();
149
+ case "webp":
150
+ return pipeline.webp({ quality }).toBuffer();
151
+ default:
152
+ return toBuffer(buffer);
153
+ }
154
+ };
155
+ var readFromCache = (cacheDir, cacheKey) => {
156
+ const metaPath = join(cacheDir, `${cacheKey}.meta`);
157
+ const dataPath = join(cacheDir, `${cacheKey}.data`);
158
+ if (!existsSync(metaPath) || !existsSync(dataPath))
159
+ return null;
160
+ try {
161
+ const meta = JSON.parse(readFileSync(metaPath, "utf-8"));
162
+ const buffer = readFileSync(dataPath);
163
+ return { buffer, meta };
164
+ } catch {
165
+ return null;
166
+ }
167
+ };
168
+ var tryLoadSharp = async () => {
169
+ if (sharpLoaded)
170
+ return sharpModule;
171
+ sharpLoaded = true;
172
+ try {
173
+ const sharpPath = resolve(process.cwd(), "node_modules/sharp");
174
+ const mod = await import(sharpPath);
175
+ sharpModule = mod.default ?? mod;
176
+ return sharpModule;
177
+ } catch {
178
+ if (sharpWarned)
179
+ return null;
180
+ sharpWarned = true;
181
+ console.warn("[image] sharp not installed \u2014 serving unoptimized images. Install with: bun add sharp");
182
+ return null;
183
+ }
184
+ };
185
+ var writeToCache = (cacheDir, cacheKey, buffer, meta) => {
186
+ const metaPath = join(cacheDir, `${cacheKey}.meta`);
187
+ const dataPath = join(cacheDir, `${cacheKey}.data`);
188
+ writeFileSync(dataPath, buffer);
189
+ writeFileSync(metaPath, JSON.stringify(meta));
190
+ };
191
+
192
+ export { DEFAULT_DEVICE_SIZES, DEFAULT_IMAGE_SIZES, DEFAULT_QUALITY, OPTIMIZATION_ENDPOINT, buildOptimizedUrl, formatToMime, generateBlurSvg, generateSrcSet, getAllSizes, getCacheDir, getCacheKey, isCacheStale, matchRemotePattern, negotiateFormat, optimizeImage, readFromCache, writeToCache };
193
+
194
+ //# debugId=0E6FC26DA6D20EE064756E2164756E21
195
+ //# sourceMappingURL=chunk-kk8w9rh5.js.map
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/utils/imageProcessing.ts"],
4
+ "sourcesContent": [
5
+ "import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';\nimport { join, resolve } from 'node:path';\nimport type {\n\tImageConfig,\n\tImageFormat,\n\tRemotePattern\n} from '../../types/image';\nimport {\n\tIMAGE_DEFAULT_DEVICE_SIZES,\n\tIMAGE_DEFAULT_IMAGE_SIZES,\n\tIMAGE_DEFAULT_QUALITY,\n\tIMAGE_GLOB_SUFFIX_LENGTH\n} from '../constants';\n\n// ── Constants ──────────────────────────────────────────────────────\n\nexport const DEFAULT_DEVICE_SIZES = IMAGE_DEFAULT_DEVICE_SIZES;\nexport const DEFAULT_IMAGE_SIZES = IMAGE_DEFAULT_IMAGE_SIZES;\nexport const DEFAULT_QUALITY = IMAGE_DEFAULT_QUALITY;\n\nexport const OPTIMIZATION_ENDPOINT = '/_absolute/image';\n\n// ── Blur Placeholder ───────────────────────────────────────────────\n\nconst BLUR_SIZE = 8;\nconst BLUR_QUALITY = 70;\nconst BLUR_DEVIATION = 20;\n\n// ── Sharp Loading ──────────────────────────────────────────────────\n\nlet sharpModule: unknown = undefined;\nlet sharpLoaded = false;\nlet sharpWarned = false;\n\n// ── Shared Internals ───────────────────────────────────────────────\n\n/** Snap a target width UP to the nearest configured size */\nconst snapToSize = (target: number, sizes: number[]) => {\n\tfor (const size of sizes) {\n\t\tif (size >= target) return size;\n\t}\n\n\treturn sizes[sizes.length - 1] ?? target;\n};\n\n/** Match hostname with wildcard support: \"*.example.com\" matches \"cdn.example.com\" */\nconst matchHostname = (actual: string, pattern: string) => {\n\tif (pattern === actual) return true;\n\n\tif (pattern.startsWith('*.')) {\n\t\tconst suffix = pattern.slice(1); // \".example.com\"\n\n\t\treturn actual.endsWith(suffix) && actual.length > suffix.length;\n\t}\n\n\treturn false;\n};\n\n/** Match pathname with glob prefix: \"/images/**\" matches \"/images/photo.jpg\" */\nconst matchPathname = (actual: string, pattern: string) => {\n\tif (pattern.endsWith('/**')) {\n\t\tconst prefix = pattern.slice(0, -IMAGE_GLOB_SUFFIX_LENGTH);\n\n\t\treturn actual.startsWith(prefix);\n\t}\n\n\treturn actual === pattern;\n};\n\nconst MIME_MAP: Record<ImageFormat, string> = {\n\tavif: 'image/avif',\n\tjpeg: 'image/jpeg',\n\tpng: 'image/png',\n\twebp: 'image/webp'\n};\n\ntype SharpPipeline = {\n\tavif: (options: { effort: number; quality: number }) => SharpPipeline;\n\tjpeg: (options: { mozjpeg?: boolean; quality: number }) => SharpPipeline;\n\tpng: (options: { quality: number }) => SharpPipeline;\n\tresize: (\n\t\twidth: number,\n\t\theight?: number,\n\t\toptions?: { fit?: string; withoutEnlargement?: boolean }\n\t) => SharpPipeline;\n\trotate: () => SharpPipeline;\n\ttoBuffer: () => Promise<Buffer>;\n\twebp: (options: { quality: number }) => SharpPipeline;\n};\n\ntype SharpFactory = (input: Buffer) => SharpPipeline;\n\nconst isSharpFactory = (value: unknown): value is SharpFactory =>\n\ttypeof value === 'function';\n\n/** Convert sharp dynamic import result to a callable factory */\nconst callSharp = (sharpRef: unknown, input: Buffer) => {\n\tif (!isSharpFactory(sharpRef)) {\n\t\tthrow new Error('Loaded sharp module is not callable.');\n\t}\n\n\treturn sharpRef(input);\n};\n\nconst toBuffer = (input: Buffer | ArrayBuffer) => {\n\tif (Buffer.isBuffer(input)) return input;\n\n\treturn Buffer.from(input);\n};\n\n// ── Exports (alphabetically sorted) ────────────────────────────────\n\nexport const buildOptimizedUrl = (\n\tsrc: string,\n\twidth: number,\n\tquality: number,\n\tbasePath = OPTIMIZATION_ENDPOINT\n) => `${basePath}?url=${encodeURIComponent(src)}&w=${width}&q=${quality}`;\n\nexport type CacheMeta = {\n\tcontentType: string;\n\tetag: string;\n\texpireAt: number;\n\tupstreamEtag?: string;\n};\n\nexport const formatToMime = (format: ImageFormat) => MIME_MAP[format];\n\nexport const generateBlurDataURL = async (buffer: Buffer | ArrayBuffer) => {\n\tconst sharp = await tryLoadSharp();\n\n\tif (!sharp) return '';\n\n\tconst tiny: Buffer = await callSharp(sharp, toBuffer(buffer))\n\t\t.resize(BLUR_SIZE, BLUR_SIZE, { fit: 'inside' })\n\t\t.webp({ quality: BLUR_QUALITY })\n\t\t.toBuffer();\n\n\treturn `data:image/webp;base64,${tiny.toString('base64')}`;\n};\n\nexport const generateBlurSvg = (base64Thumbnail: string) => {\n\t// Match Next.js: wrap tiny thumbnail in SVG with Gaussian blur\n\tconst svg = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 320\"><filter id=\"b\" color-interpolation-filters=\"sRGB\"><feGaussianBlur stdDeviation=\"${BLUR_DEVIATION}\"/><feColorMatrix values=\"1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1\"/></filter><image filter=\"url(#b)\" x=\"0\" y=\"0\" width=\"100%\" height=\"100%\" href=\"${base64Thumbnail}\"/></svg>`;\n\n\tconst encoded = encodeURIComponent(svg);\n\n\treturn `url(\"data:image/svg+xml,${encoded}\")`;\n};\n\nexport const generateSrcSet = (\n\tsrc: string,\n\twidth: number | undefined,\n\tsizes: string | undefined,\n\tconfig?: ImageConfig,\n\tloader?: (params: { quality: number; src: string; width: number }) => string\n) => {\n\tconst quality = config?.quality ?? DEFAULT_QUALITY;\n\n\tconst basePath = config?.path ?? OPTIMIZATION_ENDPOINT;\n\n\tconst buildUrl =\n\t\tloader ??\n\t\t((params: { quality: number; src: string; width: number }) =>\n\t\t\tbuildOptimizedUrl(\n\t\t\t\tparams.src,\n\t\t\t\tparams.width,\n\t\t\t\tparams.quality,\n\t\t\t\tbasePath\n\t\t\t));\n\n\tif (sizes) {\n\t\t// With sizes: use all breakpoints with w descriptors\n\t\tconst allSizes = getAllSizes(config);\n\n\t\treturn allSizes\n\t\t\t.map(\n\t\t\t\t(sizeWidth) =>\n\t\t\t\t\t`${buildUrl({ quality, src, width: sizeWidth })} ${sizeWidth}w`\n\t\t\t)\n\t\t\t.join(', ');\n\t}\n\n\tif (width) {\n\t\t// Without sizes: generate 1x and 2x density descriptors\n\t\tconst allSizes = getAllSizes(config);\n\n\t\tconst w1x = snapToSize(width, allSizes);\n\n\t\tconst w2x = snapToSize(width * 2, allSizes);\n\n\t\treturn `${buildUrl({ quality, src, width: w1x })} 1x, ${buildUrl({ quality, src, width: w2x })} 2x`;\n\t}\n\n\t// No width or sizes — use device sizes with w descriptors\n\tconst deviceSizes = config?.deviceSizes ?? DEFAULT_DEVICE_SIZES;\n\n\treturn deviceSizes\n\t\t.map(\n\t\t\t(sizeWidth) =>\n\t\t\t\t`${buildUrl({ quality, src, width: sizeWidth })} ${sizeWidth}w`\n\t\t)\n\t\t.join(', ');\n};\n\nexport const getAllSizes = (config?: ImageConfig) => {\n\tconst device = config?.deviceSizes ?? DEFAULT_DEVICE_SIZES;\n\n\tconst image = config?.imageSizes ?? DEFAULT_IMAGE_SIZES;\n\n\treturn [...device, ...image].sort((left, right) => left - right);\n};\n\nexport const getCacheDir = (buildDir: string) => {\n\tconst dir = join(buildDir, '.cache', 'images');\n\n\tif (!existsSync(dir)) mkdirSync(dir, { recursive: true });\n\n\treturn dir;\n};\n\nexport const getCacheKey = (\n\turl: string,\n\twidth: number,\n\tquality: number,\n\tformat: string\n) => {\n\tconst hasher = new Bun.CryptoHasher('sha256');\n\n\thasher.update(`${url}|${width}|${quality}|${format}`);\n\n\treturn hasher.digest('hex');\n};\n\nexport const isCacheStale = (meta: CacheMeta) => Date.now() > meta.expireAt;\n\nexport const matchRemotePattern = (\n\turlString: string,\n\tpatterns: RemotePattern[]\n) => {\n\tlet parsed: URL;\n\n\ttry {\n\t\tparsed = new URL(urlString);\n\t} catch {\n\t\treturn false;\n\t}\n\n\treturn patterns.some((pattern) => {\n\t\tif (pattern.protocol && parsed.protocol !== `${pattern.protocol}:`)\n\t\t\treturn false;\n\n\t\tif (!matchHostname(parsed.hostname, pattern.hostname)) return false;\n\n\t\tif (pattern.port && parsed.port !== pattern.port) return false;\n\n\t\tif (\n\t\t\tpattern.pathname &&\n\t\t\t!matchPathname(parsed.pathname, pattern.pathname)\n\t\t)\n\t\t\treturn false;\n\n\t\treturn true;\n\t});\n};\n\nexport const negotiateFormat = (\n\tacceptHeader: string,\n\tconfiguredFormats: ImageFormat[]\n) => {\n\t// Check configured formats in preference order against Accept header\n\tfor (const format of configuredFormats) {\n\t\tconst mime = MIME_MAP[format];\n\n\t\tif (mime && acceptHeader.includes(mime)) return format;\n\t}\n\n\t// Fallback: if webp is configured and accepted, use it\n\tif (\n\t\tconfiguredFormats.includes('webp') &&\n\t\tacceptHeader.includes('image/webp')\n\t) {\n\t\treturn 'webp';\n\t}\n\n\t// Final fallback to jpeg\n\treturn 'jpeg';\n};\n\nconst AVIF_QUALITY_OFFSET = 20;\nconst AVIF_EFFORT = 3;\n\nexport const optimizeImage = async (\n\tbuffer: Buffer | ArrayBuffer,\n\twidth: number,\n\tquality: number,\n\tformat: ImageFormat\n) => {\n\tconst sharp = await tryLoadSharp();\n\n\tif (!sharp) return toBuffer(buffer);\n\n\tconst pipeline = callSharp(sharp, toBuffer(buffer))\n\t\t.rotate()\n\t\t.resize(width, undefined, { withoutEnlargement: true });\n\n\tswitch (format) {\n\t\tcase 'avif':\n\t\t\treturn pipeline\n\t\t\t\t.avif({\n\t\t\t\t\teffort: AVIF_EFFORT,\n\t\t\t\t\tquality: Math.max(1, quality - AVIF_QUALITY_OFFSET)\n\t\t\t\t})\n\t\t\t\t.toBuffer();\n\t\tcase 'jpeg':\n\t\t\treturn pipeline.jpeg({ mozjpeg: true, quality }).toBuffer();\n\t\tcase 'png':\n\t\t\treturn pipeline.png({ quality }).toBuffer();\n\t\tcase 'webp':\n\t\t\treturn pipeline.webp({ quality }).toBuffer();\n\t\tdefault:\n\t\t\treturn toBuffer(buffer);\n\t}\n};\n\nexport const readFromCache = (cacheDir: string, cacheKey: string) => {\n\tconst metaPath = join(cacheDir, `${cacheKey}.meta`);\n\n\tconst dataPath = join(cacheDir, `${cacheKey}.data`);\n\n\tif (!existsSync(metaPath) || !existsSync(dataPath)) return null;\n\n\ttry {\n\t\tconst meta: CacheMeta = JSON.parse(readFileSync(metaPath, 'utf-8'));\n\n\t\tconst buffer = readFileSync(dataPath);\n\n\t\treturn { buffer, meta };\n\t} catch {\n\t\treturn null;\n\t}\n};\n\nexport const tryLoadSharp = async () => {\n\tif (sharpLoaded) return sharpModule;\n\n\tsharpLoaded = true;\n\n\ttry {\n\t\t// Resolve sharp from the user's project root (not from absolutejs source,\n\t\t// which is baked into import.meta paths at bundle time)\n\t\tconst sharpPath = resolve(process.cwd(), 'node_modules/sharp');\n\n\t\tconst mod = await import(sharpPath);\n\n\t\tsharpModule = mod.default ?? mod;\n\n\t\treturn sharpModule;\n\t} catch {\n\t\tif (sharpWarned) return null;\n\n\t\tsharpWarned = true;\n\n\t\tconsole.warn(\n\t\t\t'[image] sharp not installed — serving unoptimized images. Install with: bun add sharp'\n\t\t);\n\n\t\treturn null;\n\t}\n};\n\nexport const writeToCache = (\n\tcacheDir: string,\n\tcacheKey: string,\n\tbuffer: Buffer,\n\tmeta: CacheMeta\n) => {\n\tconst metaPath = join(cacheDir, `${cacheKey}.meta`);\n\n\tconst dataPath = join(cacheDir, `${cacheKey}.data`);\n\n\twriteFileSync(dataPath, buffer);\n\n\twriteFileSync(metaPath, JSON.stringify(meta));\n};\n"
6
+ ],
7
+ "mappings": "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",
8
+ "debugId": "0E6FC26DA6D20EE064756E2164756E21",
9
+ "names": []
10
+ }