zod-compiler 1.0.0 → 1.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.
@@ -0,0 +1,648 @@
1
+ import { parseExpressionAt } from "acorn";
2
+ /**
3
+ * Hoist Zod schema construction out of functions to module scope —
4
+ * equivalent of babel-plugin-zod-hoist.
5
+ *
6
+ * Schemas built inside function bodies are re-constructed on every call:
7
+ *
8
+ * function getSchema() {
9
+ * return z.object({ name: z.string() }); // rebuilt per call
10
+ * }
11
+ *
12
+ * becomes
13
+ *
14
+ * const _zh_94b7f5c1 = z.object({ name: z.string() });
15
+ * function getSchema() {
16
+ * return _zh_94b7f5c1; // built once
17
+ * }
18
+ *
19
+ * Safety rules (mirroring babel-plugin-zod-hoist):
20
+ * - Only expressions built solely from **imported bindings and literals**
21
+ * are hoisted. Local variables, module-level const/let/var, `this`,
22
+ * `await`/`yield`, and globals (`new Date()`, `Math.random()`) all
23
+ * disqualify — hoisting would freeze their evaluation at module load.
24
+ * - Eligible roots: any binding imported from zod, an imported identifier
25
+ * matching /ZodSchema$/, or an imported identifier whose chain contains
26
+ * an inline z.* reference (e.g. `Base.extend({ a: z.string() })`).
27
+ * - Declarations are inserted at the top of the module (after shebang and
28
+ * directive prologue). Imports are initialized before module code runs,
29
+ * so referencing them from above their textual position is safe.
30
+ * - Names are content-hashed, so identical schemas dedupe to one binding.
31
+ *
32
+ * The source is TypeScript, which acorn cannot fully parse — candidates are
33
+ * located with a string/comment/depth-aware scanner and extracted with
34
+ * parseExpressionAt (the same technique as the autoDiscover rewrite).
35
+ * Anything unparseable (TS generics, `as` casts) is skipped: a miss leaves
36
+ * the schema unhoisted, never breaks the code.
37
+ */
38
+ /** Imported identifiers matching this pattern are treated as schema roots. */
39
+ const SCHEMA_NAME_PATTERN = /ZodSchema$/;
40
+ /** Module specifiers whose bindings count as the zod namespace. */
41
+ const ZOD_MODULES = new Set(["zod", "zod/v4", "zod/mini", "zod/v4/mini"]);
42
+ /**
43
+ * Collect runtime import bindings with a regex over import statements.
44
+ * Type-only imports and `type` specifiers are excluded — they cannot be
45
+ * referenced at runtime, so excluding them keeps the capture rule sound.
46
+ */
47
+ export function collectImportBindings(code) {
48
+ const all = new Set();
49
+ const zod = new Set();
50
+ const importPattern = /import\s+(type\s+)?([^'";]+?)\s+from\s*["']([^"']+)["']/g;
51
+ for (const match of code.matchAll(importPattern)) {
52
+ const [, typeOnly, clause, specifier] = match;
53
+ if (typeOnly || clause === undefined || specifier === undefined)
54
+ continue;
55
+ const isZod = ZOD_MODULES.has(specifier);
56
+ for (const name of parseImportClause(clause)) {
57
+ all.add(name);
58
+ if (isZod)
59
+ zod.add(name);
60
+ }
61
+ }
62
+ return { all, zod };
63
+ }
64
+ /** Extract local binding names from an import clause. */
65
+ function parseImportClause(clause) {
66
+ const names = [];
67
+ const namedStart = clause.indexOf("{");
68
+ // Default import and/or namespace import before the named group
69
+ const head = namedStart === -1 ? clause : clause.slice(0, namedStart);
70
+ for (const part of head.split(",")) {
71
+ const trimmed = part.trim();
72
+ if (!trimmed)
73
+ continue;
74
+ const ns = trimmed.match(/^\*\s*as\s+([A-Za-z_$][\w$]*)$/);
75
+ if (ns?.[1]) {
76
+ names.push(ns[1]);
77
+ }
78
+ else if (/^[A-Za-z_$][\w$]*$/.test(trimmed)) {
79
+ names.push(trimmed);
80
+ }
81
+ }
82
+ if (namedStart !== -1) {
83
+ const namedEnd = clause.indexOf("}", namedStart);
84
+ const inner = clause.slice(namedStart + 1, namedEnd === -1 ? undefined : namedEnd);
85
+ for (const part of inner.split(",")) {
86
+ const spec = part.trim();
87
+ if (!spec || spec.startsWith("type "))
88
+ continue;
89
+ // `a as b` binds b; plain `a` binds a
90
+ const asMatch = spec.match(/^[A-Za-z_$][\w$]*\s+as\s+([A-Za-z_$][\w$]*)$/);
91
+ const name = asMatch?.[1] ?? (/^[A-Za-z_$][\w$]*$/.test(spec) ? spec : null);
92
+ if (name)
93
+ names.push(name);
94
+ }
95
+ }
96
+ return names;
97
+ }
98
+ /** Deterministic FNV-1a 32-bit hash, hex-encoded. */
99
+ function fnv1a(text) {
100
+ let hash = 0x811c9dc5;
101
+ for (let i = 0; i < text.length; i++) {
102
+ hash ^= text.charCodeAt(i);
103
+ hash = Math.imul(hash, 0x01000193);
104
+ }
105
+ return (hash >>> 0).toString(16).padStart(8, "0");
106
+ }
107
+ const IDENT_START = /[A-Za-z_$]/;
108
+ const IDENT_PART = /[\w$]/;
109
+ /** After these tokens a `/` starts a regex literal, not division. */
110
+ const REGEX_PRECEDING_KEYWORDS = new Set([
111
+ "return",
112
+ "typeof",
113
+ "instanceof",
114
+ "in",
115
+ "of",
116
+ "new",
117
+ "delete",
118
+ "void",
119
+ "throw",
120
+ "do",
121
+ "else",
122
+ "case",
123
+ "yield",
124
+ "await",
125
+ ]);
126
+ /** Is `/` after this token division (true) or a regex literal (false)? */
127
+ function isDivisionContext(lastToken) {
128
+ if (lastToken === ")" || lastToken === "]")
129
+ return true;
130
+ if (/^["'`]$/.test(lastToken))
131
+ return true;
132
+ if (/^[\w$]+$/.test(lastToken))
133
+ return !REGEX_PRECEDING_KEYWORDS.has(lastToken);
134
+ return false;
135
+ }
136
+ /**
137
+ * Scan the source for candidate root identifiers (`z`, `FooZodSchema`, ...)
138
+ * followed by a `.`, tracking string/template/comment state and nesting
139
+ * depth. Depth 0 candidates are top-level initializers — already evaluated
140
+ * once — and are recorded only so their extents mask nested candidates.
141
+ */
142
+ function scanCandidates(code, roots) {
143
+ const candidates = [];
144
+ let depth = 0;
145
+ // Template literals interleave string and expression states; the stack
146
+ // records the brace depth at which each `${` opened so the matching `}`
147
+ // resumes string state.
148
+ const templateStack = [];
149
+ let lastToken = "";
150
+ let i = 0;
151
+ while (i < code.length) {
152
+ const ch = code[i];
153
+ const next = code[i + 1];
154
+ // Comments
155
+ if (ch === "/" && next === "/") {
156
+ const nl = code.indexOf("\n", i);
157
+ i = nl === -1 ? code.length : nl + 1;
158
+ continue;
159
+ }
160
+ if (ch === "/" && next === "*") {
161
+ const end = code.indexOf("*/", i + 2);
162
+ i = end === -1 ? code.length : end + 2;
163
+ continue;
164
+ }
165
+ if (ch === "/") {
166
+ if (!isDivisionContext(lastToken)) {
167
+ i = skipRegexLiteral(code, i);
168
+ lastToken = ")"; // a regex literal is an operand
169
+ continue;
170
+ }
171
+ lastToken = ch;
172
+ i++;
173
+ continue;
174
+ }
175
+ // Strings
176
+ if (ch === '"' || ch === "'") {
177
+ i = skipString(code, i, ch);
178
+ lastToken = ch;
179
+ continue;
180
+ }
181
+ // Template literals
182
+ if (ch === "`") {
183
+ i = skipTemplateChunk(code, i + 1, templateStack, depth);
184
+ lastToken = "`";
185
+ continue;
186
+ }
187
+ if (templateStack.length > 0 &&
188
+ ch === "}" &&
189
+ depth === templateStack[templateStack.length - 1]) {
190
+ // End of a ${ } expression — back into template string state
191
+ templateStack.pop();
192
+ i = skipTemplateChunk(code, i + 1, templateStack, depth);
193
+ lastToken = "`";
194
+ continue;
195
+ }
196
+ if (ch === "(" || ch === "[" || ch === "{") {
197
+ depth++;
198
+ lastToken = ch;
199
+ i++;
200
+ continue;
201
+ }
202
+ if (ch === ")" || ch === "]" || ch === "}") {
203
+ depth--;
204
+ lastToken = ch;
205
+ i++;
206
+ continue;
207
+ }
208
+ if (IDENT_START.test(ch) && !IDENT_PART.test(code[i - 1] ?? "")) {
209
+ let j = i + 1;
210
+ while (j < code.length && IDENT_PART.test(code[j]))
211
+ j++;
212
+ const word = code.slice(i, j);
213
+ // Skip whitespace to check for the member access
214
+ let k = j;
215
+ while (k < code.length && /\s/.test(code[k]))
216
+ k++;
217
+ if (roots.has(word) && code[k] === "." && lastToken !== ".") {
218
+ candidates.push({ index: i, depth, name: word });
219
+ }
220
+ lastToken = word;
221
+ i = j;
222
+ continue;
223
+ }
224
+ if (!/\s/.test(ch))
225
+ lastToken = ch;
226
+ i++;
227
+ }
228
+ return candidates;
229
+ }
230
+ function skipString(code, start, quote) {
231
+ for (let i = start + 1; i < code.length; i++) {
232
+ if (code[i] === "\\") {
233
+ i++;
234
+ }
235
+ else if (code[i] === quote || code[i] === "\n") {
236
+ return i + 1;
237
+ }
238
+ }
239
+ return code.length;
240
+ }
241
+ /**
242
+ * Skip a template string chunk; returns the offset after the closing
243
+ * `` ` `` or after a `${`, recording the current depth so the scanner can
244
+ * recognize the matching `}` later.
245
+ */
246
+ function skipTemplateChunk(code, start, templateStack, depth) {
247
+ for (let i = start; i < code.length; i++) {
248
+ if (code[i] === "\\") {
249
+ i++;
250
+ }
251
+ else if (code[i] === "`") {
252
+ return i + 1;
253
+ }
254
+ else if (code[i] === "$" && code[i + 1] === "{") {
255
+ templateStack.push(depth);
256
+ return i + 2;
257
+ }
258
+ }
259
+ return code.length;
260
+ }
261
+ function skipRegexLiteral(code, start) {
262
+ let inClass = false;
263
+ for (let i = start + 1; i < code.length; i++) {
264
+ const ch = code[i];
265
+ if (ch === "\\") {
266
+ i++;
267
+ }
268
+ else if (ch === "[") {
269
+ inClass = true;
270
+ }
271
+ else if (ch === "]") {
272
+ inClass = false;
273
+ }
274
+ else if (ch === "/" && !inClass) {
275
+ return i + 1;
276
+ }
277
+ else if (ch === "\n") {
278
+ // Not a regex after all (unterminated) — treat as division
279
+ return start + 1;
280
+ }
281
+ }
282
+ return code.length;
283
+ }
284
+ /**
285
+ * Narrow a parsed expression to the largest call chain starting at `start`.
286
+ * parseExpressionAt can overshoot into surrounding operators
287
+ * (`z.string().min(1) || fallback` parses as a LogicalExpression) — descend
288
+ * through same-start children until a CallExpression is found.
289
+ */
290
+ function narrowToCallChain(node, start) {
291
+ let current = node;
292
+ while (current.start === start) {
293
+ if (current.type === "CallExpression")
294
+ return current;
295
+ const child = sameStartChild(current, start);
296
+ if (!child)
297
+ return null;
298
+ current = child;
299
+ }
300
+ return null;
301
+ }
302
+ function sameStartChild(node, start) {
303
+ const record = node;
304
+ for (const key of ["left", "object", "callee", "test", "tag", "expression", "expressions"]) {
305
+ const value = record[key];
306
+ const child = Array.isArray(value) ? value[0] : value;
307
+ if (typeof child === "object" &&
308
+ child !== null &&
309
+ child.start === start &&
310
+ typeof child.type === "string") {
311
+ return child;
312
+ }
313
+ }
314
+ return null;
315
+ }
316
+ /**
317
+ * Walk a member/call chain down to its base identifier, collecting the
318
+ * non-computed method names along the spine. Computed members
319
+ * (`base[name]()`) are unanalyzable — the chain is rejected.
320
+ */
321
+ function describeChain(node) {
322
+ const methods = [];
323
+ let current = node;
324
+ while (true) {
325
+ if (current.type === "CallExpression") {
326
+ current = current.callee;
327
+ }
328
+ else if (current.type === "MemberExpression") {
329
+ if (current.computed || current.property.type !== "Identifier")
330
+ return null;
331
+ methods.push(current.property.name);
332
+ current = current.object;
333
+ }
334
+ else if (current.type === "Identifier") {
335
+ return { root: current.name, methods };
336
+ }
337
+ else {
338
+ return null;
339
+ }
340
+ }
341
+ }
342
+ /**
343
+ * Combinators eligible on non-z chain bases (babel-plugin-zod-hoist's
344
+ * documented set) — `Base.extend({...})`, `Base.pick({...})`, ...
345
+ */
346
+ const COMBINATOR_METHODS = new Set(["extend", "pick", "omit", "merge", "partial"]);
347
+ /**
348
+ * Methods that evaluate data rather than construct schemas. Hoisting one
349
+ * would move the evaluation (and any throw) to module load.
350
+ */
351
+ const PARSE_METHODS = new Set([
352
+ "parse",
353
+ "safeParse",
354
+ "parseAsync",
355
+ "safeParseAsync",
356
+ "decode",
357
+ "encode",
358
+ "decodeAsync",
359
+ "encodeAsync",
360
+ ]);
361
+ /**
362
+ * Scope-aware free-variable analysis of an expression. Nested function
363
+ * params and local declarations are bound names, not captures — so
364
+ * `z.string().refine((v) => v.length > 0)` has no free variables beyond `z`.
365
+ */
366
+ function analyzeCaptures(expr) {
367
+ const free = new Set();
368
+ let impure = false;
369
+ function patternNames(node, into) {
370
+ switch (node.type) {
371
+ case "Identifier":
372
+ into.add(node.name);
373
+ return;
374
+ case "ObjectPattern":
375
+ for (const prop of node.properties) {
376
+ if (prop.type === "Property")
377
+ patternNames(prop.value, into);
378
+ else
379
+ patternNames(prop.argument, into);
380
+ }
381
+ return;
382
+ case "ArrayPattern":
383
+ for (const el of node.elements) {
384
+ if (el)
385
+ patternNames(el, into);
386
+ }
387
+ return;
388
+ case "AssignmentPattern":
389
+ patternNames(node.left, into);
390
+ return;
391
+ case "RestElement":
392
+ patternNames(node.argument, into);
393
+ return;
394
+ default:
395
+ return;
396
+ }
397
+ }
398
+ function collectFunctionScope(body, into) {
399
+ // Flatten block scoping into the function scope — over-approximating
400
+ // bound names can only suppress a hoist's free set, and the failure
401
+ // mode is a loud ReferenceError, never silent misvalidation.
402
+ const stack = [body];
403
+ while (stack.length > 0) {
404
+ const node = stack.pop();
405
+ if (!node || typeof node !== "object")
406
+ continue;
407
+ if (node.type === "VariableDeclaration") {
408
+ for (const decl of node.declarations)
409
+ patternNames(decl.id, into);
410
+ }
411
+ else if (node.type === "FunctionDeclaration" || node.type === "ClassDeclaration") {
412
+ if (node.id)
413
+ into.add(node.id.name);
414
+ continue; // do not descend into nested declarations' bodies here
415
+ }
416
+ else if (node.type === "FunctionExpression" || node.type === "ArrowFunctionExpression") {
417
+ continue; // nested functions get their own scope in visit()
418
+ }
419
+ for (const value of Object.values(node)) {
420
+ if (Array.isArray(value)) {
421
+ for (const item of value) {
422
+ if (typeof item === "object" && item !== null && "type" in item) {
423
+ stack.push(item);
424
+ }
425
+ }
426
+ }
427
+ else if (typeof value === "object" && value !== null && "type" in value) {
428
+ stack.push(value);
429
+ }
430
+ }
431
+ }
432
+ }
433
+ function visit(node, scopes) {
434
+ switch (node.type) {
435
+ case "Identifier": {
436
+ const name = node.name;
437
+ if (name !== "undefined" && !scopes.some((s) => s.has(name)))
438
+ free.add(name);
439
+ return;
440
+ }
441
+ case "ThisExpression":
442
+ case "Super":
443
+ case "AwaitExpression":
444
+ case "YieldExpression":
445
+ case "NewExpression":
446
+ case "TaggedTemplateExpression":
447
+ case "MetaProperty":
448
+ impure = true;
449
+ return;
450
+ case "MemberExpression":
451
+ visit(node.object, scopes);
452
+ if (node.computed)
453
+ visit(node.property, scopes);
454
+ return;
455
+ case "Property":
456
+ if (node.computed)
457
+ visit(node.key, scopes);
458
+ visit(node.value, scopes);
459
+ return;
460
+ case "FunctionExpression":
461
+ case "ArrowFunctionExpression": {
462
+ const scope = new Set();
463
+ for (const param of node.params)
464
+ patternNames(param, scope);
465
+ if (node.type === "FunctionExpression" && node.id)
466
+ scope.add(node.id.name);
467
+ collectFunctionScope(node.body, scope);
468
+ visit(node.body, [...scopes, scope]);
469
+ return;
470
+ }
471
+ default: {
472
+ for (const value of Object.values(node)) {
473
+ if (Array.isArray(value)) {
474
+ for (const item of value) {
475
+ if (typeof item === "object" && item !== null && "type" in item) {
476
+ visit(item, scopes);
477
+ }
478
+ }
479
+ }
480
+ else if (typeof value === "object" && value !== null && "type" in value) {
481
+ visit(value, scopes);
482
+ }
483
+ }
484
+ }
485
+ }
486
+ }
487
+ visit(expr, []);
488
+ return { free, impure };
489
+ }
490
+ /** Offset after the shebang and directive prologue ("use client", ...). */
491
+ function insertionOffset(code) {
492
+ let i = 0;
493
+ if (code.startsWith("#!")) {
494
+ const nl = code.indexOf("\n");
495
+ i = nl === -1 ? code.length : nl + 1;
496
+ }
497
+ while (true) {
498
+ // Skip whitespace and comments between directives
499
+ while (i < code.length) {
500
+ const ch = code[i];
501
+ if (/\s/.test(ch)) {
502
+ i++;
503
+ }
504
+ else if (ch === "/" && code[i + 1] === "/") {
505
+ const nl = code.indexOf("\n", i);
506
+ i = nl === -1 ? code.length : nl + 1;
507
+ }
508
+ else if (ch === "/" && code[i + 1] === "*") {
509
+ const end = code.indexOf("*/", i + 2);
510
+ i = end === -1 ? code.length : end + 2;
511
+ }
512
+ else {
513
+ break;
514
+ }
515
+ }
516
+ const directive = code.slice(i).match(/^(["'])use [^"'\n]*\1\s*;?[^\S\n]*\n?/);
517
+ if (!directive)
518
+ return i;
519
+ i += directive[0].length;
520
+ }
521
+ }
522
+ /**
523
+ * Hoist eligible Zod schema expressions to module scope.
524
+ * Returns the rewritten source, or null when nothing was hoisted.
525
+ */
526
+ export function hoistZodSchemas(code) {
527
+ const imports = collectImportBindings(code);
528
+ if (imports.all.size === 0)
529
+ return null;
530
+ const roots = new Set(imports.zod);
531
+ for (const name of imports.all) {
532
+ if (SCHEMA_NAME_PATTERN.test(name))
533
+ roots.add(name);
534
+ }
535
+ // Imported roots that only qualify via an inline z.* reference in the
536
+ // chain are validated per-expression below; scan them as candidates too.
537
+ if (imports.zod.size > 0) {
538
+ for (const name of imports.all)
539
+ roots.add(name);
540
+ }
541
+ if (roots.size === 0)
542
+ return null;
543
+ const candidates = scanCandidates(code, roots);
544
+ if (candidates.length === 0)
545
+ return null;
546
+ const hoists = [];
547
+ const declByText = new Map();
548
+ let consumedUntil = 0;
549
+ for (const candidate of candidates) {
550
+ if (candidate.index < consumedUntil)
551
+ continue;
552
+ let parsed;
553
+ try {
554
+ parsed = parseExpressionAt(code, candidate.index, {
555
+ ecmaVersion: "latest",
556
+ sourceType: "module",
557
+ });
558
+ }
559
+ catch {
560
+ continue;
561
+ }
562
+ let chain = narrowToCallChain(parsed, candidate.index);
563
+ if (!chain)
564
+ continue;
565
+ // Mask nested candidates inside this extent regardless of eligibility —
566
+ // an inner z.string() of a top-level schema must not hoist on its own.
567
+ consumedUntil = chain.end;
568
+ // Depth 0 expressions are top-level statements/initializers: already
569
+ // evaluated once per module load, nothing to gain.
570
+ if (candidate.depth === 0)
571
+ continue;
572
+ // Peel trailing parse calls: for `z.object({...}).safeParse(input)`,
573
+ // hoist the construction and leave `.safeParse(input)` — with its
574
+ // local-variable arguments — at the call site.
575
+ let described = describeChain(chain);
576
+ while (chain !== null &&
577
+ described !== null &&
578
+ described.methods.length > 0 &&
579
+ PARSE_METHODS.has(described.methods[0])) {
580
+ const callee = chain.type === "CallExpression" ? chain.callee : null;
581
+ const inner = callee !== null && callee.type === "MemberExpression" ? callee.object : null;
582
+ chain = inner !== null && inner.type === "CallExpression" ? inner : null;
583
+ described = chain === null ? null : describeChain(chain);
584
+ }
585
+ if (chain === null || described === null)
586
+ continue;
587
+ if (described.root !== candidate.name)
588
+ continue;
589
+ if (described.methods.some((m) => PARSE_METHODS.has(m)))
590
+ continue;
591
+ const rootIsZod = imports.zod.has(candidate.name);
592
+ const rootMatchesPattern = SCHEMA_NAME_PATTERN.test(candidate.name);
593
+ // Non-z bases must look like schema derivation: only the documented
594
+ // combinator methods qualify (`Base.extend({...}).partial()`), so an
595
+ // arbitrary imported object with a z-mentioning argument is not hoisted.
596
+ if (!rootIsZod && !described.methods.every((m) => COMBINATOR_METHODS.has(m)))
597
+ continue;
598
+ const { free, impure } = analyzeCaptures(chain);
599
+ if (impure)
600
+ continue;
601
+ // Imports-and-literals only (babel-plugin-zod-hoist rule): local
602
+ // variables AND module-level bindings disqualify; globals too, since
603
+ // `new Date()` / `Math.random()` would freeze at module load.
604
+ let eligible = true;
605
+ for (const name of free) {
606
+ if (!imports.all.has(name)) {
607
+ eligible = false;
608
+ break;
609
+ }
610
+ }
611
+ if (!eligible)
612
+ continue;
613
+ // Non-zod, non-pattern roots qualify only when the chain itself
614
+ // references a zod binding (`Base.extend({ a: z.string() })`).
615
+ if (!rootIsZod && !rootMatchesPattern) {
616
+ let referencesZod = false;
617
+ for (const name of free) {
618
+ if (imports.zod.has(name)) {
619
+ referencesZod = true;
620
+ break;
621
+ }
622
+ }
623
+ if (!referencesZod)
624
+ continue;
625
+ }
626
+ const text = code.slice(candidate.index, chain.end);
627
+ let declName = declByText.get(text);
628
+ if (!declName) {
629
+ declName = `_zh_${fnv1a(text)}`;
630
+ declByText.set(text, declName);
631
+ }
632
+ hoists.push({ start: candidate.index, end: chain.end, name: declName });
633
+ }
634
+ if (hoists.length === 0)
635
+ return null;
636
+ // Apply replacements from the end so earlier offsets stay valid.
637
+ let result = code;
638
+ for (let i = hoists.length - 1; i >= 0; i--) {
639
+ const hoist = hoists[i];
640
+ result = result.slice(0, hoist.start) + hoist.name + result.slice(hoist.end);
641
+ }
642
+ const decls = [...declByText.entries()]
643
+ .map(([text, name]) => `const ${name} = ${text};`)
644
+ .join("\n");
645
+ const offset = insertionOffset(result);
646
+ return `${result.slice(0, offset)}${decls}\n${result.slice(offset)}`;
647
+ }
648
+ //# sourceMappingURL=hoist.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hoist.js","sourceRoot":"","sources":["../../src/unplugin/hoist.ts"],"names":[],"mappings":"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"}