zephyr-agent
Version:
Zephyr plugin agent
213 lines (212 loc) • 9.14 kB
JavaScript
;
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