@varlock/astro-integration
Version:
Astro integration to use varlock for .env file loading - adds validation, type-safety, and extra security features
1 lines • 123 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","names":["debug"],"sources":["../../vite/dist/index.mjs","../src/index.ts"],"sourcesContent":["import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { initVarlockEnv } from \"varlock/env\";\nimport { patchGlobalConsole } from \"varlock/patch-console\";\nimport { patchGlobalServerResponse } from \"varlock/patch-server-response\";\nimport { patchGlobalResponse } from \"varlock/patch-response\";\nimport { createDebug } from \"varlock\";\nimport { VarlockExecError, execSyncVarlock } from \"varlock/exec-sync-varlock\";\nimport { encryptEnvBlobSync, generateEncryptionKeyHex } from \"varlock/encrypt-env\";\n//#region \\0rolldown/runtime.js\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __commonJSMin = (cb, mod) => () => (mod || (cb((mod = { exports: {} }).exports, mod), cb = null), mod.exports);\nvar __copyProps = (to, from, except, desc) => {\n\tif (from && typeof from === \"object\" || typeof from === \"function\") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {\n\t\tkey = keys[i];\n\t\tif (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {\n\t\t\tget: ((k) => from[k]).bind(null, key),\n\t\t\tenumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable\n\t\t});\n\t}\n\treturn to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule || !__hasOwnProp.call(mod, \"default\") ? __defProp(target, \"default\", {\n\tvalue: mod,\n\tenumerable: true\n}) : target, mod));\n//#endregion\n//#region ../../../node_modules/.bun/@jridgewell+sourcemap-codec@1.5.5/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs\nvar comma = \",\".charCodeAt(0);\nvar semicolon = \";\".charCodeAt(0);\nvar chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nvar intToChar = /* @__PURE__ */ new Uint8Array(64);\nvar charToInt = /* @__PURE__ */ new Uint8Array(128);\nfor (let i = 0; i < chars.length; i++) {\n\tconst c = chars.charCodeAt(i);\n\tintToChar[i] = c;\n\tcharToInt[c] = i;\n}\nfunction encodeInteger(builder, num, relative) {\n\tlet delta = num - relative;\n\tdelta = delta < 0 ? -delta << 1 | 1 : delta << 1;\n\tdo {\n\t\tlet clamped = delta & 31;\n\t\tdelta >>>= 5;\n\t\tif (delta > 0) clamped |= 32;\n\t\tbuilder.write(intToChar[clamped]);\n\t} while (delta > 0);\n\treturn num;\n}\nvar bufLength = 16384;\nvar td = typeof TextDecoder !== \"undefined\" ? /* @__PURE__ */ new TextDecoder() : typeof Buffer !== \"undefined\" ? { decode(buf) {\n\treturn Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength).toString();\n} } : { decode(buf) {\n\tlet out = \"\";\n\tfor (let i = 0; i < buf.length; i++) out += String.fromCharCode(buf[i]);\n\treturn out;\n} };\nvar StringWriter = class {\n\tconstructor() {\n\t\tthis.pos = 0;\n\t\tthis.out = \"\";\n\t\tthis.buffer = new Uint8Array(bufLength);\n\t}\n\twrite(v) {\n\t\tconst { buffer } = this;\n\t\tbuffer[this.pos++] = v;\n\t\tif (this.pos === bufLength) {\n\t\t\tthis.out += td.decode(buffer);\n\t\t\tthis.pos = 0;\n\t\t}\n\t}\n\tflush() {\n\t\tconst { buffer, out, pos } = this;\n\t\treturn pos > 0 ? out + td.decode(buffer.subarray(0, pos)) : out;\n\t}\n};\nfunction encode(decoded) {\n\tconst writer = new StringWriter();\n\tlet sourcesIndex = 0;\n\tlet sourceLine = 0;\n\tlet sourceColumn = 0;\n\tlet namesIndex = 0;\n\tfor (let i = 0; i < decoded.length; i++) {\n\t\tconst line = decoded[i];\n\t\tif (i > 0) writer.write(semicolon);\n\t\tif (line.length === 0) continue;\n\t\tlet genColumn = 0;\n\t\tfor (let j = 0; j < line.length; j++) {\n\t\t\tconst segment = line[j];\n\t\t\tif (j > 0) writer.write(comma);\n\t\t\tgenColumn = encodeInteger(writer, segment[0], genColumn);\n\t\t\tif (segment.length === 1) continue;\n\t\t\tsourcesIndex = encodeInteger(writer, segment[1], sourcesIndex);\n\t\t\tsourceLine = encodeInteger(writer, segment[2], sourceLine);\n\t\t\tsourceColumn = encodeInteger(writer, segment[3], sourceColumn);\n\t\t\tif (segment.length === 4) continue;\n\t\t\tnamesIndex = encodeInteger(writer, segment[4], namesIndex);\n\t\t}\n\t}\n\treturn writer.flush();\n}\n//#endregion\n//#region ../../../node_modules/.bun/magic-string@0.30.21/node_modules/magic-string/dist/magic-string.es.mjs\nvar BitSet = class BitSet {\n\tconstructor(arg) {\n\t\tthis.bits = arg instanceof BitSet ? arg.bits.slice() : [];\n\t}\n\tadd(n) {\n\t\tthis.bits[n >> 5] |= 1 << (n & 31);\n\t}\n\thas(n) {\n\t\treturn !!(this.bits[n >> 5] & 1 << (n & 31));\n\t}\n};\nvar Chunk = class Chunk {\n\tconstructor(start, end, content) {\n\t\tthis.start = start;\n\t\tthis.end = end;\n\t\tthis.original = content;\n\t\tthis.intro = \"\";\n\t\tthis.outro = \"\";\n\t\tthis.content = content;\n\t\tthis.storeName = false;\n\t\tthis.edited = false;\n\t\tthis.previous = null;\n\t\tthis.next = null;\n\t}\n\tappendLeft(content) {\n\t\tthis.outro += content;\n\t}\n\tappendRight(content) {\n\t\tthis.intro = this.intro + content;\n\t}\n\tclone() {\n\t\tconst chunk = new Chunk(this.start, this.end, this.original);\n\t\tchunk.intro = this.intro;\n\t\tchunk.outro = this.outro;\n\t\tchunk.content = this.content;\n\t\tchunk.storeName = this.storeName;\n\t\tchunk.edited = this.edited;\n\t\treturn chunk;\n\t}\n\tcontains(index) {\n\t\treturn this.start < index && index < this.end;\n\t}\n\teachNext(fn) {\n\t\tlet chunk = this;\n\t\twhile (chunk) {\n\t\t\tfn(chunk);\n\t\t\tchunk = chunk.next;\n\t\t}\n\t}\n\teachPrevious(fn) {\n\t\tlet chunk = this;\n\t\twhile (chunk) {\n\t\t\tfn(chunk);\n\t\t\tchunk = chunk.previous;\n\t\t}\n\t}\n\tedit(content, storeName, contentOnly) {\n\t\tthis.content = content;\n\t\tif (!contentOnly) {\n\t\t\tthis.intro = \"\";\n\t\t\tthis.outro = \"\";\n\t\t}\n\t\tthis.storeName = storeName;\n\t\tthis.edited = true;\n\t\treturn this;\n\t}\n\tprependLeft(content) {\n\t\tthis.outro = content + this.outro;\n\t}\n\tprependRight(content) {\n\t\tthis.intro = content + this.intro;\n\t}\n\treset() {\n\t\tthis.intro = \"\";\n\t\tthis.outro = \"\";\n\t\tif (this.edited) {\n\t\t\tthis.content = this.original;\n\t\t\tthis.storeName = false;\n\t\t\tthis.edited = false;\n\t\t}\n\t}\n\tsplit(index) {\n\t\tconst sliceIndex = index - this.start;\n\t\tconst originalBefore = this.original.slice(0, sliceIndex);\n\t\tconst originalAfter = this.original.slice(sliceIndex);\n\t\tthis.original = originalBefore;\n\t\tconst newChunk = new Chunk(index, this.end, originalAfter);\n\t\tnewChunk.outro = this.outro;\n\t\tthis.outro = \"\";\n\t\tthis.end = index;\n\t\tif (this.edited) {\n\t\t\tnewChunk.edit(\"\", false);\n\t\t\tthis.content = \"\";\n\t\t} else this.content = originalBefore;\n\t\tnewChunk.next = this.next;\n\t\tif (newChunk.next) newChunk.next.previous = newChunk;\n\t\tnewChunk.previous = this;\n\t\tthis.next = newChunk;\n\t\treturn newChunk;\n\t}\n\ttoString() {\n\t\treturn this.intro + this.content + this.outro;\n\t}\n\ttrimEnd(rx) {\n\t\tthis.outro = this.outro.replace(rx, \"\");\n\t\tif (this.outro.length) return true;\n\t\tconst trimmed = this.content.replace(rx, \"\");\n\t\tif (trimmed.length) {\n\t\t\tif (trimmed !== this.content) {\n\t\t\t\tthis.split(this.start + trimmed.length).edit(\"\", void 0, true);\n\t\t\t\tif (this.edited) this.edit(trimmed, this.storeName, true);\n\t\t\t}\n\t\t\treturn true;\n\t\t} else {\n\t\t\tthis.edit(\"\", void 0, true);\n\t\t\tthis.intro = this.intro.replace(rx, \"\");\n\t\t\tif (this.intro.length) return true;\n\t\t}\n\t}\n\ttrimStart(rx) {\n\t\tthis.intro = this.intro.replace(rx, \"\");\n\t\tif (this.intro.length) return true;\n\t\tconst trimmed = this.content.replace(rx, \"\");\n\t\tif (trimmed.length) {\n\t\t\tif (trimmed !== this.content) {\n\t\t\t\tconst newChunk = this.split(this.end - trimmed.length);\n\t\t\t\tif (this.edited) newChunk.edit(trimmed, this.storeName, true);\n\t\t\t\tthis.edit(\"\", void 0, true);\n\t\t\t}\n\t\t\treturn true;\n\t\t} else {\n\t\t\tthis.edit(\"\", void 0, true);\n\t\t\tthis.outro = this.outro.replace(rx, \"\");\n\t\t\tif (this.outro.length) return true;\n\t\t}\n\t}\n};\nfunction getBtoa() {\n\tif (typeof globalThis !== \"undefined\" && typeof globalThis.btoa === \"function\") return (str) => globalThis.btoa(unescape(encodeURIComponent(str)));\n\telse if (typeof Buffer === \"function\") return (str) => Buffer.from(str, \"utf-8\").toString(\"base64\");\n\telse return () => {\n\t\tthrow new Error(\"Unsupported environment: `window.btoa` or `Buffer` should be supported.\");\n\t};\n}\nconst btoa = /*#__PURE__*/ getBtoa();\nvar SourceMap = class {\n\tconstructor(properties) {\n\t\tthis.version = 3;\n\t\tthis.file = properties.file;\n\t\tthis.sources = properties.sources;\n\t\tthis.sourcesContent = properties.sourcesContent;\n\t\tthis.names = properties.names;\n\t\tthis.mappings = encode(properties.mappings);\n\t\tif (typeof properties.x_google_ignoreList !== \"undefined\") this.x_google_ignoreList = properties.x_google_ignoreList;\n\t\tif (typeof properties.debugId !== \"undefined\") this.debugId = properties.debugId;\n\t}\n\ttoString() {\n\t\treturn JSON.stringify(this);\n\t}\n\ttoUrl() {\n\t\treturn \"data:application/json;charset=utf-8;base64,\" + btoa(this.toString());\n\t}\n};\nfunction guessIndent(code) {\n\tconst lines = code.split(\"\\n\");\n\tconst tabbed = lines.filter((line) => /^\\t+/.test(line));\n\tconst spaced = lines.filter((line) => /^ {2,}/.test(line));\n\tif (tabbed.length === 0 && spaced.length === 0) return null;\n\tif (tabbed.length >= spaced.length) return \"\t\";\n\tconst min = spaced.reduce((previous, current) => {\n\t\tconst numSpaces = /^ +/.exec(current)[0].length;\n\t\treturn Math.min(numSpaces, previous);\n\t}, Infinity);\n\treturn new Array(min + 1).join(\" \");\n}\nfunction getRelativePath(from, to) {\n\tconst fromParts = from.split(/[/\\\\]/);\n\tconst toParts = to.split(/[/\\\\]/);\n\tfromParts.pop();\n\twhile (fromParts[0] === toParts[0]) {\n\t\tfromParts.shift();\n\t\ttoParts.shift();\n\t}\n\tif (fromParts.length) {\n\t\tlet i = fromParts.length;\n\t\twhile (i--) fromParts[i] = \"..\";\n\t}\n\treturn fromParts.concat(toParts).join(\"/\");\n}\nconst toString = Object.prototype.toString;\nfunction isObject(thing) {\n\treturn toString.call(thing) === \"[object Object]\";\n}\nfunction getLocator(source) {\n\tconst originalLines = source.split(\"\\n\");\n\tconst lineOffsets = [];\n\tfor (let i = 0, pos = 0; i < originalLines.length; i++) {\n\t\tlineOffsets.push(pos);\n\t\tpos += originalLines[i].length + 1;\n\t}\n\treturn function locate(index) {\n\t\tlet i = 0;\n\t\tlet j = lineOffsets.length;\n\t\twhile (i < j) {\n\t\t\tconst m = i + j >> 1;\n\t\t\tif (index < lineOffsets[m]) j = m;\n\t\t\telse i = m + 1;\n\t\t}\n\t\tconst line = i - 1;\n\t\treturn {\n\t\t\tline,\n\t\t\tcolumn: index - lineOffsets[line]\n\t\t};\n\t};\n}\nconst wordRegex = /\\w/;\nvar Mappings = class {\n\tconstructor(hires) {\n\t\tthis.hires = hires;\n\t\tthis.generatedCodeLine = 0;\n\t\tthis.generatedCodeColumn = 0;\n\t\tthis.raw = [];\n\t\tthis.rawSegments = this.raw[this.generatedCodeLine] = [];\n\t\tthis.pending = null;\n\t}\n\taddEdit(sourceIndex, content, loc, nameIndex) {\n\t\tif (content.length) {\n\t\t\tconst contentLengthMinusOne = content.length - 1;\n\t\t\tlet contentLineEnd = content.indexOf(\"\\n\", 0);\n\t\t\tlet previousContentLineEnd = -1;\n\t\t\twhile (contentLineEnd >= 0 && contentLengthMinusOne > contentLineEnd) {\n\t\t\t\tconst segment = [\n\t\t\t\t\tthis.generatedCodeColumn,\n\t\t\t\t\tsourceIndex,\n\t\t\t\t\tloc.line,\n\t\t\t\t\tloc.column\n\t\t\t\t];\n\t\t\t\tif (nameIndex >= 0) segment.push(nameIndex);\n\t\t\t\tthis.rawSegments.push(segment);\n\t\t\t\tthis.generatedCodeLine += 1;\n\t\t\t\tthis.raw[this.generatedCodeLine] = this.rawSegments = [];\n\t\t\t\tthis.generatedCodeColumn = 0;\n\t\t\t\tpreviousContentLineEnd = contentLineEnd;\n\t\t\t\tcontentLineEnd = content.indexOf(\"\\n\", contentLineEnd + 1);\n\t\t\t}\n\t\t\tconst segment = [\n\t\t\t\tthis.generatedCodeColumn,\n\t\t\t\tsourceIndex,\n\t\t\t\tloc.line,\n\t\t\t\tloc.column\n\t\t\t];\n\t\t\tif (nameIndex >= 0) segment.push(nameIndex);\n\t\t\tthis.rawSegments.push(segment);\n\t\t\tthis.advance(content.slice(previousContentLineEnd + 1));\n\t\t} else if (this.pending) {\n\t\t\tthis.rawSegments.push(this.pending);\n\t\t\tthis.advance(content);\n\t\t}\n\t\tthis.pending = null;\n\t}\n\taddUneditedChunk(sourceIndex, chunk, original, loc, sourcemapLocations) {\n\t\tlet originalCharIndex = chunk.start;\n\t\tlet first = true;\n\t\tlet charInHiresBoundary = false;\n\t\twhile (originalCharIndex < chunk.end) {\n\t\t\tif (original[originalCharIndex] === \"\\n\") {\n\t\t\t\tloc.line += 1;\n\t\t\t\tloc.column = 0;\n\t\t\t\tthis.generatedCodeLine += 1;\n\t\t\t\tthis.raw[this.generatedCodeLine] = this.rawSegments = [];\n\t\t\t\tthis.generatedCodeColumn = 0;\n\t\t\t\tfirst = true;\n\t\t\t\tcharInHiresBoundary = false;\n\t\t\t} else {\n\t\t\t\tif (this.hires || first || sourcemapLocations.has(originalCharIndex)) {\n\t\t\t\t\tconst segment = [\n\t\t\t\t\t\tthis.generatedCodeColumn,\n\t\t\t\t\t\tsourceIndex,\n\t\t\t\t\t\tloc.line,\n\t\t\t\t\t\tloc.column\n\t\t\t\t\t];\n\t\t\t\t\tif (this.hires === \"boundary\") {\n\t\t\t\t\t\tif (wordRegex.test(original[originalCharIndex])) {\n\t\t\t\t\t\t\tif (!charInHiresBoundary) {\n\t\t\t\t\t\t\t\tthis.rawSegments.push(segment);\n\t\t\t\t\t\t\t\tcharInHiresBoundary = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.rawSegments.push(segment);\n\t\t\t\t\t\t\tcharInHiresBoundary = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else this.rawSegments.push(segment);\n\t\t\t\t}\n\t\t\t\tloc.column += 1;\n\t\t\t\tthis.generatedCodeColumn += 1;\n\t\t\t\tfirst = false;\n\t\t\t}\n\t\t\toriginalCharIndex += 1;\n\t\t}\n\t\tthis.pending = null;\n\t}\n\tadvance(str) {\n\t\tif (!str) return;\n\t\tconst lines = str.split(\"\\n\");\n\t\tif (lines.length > 1) {\n\t\t\tfor (let i = 0; i < lines.length - 1; i++) {\n\t\t\t\tthis.generatedCodeLine++;\n\t\t\t\tthis.raw[this.generatedCodeLine] = this.rawSegments = [];\n\t\t\t}\n\t\t\tthis.generatedCodeColumn = 0;\n\t\t}\n\t\tthis.generatedCodeColumn += lines[lines.length - 1].length;\n\t}\n};\nconst n = \"\\n\";\nconst warned = {\n\tinsertLeft: false,\n\tinsertRight: false,\n\tstoreName: false\n};\nvar MagicString = class MagicString {\n\tconstructor(string, options = {}) {\n\t\tconst chunk = new Chunk(0, string.length, string);\n\t\tObject.defineProperties(this, {\n\t\t\toriginal: {\n\t\t\t\twritable: true,\n\t\t\t\tvalue: string\n\t\t\t},\n\t\t\toutro: {\n\t\t\t\twritable: true,\n\t\t\t\tvalue: \"\"\n\t\t\t},\n\t\t\tintro: {\n\t\t\t\twritable: true,\n\t\t\t\tvalue: \"\"\n\t\t\t},\n\t\t\tfirstChunk: {\n\t\t\t\twritable: true,\n\t\t\t\tvalue: chunk\n\t\t\t},\n\t\t\tlastChunk: {\n\t\t\t\twritable: true,\n\t\t\t\tvalue: chunk\n\t\t\t},\n\t\t\tlastSearchedChunk: {\n\t\t\t\twritable: true,\n\t\t\t\tvalue: chunk\n\t\t\t},\n\t\t\tbyStart: {\n\t\t\t\twritable: true,\n\t\t\t\tvalue: {}\n\t\t\t},\n\t\t\tbyEnd: {\n\t\t\t\twritable: true,\n\t\t\t\tvalue: {}\n\t\t\t},\n\t\t\tfilename: {\n\t\t\t\twritable: true,\n\t\t\t\tvalue: options.filename\n\t\t\t},\n\t\t\tindentExclusionRanges: {\n\t\t\t\twritable: true,\n\t\t\t\tvalue: options.indentExclusionRanges\n\t\t\t},\n\t\t\tsourcemapLocations: {\n\t\t\t\twritable: true,\n\t\t\t\tvalue: new BitSet()\n\t\t\t},\n\t\t\tstoredNames: {\n\t\t\t\twritable: true,\n\t\t\t\tvalue: {}\n\t\t\t},\n\t\t\tindentStr: {\n\t\t\t\twritable: true,\n\t\t\t\tvalue: void 0\n\t\t\t},\n\t\t\tignoreList: {\n\t\t\t\twritable: true,\n\t\t\t\tvalue: options.ignoreList\n\t\t\t},\n\t\t\toffset: {\n\t\t\t\twritable: true,\n\t\t\t\tvalue: options.offset || 0\n\t\t\t}\n\t\t});\n\t\tthis.byStart[0] = chunk;\n\t\tthis.byEnd[string.length] = chunk;\n\t}\n\taddSourcemapLocation(char) {\n\t\tthis.sourcemapLocations.add(char);\n\t}\n\tappend(content) {\n\t\tif (typeof content !== \"string\") throw new TypeError(\"outro content must be a string\");\n\t\tthis.outro += content;\n\t\treturn this;\n\t}\n\tappendLeft(index, content) {\n\t\tindex = index + this.offset;\n\t\tif (typeof content !== \"string\") throw new TypeError(\"inserted content must be a string\");\n\t\tthis._split(index);\n\t\tconst chunk = this.byEnd[index];\n\t\tif (chunk) chunk.appendLeft(content);\n\t\telse this.intro += content;\n\t\treturn this;\n\t}\n\tappendRight(index, content) {\n\t\tindex = index + this.offset;\n\t\tif (typeof content !== \"string\") throw new TypeError(\"inserted content must be a string\");\n\t\tthis._split(index);\n\t\tconst chunk = this.byStart[index];\n\t\tif (chunk) chunk.appendRight(content);\n\t\telse this.outro += content;\n\t\treturn this;\n\t}\n\tclone() {\n\t\tconst cloned = new MagicString(this.original, {\n\t\t\tfilename: this.filename,\n\t\t\toffset: this.offset\n\t\t});\n\t\tlet originalChunk = this.firstChunk;\n\t\tlet clonedChunk = cloned.firstChunk = cloned.lastSearchedChunk = originalChunk.clone();\n\t\twhile (originalChunk) {\n\t\t\tcloned.byStart[clonedChunk.start] = clonedChunk;\n\t\t\tcloned.byEnd[clonedChunk.end] = clonedChunk;\n\t\t\tconst nextOriginalChunk = originalChunk.next;\n\t\t\tconst nextClonedChunk = nextOriginalChunk && nextOriginalChunk.clone();\n\t\t\tif (nextClonedChunk) {\n\t\t\t\tclonedChunk.next = nextClonedChunk;\n\t\t\t\tnextClonedChunk.previous = clonedChunk;\n\t\t\t\tclonedChunk = nextClonedChunk;\n\t\t\t}\n\t\t\toriginalChunk = nextOriginalChunk;\n\t\t}\n\t\tcloned.lastChunk = clonedChunk;\n\t\tif (this.indentExclusionRanges) cloned.indentExclusionRanges = this.indentExclusionRanges.slice();\n\t\tcloned.sourcemapLocations = new BitSet(this.sourcemapLocations);\n\t\tcloned.intro = this.intro;\n\t\tcloned.outro = this.outro;\n\t\treturn cloned;\n\t}\n\tgenerateDecodedMap(options) {\n\t\toptions = options || {};\n\t\tconst sourceIndex = 0;\n\t\tconst names = Object.keys(this.storedNames);\n\t\tconst mappings = new Mappings(options.hires);\n\t\tconst locate = getLocator(this.original);\n\t\tif (this.intro) mappings.advance(this.intro);\n\t\tthis.firstChunk.eachNext((chunk) => {\n\t\t\tconst loc = locate(chunk.start);\n\t\t\tif (chunk.intro.length) mappings.advance(chunk.intro);\n\t\t\tif (chunk.edited) mappings.addEdit(sourceIndex, chunk.content, loc, chunk.storeName ? names.indexOf(chunk.original) : -1);\n\t\t\telse mappings.addUneditedChunk(sourceIndex, chunk, this.original, loc, this.sourcemapLocations);\n\t\t\tif (chunk.outro.length) mappings.advance(chunk.outro);\n\t\t});\n\t\tif (this.outro) mappings.advance(this.outro);\n\t\treturn {\n\t\t\tfile: options.file ? options.file.split(/[/\\\\]/).pop() : void 0,\n\t\t\tsources: [options.source ? getRelativePath(options.file || \"\", options.source) : options.file || \"\"],\n\t\t\tsourcesContent: options.includeContent ? [this.original] : void 0,\n\t\t\tnames,\n\t\t\tmappings: mappings.raw,\n\t\t\tx_google_ignoreList: this.ignoreList ? [sourceIndex] : void 0\n\t\t};\n\t}\n\tgenerateMap(options) {\n\t\treturn new SourceMap(this.generateDecodedMap(options));\n\t}\n\t_ensureindentStr() {\n\t\tif (this.indentStr === void 0) this.indentStr = guessIndent(this.original);\n\t}\n\t_getRawIndentString() {\n\t\tthis._ensureindentStr();\n\t\treturn this.indentStr;\n\t}\n\tgetIndentString() {\n\t\tthis._ensureindentStr();\n\t\treturn this.indentStr === null ? \"\t\" : this.indentStr;\n\t}\n\tindent(indentStr, options) {\n\t\tconst pattern = /^[^\\r\\n]/gm;\n\t\tif (isObject(indentStr)) {\n\t\t\toptions = indentStr;\n\t\t\tindentStr = void 0;\n\t\t}\n\t\tif (indentStr === void 0) {\n\t\t\tthis._ensureindentStr();\n\t\t\tindentStr = this.indentStr || \"\t\";\n\t\t}\n\t\tif (indentStr === \"\") return this;\n\t\toptions = options || {};\n\t\tconst isExcluded = {};\n\t\tif (options.exclude) (typeof options.exclude[0] === \"number\" ? [options.exclude] : options.exclude).forEach((exclusion) => {\n\t\t\tfor (let i = exclusion[0]; i < exclusion[1]; i += 1) isExcluded[i] = true;\n\t\t});\n\t\tlet shouldIndentNextCharacter = options.indentStart !== false;\n\t\tconst replacer = (match) => {\n\t\t\tif (shouldIndentNextCharacter) return `${indentStr}${match}`;\n\t\t\tshouldIndentNextCharacter = true;\n\t\t\treturn match;\n\t\t};\n\t\tthis.intro = this.intro.replace(pattern, replacer);\n\t\tlet charIndex = 0;\n\t\tlet chunk = this.firstChunk;\n\t\twhile (chunk) {\n\t\t\tconst end = chunk.end;\n\t\t\tif (chunk.edited) {\n\t\t\t\tif (!isExcluded[charIndex]) {\n\t\t\t\t\tchunk.content = chunk.content.replace(pattern, replacer);\n\t\t\t\t\tif (chunk.content.length) shouldIndentNextCharacter = chunk.content[chunk.content.length - 1] === \"\\n\";\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcharIndex = chunk.start;\n\t\t\t\twhile (charIndex < end) {\n\t\t\t\t\tif (!isExcluded[charIndex]) {\n\t\t\t\t\t\tconst char = this.original[charIndex];\n\t\t\t\t\t\tif (char === \"\\n\") shouldIndentNextCharacter = true;\n\t\t\t\t\t\telse if (char !== \"\\r\" && shouldIndentNextCharacter) {\n\t\t\t\t\t\t\tshouldIndentNextCharacter = false;\n\t\t\t\t\t\t\tif (charIndex === chunk.start) chunk.prependRight(indentStr);\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tthis._splitChunk(chunk, charIndex);\n\t\t\t\t\t\t\t\tchunk = chunk.next;\n\t\t\t\t\t\t\t\tchunk.prependRight(indentStr);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcharIndex += 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\tcharIndex = chunk.end;\n\t\t\tchunk = chunk.next;\n\t\t}\n\t\tthis.outro = this.outro.replace(pattern, replacer);\n\t\treturn this;\n\t}\n\tinsert() {\n\t\tthrow new Error(\"magicString.insert(...) is deprecated. Use prependRight(...) or appendLeft(...)\");\n\t}\n\tinsertLeft(index, content) {\n\t\tif (!warned.insertLeft) {\n\t\t\tconsole.warn(\"magicString.insertLeft(...) is deprecated. Use magicString.appendLeft(...) instead\");\n\t\t\twarned.insertLeft = true;\n\t\t}\n\t\treturn this.appendLeft(index, content);\n\t}\n\tinsertRight(index, content) {\n\t\tif (!warned.insertRight) {\n\t\t\tconsole.warn(\"magicString.insertRight(...) is deprecated. Use magicString.prependRight(...) instead\");\n\t\t\twarned.insertRight = true;\n\t\t}\n\t\treturn this.prependRight(index, content);\n\t}\n\tmove(start, end, index) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\t\tindex = index + this.offset;\n\t\tif (index >= start && index <= end) throw new Error(\"Cannot move a selection inside itself\");\n\t\tthis._split(start);\n\t\tthis._split(end);\n\t\tthis._split(index);\n\t\tconst first = this.byStart[start];\n\t\tconst last = this.byEnd[end];\n\t\tconst oldLeft = first.previous;\n\t\tconst oldRight = last.next;\n\t\tconst newRight = this.byStart[index];\n\t\tif (!newRight && last === this.lastChunk) return this;\n\t\tconst newLeft = newRight ? newRight.previous : this.lastChunk;\n\t\tif (oldLeft) oldLeft.next = oldRight;\n\t\tif (oldRight) oldRight.previous = oldLeft;\n\t\tif (newLeft) newLeft.next = first;\n\t\tif (newRight) newRight.previous = last;\n\t\tif (!first.previous) this.firstChunk = last.next;\n\t\tif (!last.next) {\n\t\t\tthis.lastChunk = first.previous;\n\t\t\tthis.lastChunk.next = null;\n\t\t}\n\t\tfirst.previous = newLeft;\n\t\tlast.next = newRight || null;\n\t\tif (!newLeft) this.firstChunk = first;\n\t\tif (!newRight) this.lastChunk = last;\n\t\treturn this;\n\t}\n\toverwrite(start, end, content, options) {\n\t\toptions = options || {};\n\t\treturn this.update(start, end, content, {\n\t\t\t...options,\n\t\t\toverwrite: !options.contentOnly\n\t\t});\n\t}\n\tupdate(start, end, content, options) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\t\tif (typeof content !== \"string\") throw new TypeError(\"replacement content must be a string\");\n\t\tif (this.original.length !== 0) {\n\t\t\twhile (start < 0) start += this.original.length;\n\t\t\twhile (end < 0) end += this.original.length;\n\t\t}\n\t\tif (end > this.original.length) throw new Error(\"end is out of bounds\");\n\t\tif (start === end) throw new Error(\"Cannot overwrite a zero-length range – use appendLeft or prependRight instead\");\n\t\tthis._split(start);\n\t\tthis._split(end);\n\t\tif (options === true) {\n\t\t\tif (!warned.storeName) {\n\t\t\t\tconsole.warn(\"The final argument to magicString.overwrite(...) should be an options object. See https://github.com/rich-harris/magic-string\");\n\t\t\t\twarned.storeName = true;\n\t\t\t}\n\t\t\toptions = { storeName: true };\n\t\t}\n\t\tconst storeName = options !== void 0 ? options.storeName : false;\n\t\tconst overwrite = options !== void 0 ? options.overwrite : false;\n\t\tif (storeName) {\n\t\t\tconst original = this.original.slice(start, end);\n\t\t\tObject.defineProperty(this.storedNames, original, {\n\t\t\t\twritable: true,\n\t\t\t\tvalue: true,\n\t\t\t\tenumerable: true\n\t\t\t});\n\t\t}\n\t\tconst first = this.byStart[start];\n\t\tconst last = this.byEnd[end];\n\t\tif (first) {\n\t\t\tlet chunk = first;\n\t\t\twhile (chunk !== last) {\n\t\t\t\tif (chunk.next !== this.byStart[chunk.end]) throw new Error(\"Cannot overwrite across a split point\");\n\t\t\t\tchunk = chunk.next;\n\t\t\t\tchunk.edit(\"\", false);\n\t\t\t}\n\t\t\tfirst.edit(content, storeName, !overwrite);\n\t\t} else {\n\t\t\tconst newChunk = new Chunk(start, end, \"\").edit(content, storeName);\n\t\t\tlast.next = newChunk;\n\t\t\tnewChunk.previous = last;\n\t\t}\n\t\treturn this;\n\t}\n\tprepend(content) {\n\t\tif (typeof content !== \"string\") throw new TypeError(\"outro content must be a string\");\n\t\tthis.intro = content + this.intro;\n\t\treturn this;\n\t}\n\tprependLeft(index, content) {\n\t\tindex = index + this.offset;\n\t\tif (typeof content !== \"string\") throw new TypeError(\"inserted content must be a string\");\n\t\tthis._split(index);\n\t\tconst chunk = this.byEnd[index];\n\t\tif (chunk) chunk.prependLeft(content);\n\t\telse this.intro = content + this.intro;\n\t\treturn this;\n\t}\n\tprependRight(index, content) {\n\t\tindex = index + this.offset;\n\t\tif (typeof content !== \"string\") throw new TypeError(\"inserted content must be a string\");\n\t\tthis._split(index);\n\t\tconst chunk = this.byStart[index];\n\t\tif (chunk) chunk.prependRight(content);\n\t\telse this.outro = content + this.outro;\n\t\treturn this;\n\t}\n\tremove(start, end) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\t\tif (this.original.length !== 0) {\n\t\t\twhile (start < 0) start += this.original.length;\n\t\t\twhile (end < 0) end += this.original.length;\n\t\t}\n\t\tif (start === end) return this;\n\t\tif (start < 0 || end > this.original.length) throw new Error(\"Character is out of bounds\");\n\t\tif (start > end) throw new Error(\"end must be greater than start\");\n\t\tthis._split(start);\n\t\tthis._split(end);\n\t\tlet chunk = this.byStart[start];\n\t\twhile (chunk) {\n\t\t\tchunk.intro = \"\";\n\t\t\tchunk.outro = \"\";\n\t\t\tchunk.edit(\"\");\n\t\t\tchunk = end > chunk.end ? this.byStart[chunk.end] : null;\n\t\t}\n\t\treturn this;\n\t}\n\treset(start, end) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\t\tif (this.original.length !== 0) {\n\t\t\twhile (start < 0) start += this.original.length;\n\t\t\twhile (end < 0) end += this.original.length;\n\t\t}\n\t\tif (start === end) return this;\n\t\tif (start < 0 || end > this.original.length) throw new Error(\"Character is out of bounds\");\n\t\tif (start > end) throw new Error(\"end must be greater than start\");\n\t\tthis._split(start);\n\t\tthis._split(end);\n\t\tlet chunk = this.byStart[start];\n\t\twhile (chunk) {\n\t\t\tchunk.reset();\n\t\t\tchunk = end > chunk.end ? this.byStart[chunk.end] : null;\n\t\t}\n\t\treturn this;\n\t}\n\tlastChar() {\n\t\tif (this.outro.length) return this.outro[this.outro.length - 1];\n\t\tlet chunk = this.lastChunk;\n\t\tdo {\n\t\t\tif (chunk.outro.length) return chunk.outro[chunk.outro.length - 1];\n\t\t\tif (chunk.content.length) return chunk.content[chunk.content.length - 1];\n\t\t\tif (chunk.intro.length) return chunk.intro[chunk.intro.length - 1];\n\t\t} while (chunk = chunk.previous);\n\t\tif (this.intro.length) return this.intro[this.intro.length - 1];\n\t\treturn \"\";\n\t}\n\tlastLine() {\n\t\tlet lineIndex = this.outro.lastIndexOf(n);\n\t\tif (lineIndex !== -1) return this.outro.substr(lineIndex + 1);\n\t\tlet lineStr = this.outro;\n\t\tlet chunk = this.lastChunk;\n\t\tdo {\n\t\t\tif (chunk.outro.length > 0) {\n\t\t\t\tlineIndex = chunk.outro.lastIndexOf(n);\n\t\t\t\tif (lineIndex !== -1) return chunk.outro.substr(lineIndex + 1) + lineStr;\n\t\t\t\tlineStr = chunk.outro + lineStr;\n\t\t\t}\n\t\t\tif (chunk.content.length > 0) {\n\t\t\t\tlineIndex = chunk.content.lastIndexOf(n);\n\t\t\t\tif (lineIndex !== -1) return chunk.content.substr(lineIndex + 1) + lineStr;\n\t\t\t\tlineStr = chunk.content + lineStr;\n\t\t\t}\n\t\t\tif (chunk.intro.length > 0) {\n\t\t\t\tlineIndex = chunk.intro.lastIndexOf(n);\n\t\t\t\tif (lineIndex !== -1) return chunk.intro.substr(lineIndex + 1) + lineStr;\n\t\t\t\tlineStr = chunk.intro + lineStr;\n\t\t\t}\n\t\t} while (chunk = chunk.previous);\n\t\tlineIndex = this.intro.lastIndexOf(n);\n\t\tif (lineIndex !== -1) return this.intro.substr(lineIndex + 1) + lineStr;\n\t\treturn this.intro + lineStr;\n\t}\n\tslice(start = 0, end = this.original.length - this.offset) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\t\tif (this.original.length !== 0) {\n\t\t\twhile (start < 0) start += this.original.length;\n\t\t\twhile (end < 0) end += this.original.length;\n\t\t}\n\t\tlet result = \"\";\n\t\tlet chunk = this.firstChunk;\n\t\twhile (chunk && (chunk.start > start || chunk.end <= start)) {\n\t\t\tif (chunk.start < end && chunk.end >= end) return result;\n\t\t\tchunk = chunk.next;\n\t\t}\n\t\tif (chunk && chunk.edited && chunk.start !== start) throw new Error(`Cannot use replaced character ${start} as slice start anchor.`);\n\t\tconst startChunk = chunk;\n\t\twhile (chunk) {\n\t\t\tif (chunk.intro && (startChunk !== chunk || chunk.start === start)) result += chunk.intro;\n\t\t\tconst containsEnd = chunk.start < end && chunk.end >= end;\n\t\t\tif (containsEnd && chunk.edited && chunk.end !== end) throw new Error(`Cannot use replaced character ${end} as slice end anchor.`);\n\t\t\tconst sliceStart = startChunk === chunk ? start - chunk.start : 0;\n\t\t\tconst sliceEnd = containsEnd ? chunk.content.length + end - chunk.end : chunk.content.length;\n\t\t\tresult += chunk.content.slice(sliceStart, sliceEnd);\n\t\t\tif (chunk.outro && (!containsEnd || chunk.end === end)) result += chunk.outro;\n\t\t\tif (containsEnd) break;\n\t\t\tchunk = chunk.next;\n\t\t}\n\t\treturn result;\n\t}\n\tsnip(start, end) {\n\t\tconst clone = this.clone();\n\t\tclone.remove(0, start);\n\t\tclone.remove(end, clone.original.length);\n\t\treturn clone;\n\t}\n\t_split(index) {\n\t\tif (this.byStart[index] || this.byEnd[index]) return;\n\t\tlet chunk = this.lastSearchedChunk;\n\t\tlet previousChunk = chunk;\n\t\tconst searchForward = index > chunk.end;\n\t\twhile (chunk) {\n\t\t\tif (chunk.contains(index)) return this._splitChunk(chunk, index);\n\t\t\tchunk = searchForward ? this.byStart[chunk.end] : this.byEnd[chunk.start];\n\t\t\tif (chunk === previousChunk) return;\n\t\t\tpreviousChunk = chunk;\n\t\t}\n\t}\n\t_splitChunk(chunk, index) {\n\t\tif (chunk.edited && chunk.content.length) {\n\t\t\tconst loc = getLocator(this.original)(index);\n\t\t\tthrow new Error(`Cannot split a chunk that has already been edited (${loc.line}:${loc.column} – \"${chunk.original}\")`);\n\t\t}\n\t\tconst newChunk = chunk.split(index);\n\t\tthis.byEnd[index] = chunk;\n\t\tthis.byStart[index] = newChunk;\n\t\tthis.byEnd[newChunk.end] = newChunk;\n\t\tif (chunk === this.lastChunk) this.lastChunk = newChunk;\n\t\tthis.lastSearchedChunk = chunk;\n\t\treturn true;\n\t}\n\ttoString() {\n\t\tlet str = this.intro;\n\t\tlet chunk = this.firstChunk;\n\t\twhile (chunk) {\n\t\t\tstr += chunk.toString();\n\t\t\tchunk = chunk.next;\n\t\t}\n\t\treturn str + this.outro;\n\t}\n\tisEmpty() {\n\t\tlet chunk = this.firstChunk;\n\t\tdo\n\t\t\tif (chunk.intro.length && chunk.intro.trim() || chunk.content.length && chunk.content.trim() || chunk.outro.length && chunk.outro.trim()) return false;\n\t\twhile (chunk = chunk.next);\n\t\treturn true;\n\t}\n\tlength() {\n\t\tlet chunk = this.firstChunk;\n\t\tlet length = 0;\n\t\tdo\n\t\t\tlength += chunk.intro.length + chunk.content.length + chunk.outro.length;\n\t\twhile (chunk = chunk.next);\n\t\treturn length;\n\t}\n\ttrimLines() {\n\t\treturn this.trim(\"[\\\\r\\\\n]\");\n\t}\n\ttrim(charType) {\n\t\treturn this.trimStart(charType).trimEnd(charType);\n\t}\n\ttrimEndAborted(charType) {\n\t\tconst rx = new RegExp((charType || \"\\\\s\") + \"+$\");\n\t\tthis.outro = this.outro.replace(rx, \"\");\n\t\tif (this.outro.length) return true;\n\t\tlet chunk = this.lastChunk;\n\t\tdo {\n\t\t\tconst end = chunk.end;\n\t\t\tconst aborted = chunk.trimEnd(rx);\n\t\t\tif (chunk.end !== end) {\n\t\t\t\tif (this.lastChunk === chunk) this.lastChunk = chunk.next;\n\t\t\t\tthis.byEnd[chunk.end] = chunk;\n\t\t\t\tthis.byStart[chunk.next.start] = chunk.next;\n\t\t\t\tthis.byEnd[chunk.next.end] = chunk.next;\n\t\t\t}\n\t\t\tif (aborted) return true;\n\t\t\tchunk = chunk.previous;\n\t\t} while (chunk);\n\t\treturn false;\n\t}\n\ttrimEnd(charType) {\n\t\tthis.trimEndAborted(charType);\n\t\treturn this;\n\t}\n\ttrimStartAborted(charType) {\n\t\tconst rx = new RegExp(\"^\" + (charType || \"\\\\s\") + \"+\");\n\t\tthis.intro = this.intro.replace(rx, \"\");\n\t\tif (this.intro.length) return true;\n\t\tlet chunk = this.firstChunk;\n\t\tdo {\n\t\t\tconst end = chunk.end;\n\t\t\tconst aborted = chunk.trimStart(rx);\n\t\t\tif (chunk.end !== end) {\n\t\t\t\tif (chunk === this.lastChunk) this.lastChunk = chunk.next;\n\t\t\t\tthis.byEnd[chunk.end] = chunk;\n\t\t\t\tthis.byStart[chunk.next.start] = chunk.next;\n\t\t\t\tthis.byEnd[chunk.next.end] = chunk.next;\n\t\t\t}\n\t\t\tif (aborted) return true;\n\t\t\tchunk = chunk.next;\n\t\t} while (chunk);\n\t\treturn false;\n\t}\n\ttrimStart(charType) {\n\t\tthis.trimStartAborted(charType);\n\t\treturn this;\n\t}\n\thasChanged() {\n\t\treturn this.original !== this.toString();\n\t}\n\t_replaceRegexp(searchValue, replacement) {\n\t\tfunction getReplacement(match, str) {\n\t\t\tif (typeof replacement === \"string\") return replacement.replace(/\\$(\\$|&|\\d+)/g, (_, i) => {\n\t\t\t\tif (i === \"$\") return \"$\";\n\t\t\t\tif (i === \"&\") return match[0];\n\t\t\t\tif (+i < match.length) return match[+i];\n\t\t\t\treturn `$${i}`;\n\t\t\t});\n\t\t\telse return replacement(...match, match.index, str, match.groups);\n\t\t}\n\t\tfunction matchAll(re, str) {\n\t\t\tlet match;\n\t\t\tconst matches = [];\n\t\t\twhile (match = re.exec(str)) matches.push(match);\n\t\t\treturn matches;\n\t\t}\n\t\tif (searchValue.global) matchAll(searchValue, this.original).forEach((match) => {\n\t\t\tif (match.index != null) {\n\t\t\t\tconst replacement = getReplacement(match, this.original);\n\t\t\t\tif (replacement !== match[0]) this.overwrite(match.index, match.index + match[0].length, replacement);\n\t\t\t}\n\t\t});\n\t\telse {\n\t\t\tconst match = this.original.match(searchValue);\n\t\t\tif (match && match.index != null) {\n\t\t\t\tconst replacement = getReplacement(match, this.original);\n\t\t\t\tif (replacement !== match[0]) this.overwrite(match.index, match.index + match[0].length, replacement);\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\t_replaceString(string, replacement) {\n\t\tconst { original } = this;\n\t\tconst index = original.indexOf(string);\n\t\tif (index !== -1) {\n\t\t\tif (typeof replacement === \"function\") replacement = replacement(string, index, original);\n\t\t\tif (string !== replacement) this.overwrite(index, index + string.length, replacement);\n\t\t}\n\t\treturn this;\n\t}\n\treplace(searchValue, replacement) {\n\t\tif (typeof searchValue === \"string\") return this._replaceString(searchValue, replacement);\n\t\treturn this._replaceRegexp(searchValue, replacement);\n\t}\n\t_replaceAllString(string, replacement) {\n\t\tconst { original } = this;\n\t\tconst stringLength = string.length;\n\t\tfor (let index = original.indexOf(string); index !== -1; index = original.indexOf(string, index + stringLength)) {\n\t\t\tconst previous = original.slice(index, index + stringLength);\n\t\t\tlet _replacement = replacement;\n\t\t\tif (typeof replacement === \"function\") _replacement = replacement(previous, index, original);\n\t\t\tif (previous !== _replacement) this.overwrite(index, index + stringLength, _replacement);\n\t\t}\n\t\treturn this;\n\t}\n\treplaceAll(searchValue, replacement) {\n\t\tif (typeof searchValue === \"string\") return this._replaceAllString(searchValue, replacement);\n\t\tif (!searchValue.global) throw new TypeError(\"MagicString.prototype.replaceAll called with a non-global RegExp argument\");\n\t\treturn this._replaceRegexp(searchValue, replacement);\n\t}\n};\n//#endregion\n//#region ../../utils/src/ast-replacer.ts\nvar import_ast_matcher = /* @__PURE__ */ __toESM((/* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tconst STOP = false;\n\tconst SKIP_BRANCH = 1;\n\tconst IGNORED_KEYS = [\n\t\t\"start\",\n\t\t\"end\",\n\t\t\"loc\",\n\t\t\"location\",\n\t\t\"locations\",\n\t\t\"line\",\n\t\t\"column\",\n\t\t\"range\",\n\t\t\"ranges\",\n\t\t\"raw\",\n\t\t\"extra\"\n\t];\n\tlet _parser = function() {\n\t\tthrow new Error(\"No parser set, you need to set parser before use astMatcher. For instance, astMatcher.setParser(esprima.parse)\");\n\t};\n\tfunction setParser(p) {\n\t\tif (typeof p !== \"function\") throw new Error(\"Input parser must be a function that takes JavaScript contents as input, produce a estree compliant syntax tree object.\");\n\t\t_parser = function(contents) {\n\t\t\tlet node = p(contents);\n\t\t\tif (node.type === \"File\" && node.program) node = node.program;\n\t\t\treturn node;\n\t\t};\n\t}\n\tfunction traverse(object, visitor) {\n\t\tlet child;\n\t\tif (!object) return;\n\t\tlet r = visitor.call(null, object);\n\t\tif (r === STOP) return STOP;\n\t\tif (r === SKIP_BRANCH) return;\n\t\tfor (let i = 0, keys = Object.keys(object); i < keys.length; i++) {\n\t\t\tlet key = keys[i];\n\t\t\tif (IGNORED_KEYS.indexOf(key) !== -1) continue;\n\t\t\tchild = object[key];\n\t\t\tif (typeof child === \"object\" && child !== null) {\n\t\t\t\tif (traverse(child, visitor) === STOP) return STOP;\n\t\t\t}\n\t\t}\n\t}\n\tconst ANY = 1;\n\tconst ANL = 2;\n\tconst STR = 3;\n\tconst ARR = 4;\n\tfunction matchTerm(pattern) {\n\t\tlet possible;\n\t\tif (pattern.type === \"Identifier\") possible = pattern.name.toString();\n\t\telse if (pattern.type === \"ExpressionStatement\" && pattern.expression.type === \"Identifier\") possible = pattern.expression.name.toString();\n\t\telse if ((pattern.type === \"FieldDefinition\" || pattern.type === \"ClassProperty\") && pattern.key.type === \"Identifier\") possible = pattern.key.name.toString();\n\t\tif (!possible || !possible.startsWith(\"__\")) return;\n\t\tlet type;\n\t\tif (possible === \"__any\" || possible.startsWith(\"__any_\")) type = ANY;\n\t\telse if (possible === \"__anl\" || possible.startsWith(\"__anl_\")) type = ANL;\n\t\telse if (possible === \"__str\" || possible.startsWith(\"__str_\")) type = STR;\n\t\telse if (possible === \"__arr\" || possible.startsWith(\"__arr_\")) type = ARR;\n\t\tif (type) return {\n\t\t\ttype,\n\t\t\tname: possible.slice(6)\n\t\t};\n\t}\n\t/**\n\t* Extract info from a partial estree syntax tree, see astMatcher for pattern format\n\t* @param pattern The pattern used on matching\n\t* @param part The target partial syntax tree\n\t* @return Returns named matches, or false.\n\t*/\n\tfunction extract(pattern, part) {\n\t\tif (!pattern) throw new Error(\"missing pattern\");\n\t\tif (!part) return STOP;\n\t\tlet term = matchTerm(pattern);\n\t\tif (term) {\n\t\t\tif (term.type === ANY) {\n\t\t\t\tif (term.name) {\n\t\t\t\t\tlet r = {};\n\t\t\t\t\tr[term.name] = part;\n\t\t\t\t\treturn r;\n\t\t\t\t}\n\t\t\t\treturn {};\n\t\t\t} else if (term.type === STR) {\n\t\t\t\tif (part.type === \"Literal\" || part.type === \"StringLiteral\") {\n\t\t\t\t\tif (term.name) {\n\t\t\t\t\t\tlet r = {};\n\t\t\t\t\t\tr[term.name] = part.value;\n\t\t\t\t\t\treturn r;\n\t\t\t\t\t}\n\t\t\t\t\treturn {};\n\t\t\t\t}\n\t\t\t\treturn STOP;\n\t\t\t}\n\t\t}\n\t\tif (Array.isArray(pattern)) {\n\t\t\tif (!Array.isArray(part)) return STOP;\n\t\t\tif (pattern.length === 1) {\n\t\t\t\tlet arrTerm = matchTerm(pattern[0]);\n\t\t\t\tif (arrTerm) {\n\t\t\t\t\tif (arrTerm.type === ARR) {\n\t\t\t\t\t\tlet arr = part.filter(function(it) {\n\t\t\t\t\t\t\treturn it.type === \"Literal\" || it.type === \"StringLiteral\";\n\t\t\t\t\t\t}).map(function(it) {\n\t\t\t\t\t\t\treturn it.value;\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (arr.length) {\n\t\t\t\t\t\t\tif (arrTerm.name) {\n\t\t\t\t\t\t\t\tlet r = {};\n\t\t\t\t\t\t\t\tr[arrTerm.name] = arr;\n\t\t\t\t\t\t\t\treturn r;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn {};\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn STOP;\n\t\t\t\t\t} else if (arrTerm.type === ANL) {\n\t\t\t\t\t\tif (arrTerm.name) {\n\t\t\t\t\t\t\tlet r = {};\n\t\t\t\t\t\t\tr[arrTerm.name] = part;\n\t\t\t\t\t\t\treturn r;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn {};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (pattern.length !== part.length) return STOP;\n\t\t}\n\t\tlet allResult = {};\n\t\tfor (let i = 0, keys = Object.keys(pattern); i < keys.length; i++) {\n\t\t\tlet key = keys[i];\n\t\t\tif (IGNORED_KEYS.indexOf(key) !== -1) continue;\n\t\t\tlet nextPattern = pattern[key];\n\t\t\tlet nextPart = part[key];\n\t\t\tif (!nextPattern || typeof nextPattern !== \"object\") {\n\t\t\t\tif (nextPattern === nextPart) continue;\n\t\t\t\treturn STOP;\n\t\t\t}\n\t\t\tconst result = extract(nextPattern, nextPart);\n\t\t\tif (result === STOP) return STOP;\n\t\t\tif (result) Object.assign(allResult, result);\n\t\t}\n\t\treturn allResult;\n\t}\n\t/**\n\t* Compile a pattern into estree syntax tree\n\t* @param pattern The pattern used on matching, can be a string or estree node\n\t* @return Returns an estree node to be used as pattern in extract(pattern, part)\n\t*/\n\tfunction compilePattern(pattern) {\n\t\tlet exp = ensureParsed(pattern);\n\t\tif (exp.type !== \"Program\" || !exp.body) throw new Error(`Not a valid expression: \"${pattern}\".`);\n\t\tif (exp.body.length === 0) throw new Error(`There is no statement in pattern \"${pattern}\".`);\n\t\tif (exp.body.length > 1) throw new Error(`Multiple statements is not supported \"${pattern}\".`);\n\t\texp = exp.body[0];\n\t\tif (exp.type === \"ExpressionStatement\") exp = exp.expression;\n\t\treturn exp;\n\t}\n\tfunction ensureParsed(codeOrNode) {\n\t\tif (codeOrNode && codeOrNode.type) {\n\t\t\tif (codeOrNode.type === \"File\" && codeOrNode.program) return codeOrNode.program;\n\t\t\treturn codeOrNode;\n\t\t}\n\t\treturn _parser(codeOrNode);\n\t}\n\t/**\n\t* Pattern matching using AST on JavaScript source code\n\t* @param pattern The pattern to be matched\n\t* @return Returns a function that takes source code string (or estree syntax tree) as input, produces matched result or undefined.\n\t*\n\t* __any matches any single node, but no extract\n\t* __anl matches array of nodes, but no extract\n\t* __str matches string literal, but no extract\n\t* __arr matches array of partial string literals, but no extract\n\t* __any_aName matches single node, return {aName: node}\n\t* __anl_aName matches array of nodes, return {aName: array_of_nodes}\n\t* __str_aName matches string literal, return {aName: value}\n\t* __arr_aName matches array, extract string literals, return {aName: [values]}\n\t*\n\t* note: __arr_aName can match partial array\n\t* [foo, \"foo\", lorem, \"bar\", lorem] => [\"foo\", \"bar\"]\n\t*\n\t* note: __anl, and __arr_*\n\t* use method(__anl) or method(__arr_a) to match method(a, \"b\");\n\t* use method([__anl]) or method([__arr_a]) to match method([a, \"b\"]);\n\t*\n\t* Usage:\n\t* let m = astMatcher('__any.method(__str_foo, [__arr_opts])');\n\t* m('au.method(\"a\", [\"b\", \"c\"]); jq.method(\"d\", [\"e\"])');\n\t*\n\t* => [\n\t* {match: {foo: \"a\", opts: [\"b\", \"c\"]}, node: <CallExpression node> }\n\t* {match: {foo: \"d\", opts: [\"e\"]}, node: <CallExpression node> }\n\t* ]\n\t*/\n\tfunction astMatcher(pattern) {\n\t\tlet pat = compilePattern(pattern);\n\t\treturn function(jsStr) {\n\t\t\tlet node = ensureParsed(jsStr);\n\t\t\tlet matches = [];\n\t\t\ttraverse(node, function(n) {\n\t\t\t\tlet m = extract(pat, n);\n\t\t\t\tif (m) matches.push({\n\t\t\t\t\tmatch: m,\n\t\t\t\t\tnode: n\n\t\t\t\t});\n\t\t\t});\n\t\t\treturn matches.length ? matches : void 0;\n\t\t};\n\t}\n\t/**\n\t* Dependency analysis for dummies, this is a high level api to simplify the usage of astMatcher\n\t* @param arguments Multiple patterns to match, instead of using __str_/__arr_,\n\t* use __dep and __deps to match string and partial string array.\n\t* @return Returns a function that takes source code string (or estree syntax tree) as input, produces an array of string matched, or empty array.\n\t*\n\t* Usage:\n\t* let f = depFinder('a(__dep)', '__any.globalResources([__deps])');\n\t* f('a(\"a\"); a(\"b\"); config.globalResources([\"./c\", \"./d\"])');\n\t*\n\t* => ['a', 'b', './c', './d']\n\t*/\n\tfunction depFinder() {\n\t\tif (arguments.length === 0) throw new Error(\"No patterns provided.\");\n\t\tlet seed = 0;\n\t\tlet patterns = Array.prototype.map.call(arguments, function(p) {\n\t\t\treturn compilePattern(p.replace(/__dep(s?)/g, function(m, wantArr) {\n\t\t\t\treturn (wantArr ? \"__arr_\" : \"__str_\") + ++seed;\n\t\t\t}));\n\t\t});\n\t\tlet len = patterns.length;\n\t\treturn function(jsStr) {\n\t\t\tlet node = ensureParsed(jsStr);\n\t\t\tlet deps = [];\n\t\t\ttraverse(node, function(n) {\n\t\t\t\tfor (let i = 0; i < len; i += 1) {\n\t\t\t\t\tlet result = extract(patterns[i], n);\n\t\t\t\t\tif (result) {\n\t\t\t\t\t\tObject.keys(result).forEach(function(k) {\n\t\t\t\t\t\t\tlet d = result[k];\n\t\t\t\t\t\t\tif (typeof d === \"string\") deps.push(d);\n\t\t\t\t\t\t\telse deps.push.apply(deps, d);\n\t\t\t\t\t\t});\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn deps;\n\t\t};\n\t}\n\tmodule.exports = astMatcher;\n\tmodule.exports.setParser = setParser;\n\tmodule.exports.ensureParsed = ensureParsed;\n\tmodule.exports.extract = extract;\n\tmodule.exports.compilePattern = compilePattern;\n\tmodule.exports.depFinder = depFinder;\n\tmodule.exports.STOP = STOP;\n\tmodule.exports.SKIP_BRANCH = SKIP_BRANCH;\n\tmodule.exports.traverse = traverse;\n})))(), 1);\nfunction escapeStringRegexp(string) {\n\tif (typeof string !== \"string\") throw new TypeError(\"Expected a string\");\n\treturn string.replace(/[|\\\\{}()[\\]^$+*?.]/g, \"\\\\$&\").replace(/-/g, \"\\\\x2d\");\n}\nfunction markEdited(node, edits) {\n\tfor (const [start, end] of edits) if (start <= node.start && node.start < end || start < node.end && node.end <= end) return false;\n\treturn edits.push([node.start, node.end]);\n}\nconst SUPPORTED_FILES = [\n\t\"js\",\n\t\"ts\",\n\t\"mjs\",\n\t\"mts\",\n\t\"cjs\",\n\t\"cts\",\n\t\"jsx\",\n\t\"tsx\",\n\t\"vue\",\n\t\"svelte\"\n];\nfunction getVueUnrefPattern(key) {\n\tconst dotIdx = key.indexOf(\".\");\n\tif (dotIdx === -1) return void 0;\n\treturn `_unref(${key.slice(0, dotIdx)})${key.slice(dotIdx)}`;\n}\nfunction createReplacerTransformFn(opts) {\n\tconst keys = Object.keys(opts.replacements);\n\tlet matchers;\n\tconst extraMatchersForFileType = {};\n\tconst findAnyReplacementPatterns = keys.flatMap((key) => {\n\t\tconst unrefPattern = getVueUnrefPattern(key);\n\t\treturn unrefPattern ? [key, unrefPattern] : [key];\n\t});\n\tconst findAnyReplacementRegex = new RegExp(`(?:${findAnyReplacementPatterns.map(escapeStringRegexp).join(\"|\")})`, \"g\");\n\treturn function transform(parserCtx, code, id) {\n\t\tif (keys.length === 0) return null;\n\t\tconst fileExt = id.split(\"?\")[0].split(\"#\")[0].split(\".\").pop() || \"\";\n\t\tif (!SUPPORTED_FILES.includes(fileExt)) return null;\n\t\tif (code.search(findAnyReplacementRegex) === -1) return null;\n\t\tconst parse = (codeToParse, source = code) => {\n\t\t\ttry {\n\t\t\t\treturn parserCtx.parse(codeToParse, void 0);\n\t\t\t} catch (error) {\n\t\t\t\terror.message += ` in ${source}`;\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t};\n\t\tconst ast = parse(code, id);\n\t\tmatchers ||= keys.map((key) => ({\n\t\t\tmatcher: (0, import_ast_matcher.default)(parse(key)),\n\t\t\treplacement: opts.replacements[key]\n\t\t}));\n\t\tif (fileExt === \"vue\") extraMatchersForFileType.vue ||= keys.flatMap((key) => {\n\t\t\tconst unrefPattern = getVueUnrefPattern(key);\n\t\t\treturn [`$setup.${key}`, ...unrefPattern ? [unrefPattern] : []].map((pattern) => ({\n\t\t\t\tmatcher: (0, import_ast_matcher.default)(parse(pattern)),\n\t\t\t\treplacement: opts.replacements[key]\n\t\t\t}));\n\t\t});\n\t\tconst magicString = new MagicString(code);\n\t\tconst edits = [];\n\t\tObject.values([...matchers, ...extraMatchersForFileType[fileExt] || []]).forEach(({ matcher, replacement }) => {\n\t\t\tfor (const { node } of matcher(ast) || []) if (markEdited(node, edits)) magicString.overwrite(node.start, node.end, replacement);\n\t\t});\n\t\tif (edits.length === 0) return null;\n\t\treturn magicString;\n\t};\n}\n//#endregion\n//#region src/ansi-to-html.ts\nconst ANSI_COLORS = {\n\t30: \"#45475a\",\n\t31: \"#f38ba8\",\n\t32: \"#a6e3a1\",\n\t33: \"#f9e2af\",\n\t34: \"#89b4fa\",\n\t35: \"#f5c2e7\",\n\t36: \"#94e2d5\",\n\t37: \"#cdd6f4\",\n\t90: \"#585b70\",\n\t91: \"#f38ba8\",\n\t92: \"#a6e3a1\",\n\t93: \"#f9e2af\",\n\t94: \"#89b4fa\",\n\t95: \"#f5c2e7\",\n\t96: \"#94e2d5\",\n\t97: \"#cdd6f4\"\n};\nconst ANSI_RE = new RegExp(`${String.fromCharCode(27)}\\\\[([0-9;]*)m`, \"g\");\n/**\n* Convert a string with ANSI escape codes to HTML with inline styles.\n* Uses a \"close all, re-open with active styles\" approach so that\n* nested/overlapping ANSI sequences render correctly.\n*/\nfunction ansiToHtml(str) {\n\tlet bold = false;\n\tlet dim = false;\n\tlet italic = false;\n\tlet underline = false;\n\tlet strikethrough = false;\n\tlet color;\n\tlet isOpen = false;\n\tfunction buildSpan() {\n\t\tconst styles = [];\n\t\tif (bold) styles.push(\"font-weight:bold\");\n\t\tif (dim) styles.push(\"opacity:0.6\");\n\t\tif (italic) styles.push(\"font-style:italic\");\n\t\tif (underline) styles.push(\"text-decoration:underline\");\n\t\tif (strikethrough) styles.push(\"text-decoration:line-through\");\n\t\tif (color) styles.push(`color:${color}`);\n\t\tif (!styles.length) return \"\";\n\t\tisOpen = true;\n\t\treturn `<span style=\"${styles.join(\";\")}\">`;\n\t}\n\tfunction closeIfOpen() {\n\t\tif (!isOpen) return \"\";\n\t\tisOpen = false;\n\t\treturn \"</span>\";\n\t}\n\tlet html = str.replace(/&/g, \"&\").replace(/</g, \"<\").replace(/>/g, \">\");\n\thtml = html.replace(ANSI_RE, (_, codes) => {\n\t\tconst parts = codes.split(\";\").filter(Boolean).map(Number);\n\t\tif (parts.length === 0 || parts.includes(0)) {\n\t\t\tbold = false;\n\t\t\tdim = false;\n\t\t\titalic = false;\n\t\t\tunderline = false;\n\t\t\tstrikethrough = false;\n\t\t\tcolor = void 0;\n\t\t\treturn closeIfOpen();\n\t\t}\n\t\tconst close = closeIfOpen();\n\t\tfor (const code of parts) if (code === 1) bold = true;\n\t\telse if (code === 2) dim = true;\n\t\telse if (code === 3) italic = true;\n\t\telse if (code === 4) underline = true;\n\t\telse if (code === 9) strikethrough = true;\n\t\telse if (code === 22) {\n\t\t\tbold = false;\n\t\t\tdim = false;\n\t\t} else if (code === 23) italic = false;\n\t\telse if (code === 24) underline = false;\n\t\telse if (code === 29) strikethrough = false;\n\t\telse if (code === 39) color = void 0;\n\t\telse if (ANSI_COLORS[code]) color = ANSI_COLORS[code];\n\t\treturn close + buildSpan();\n\t});\n\thtml += closeIfOpen();\n\treturn html;\n}\n//#endregion\n//#region src/index.ts\nfunction buildErrorPageHtml(ansiError) {\n\treturn `<!DOCTYPE html>\n<html><head><title>varlock - config error</title></head>\n<body style=\"font-family: monospace; background: #1e1e2e; color: #cdd6f4; margin: 0; padding: 2rem;\">\n<div style=\"margin-bottom: 1.5rem;\">\n <h2 style=\"color: #f38ba8; margin: 0 0 0.5rem 0;\">🔒 Varlock — env config validation failed</h2>\n <p style=\"color: #6c7086; margin: 0;\">Your environment variables are loaded and validated by <a href=\"https://varlock.dev\" style=\"color: #89b4fa;\">varlock</a>. Fix the error(s) below and save to reload.</p>\n</div>\n<pre style=\"white-space: pre-wrap; word-wrap: break-word; line-height: 1.5; background: #181825; padding: 1rem; border-radius: 8px;\">${ansiError ? ansiToHtml(ansiError) : \"Config is invalid — check your terminal for details.\"}</pre>\n</body></html>`;\n}\nglobalThis.__varlockThrowOnMissingKeys = true;\nconst originalProcessEnv = { ...process.env };\nconst debug = createDebug(\"varlock:vite-integration\");\ndebug(\"varlock vite plugin loaded\");\nlet isDevCommand;\nlet configIsValid = true;\nlet varlockLoadedEnv;\n/** Stderr output from the last failed varlock load (ANSI-colored) */\nlet varlockLastError;\nlet lastErrorAt = 0;\nlet configHookCalled = false;\nlet cfDetectNoticeLogged = false;\nlet vercelUnencryptedWarningLogged = false;\nlet staticReplacements = {};\nlet publicDynamicKeys = [];\nlet replacerFn;\nfunction resetStaticReplacements() {\n\tstaticReplacements = {};\n\tpublicDynamicKeys = [];\n\tfor (const itemKey in varlockLoadedEnv?.config) {\n\t\tconst itemInfo = varlockLoadedEnv.config[itemKey];\n\t\tconst isDynamic = itemInfo.isDynamic ?? itemInfo.isSensitive;\n\t\tif (isDynamic && !itemInfo.isSensitive) publicDynamicKeys.push(itemKey);\n\t\tif (!isDynamic) {\n\t\t\tconst val = itemInfo.value === void 0 ? \"undefined\" : JSON.stringify(itemInfo.value);\n\t\t\tstaticReplacements[`ENV.${itemKey}`] = val;\n\t\t}\n\t}\n\tglobalThis.__varlockPublicDynamicKeys = publicDynamicKeys;\n\tdebug(\"static replacements\", staticReplacements);\n\treplacerFn = createReplacerTransformFn({ replacements: staticReplacements });\n}\nfunction isExistingNonRegularFile(filePath) {\n\ttry {\n\t\treturn !fs.statSync(filePath).isFile();\n\t} catch {\n\t\treturn false;\n\t}\n}\nconst warnedNonRegularSources = /* @__PURE__ */ new Set();\nfunction warnNonRegularSourceOnce(absPath, basePath) {\n\tif (warnedNonRegularSources.has(absPath)) return;\n\twarnedNonRegularSources.add(absPath);\n\tconst displayPath = basePath ? path.relative(basePath, absPath) || absPath : absPath;\n\tconsole.log(`ℹ️ [varlock] ${displayPath} is not a regular file (FIFO/pipe), live reload is disabled for it`);\n}\nlet loadCount = 0;\nlet activeIntegrationTelemetry = {\n\tname: \"@varlock/vite-integration\",\n\tversion: \"1.5.0\"\n};\n/**\n* Directory the current config was loaded from. Tracked so callers can ask for\n* a specific root and only pay for a reload when it actually differs — the\n* module-level load below uses `process.cwd()`, which is not the project root\n* when a framework CLI is pointed elsewhere (e.g. `nuxt build --cwd ./app`).\n*/\nlet loadedConfigDir;\nfunction reloadConfig(cwd) {\n\tdebug(\"loading config - count =\", ++loadCount, cwd ? `(cwd: ${cwd})` : \"\");\n\tconst prevItemCount = Object.keys(varlockLoadedEnv?.config || {}).length;\n\tloadedConfigDir = path.resolve(cwd ?? process.cwd());\n\ttry {\n\t\tconst { stdout } = execSyncVarlock(\"load --format json-full --compact\", {\n\t\t\tfullResult: true,\n\t\t\tenv: originalProcessEnv,\n\t\t\tintegrationTelemetry: activeIntegrationTelemetry,\n\t\t\t...cwd && { cwd }\n\t\t});\n\t\tprocess.env.__VARLOCK_ENV = stdout;\n\t\tvarlockLoadedEnv = JSON.parse(stdout);\n\t\tvarlockLastError = void 0;\n\t\tlastErrorAt = 0;\n\t\tconfigIsValid = true;\n\t} catch (err) {\n\t\tif (err instanceof VarlockExecError) {\n\t\t\tif (err.stdout) try {\n\t\t\t\tvarlockLoadedEnv = JSON.parse(err.stdout);\n\t\t\t\tprocess.env.__VARLOCK_ENV = err.stdout;\n\t\t\t} catch {}\n\t\t\tif (err.stderr) {\n\t\t\t\tconst now = Date.now();\n\t\t\t\tconst isDuplicate = err.stderr === varlockLastError && now - lastErrorAt < 5e3;\n\t\t\t\tvarlockLastError = err.stderr;\n\t\t\t\tlastErrorAt = now;\n\t\t\t\tif (!isDuplicate) {\n\t\t\t\t\tconsole.error(err.stderr);\n\t\t\t\t\tconsole.error(\"\\n[varlock] ⚠️ config is invalid — fix the error(s) above to continue\\n\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tconfigIsValid = false;\n\t\tresetStaticReplacements();\n\t\treturn;\n\t}\n\tif (cwd && prevItemCount > 0 && Object.keys(varlockLoadedEnv?.config || {}).length === 0) console.warn(`\\x1b[33m[varlock] ⚠️ no env items found when loading from ${cwd}\\x1b[0m\\nThis directory has no \\`.env.schema\\`, so \\`ENV.*\\` references will not be replaced at build time.\nIf your framework points vite's \\`root\\` at a source subdirectory, the integration should pass \\`rootDir\\` to \\`varlockVitePlugin()\\`.`);\n\tif (globalThis.__varlockLoadedEnv) globalThis.__varlockLoadedEnv = varlockLoadedEnv;\n\tinitVarlockEnv();\n\tpatchGlobalConsole();\n\tpatchGlobalServerResponse();\n\tpatchGlobalResponse();\n\tresetStaticReplacements();\n}\nreloadConfig();\n/** options for {@link buildVarlockSsrInitCode} */\n/**\n* The currently loaded env graph, for integrations that need to inspect the\n* config outside vite's hooks (e.g. the Nuxt module checks for public+dynamic\n* items to decide whether to inject the public-env endpoint). Reloads the\n* config first if `rootDir` differs from the directory the module-level load\n* used.\n*/\nfunction getVarlockLoadedEnv(rootDir) {\n\tif (rootDir && path.resolve(rootDir) !== loadedConfigDir) reloadConfig(rootDir);\n\treturn varlockLoadedEnv;\n}\n/**\n* Force a fresh env resolution and refresh the shared runtime store (ENV proxy\n* values, process.env injection, the auto-load global). Used by the Nuxt module\n* on dev restarts: it runs before the new nuxt instance evaluates nuxt.config,\n* so config-time `ENV` reads see fresh values even though the config's cached\n* `varlock/auto-load` import does not re-run.\n*/\nfunction refreshVarlockEnv(rootDir) {\n\treloadConfig(rootDir ?? loadedConfigDir);\n}\n/**\n* Absolute paths of the env files the current config was loaded from, for\n* integrations that manage their own file watching (e.g. the Nuxt module\n* pushes these into `nuxt.options.watch` so a schema edit restarts the dev\n* server). Reloads the config first if `rootDir` differs from the directory\n* the module-level load used. Non-regular files (FIFOs, e.g. 1Password\n* Environments) are excluded since watching them is meaningless.\n*/\nfunction getVarlockEnvSourcePaths(rootDir) {\n\tgetVarlockLoadedEnv(rootDir);\n\tconst paths = [];\n\tif (!varlockLoadedEnv?.basePath) return paths;\n\tfor (const source of varlockLoadedEnv.sources) {\n\t\tif (!source.enabled || !source.path) continue;\n\t\tconst absPath = path.resolve(varlockLoadedEnv.basePath, source.path);\n\t\tif (isExistingNonRegularFile(absPath)) continue;\n\t\tpaths.push(absPath);\n\t}\n\treturn paths;\n}\n/**\n* Builds the varlock init module source — the code that initializes `ENV` and\n* patches the global console/response objects before any user code runs.\n*\n* Exported so integrations can inject the same init sequence into build\n* pipelines that vite does not own. `@varlock/nuxt-integration` uses it for the Nitro\n* server bundle, which rollup builds separately from vite's SSR output.\n*/\nfunction buildVarlockSsrInitCode(opts = {}) {\n\tif (opts.rootDir && path.resolve(opts.rootDir) !== loadedConfigDir) reloadConfig(opts.rootDir);\n\tlet ssrInjectMode = opts.ssrInjectMode ?? \"init-only\";\n\tconst isCloudflareTarget = opts.isCloudflareTarget ?? false;\n\tconst isDev = opts.isDev ?? isDevCommand;\n\tconst isCfPrerenderEnv = isCloudflareTarget && opts.environmentName === \"prerender\" && !isDev;\n\tif (isCfPrerenderEnv) ssrInjectMode = \"resolved-env\";\n\tconst isEdgeRuntime = opts.ssrEdgeRuntime ?? false;\n\tconst lines = [\n\t\t\"// Virtual module generated by @varlock/vite-integration\",\n\t\t\"// Runs before any user code to ensure ENV is available at module top-level\",\n\t\t\"globalThis.__varlockThrowOnMissingKeys = true;\",\n\t\t`globalThis.__varlockPublicDynamicKeys = ${JSON.stringify(publicDynamicKeys)};`\n\t];\n\tconst encryptionRequired = varlockLoadedEnv?.settings?.encryptInjectedEnv;\n\tlet encryptionKey = isCfPrerenderEnv ? void 0 : process.env._VARLOCK_ENV_KEY;\n\tif (ssrInjectMode === \"auto-load\") {\n\t\tif (opts.preserveSideEffectImports) lines.push(\"import * as __varlockAutoLoad from 'varlock/auto-load';\", \"globalThis.__varlockAutoLoadModule = __varlockAutoLoad;\");\n\t\telse lines.push(\"import 'varlock/auto-load';\");\n\t} else {\n\t\tif (ssrInjectMode === \"resolved-env\") {\n\t\t\tif (isCloudflareTarget && !isDev && !isCfPrerenderEnv) throw new Error(\"[varlock] ssrInjectMode: 'resolved-env' is redundant on Cloudflare Workers and ships resolved (possibly sensitive) values into the worker bundle unnecessarily. Cloudflare deploys get their env injected at runtime from bindings via `varlock-wrangler` — remove the `ssrInjectMode` override (or set it to 'init-only') and let the Cloudflare integration handle it.\\nSee https://varlock.dev/integrations/cloudflare/ for details.\");\n\t\t\tif (process.env.VERCEL === \"1\" && !encryptionRequired && !isDev) {\n\t\t\t\tif (!vercelUnencryptedWarningLogged) {\n\t\t\t\t\tvercelUnencryptedWarningLogged = true;\n\t\t\t\t\tconsole.warn(\"\\x1B[33m[varlock] ⚠️ ssrInjectMode: 'resolved-env' on Vercel ships your resolved env as plaintext JSON in the build artifact. Consider enabling `@encryptInjectedEnv` — see https://varlock.dev/guides/encrypted-deployments/\\x1B[0m\");\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (encryptionRequired && !encryptionKey && !isCfPrerenderEnv) {\n\t\t\t\tif (isDev) {\n\t\t\t\t\tencryptionKey = generateEncryptionKeyHex();\n\t\t\t\t\tprocess.env._VARLOCK_ENV_KEY = encryptionKey;\n\t\t\t\t} else throw new Error(\"[varlock] @encryptInjectedEnv is enabled but _VARLOCK_ENV_KEY is not set.\\nGenerate a key with `varlock generate-key` and set it on your platform.\\nSee https://varlock.dev/guides/encrypted-deployments/ for details.\");\n\t\t\t}\n\t\t\tconst serialized = JSON.stringify(varlockLoadedEnv);\n\t\t\tif (encryptionKey) {\n\t\t\t\tconst encrypted = encryptEnvBlobSync(serialized, encryptionKey);\n\t\t\t\tlines.push(`globalThis.__varlockEncryptedEnv = ${JSON.stringify(encrypted)};`);\n\t\t\t} else lines.push(`globalThis.__varlockLoadedEnv = ${JSON.stringify(varlockLoadedEnv)};`);\n\t\t}\n\t\tif (opts.ssrEntryCode?.length && !isCfPrerenderEnv) lines.push(...opts.ssrEntryCode);\n\t\tlines.push(\"import { initVarlockEnv } from 'varlock/env';\", \"import { patchGlobalConsole } from 'varlock/patch-console';\", \"import { patchGlobalResponse } from 'varlock/patch-response';\");\n\t\tlines.push(\"import { decryptEnvBlobSync } from 'varlock/encrypt-env';\", \"if (globalThis.__varlockEncryptedEnv) {\", \" const __key = typeof process !== 'undefined' && process.env._VARLOCK_ENV_KEY;\", \" if (!__key) throw new Error('[varlock] encrypted env blob present but _VARLOCK_ENV_KEY is not set');\", \" globalThis.__varlockLoadedEnv = JSON.parse(decryptEnvBlobSync(globalThis.__varlockEncryptedEnv, __key));\", \" delete globalThis.__varlockEncryptedEnv;\", \"}\");\n\t\tif (!isEdgeRuntime) lines.push(\"import { patchGlobalServerResponse } from 'varlock/patch-server-response';\");\n\t\tlines.push(\"initVarlockEnv();\", \"patchGlobalConsole();\");\n\t\tif (!isEdgeRuntime) lines.push(\"patchGlobalServerResponse();\");\n\t\tlines.push(\"patchGlobalResponse();\");\n\t}\n\treturn lines.join(\"\\n\");\n}\nconst VARLOCK_INIT_MODULE_ID = \"\\0varlock-ssr-init\";\nfunction varlockVitePlugin(vitePluginOptions) {\n\tif (vitePluginOptions?.integrationTelemetry) {\n\t\tconst prevName = activeIntegrationTelemetry.name;\n\t\tactiveIntegrationTelemetry = vitePluginOptions.integrationTelemetry;\n\t\tif (prevName !== activeIntegrationTelemetry.name) reloadConfig(vitePluginOptions.rootDir ?? loadedConfigDir);\n\t}\n\tlet resolvedSsrEdgeRuntime = vitePluginOptions?.ssrEdgeRuntime ?? false;\n\tlet resolvedSsrEntryCode = vitePluginOptions?.ssrEntryCode;\n\tlet resolvedIsCloudflareTarget = vitePluginOptions?.isCloudflareTarget ?? false;\n\tfunction buildInitModuleCode(environmentName) {\n\t\treturn buildVarlockSsrInitCode({\n\t\t\tssrInjectMode: vitePluginOptions?.ssrInjectMode,\n\t\t\tssrEntryCode: resolvedSsrEntryCode,\n\t\t\tssrEdgeRuntime: resolvedSsrEdgeRuntime,\n\t\t\tisCloudflareTarget: resolvedIsCloudflareTarget,\n\t\t\tenvironmentName\n\t\t});\n\t}\n\tasync function detectSvelteKitCloudflareTarget(config) {\n\t\tif (resolvedSsrEntryCode) return;\n\t\tconst sveltekitSetup = config.plugins?.find((p) => p?.api?.options?.kit?.adapter);\n\t\tif (!sveltekitSetup) return;\n\t\tconst adapterName = sveltekitSetup.api.options.kit.adapter?.name;\n\t\tif (!(adapterName === \"@sveltejs/adapter-cloudflare\" || adapterName === \"@sveltejs/adapter-auto\" && !!(process.env.CF_PAGES || process.env.WORKERS_CI))) return;\n\t\ttry {\n\t\t\tconst { CLOUDFLARE_SSR_ENTRY_CODE } = await import(\"@varlock/cloudflare-integration/ssr-entry-code\");\n\t\t\tresolvedSsrEntryCode = [CLOUDFLARE_SSR_ENTRY_CODE];\n\t\t\tresolvedSsrEdgeRuntime = true;\n\t\t\tresolvedIsCloudflareTarget = true;\n\t\t\tdebug(\"detected SvelteKit + Cloudflare adapter — injecting edge env loader\");\n\t\t\tif (!cfDetectNoticeLogged) {\n\t\t\t\tcfDetectNoticeLogged = true;\n\t\t\t\tconsole.log(\"\\x1B[36m🔒 [varlock] detected @sveltejs/adapter-cloudflare — injecting the Cloudflare Workers env loader into the SSR entry\\x1B[0m\");\n\t\t\t}\n\t\t} catch {\n\t\t\tthrow new Error(\"[varlock] SvelteKit deploying to Cloudflare requires @varlock/cloudflare-integration.\\nInstall it alongside @varlock/vite-integration: npm install @varlock/cloudflare-integration\");\n\t\t}\n\t}\n\treturn {\n\t\tname: \"inject-varlock-config\",\n\t\tenforce: \"post\",\n\t\tresolveId(id) {\n\t\t\tif (id === VARLOCK_INIT_MODULE_ID) return id;\n\t\t},\n\t\tload(id) {\n\t\t\tif (id === VARLOCK_INIT_MODULE_ID) return buildInitModuleCode(this.environment?.name);\n\t\t},\n\t\tasync config(config, env) {\n\t\t\tdebug(\"vite plugin - config fn called, loadCount =\", loadCount, \"command =\", env.command);\n\t\t\tif (config.envDir) console.warn(`\n[varlock] ⚠️ The \\`envDir\\` Vite option is not supported by varlock.\nTo load .env files from a custom directory, set \\`varlock.loadPath\\` in your \\`package.json\\`:\n\n {\n \"varlock\": {\n \"loadPath\": \"./your-env-dir/\"\n }\n }\n\nSee https://varlock.dev/integrations/vite/ for more details.\n`);\n\t\t\tisDevCommand = env.command === \"serve\";\n\t\t\tif (env.command === \"build\") process.env.__VARLOCK_EXECUTION_PHASE = \"build\";\n\t\t\telse delete process.env.__VARLOCK_EXECUTION_PHASE;\n\t\t\tconst rootDirSource = vitePluginOptions?.rootDir ?? config.root;\n\t\t\tconst projectRoot = rootDirSource ? path.resolve(rootDirSource) : void 0;\n\t\t\tif (!!(projectRoot && projectRoot !== loadedConfigDir)) reloadConfig(projectRoot);\n\t\t\telse if (!configHookCalled) configHookCalled = true;\n\t\t\telse if (isDevCommand) reloadConfig(projectRoot ?? loadedConfigDir);\n\t\t\tconst hasCfPlugin = config.plugins?.flat().some((p) => p?.name?.includes(\"cloudflare\"));\n\t\t\tif (!configIsValid) {\n\t\t\t\tif (isDevCommand) config.clearScreen = false;\n\t\t\t\telse {\n\t\t\t\t\tconsole.error(\"\\n[varlock] config is invalid — cannot proceed with build\\n\");\n\t\t\t\t\tprocess.exit(1);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!hasCfPlugin) return { build: { rollupOptions: { external: [\"cloudflare:workers\"] } } };\n\t\t},\n\t\tasync configResolved(config) {\n\t\t\tdebug(\"vite plugin - configResolved fn called\");\n\t\t\tawait detectSvelteKitCloudflareTarget(config);\n\t\t\tif (!varlockLoadedEnv) return;\n\t\t\tfor (const varlockSource of varlockLoadedEnv.sources) {\n\t\t\t\tif (!varlockSource.enabled) continue;\n\t\t\t\tif (varlockLoadedEnv.basePath && varlockSource.path) {\n\t\t\t\t\tconst absPath = path.resolve(varlockLoadedEnv.basePath, varlockSource.path);\n\t\t\t\t\tif (isExistingNonRegularFile(absPath)) {\n\t\t\t\t\t\twarnNonRegularSourceOnce(absPath, varlockLoadedEnv.basePath);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tconfig.configFileDependencies.push(absPath);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tasync configureServer(server) {\n\t\t\tdebug(\"vite plugin - configureServer fn called\");\n\t\t\tserver.middlewares.use((req, res, next) => {\n\t\t\t\tif (configIsValid) return next();\n\t\t\t\tif (req.url?.startsWith(\"/@\")) return next();\n\t\t\t\tres.statusCode = 500;\n\t\t\t\tres.setHeader(\"Content-Type\", \"text/html; charset=utf-8\");\n\t\t\t\tres.end(buildErrorPageHtml(varlockLastError));\n\t\t\t});\n\t\t},\n\t\ttransform(code, id, options) {\n\t\t\tlet magicString = replacerFn(this, code, id);\n\t\t\tconst isDevEnv = this.environment ? this.environment.mode === \"dev\" : isDevCommand;\n\t\t\tconst fileExt = id.split(\"?\")[0].split(\"#\")[0].split(\".\").pop() || \"\";\n\t\t\tlet isEntry = false;\n\t\t\tif (SUPPORTED_FILES.includes(fileExt)) {\n\t\t\t\ttry {\n\t\t\t\t\tif (this.getModuleInfo(id)?.isEntry) isEntry = true;\n\t\t\t\t} catch {}\n\t\t\t\tif (!isEntry && isDevEnv) {\n\t\t\t\t\tif (Array.from(this.getModuleIds())[0] === id) isEntry = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (vitePluginOptions?.ssrEntryModuleIds?.includes(id)) isEntry = true;\n\t\t\tif (isEntry) {\n\t\t\t\tdebug(`detected entry: ${id}`);\n\t\t\t\tconst injectCode = [\"// INJECTED BY @varlock/vite-integration ----\"];\n\t\t\t\tif (options?.ssr) injectCode.push(`import '${VARLOCK_INIT_MODULE_ID}';`);\n\t\t\t\telse {\n\t\t\t\t\tinjectCode.push(\"globalThis.__varlockThrowOnMissingKeys = true;\");\n\t\t\t\t\tif (isDevEnv) injectCode.push(`globalThis.__varlockValidKeys = ${JSON.stringify(Object.keys(varlockLoadedEnv?.config || {}))};`);\n\t\t\t\t\tinjectCode.push(`globalThis.__varlockPublicDynamicKeys = ${JSON.stringify(publicDynamicKeys)};`);\n\t\t\t\t}\n\t\t\t\tinjectCode.push(\"// -------- \");\n\t\t\t\tmagicString ||= new MagicString(code);\n\t\t\t\tmagicString.prepend(`${injectCode.join(\"\\n\")}\\n`);\n\t\t\t}\n\t\t\tif (!magicString) return null;\n\t\t\treturn {\n\t\t\t\tcode: magicString.toString(),\n\t\t\t\tmap: magicString.generateMap({\n\t\t\t\t\tsource: code,\n\t\t\t\t\tincludeContent: true,\n\t\t\t\t\thires: true\n\t\t\t\t})\n\t\t\t};\n\t\t},\n\t\trenderChunk(code, chunk) {\n\t\t\tconst magicString = replacerFn(this, code, chunk.fileName);\n\t\t\tif (!magicString) return null;\n\t\t\treturn {\n\t\t\t\tcode: magicString.toString(),\n\t\t\t\tmap: magicString.generateMap({\n\t\t\t\t\tsource: code,\n\t\t\t\t\tincludeContent: true,\n\t\t\t\t\thires: true\n\t\t\t\t})\n\t\t\t};\n\t\t},\n\t\ttransformIndexHtml(html) {\n\t\t\tdebug(\"transformIndexHtml called, configIsValid =\", configIsValid);\n\t\t\tif (!configIsValid) return buildErrorPageHtml(varlockLastError);\n\t\t\t//! Note on vite's built-in html constant replacement\n\t\t\treturn html.replace(/%ENV\\.([a-zA-Z_][a-zA-Z0-9._]*)%/g, (_fullMatch, itemKey) => {\n\t\t\t\tif (!varlockLoadedEnv.config[itemKey]) throw new Error(`Config item \\`${itemKey}\\` does not exist`);\n\t\t\t\telse if (varlockLoadedEnv.config[itemKey].isSensitive) throw new Error(`Config item \\`${itemKey}\\` is sensitive and cannot be used in html replacements`);\n\t\t\t\telse if (varlockLoadedEnv.config[itemKey].isDynamic) throw new Error(`Config item \\`${itemKey}\\` is dynamic (runtime-resolved) and cannot be used in html replacements`);\n\t\t\t\telse return varlockLoadedEnv.config[itemKey].value ?? \"\";\n\t\t\t});\n\t\t}\n\t};\n}\n//#endregion\nexport { ansiToHtml, buildErrorPageHtml, buildVarlockSsrInitCode, getVarlockEnvSourcePaths, getVarlockLoadedEnv, refreshVarlockEnv, varlockLastError, varlockLoadedEnv, varlockVitePlugin };\n\n//# sourceMappingURL=index.mjs.map","import fs from 'node:fs';\nimport { fileURLToPath } from 'node:url';\nimport { createDebug, type SerializedEnvGraph } from 'varlock';\nimport { execSyncVarlock } from 'varlock/exec-sync-varlock';\nimport { scanForLeaks, varlockSettings } from 'varlock/env';\nimport { varlockVitePlugin, type VarlockVitePluginOptions } from '@varlock/vite-integration';\nimport type { AstroIntegration } from 'astro';\n\nconst debug = createDebug('varlock:astro-integration');\nconst DEFAULT_PUBLIC_DYNAMIC_ENDPOINT = '/__varlock/public-env';\n// resolved against the built sibling in dist/, so the emitted extension has to match\nconst PUBLIC_DYNAMIC_ROUTE_ENTRYPOINT = fileURLToPath(\n new URL('./public-dynamic-env-route.mjs', import.meta.url),\n);\n\ndebug('Loaded varlock astro integration file');\n\ninterface VarlockAstroPublicDynamicEndpointOptions {\n /** Route path for public dynamic values */\n path?: string,\n}\n\nexport interface VarlockAstroIntegrationOptions extends VarlockVitePluginOptions {\n /**\n * Inject a route that returns `getPublicDynamicEnv()`.\n * - `undefined`: auto (enabled only when dynamic+public config exists)\n * - `true`: always enabled at `DEFAULT_PUBLIC_DYNAMIC_ENDPOINT`\n * - `false`: disabled\n * - object: enabled with custom options\n */\n publicDynamicEndpoint?: boolean | VarlockAstroPublicDynamicEndpointOptions,\n}\n\nfunction hasPublicDynamicConfigInSchema(cwd?: string): boolean {\n try {\n const { stdout } = execSyncVarlock('load --format json-full --compact', {\n fullResult: true,\n ...(cwd && { cwd }),\n });\n const loadedEnv = JSON.parse(stdout) as SerializedEnvGraph;\n return Object.values(loadedEnv.config || {}).some(\n (itemInfo) => (itemInfo.isDynamic ?? itemInfo.isSensitive) && !itemInfo.isSensitive,\n );\n } catch (err) {\n debug('Failed to auto-detect public+dynamic config, skipping endpoint injection', err);\n // Fail closed in auto mode - if the schema fails to load, the build will\n // surface a proper error anyway; injecting a route into a broken config\n // just muddies the failure. Users can force it with publicDynamicEndpoint=true.\n return false;\n }\n}\n\nfunction shouldInjectPublicDynamicEndpoint(\n option: VarlockAstroIntegrationOptions['publicDynamicEndpoint'],\n cwd?: string,\n): boolean {\n if (option === false) return false;\n if (option === true || typeof option === 'object') return true;\n // Auto mode: only inject when public+dynamic keys exist.\n return hasPublicDynamicConfigInSchema(cwd);\n}\n\nfunction resolvePublicDynamicEndpointPath(\n option: VarlockAstroIntegrationOptions['publicDynamicEndpoint'],\n cwd?: string,\n): string | null {\n if (!shouldInjectPublicDynamicEndpoint(option, cwd)) return null;\n const configuredPath = (typeof option === 'object' && option.path) || DEFAULT_PUBLIC_DYNAMIC_ENDPOINT;\n if (!configuredPath.startsWith('/')) {\n throw new Error('[varlock] `publicDynamicEndpoint.path` must start with \"/\"');\n }\n return configuredPath;\n}\n\nfunction varlockAstroIntegration(\n integrationOptions?: VarlockAstroIntegrationOptions,\n): AstroIntegration {\n const { publicDynamicEndpoint } = integrationOptions ?? {};\n\n // captured in astro:config:setup (the only hook that exposes it) and read\n // in astro:config:done, which is where we know the adapter\n let command: 'dev' | 'build' | 'preview' | 'sync' = 'build';\n\n return {\n name: 'varlock-astro-integration',\n hooks: {\n 'astro:config:setup': (opts) => {\n command = opts.command;\n\n const routePath = resolvePublicDynamicEndpointPath(publicDynamicEndpoint, fileURLToPath(opts.config.root));\n if (!routePath) return;\n\n // In auto mode, skip injection for static build output: a non-prerendered\n // route requires an adapter, and the adapter isn't registered yet in this\n // hook so we can't check for one. We still inject during `astro dev` so\n // local development stays consistent. Astro 5 static-output apps WITH an\n // adapter can serve server routes - those users should opt in explicitly\n // (publicDynamicEndpoint=true or an options object), which always injects.\n const explicitlyEnabled = publicDynamicEndpoint === true || typeof publicDynamicEndpoint === 'object';\n if (!explicitlyEnabled && opts.command === 'build' && opts.config.output !== 'server') {\n debug(\n `Skipping \"${routePath}\" injection for static build output. Set output=\"server\" or pass publicDynamicEndpoint=true (requires an adapter) to enable the public dynamic env route.`,\n );\n return;\n }\n\n opts.injectRoute({\n pattern: routePath,\n entrypoint: PUBLIC_DYNAMIC_ROUTE_ENTRYPOINT,\n prerender: false,\n });\n },\n\n // docs say to use astro:config:setup hook to adjust vite config\n // but we wait to until here because we don't know the adapter yet\n // and we want to use that to infer ssrInjectMode\n 'astro:config:done': async (opts) => {\n const adapterName = opts.config.adapter?.name;\n\n let ssrInjectMode = integrationOptions?.ssrInjectMode;\n // strip our own astro-only option before passing the rest to the vite plugin\n const { publicDynamicEndpoint: _publicDynamicEndpoint, ...vitePluginBaseOptions } = integrationOptions ?? {};\n let vitePluginOptions: Parameters<typeof varlockVitePlugin>[0] = {\n ...vitePluginBaseOptions,\n };\n\n if (['@astrojs/netlify', '@astrojs/vercel'].includes(adapterName || '')) {\n ssrInjectMode ??= 'resolved-env';\n } else if (adapterName === '@astrojs/node') {\n ssrInjectMode ??= 'auto-load';\n }\n\n if (adapterName === '@astrojs/cloudflare') {\n // @astrojs/cloudflare runs SSR in workerd via @cloudflare/vite-plugin.\n // Inject varlock init into the CF worker entry and load env from bindings\n // at runtime in production (via varlock-wrangler deploy) — so we\n // deliberately don't default ssrInjectMode to 'resolved-env' for builds,\n // since the runtime loader below already hydrates env from Cloudflare\n // bindings and baking would just ship secrets in the worker artifact\n // that are never read.\n // In `astro dev`, though, @astrojs/cloudflare owns its own\n // @cloudflare/vite-plugin instance with no binding-injection hook for\n // varlock to use (that only exists inside `varlockCloudflareVitePlugin`,\n // which Astro doesn't use) — resolved-env is the only way to get real\n // values into the dev worker, so default to it there.\n if (command === 'dev') ssrInjectMode ??= 'resolved-env';\n\n let cloudflareSsrEntryCode: string;\n let logVarlockEnvInjectionNotice: () => void;\n try {\n const cfIntegration = await import('@varlock/cloudflare-integration/ssr-entry-code');\n ({ CLOUDFLARE_SSR_ENTRY_CODE: cloudflareSsrEntryCode, logVarlockEnvInjectionNotice } = cfIntegration);\n // @astrojs/cloudflare uses @cloudflare/vite-plugin, which otherwise\n // auto-loads .env and logs \"Using secrets defined in .env\" — opt out\n // so varlock is the only source of env for the worker.\n cfIntegration.disableWranglerDotEnvAutoload();\n } catch {\n throw new Error(\n '[varlock] Using @astrojs/cloudflare requires @varlock/cloudflare-integration.\\n'\n + 'Install it alongside @varlock/astro-integration: npm install @varlock/cloudflare-integration',\n );\n }\n\n vitePluginOptions = {\n ...vitePluginOptions,\n ssrInjectMode,\n ssrEdgeRuntime: vitePluginOptions.ssrEdgeRuntime ?? true,\n ssrEntryModuleIds: [\n ...(vitePluginOptions.ssrEntryModuleIds ?? []),\n '\\0virtual:cloudflare/worker-entry',\n ],\n ssrEntryCode: vitePluginOptions.ssrEntryCode ?? [cloudflareSsrEntryCode],\n isCloudflareTarget: true,\n };\n\n // Print a varlock notice at server start, in place of wrangler's\n // suppressed \"Using secrets defined in .env\" message.\n opts.config.vite.plugins ||= [];\n opts.config.vite.plugins.push({\n name: 'varlock-cloudflare-env-notice',\n configureServer() { logVarlockEnvInjectionNotice(); },\n configurePreviewServer() { logVarlockEnvInjectionNotice(); },\n } as any);\n } else {\n vitePluginOptions = { ...vitePluginOptions, ssrInjectMode };\n }\n\n opts.config.vite.plugins ||= [];\n opts.config.vite?.plugins?.push(\n varlockVitePlugin({\n ...vitePluginOptions,\n integrationTelemetry: integrationOptions?.integrationTelemetry ?? {\n name: __VARLOCK_INTEGRATION_NAME__,\n version: __VARLOCK_INTEGRATION_VERSION__,\n },\n }) as any,\n );\n },\n\n // Scan generated static HTML files for leaked secrets after build.\n // SSR responses are already protected by the Vite plugin's\n // patchGlobalServerResponse(), but static output written to disk\n // needs explicit scanning.\n 'astro:build:done': async ({ dir }) => {\n if (varlockSettings.preventLeaks === false) return;\n\n const outDir = fileURLToPath(dir);\n debug('scanning build output for leaks in', outDir);\n\n const leakedFiles: Array<string> = [];\n for await (const file of fs.promises.glob(`${outDir}/**/*.html`)) {\n const fileContents = await fs.promises.readFile(file, 'utf8');\n try {\n scanForLeaks(fileContents, { method: 'astro post-build scan', file });\n } catch (_err) {\n leakedFiles.push(file);\n }\n }\n\n if (leakedFiles.length > 0) {\n throw new Error(\n `Build aborted: ${leakedFiles.length} file(s) contain leaked sensitive config`,\n );\n }\n },\n },\n };\n}\n\nexport default varlockAstroIntegration;\n"],"mappings":"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"}