UNPKG

zephyr-agent

Version:
213 lines (212 loc) • 9.14 kB
"use strict"; var __webpack_modules__ = { crypto (module) { module.exports = require("crypto"); } }; var __webpack_module_cache__ = {}; function __webpack_require__(moduleId) { var cachedModule = __webpack_module_cache__[moduleId]; if (void 0 !== cachedModule) return cachedModule.exports; var module = __webpack_module_cache__[moduleId] = { exports: {} }; __webpack_modules__[moduleId](module, module.exports, __webpack_require__); return module.exports; } (()=>{ __webpack_require__.d = (exports1, getters, values)=>{ var define = (defs, kind)=>{ for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, { enumerable: true, [kind]: defs[key] }); }; define(getters, "get"); define(values, "value"); }; })(); (()=>{ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop); })(); (()=>{ __webpack_require__.r = (exports1)=>{ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, { value: 'Module' }); Object.defineProperty(exports1, '__esModule', { value: true }); }; })(); var __webpack_exports__ = {}; (()=>{ __webpack_require__.r(__webpack_exports__); const VIRTUAL_SPECIFIER = 'env:vars'; const ZE_REGEX_SIMPLE = /\bprocess\.env\.(ZE_PUBLIC_[A-Z0-9_]+)/g; const ZE_REGEX_QUOTED = /\bprocess\.env\[["'`](ZE_PUBLIC_[A-Z0-9_]+)["'`]\]/g; const ZE_REGEX_IMPORT_META_SIMPLE = /\bimport\.meta\.env\.(ZE_PUBLIC_[A-Z0-9_]+)/g; const ZE_REGEX_IMPORT_META_QUOTED = /\bimport\.meta\.env\[["'`](ZE_PUBLIC_[A-Z0-9_]+)["'`]\]/g; const ZE_DESTRUCT_DECL = /(const|let|var)\s*\{([^}]+)\}\s*=\s*(process\.env|import\.meta\.env)/g; const ZE_DESTRUCT_ASSIGN = /\{([^}]+)\}\s*=\s*(process\.env|import\.meta\.env)/g; function extractDestructuredKeys(raw) { return raw.split(',').map((s)=>s.trim()).filter(Boolean).map((frag)=>{ const colonIdx = frag.indexOf(':'); const eqIdx = frag.indexOf('='); let base = frag; if (-1 !== colonIdx) base = frag.slice(0, colonIdx).trim(); else if (-1 !== eqIdx) base = frag.slice(0, eqIdx).trim(); return base; }); } function detectEnvReads(source) { const names = new Set(); const regs = [ ZE_REGEX_SIMPLE, ZE_REGEX_QUOTED, ZE_REGEX_IMPORT_META_SIMPLE, ZE_REGEX_IMPORT_META_QUOTED ]; for (const r of regs)source.replace(r, (_m, name)=>{ names.add(String(name)); return _m; }); source.replace(ZE_DESTRUCT_DECL, (_m, _decl, inner)=>{ for (const k of extractDestructuredKeys(String(inner)))if (k.startsWith('ZE_PUBLIC_')) names.add(k); return _m; }); source.replace(ZE_DESTRUCT_ASSIGN, (_m, inner)=>{ for (const k of extractDestructuredKeys(String(inner)))if (k.startsWith('ZE_PUBLIC_')) names.add(k); return _m; }); return names; } function rewriteEnvReadsToVirtualModule(source, specifier = VIRTUAL_SPECIFIER) { const used = detectEnvReads(source); if (0 === used.size) return { code: source, used }; let code = source.replace(ZE_REGEX_SIMPLE, (_m, name)=>`__ZE_MANIFEST__.zeVars.${name}`).replace(ZE_REGEX_QUOTED, (_m, name)=>`__ZE_MANIFEST__.zeVars.${name}`).replace(ZE_REGEX_IMPORT_META_SIMPLE, (_m, name)=>`__ZE_MANIFEST__.zeVars.${name}`).replace(ZE_REGEX_IMPORT_META_QUOTED, (_m, name)=>`__ZE_MANIFEST__.zeVars.${name}`); code = code.replace(ZE_DESTRUCT_DECL, (m, decl, inner)=>{ const keys = extractDestructuredKeys(String(inner)); if (!keys.some((k)=>k.startsWith('ZE_PUBLIC_'))) return m; return `${decl} {${inner}} = __ZE_MANIFEST__.zeVars`; }); code = code.replace(ZE_DESTRUCT_ASSIGN, (m, inner)=>{ const keys = extractDestructuredKeys(String(inner)); if (!keys.some((k)=>k.startsWith('ZE_PUBLIC_'))) return m; return `{${inner}} = __ZE_MANIFEST__.zeVars`; }); const escaped = specifier.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); const importRe = new RegExp(`from\\s+['"]${escaped}['"];?|require\\(['"]${escaped}['"]\\)`, 'm'); if (!importRe.test(code)) code = `import __ZE_MANIFEST__ from '${specifier}' with { type: 'json' };\n` + code; return { code, used }; } function buildImportMap(specifier, url) { return JSON.stringify({ imports: { [specifier]: url } }, null, 0); } function injectImportMap(html, importMapJson, opts) { const scriptTag = `<script type="importmap">${importMapJson}</script>`; if (html.includes(scriptTag)) return html; const injectTo = opts?.injectTo ?? 'head-prepend'; if ('body' === injectTo) return html.replace('</body>', `${scriptTag}</body>`); return html.replace('</head>', `${scriptTag}</head>`); } function buildModulePreload(url) { return `<link rel="modulepreload" href="${url}">`; } function injectBeforeHeadClose(html, snippet) { if (html.includes(snippet)) return html; return html.replace('</head>', `${snippet}</head>`); } function buildEnvJsonAsset(env) { const safe = {}; for (const [k, v] of Object.entries(env))if (k.startsWith('ZE_PUBLIC_')) { if ('string' == typeof v) safe[k] = v; } const source = JSON.stringify(safe); let h = 5381; for(let i = 0; i < source.length; i++)h = (h << 5) + h ^ source.charCodeAt(i); const short = (h >>> 0).toString(36); return { fileName: `ze-env.${short}.json`, source }; } function generateManifestContent(envVars, dependencies = {}) { const publicVars = {}; for (const [key, value] of Object.entries(envVars))if (key.startsWith('ZE_PUBLIC_')) publicVars[key] = value; const manifest = { version: '1.0.0', timestamp: new Date().toISOString(), dependencies: dependencies, zeVars: publicVars }; return JSON.stringify(manifest, null, 2); } function calculateManifestHash(content) { try { const crypto = __webpack_require__("crypto"); return crypto.createHash('sha256').update(content).digest('hex'); } catch { let h = 5381; for(let i = 0; i < content.length; i++)h = (h << 5) + h ^ content.charCodeAt(i); return (h >>> 0).toString(36); } } function collectZEPublicVars(env) { const vars = {}; for (const [key, value] of Object.entries(env))if (key.startsWith('ZE_PUBLIC_') && 'string' == typeof value) vars[key] = value; return vars; } __webpack_require__.d(__webpack_exports__, { buildEnvJsonAsset: ()=>buildEnvJsonAsset, buildImportMap: ()=>buildImportMap, buildModulePreload: ()=>buildModulePreload, calculateManifestHash: ()=>calculateManifestHash, collectZEPublicVars: ()=>collectZEPublicVars, detectEnvReads: ()=>detectEnvReads, generateManifestContent: ()=>generateManifestContent, injectBeforeHeadClose: ()=>injectBeforeHeadClose, injectImportMap: ()=>injectImportMap, rewriteEnvReadsToVirtualModule: ()=>rewriteEnvReadsToVirtualModule }, { VIRTUAL_SPECIFIER: VIRTUAL_SPECIFIER }); })(); exports.VIRTUAL_SPECIFIER = __webpack_exports__.VIRTUAL_SPECIFIER; exports.buildEnvJsonAsset = __webpack_exports__.buildEnvJsonAsset; exports.buildImportMap = __webpack_exports__.buildImportMap; exports.buildModulePreload = __webpack_exports__.buildModulePreload; exports.calculateManifestHash = __webpack_exports__.calculateManifestHash; exports.collectZEPublicVars = __webpack_exports__.collectZEPublicVars; exports.detectEnvReads = __webpack_exports__.detectEnvReads; exports.generateManifestContent = __webpack_exports__.generateManifestContent; exports.injectBeforeHeadClose = __webpack_exports__.injectBeforeHeadClose; exports.injectImportMap = __webpack_exports__.injectImportMap; exports.rewriteEnvReadsToVirtualModule = __webpack_exports__.rewriteEnvReadsToVirtualModule; for(var __rspack_i in __webpack_exports__)if (-1 === [ "VIRTUAL_SPECIFIER", "buildEnvJsonAsset", "buildImportMap", "buildModulePreload", "calculateManifestHash", "collectZEPublicVars", "detectEnvReads", "generateManifestContent", "injectBeforeHeadClose", "injectImportMap", "rewriteEnvReadsToVirtualModule" ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i]; Object.defineProperty(exports, '__esModule', { value: true }); //# sourceMappingURL=env-var-rewrites.js.map