yansu 0.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/README.md +1 -0
  2. package/bin.mjs +18 -0
  3. package/dist/cli.d.mts +2 -0
  4. package/dist/cli.mjs +68 -0
  5. package/dist/dirs.d.mts +4 -0
  6. package/dist/dirs.mjs +6 -0
  7. package/dist/index.d.mts +78 -0
  8. package/dist/index.mjs +121 -0
  9. package/dist/nitro.json +15 -0
  10. package/dist/public/_nuxt/BHIHUtPz.js +4 -0
  11. package/dist/public/_nuxt/CCgOhniq.js +1 -0
  12. package/dist/public/_nuxt/CR6vfq1R.js +1 -0
  13. package/dist/public/_nuxt/DmxzK6E8.js +1 -0
  14. package/dist/public/_nuxt/builds/latest.json +1 -0
  15. package/dist/public/_nuxt/builds/meta/e9079134-f314-434b-b3a7-092c4a1e187d.json +1 -0
  16. package/dist/public/_nuxt/entry.DJ3VOi_0.css +1 -0
  17. package/dist/public/_nuxt/error-404.lC6KBLNm.css +1 -0
  18. package/dist/public/_nuxt/error-500.NtBcR2wE.css +1 -0
  19. package/dist/server/chunks/_/error-500.mjs +9 -0
  20. package/dist/server/chunks/build/_plugin-vue_export-helper-DjsbPc54.mjs +29 -0
  21. package/dist/server/chunks/build/client.precomputed.mjs +3 -0
  22. package/dist/server/chunks/build/error-404-Du0ot2hm.mjs +369 -0
  23. package/dist/server/chunks/build/error-500-Y3RUV6n2.mjs +73 -0
  24. package/dist/server/chunks/build/server.mjs +727 -0
  25. package/dist/server/chunks/nitro/nitro.mjs +5176 -0
  26. package/dist/server/chunks/routes/api/metadata.json.mjs +147 -0
  27. package/dist/server/chunks/routes/api/platform.json.mjs +20 -0
  28. package/dist/server/chunks/routes/renderer.mjs +408 -0
  29. package/dist/server/chunks/virtual/_virtual_spa-template.mjs +3 -0
  30. package/dist/server/index.mjs +9 -0
  31. package/dist/server/node_modules/.nitro/@vue/shared@3.5.25/dist/shared.cjs.prod.js +604 -0
  32. package/dist/server/node_modules/.nitro/@vue/shared@3.5.25/package.json +47 -0
  33. package/dist/server/node_modules/.nitro/@vue/shared@3.5.26/dist/shared.cjs.prod.js +604 -0
  34. package/dist/server/node_modules/.nitro/@vue/shared@3.5.26/package.json +47 -0
  35. package/dist/server/node_modules/@babel/parser/lib/index.js +14662 -0
  36. package/dist/server/node_modules/@babel/parser/package.json +50 -0
  37. package/dist/server/node_modules/@vue/compiler-core/dist/compiler-core.cjs.prod.js +6763 -0
  38. package/dist/server/node_modules/@vue/compiler-core/package.json +58 -0
  39. package/dist/server/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.prod.js +689 -0
  40. package/dist/server/node_modules/@vue/compiler-dom/package.json +57 -0
  41. package/dist/server/node_modules/@vue/compiler-ssr/dist/compiler-ssr.cjs.js +1413 -0
  42. package/dist/server/node_modules/@vue/compiler-ssr/package.json +34 -0
  43. package/dist/server/node_modules/@vue/reactivity/dist/reactivity.cjs.prod.js +1853 -0
  44. package/dist/server/node_modules/@vue/reactivity/package.json +55 -0
  45. package/dist/server/node_modules/@vue/runtime-core/dist/runtime-core.cjs.prod.js +6770 -0
  46. package/dist/server/node_modules/@vue/runtime-core/package.json +52 -0
  47. package/dist/server/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.prod.js +1732 -0
  48. package/dist/server/node_modules/@vue/runtime-dom/package.json +60 -0
  49. package/dist/server/node_modules/@vue/server-renderer/dist/server-renderer.cjs.prod.js +879 -0
  50. package/dist/server/node_modules/@vue/server-renderer/package.json +55 -0
  51. package/dist/server/node_modules/ansis/index.cjs +1 -0
  52. package/dist/server/node_modules/ansis/index.mjs +1 -0
  53. package/dist/server/node_modules/ansis/package.json +25 -0
  54. package/dist/server/node_modules/birpc/dist/index.mjs +173 -0
  55. package/dist/server/node_modules/birpc/package.json +56 -0
  56. package/dist/server/node_modules/consola/dist/chunks/prompt.mjs +280 -0
  57. package/dist/server/node_modules/consola/dist/core.mjs +512 -0
  58. package/dist/server/node_modules/consola/dist/index.mjs +651 -0
  59. package/dist/server/node_modules/consola/dist/shared/consola.DRwqZj3T.mjs +72 -0
  60. package/dist/server/node_modules/consola/dist/shared/consola.DXBYu-KD.mjs +288 -0
  61. package/dist/server/node_modules/consola/package.json +136 -0
  62. package/dist/server/node_modules/devalue/index.js +4 -0
  63. package/dist/server/node_modules/devalue/package.json +37 -0
  64. package/dist/server/node_modules/devalue/src/base64.js +110 -0
  65. package/dist/server/node_modules/devalue/src/constants.js +6 -0
  66. package/dist/server/node_modules/devalue/src/parse.js +205 -0
  67. package/dist/server/node_modules/devalue/src/stringify.js +265 -0
  68. package/dist/server/node_modules/devalue/src/uneval.js +407 -0
  69. package/dist/server/node_modules/devalue/src/utils.js +118 -0
  70. package/dist/server/node_modules/entities/dist/commonjs/decode-codepoint.js +77 -0
  71. package/dist/server/node_modules/entities/dist/commonjs/decode.js +568 -0
  72. package/dist/server/node_modules/entities/dist/commonjs/generated/decode-data-html.js +7 -0
  73. package/dist/server/node_modules/entities/dist/commonjs/generated/decode-data-xml.js +7 -0
  74. package/dist/server/node_modules/entities/dist/commonjs/internal/bin-trie-flags.js +21 -0
  75. package/dist/server/node_modules/entities/dist/commonjs/internal/decode-shared.js +31 -0
  76. package/dist/server/node_modules/entities/dist/commonjs/package.json +3 -0
  77. package/dist/server/node_modules/entities/package.json +113 -0
  78. package/dist/server/node_modules/estree-walker/dist/umd/estree-walker.js +344 -0
  79. package/dist/server/node_modules/estree-walker/package.json +37 -0
  80. package/dist/server/node_modules/get-port-please/dist/index.mjs +430 -0
  81. package/dist/server/node_modules/get-port-please/package.json +39 -0
  82. package/dist/server/node_modules/hookable/dist/index.mjs +290 -0
  83. package/dist/server/node_modules/hookable/package.json +49 -0
  84. package/dist/server/node_modules/source-map-js/lib/array-set.js +121 -0
  85. package/dist/server/node_modules/source-map-js/lib/base64-vlq.js +140 -0
  86. package/dist/server/node_modules/source-map-js/lib/base64.js +67 -0
  87. package/dist/server/node_modules/source-map-js/lib/binary-search.js +111 -0
  88. package/dist/server/node_modules/source-map-js/lib/mapping-list.js +79 -0
  89. package/dist/server/node_modules/source-map-js/lib/quick-sort.js +132 -0
  90. package/dist/server/node_modules/source-map-js/lib/source-map-consumer.js +1188 -0
  91. package/dist/server/node_modules/source-map-js/lib/source-map-generator.js +444 -0
  92. package/dist/server/node_modules/source-map-js/lib/source-node.js +413 -0
  93. package/dist/server/node_modules/source-map-js/lib/util.js +594 -0
  94. package/dist/server/node_modules/source-map-js/package.json +71 -0
  95. package/dist/server/node_modules/source-map-js/source-map.js +8 -0
  96. package/dist/server/node_modules/structured-clone-es/dist/index.mjs +285 -0
  97. package/dist/server/node_modules/structured-clone-es/package.json +56 -0
  98. package/dist/server/node_modules/ufo/dist/index.mjs +638 -0
  99. package/dist/server/node_modules/ufo/package.json +47 -0
  100. package/dist/server/node_modules/unhead/dist/index.mjs +9 -0
  101. package/dist/server/node_modules/unhead/dist/parser.mjs +508 -0
  102. package/dist/server/node_modules/unhead/dist/plugins.mjs +101 -0
  103. package/dist/server/node_modules/unhead/dist/scripts.mjs +30 -0
  104. package/dist/server/node_modules/unhead/dist/server.mjs +182 -0
  105. package/dist/server/node_modules/unhead/dist/shared/unhead.B578PsDV.mjs +266 -0
  106. package/dist/server/node_modules/unhead/dist/shared/unhead.BPM0-cfG.mjs +44 -0
  107. package/dist/server/node_modules/unhead/dist/shared/unhead.BYvz9V1x.mjs +43 -0
  108. package/dist/server/node_modules/unhead/dist/shared/unhead.BpRRHAhY.mjs +194 -0
  109. package/dist/server/node_modules/unhead/dist/shared/unhead.CApf5sj3.mjs +148 -0
  110. package/dist/server/node_modules/unhead/dist/shared/unhead.DH45uomy.mjs +180 -0
  111. package/dist/server/node_modules/unhead/dist/shared/unhead.DQc16pHI.mjs +196 -0
  112. package/dist/server/node_modules/unhead/dist/shared/unhead.DZbvapt-.mjs +70 -0
  113. package/dist/server/node_modules/unhead/dist/shared/unhead.Djo8ep_Y.mjs +166 -0
  114. package/dist/server/node_modules/unhead/dist/shared/unhead.yem5I2v_.mjs +38 -0
  115. package/dist/server/node_modules/unhead/dist/utils.mjs +5 -0
  116. package/dist/server/node_modules/unhead/package.json +105 -0
  117. package/dist/server/node_modules/vue/dist/vue.cjs.js +80 -0
  118. package/dist/server/node_modules/vue/dist/vue.cjs.prod.js +66 -0
  119. package/dist/server/node_modules/vue/index.js +7 -0
  120. package/dist/server/node_modules/vue/index.mjs +1 -0
  121. package/dist/server/node_modules/vue/package.json +112 -0
  122. package/dist/server/node_modules/vue/server-renderer/index.mjs +1 -0
  123. package/dist/server/node_modules/vue-bundle-renderer/dist/runtime.mjs +301 -0
  124. package/dist/server/node_modules/vue-bundle-renderer/package.json +55 -0
  125. package/dist/server/node_modules/ws/lib/buffer-util.js +131 -0
  126. package/dist/server/node_modules/ws/lib/constants.js +19 -0
  127. package/dist/server/node_modules/ws/lib/event-target.js +292 -0
  128. package/dist/server/node_modules/ws/lib/extension.js +203 -0
  129. package/dist/server/node_modules/ws/lib/limiter.js +55 -0
  130. package/dist/server/node_modules/ws/lib/permessage-deflate.js +528 -0
  131. package/dist/server/node_modules/ws/lib/receiver.js +706 -0
  132. package/dist/server/node_modules/ws/lib/sender.js +602 -0
  133. package/dist/server/node_modules/ws/lib/stream.js +161 -0
  134. package/dist/server/node_modules/ws/lib/subprotocol.js +62 -0
  135. package/dist/server/node_modules/ws/lib/validation.js +152 -0
  136. package/dist/server/node_modules/ws/lib/websocket-server.js +554 -0
  137. package/dist/server/node_modules/ws/lib/websocket.js +1393 -0
  138. package/dist/server/node_modules/ws/package.json +69 -0
  139. package/dist/server/node_modules/ws/wrapper.mjs +8 -0
  140. package/dist/server/package.json +32 -0
  141. package/dist/shared/yansu.DmdNF4qf.mjs +151 -0
  142. package/package.json +50 -0
@@ -0,0 +1,508 @@
1
+ const TAG_HTML = 0;
2
+ const TAG_HEAD = 1;
3
+ const TAG_TITLE = 4;
4
+ const TAG_META = 5;
5
+ const TAG_BODY = 44;
6
+ const TAG_SCRIPT = 52;
7
+ const TAG_STYLE = 53;
8
+ const TAG_LINK = 54;
9
+ const TAG_BASE = 56;
10
+ const LT_CHAR = 60;
11
+ const GT_CHAR = 62;
12
+ const SLASH_CHAR = 47;
13
+ const EQUALS_CHAR = 61;
14
+ const QUOTE_CHAR = 34;
15
+ const APOS_CHAR = 39;
16
+ const EXCLAMATION_CHAR = 33;
17
+ const BACKSLASH_CHAR = 92;
18
+ const DASH_CHAR = 45;
19
+ const TagIdMap = {
20
+ html: TAG_HTML,
21
+ head: TAG_HEAD,
22
+ title: TAG_TITLE,
23
+ meta: TAG_META,
24
+ body: TAG_BODY,
25
+ script: TAG_SCRIPT,
26
+ style: TAG_STYLE,
27
+ link: TAG_LINK,
28
+ base: TAG_BASE
29
+ };
30
+ function isWhitespace(charCode) {
31
+ return charCode === 32 || charCode === 9 || charCode === 10 || charCode === 13;
32
+ }
33
+ function processCommentOrDoctype(htmlChunk, position) {
34
+ let i = position;
35
+ const chunkLength = htmlChunk.length;
36
+ if (i + 3 < chunkLength && htmlChunk.charCodeAt(i + 2) === DASH_CHAR && htmlChunk.charCodeAt(i + 3) === DASH_CHAR) {
37
+ i += 4;
38
+ while (i < chunkLength - 2) {
39
+ if (htmlChunk.charCodeAt(i) === DASH_CHAR && htmlChunk.charCodeAt(i + 1) === DASH_CHAR && htmlChunk.charCodeAt(i + 2) === GT_CHAR) {
40
+ i += 3;
41
+ return {
42
+ complete: true,
43
+ newPosition: i,
44
+ remainingText: ""
45
+ };
46
+ }
47
+ i++;
48
+ }
49
+ return {
50
+ complete: false,
51
+ newPosition: position,
52
+ remainingText: htmlChunk.substring(position)
53
+ };
54
+ } else {
55
+ i += 2;
56
+ while (i < chunkLength) {
57
+ if (htmlChunk.charCodeAt(i) === GT_CHAR) {
58
+ i++;
59
+ return {
60
+ complete: true,
61
+ newPosition: i,
62
+ remainingText: ""
63
+ };
64
+ }
65
+ i++;
66
+ }
67
+ return {
68
+ complete: false,
69
+ newPosition: i,
70
+ remainingText: htmlChunk.substring(position, i)
71
+ };
72
+ }
73
+ }
74
+ function parseAttributes(attrStr) {
75
+ if (!attrStr)
76
+ return {};
77
+ const result = {};
78
+ const len = attrStr.length;
79
+ let i = 0;
80
+ const WHITESPACE = 0;
81
+ const NAME = 1;
82
+ const AFTER_NAME = 2;
83
+ const BEFORE_VALUE = 3;
84
+ const QUOTED_VALUE = 4;
85
+ const UNQUOTED_VALUE = 5;
86
+ let state = WHITESPACE;
87
+ let nameStart = 0;
88
+ let nameEnd = 0;
89
+ let valueStart = 0;
90
+ let quoteChar = 0;
91
+ let name = "";
92
+ while (i < len) {
93
+ const charCode = attrStr.charCodeAt(i);
94
+ const isSpace = isWhitespace(charCode);
95
+ switch (state) {
96
+ case WHITESPACE:
97
+ if (!isSpace) {
98
+ state = NAME;
99
+ nameStart = i;
100
+ nameEnd = 0;
101
+ }
102
+ break;
103
+ case NAME:
104
+ if (charCode === EQUALS_CHAR || isSpace) {
105
+ nameEnd = i;
106
+ name = attrStr.substring(nameStart, nameEnd).toLowerCase();
107
+ state = charCode === EQUALS_CHAR ? BEFORE_VALUE : AFTER_NAME;
108
+ }
109
+ break;
110
+ case AFTER_NAME:
111
+ if (charCode === EQUALS_CHAR) {
112
+ state = BEFORE_VALUE;
113
+ } else if (!isSpace) {
114
+ result[name] = "";
115
+ state = NAME;
116
+ nameStart = i;
117
+ nameEnd = 0;
118
+ }
119
+ break;
120
+ case BEFORE_VALUE:
121
+ if (charCode === QUOTE_CHAR || charCode === APOS_CHAR) {
122
+ quoteChar = charCode;
123
+ state = QUOTED_VALUE;
124
+ valueStart = i + 1;
125
+ } else if (!isSpace) {
126
+ state = UNQUOTED_VALUE;
127
+ valueStart = i;
128
+ }
129
+ break;
130
+ case QUOTED_VALUE:
131
+ if (charCode === BACKSLASH_CHAR && i + 1 < len) {
132
+ i++;
133
+ } else if (charCode === quoteChar) {
134
+ result[name] = attrStr.substring(valueStart, i);
135
+ state = WHITESPACE;
136
+ }
137
+ break;
138
+ case UNQUOTED_VALUE:
139
+ if (isSpace || charCode === GT_CHAR) {
140
+ result[name] = attrStr.substring(valueStart, i);
141
+ state = WHITESPACE;
142
+ }
143
+ break;
144
+ }
145
+ i++;
146
+ }
147
+ if (state === QUOTED_VALUE || state === UNQUOTED_VALUE) {
148
+ if (name) {
149
+ result[name] = attrStr.substring(valueStart, i);
150
+ }
151
+ } else if (state === NAME || state === AFTER_NAME || state === BEFORE_VALUE) {
152
+ nameEnd = nameEnd || i;
153
+ const currentName = attrStr.substring(nameStart, nameEnd).toLowerCase();
154
+ if (currentName) {
155
+ result[currentName] = "";
156
+ }
157
+ }
158
+ return result;
159
+ }
160
+ function parseHtmlForIndexes(html) {
161
+ const indexes = {
162
+ htmlTagStart: html.indexOf("<html"),
163
+ htmlTagEnd: -1,
164
+ headTagEnd: html.indexOf("</head>"),
165
+ bodyTagStart: html.indexOf("<body"),
166
+ bodyTagEnd: -1,
167
+ bodyCloseTagStart: html.indexOf("</body>")
168
+ };
169
+ if (indexes.htmlTagStart >= 0) {
170
+ const htmlTagEndPos = html.indexOf(">", indexes.htmlTagStart);
171
+ if (htmlTagEndPos >= 0) {
172
+ indexes.htmlTagEnd = htmlTagEndPos + 1;
173
+ }
174
+ }
175
+ if (indexes.bodyTagStart >= 0) {
176
+ const bodyTagEndPos = html.indexOf(">", indexes.bodyTagStart);
177
+ if (bodyTagEndPos >= 0) {
178
+ indexes.bodyTagEnd = bodyTagEndPos + 1;
179
+ }
180
+ }
181
+ return { html, input: {}, indexes };
182
+ }
183
+ function parseHtmlForUnheadExtraction(html) {
184
+ const input = {};
185
+ const htmlParts = [];
186
+ let position = 0;
187
+ let inHead = false;
188
+ let foundBodyStart = false;
189
+ let lastCopyPosition = 0;
190
+ let currentOutputLength = 0;
191
+ const indexes = {
192
+ htmlTagStart: -1,
193
+ htmlTagEnd: -1,
194
+ headTagEnd: -1,
195
+ bodyTagStart: -1,
196
+ bodyTagEnd: -1,
197
+ bodyCloseTagStart: -1
198
+ };
199
+ const headElementsToExtract = /* @__PURE__ */ new Set([TAG_TITLE, TAG_META, TAG_LINK, TAG_SCRIPT, TAG_STYLE, TAG_BASE]);
200
+ function copyAccumulatedText() {
201
+ if (lastCopyPosition < position) {
202
+ const textToAdd = html.substring(lastCopyPosition, position);
203
+ htmlParts.push(textToAdd);
204
+ currentOutputLength += textToAdd.length;
205
+ lastCopyPosition = position;
206
+ }
207
+ }
208
+ function addText(text) {
209
+ htmlParts.push(text);
210
+ currentOutputLength += text.length;
211
+ }
212
+ while (position < html.length && !foundBodyStart) {
213
+ const currentCharCode = html.charCodeAt(position);
214
+ if (currentCharCode !== LT_CHAR) {
215
+ position++;
216
+ continue;
217
+ }
218
+ if (position + 1 >= html.length) {
219
+ copyAccumulatedText();
220
+ addText(html[position]);
221
+ break;
222
+ }
223
+ const nextCharCode = html.charCodeAt(position + 1);
224
+ if (nextCharCode === EXCLAMATION_CHAR) {
225
+ const result = processCommentOrDoctype(html, position);
226
+ if (result.complete) {
227
+ copyAccumulatedText();
228
+ addText(html.substring(position, result.newPosition));
229
+ position = result.newPosition;
230
+ lastCopyPosition = position;
231
+ } else {
232
+ copyAccumulatedText();
233
+ addText(html.substring(position));
234
+ break;
235
+ }
236
+ continue;
237
+ }
238
+ if (nextCharCode === SLASH_CHAR) {
239
+ let tagEnd2 = position + 2;
240
+ while (tagEnd2 < html.length && html.charCodeAt(tagEnd2) !== GT_CHAR) {
241
+ tagEnd2++;
242
+ }
243
+ if (tagEnd2 >= html.length) {
244
+ copyAccumulatedText();
245
+ addText(html.substring(position));
246
+ break;
247
+ }
248
+ const tagName2 = html.substring(position + 2, tagEnd2).toLowerCase().trim();
249
+ const tagId2 = TagIdMap[tagName2] ?? -1;
250
+ if (tagId2 === TAG_HEAD) {
251
+ inHead = false;
252
+ copyAccumulatedText();
253
+ const headCloseStart = currentOutputLength;
254
+ addText(html.substring(position, tagEnd2 + 1));
255
+ indexes.headTagEnd = headCloseStart;
256
+ } else {
257
+ copyAccumulatedText();
258
+ addText(html.substring(position, tagEnd2 + 1));
259
+ }
260
+ position = tagEnd2 + 1;
261
+ lastCopyPosition = position;
262
+ continue;
263
+ }
264
+ const tagStart = position + 1;
265
+ let tagNameEnd = tagStart;
266
+ while (tagNameEnd < html.length) {
267
+ const c = html.charCodeAt(tagNameEnd);
268
+ if (isWhitespace(c) || c === SLASH_CHAR || c === GT_CHAR) {
269
+ break;
270
+ }
271
+ tagNameEnd++;
272
+ }
273
+ if (tagNameEnd >= html.length) {
274
+ copyAccumulatedText();
275
+ addText(html.substring(position));
276
+ break;
277
+ }
278
+ const tagName = html.substring(tagStart, tagNameEnd).toLowerCase();
279
+ const tagId = TagIdMap[tagName] ?? -1;
280
+ let tagEnd = tagNameEnd;
281
+ let inQuote = false;
282
+ let quoteChar = 0;
283
+ let foundEnd = false;
284
+ let isSelfClosing = false;
285
+ while (tagEnd < html.length && !foundEnd) {
286
+ const c = html.charCodeAt(tagEnd);
287
+ if (inQuote) {
288
+ if (c === quoteChar) {
289
+ inQuote = false;
290
+ }
291
+ } else if (c === QUOTE_CHAR || c === APOS_CHAR) {
292
+ inQuote = true;
293
+ quoteChar = c;
294
+ } else if (c === SLASH_CHAR && tagEnd + 1 < html.length && html.charCodeAt(tagEnd + 1) === GT_CHAR) {
295
+ isSelfClosing = true;
296
+ tagEnd += 2;
297
+ foundEnd = true;
298
+ continue;
299
+ } else if (c === GT_CHAR) {
300
+ tagEnd++;
301
+ foundEnd = true;
302
+ continue;
303
+ }
304
+ tagEnd++;
305
+ }
306
+ if (!foundEnd) {
307
+ copyAccumulatedText();
308
+ addText(html.substring(position));
309
+ break;
310
+ }
311
+ const attributesStr = html.substring(tagNameEnd, tagEnd - (isSelfClosing ? 2 : 1)).trim();
312
+ const attributes = parseAttributes(attributesStr);
313
+ if (tagId === TAG_HTML) {
314
+ copyAccumulatedText();
315
+ indexes.htmlTagStart = currentOutputLength;
316
+ if (Object.keys(attributes).length > 0) {
317
+ input.htmlAttrs = attributes;
318
+ addText(`<${tagName}>`);
319
+ } else {
320
+ addText(html.substring(position, tagEnd));
321
+ }
322
+ indexes.htmlTagEnd = currentOutputLength;
323
+ } else if (tagId === TAG_BODY) {
324
+ copyAccumulatedText();
325
+ indexes.bodyTagStart = currentOutputLength;
326
+ if (Object.keys(attributes).length > 0) {
327
+ input.bodyAttrs = attributes;
328
+ addText(`<${tagName}>`);
329
+ } else {
330
+ addText(html.substring(position, tagEnd));
331
+ }
332
+ indexes.bodyTagEnd = currentOutputLength;
333
+ foundBodyStart = true;
334
+ position = tagEnd;
335
+ lastCopyPosition = position;
336
+ break;
337
+ } else if (tagId === TAG_HEAD) {
338
+ inHead = true;
339
+ copyAccumulatedText();
340
+ addText(html.substring(position, tagEnd));
341
+ } else if (inHead && headElementsToExtract.has(tagId)) {
342
+ if (tagId === TAG_TITLE) {
343
+ if (!isSelfClosing) {
344
+ const titleEnd = findClosingTag(html, tagEnd, tagName);
345
+ if (titleEnd !== -1) {
346
+ const titleContent = html.substring(tagEnd, titleEnd).trim();
347
+ if (titleContent && !input.title) {
348
+ input.title = titleContent;
349
+ }
350
+ position = findTagEnd(html, titleEnd, tagName);
351
+ lastCopyPosition = position;
352
+ continue;
353
+ }
354
+ }
355
+ } else if (tagId === TAG_SCRIPT) {
356
+ const scriptAttrs = { ...attributes };
357
+ if (!isSelfClosing) {
358
+ const scriptEnd = findClosingTag(html, tagEnd, tagName);
359
+ if (scriptEnd !== -1) {
360
+ const scriptContent = html.substring(tagEnd, scriptEnd);
361
+ scriptAttrs.innerHTML = scriptContent || "";
362
+ position = findTagEnd(html, scriptEnd, tagName);
363
+ } else {
364
+ scriptAttrs.innerHTML = "";
365
+ position = tagEnd;
366
+ }
367
+ } else {
368
+ scriptAttrs.innerHTML = "";
369
+ position = tagEnd;
370
+ }
371
+ lastCopyPosition = position;
372
+ (input.script ||= []).push(scriptAttrs);
373
+ continue;
374
+ } else if (tagId === TAG_STYLE) {
375
+ const styleAttrs = { ...attributes };
376
+ if (!isSelfClosing) {
377
+ const styleEnd = findClosingTag(html, tagEnd, tagName);
378
+ if (styleEnd !== -1) {
379
+ const styleContent = html.substring(tagEnd, styleEnd);
380
+ styleAttrs.textContent = styleContent || "";
381
+ position = findTagEnd(html, styleEnd, tagName);
382
+ } else {
383
+ styleAttrs.textContent = "";
384
+ position = tagEnd;
385
+ }
386
+ } else {
387
+ styleAttrs.textContent = "";
388
+ position = tagEnd;
389
+ }
390
+ lastCopyPosition = position;
391
+ (input.style ||= []).push(styleAttrs);
392
+ continue;
393
+ } else if (tagId === TAG_META) {
394
+ (input.meta ||= []).push(attributes);
395
+ position = tagEnd;
396
+ lastCopyPosition = position;
397
+ continue;
398
+ } else if (tagId === TAG_LINK) {
399
+ (input.link ||= []).push(attributes);
400
+ position = tagEnd;
401
+ lastCopyPosition = position;
402
+ continue;
403
+ } else if (tagId === TAG_BASE && !input.base) {
404
+ input.base = attributes;
405
+ position = tagEnd;
406
+ lastCopyPosition = position;
407
+ continue;
408
+ }
409
+ } else {
410
+ copyAccumulatedText();
411
+ addText(html.substring(position, tagEnd));
412
+ }
413
+ position = tagEnd;
414
+ lastCopyPosition = position;
415
+ }
416
+ const remainingHtml = html.substring(position);
417
+ const bodyCloseIndex = remainingHtml.indexOf("</body>");
418
+ if (bodyCloseIndex !== -1) {
419
+ indexes.bodyCloseTagStart = currentOutputLength + bodyCloseIndex;
420
+ }
421
+ copyAccumulatedText();
422
+ addText(remainingHtml);
423
+ return { html: htmlParts.join(""), input, indexes };
424
+ }
425
+ function findClosingTag(html, startPos, tagName) {
426
+ const tagId = TagIdMap[tagName];
427
+ const isScriptOrStyle = tagId === TAG_SCRIPT || tagId === TAG_STYLE;
428
+ if (!isScriptOrStyle) {
429
+ const closingTag2 = `</${tagName}`;
430
+ const index = html.indexOf(closingTag2, startPos);
431
+ return index === -1 ? -1 : index;
432
+ }
433
+ const closingTag = `</${tagName}`;
434
+ let pos = startPos;
435
+ let inSingleQuote = false;
436
+ let inDoubleQuote = false;
437
+ let inBacktick = false;
438
+ let lastCharWasBackslash = false;
439
+ while (pos < html.length) {
440
+ const currentCharCode = html.charCodeAt(pos);
441
+ if (!lastCharWasBackslash) {
442
+ if (currentCharCode === APOS_CHAR && !inDoubleQuote && !inBacktick) {
443
+ inSingleQuote = !inSingleQuote;
444
+ } else if (currentCharCode === QUOTE_CHAR && !inSingleQuote && !inBacktick) {
445
+ inDoubleQuote = !inDoubleQuote;
446
+ } else if (currentCharCode === 96 && !inSingleQuote && !inDoubleQuote) {
447
+ inBacktick = !inBacktick;
448
+ }
449
+ }
450
+ lastCharWasBackslash = currentCharCode === BACKSLASH_CHAR && !lastCharWasBackslash;
451
+ const inQuotes = inSingleQuote || inDoubleQuote || inBacktick;
452
+ if (!inQuotes && html.startsWith(closingTag, pos)) {
453
+ const afterTagPos = pos + closingTag.length;
454
+ if (afterTagPos >= html.length) {
455
+ return pos;
456
+ }
457
+ const nextChar = html.charCodeAt(afterTagPos);
458
+ if (nextChar === GT_CHAR || isWhitespace(nextChar)) {
459
+ return pos;
460
+ }
461
+ }
462
+ pos++;
463
+ }
464
+ return -1;
465
+ }
466
+ function findTagEnd(html, closingTagStart, tagName) {
467
+ let pos = closingTagStart + tagName.length + 2;
468
+ while (pos < html.length && html.charCodeAt(pos) !== GT_CHAR) {
469
+ pos++;
470
+ }
471
+ return pos < html.length ? pos + 1 : pos;
472
+ }
473
+ function applyHeadToHtml(template, headHtml) {
474
+ const { html, indexes } = template;
475
+ const parts = [];
476
+ let lastIndex = 0;
477
+ if (indexes.htmlTagStart >= 0) {
478
+ parts.push(html.substring(lastIndex, indexes.htmlTagStart));
479
+ parts.push(`<html${headHtml.htmlAttrs}>`);
480
+ lastIndex = indexes.htmlTagEnd;
481
+ }
482
+ if (indexes.headTagEnd >= 0) {
483
+ parts.push(html.substring(lastIndex, indexes.headTagEnd));
484
+ parts.push(headHtml.headTags);
485
+ parts.push("</head>");
486
+ lastIndex = indexes.headTagEnd + 7;
487
+ }
488
+ if (indexes.bodyTagStart >= 0) {
489
+ parts.push(html.substring(lastIndex, indexes.bodyTagStart));
490
+ if (headHtml.bodyTagsOpen) {
491
+ parts.push(`<body${headHtml.bodyAttrs}>
492
+ ${headHtml.bodyTagsOpen}`);
493
+ } else {
494
+ parts.push(`<body${headHtml.bodyAttrs}>`);
495
+ }
496
+ lastIndex = indexes.bodyTagEnd;
497
+ }
498
+ if (indexes.bodyCloseTagStart >= 0) {
499
+ parts.push(html.substring(lastIndex, indexes.bodyCloseTagStart));
500
+ parts.push(headHtml.bodyTags);
501
+ parts.push(html.substring(indexes.bodyCloseTagStart));
502
+ } else {
503
+ parts.push(html.substring(lastIndex));
504
+ }
505
+ return parts.join("");
506
+ }
507
+
508
+ export { TagIdMap, applyHeadToHtml, parseAttributes, parseHtmlForIndexes, parseHtmlForUnheadExtraction };
@@ -0,0 +1,101 @@
1
+ export { A as AliasSortingPlugin, D as DeprecationsPlugin, P as PromisesPlugin, T as TemplateParamsPlugin } from './shared/unhead.Djo8ep_Y.mjs';
2
+ import { d as defineHeadPlugin } from './shared/unhead.CApf5sj3.mjs';
3
+ export { F as FlatMetaPlugin, S as SafeInputPlugin } from './shared/unhead.CApf5sj3.mjs';
4
+ import './shared/unhead.DZbvapt-.mjs';
5
+ import './shared/unhead.BYvz9V1x.mjs';
6
+ import './shared/unhead.DQc16pHI.mjs';
7
+ import './shared/unhead.yem5I2v_.mjs';
8
+
9
+ const META_TRANSFORMABLE_URL = [
10
+ "og:url",
11
+ "og:image",
12
+ "og:image:secure_url",
13
+ "twitter:image",
14
+ "twitter:image:src",
15
+ "og:video",
16
+ "og:video:secure_url",
17
+ "og:see_also"
18
+ ];
19
+ function CanonicalPlugin(options) {
20
+ return (head) => {
21
+ let host = options.canonicalHost || (!head.ssr ? window.location.origin : "");
22
+ if (!host.startsWith("http") && !host.startsWith("//")) {
23
+ host = `https://${host}`;
24
+ }
25
+ host = new URL(host).origin;
26
+ function resolvePath(path) {
27
+ if (options?.customResolver) {
28
+ return options.customResolver(path);
29
+ }
30
+ if (path.startsWith("http") || path.startsWith("//"))
31
+ return path;
32
+ try {
33
+ return new URL(path, host).toString();
34
+ } catch {
35
+ return path;
36
+ }
37
+ }
38
+ return {
39
+ key: "canonical",
40
+ hooks: {
41
+ "tags:resolve": (ctx) => {
42
+ for (const tag of ctx.tags) {
43
+ if (tag.tag === "meta" && (META_TRANSFORMABLE_URL.includes(tag.props?.property) || META_TRANSFORMABLE_URL.includes(tag.props?.name))) {
44
+ tag.props.content = resolvePath(tag.props.content);
45
+ } else if (tag.tag === "link" && tag.props.rel === "canonical") {
46
+ tag.props.href = resolvePath(tag.props.href);
47
+ }
48
+ }
49
+ }
50
+ }
51
+ };
52
+ };
53
+ }
54
+
55
+ function InferSeoMetaPlugin(options = {}) {
56
+ return defineHeadPlugin((head) => {
57
+ head.push({
58
+ meta: [
59
+ {
60
+ name: "twitter:card",
61
+ content: options.twitterCard || "summary_large_image",
62
+ tagPriority: "low"
63
+ },
64
+ {
65
+ "property": "og:title",
66
+ "tagPriority": "low",
67
+ "data-infer": ""
68
+ },
69
+ {
70
+ "property": "og:description",
71
+ "tagPriority": "low",
72
+ "data-infer": ""
73
+ }
74
+ ]
75
+ });
76
+ return {
77
+ key: "infer-seo-meta",
78
+ hooks: {
79
+ "tags:beforeResolve": ({ tagMap }) => {
80
+ let title = head._titleTemplate || head._title;
81
+ const ogTitle = tagMap.get("meta:og:title");
82
+ if (typeof ogTitle?.props["data-infer"] !== "undefined") {
83
+ if (typeof title === "function") {
84
+ title = title(head._title);
85
+ }
86
+ ogTitle.props.content = options.ogTitle ? options.ogTitle(title) : title || "";
87
+ ogTitle.processTemplateParams = true;
88
+ }
89
+ const description = tagMap.get("meta:description")?.props?.content;
90
+ const ogDescription = tagMap.get("meta:og:description");
91
+ if (typeof ogDescription?.props["data-infer"] !== "undefined") {
92
+ ogDescription.props.content = options.ogDescription ? options.ogDescription(description) : description || "";
93
+ ogDescription.processTemplateParams = true;
94
+ }
95
+ }
96
+ }
97
+ };
98
+ });
99
+ }
100
+
101
+ export { CanonicalPlugin, InferSeoMetaPlugin, defineHeadPlugin };
@@ -0,0 +1,30 @@
1
+ export { r as resolveScriptKey, u as useScript } from './shared/unhead.B578PsDV.mjs';
2
+ import './shared/unhead.yem5I2v_.mjs';
3
+
4
+ function createSpyProxy(target, onApply) {
5
+ const stack = [];
6
+ let stackIdx = -1;
7
+ const handler = (reuseStack = false) => ({
8
+ get(_, prop, receiver) {
9
+ if (!reuseStack) {
10
+ stackIdx++;
11
+ stack[stackIdx] = [];
12
+ }
13
+ const v = Reflect.get(_, prop, receiver);
14
+ if (typeof v === "object" || typeof v === "function") {
15
+ stack[stackIdx].push({ type: "get", key: prop });
16
+ return new Proxy(v, handler(true));
17
+ }
18
+ stack[stackIdx].push({ type: "get", key: prop, value: v });
19
+ return v;
20
+ },
21
+ apply(_, __, args) {
22
+ stack[stackIdx].push({ type: "apply", key: "", args });
23
+ onApply(stack);
24
+ return Reflect.apply(_, __, args);
25
+ }
26
+ });
27
+ return new Proxy(target, handler());
28
+ }
29
+
30
+ export { createSpyProxy };