@openelement/adapter-vite 0.41.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +87 -0
- package/package.json +87 -0
- package/src/alias-utils.js +39 -0
- package/src/build-context.d.ts +111 -0
- package/src/build-context.js +184 -0
- package/src/build-manifest.d.ts +38 -0
- package/src/build-manifest.js +198 -0
- package/src/build.js +97 -0
- package/src/cli/build-client.d.ts +3 -0
- package/src/cli/build-client.js +292 -0
- package/src/cli/build-ssg.d.ts +40 -0
- package/src/cli/build-ssg.js +377 -0
- package/src/cli/build.d.ts +0 -0
- package/src/cli/build.js +27 -0
- package/src/cli/ssg-render.js +32 -0
- package/src/generated-data-resolver.d.ts +12 -0
- package/src/generated-data-resolver.js +52 -0
- package/src/head-injection.d.ts +31 -0
- package/src/head-injection.js +248 -0
- package/src/index.d.ts +58 -0
- package/src/index.js +52 -0
- package/src/island-transform.js +27 -0
- package/src/nitro-mount.d.ts +24 -0
- package/src/nitro-mount.js +27 -0
- package/src/plugin-mdx.d.ts +7 -0
- package/src/plugin-mdx.js +15 -0
- package/src/plugin.d.ts +22 -0
- package/src/plugin.js +264 -0
- package/src/ssg-package-resolver.js +256 -0
- package/src/subpath-resolver.d.ts +26 -0
- package/src/subpath-resolver.js +153 -0
- package/src/workspace-alias.js +113 -0
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extracted from index.ts in v0.22 (SOP-004: adapter-vite decomposition).
|
|
3
|
+
*
|
|
4
|
+
* When @openelement/core is loaded from JSR (https:// import.meta.url),
|
|
5
|
+
* Vite's SSR runner cannot load https:// URLs via Node.js ESM loader.
|
|
6
|
+
* This module intercepts @openelement/core/* imports and loads source code
|
|
7
|
+
* through virtual modules, bypassing Node.js ESM loader entirely.
|
|
8
|
+
*
|
|
9
|
+
* ADR 0018 Phase 0: buildCoreSubpathAliases() DELETED.
|
|
10
|
+
* Local mode now relies on @deno/vite-plugin for bare specifier resolution.
|
|
11
|
+
* Remote JSR resolution (createCoreResolvePlugin) is retained because
|
|
12
|
+
* JSR packages are not in node_modules and require virtual module loading.
|
|
13
|
+
*/ import { formatError, OpenElementError } from '@openelement/core/errors';
|
|
14
|
+
/** Virtual module ID prefix for JSR remote resolution */ export const VIRTUAL_CORE_PREFIX = '\0openelement:core/src/';
|
|
15
|
+
/**
|
|
16
|
+
* Mapping of @openelement/core/* subpath specifiers to source files
|
|
17
|
+
* (used by JSR remote resolution only).
|
|
18
|
+
*/ export const CORE_SUBPATHS = {
|
|
19
|
+
logger: 'logger.ts',
|
|
20
|
+
'build-context': 'build-context.ts',
|
|
21
|
+
navigation: 'navigation.ts',
|
|
22
|
+
errors: 'errors.ts'
|
|
23
|
+
};
|
|
24
|
+
// M-08 fix: Add max size limit to prevent unbounded memory growth in long dev sessions
|
|
25
|
+
const JSR_CACHE_MAX = 100;
|
|
26
|
+
const jsrSourceCache = new Map();
|
|
27
|
+
function cacheGet(key) {
|
|
28
|
+
return jsrSourceCache.get(key);
|
|
29
|
+
}
|
|
30
|
+
function cacheSet(key, value) {
|
|
31
|
+
if (jsrSourceCache.size >= JSR_CACHE_MAX) {
|
|
32
|
+
// Evict oldest entry
|
|
33
|
+
const firstKey = jsrSourceCache.keys().next().value;
|
|
34
|
+
if (firstKey !== undefined) jsrSourceCache.delete(firstKey);
|
|
35
|
+
}
|
|
36
|
+
jsrSourceCache.set(key, value);
|
|
37
|
+
}
|
|
38
|
+
const OPENELEMENT_PACKAGE_SRC_BASE_RE = /\/@openelement\/([^/]+)\/([^/]+)\/src\/.*$/;
|
|
39
|
+
/**
|
|
40
|
+
* Extract the JSR package source base URL from import.meta.url.
|
|
41
|
+
* Handles both standard JSR paths and edge cases where the version
|
|
42
|
+
* segment differs from expectations.
|
|
43
|
+
*/ function getOpenPackageSrcBase(metaUrl, packageName) {
|
|
44
|
+
const match = metaUrl.match(OPENELEMENT_PACKAGE_SRC_BASE_RE);
|
|
45
|
+
if (match) {
|
|
46
|
+
return metaUrl.replace(OPENELEMENT_PACKAGE_SRC_BASE_RE, `/@openelement/${packageName}/${match[2]}/src/`);
|
|
47
|
+
}
|
|
48
|
+
return metaUrl.replace(/\/@openelement\/[^/]+@([^/]+)\/src\/.*$/, `/@openelement/${packageName}/$1/src/`).replace(/\/src\/.*$/, '/src/');
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Create the core subpath resolution plugin for JSR remote execution.
|
|
52
|
+
*
|
|
53
|
+
* When @openelement/core is loaded from JSR (https:// import.meta.url),
|
|
54
|
+
* Vite's SSR runner cannot load https:// URLs via Node.js ESM loader.
|
|
55
|
+
* This plugin intercepts @openelement/core/* imports and loads source code
|
|
56
|
+
* through virtual modules, bypassing Node.js ESM loader entirely.
|
|
57
|
+
*/ export function createCoreResolvePlugin(metaUrl) {
|
|
58
|
+
const isRemote = metaUrl.startsWith('https://') || metaUrl.startsWith('http://');
|
|
59
|
+
// Compute JSR base URL for source fetching.
|
|
60
|
+
let jsrSrcBase = '';
|
|
61
|
+
if (isRemote) {
|
|
62
|
+
jsrSrcBase = getOpenPackageSrcBase(metaUrl, 'core');
|
|
63
|
+
}
|
|
64
|
+
return {
|
|
65
|
+
name: 'open:core-resolve',
|
|
66
|
+
enforce: 'pre',
|
|
67
|
+
resolveId (source, importer, options) {
|
|
68
|
+
if (!isRemote) return;
|
|
69
|
+
// Case 1: Bare specifier @openelement/core or @openelement/core/*
|
|
70
|
+
if (source === '@openelement/core' || source.startsWith('@openelement/core/')) {
|
|
71
|
+
const subpath = source === '@openelement/core' ? 'index.ts' : CORE_SUBPATHS[source.slice('@openelement/core/'.length)] || `${source.slice('@openelement/core/'.length)}.ts`;
|
|
72
|
+
return `${VIRTUAL_CORE_PREFIX}${subpath}`;
|
|
73
|
+
}
|
|
74
|
+
// Case 2: Relative imports from within our virtual modules
|
|
75
|
+
if (importer?.startsWith(VIRTUAL_CORE_PREFIX) && source.startsWith('./')) {
|
|
76
|
+
const importerDir = importer.replace(/[/\\][^/\\]+$/, '');
|
|
77
|
+
return `${importerDir}/${source.slice(2)}`;
|
|
78
|
+
}
|
|
79
|
+
// Case 3: Third-party bare specifiers from virtual modules
|
|
80
|
+
if (importer?.startsWith(VIRTUAL_CORE_PREFIX) && !source.startsWith('/') && !source.startsWith('.') && !source.startsWith('\0')) {
|
|
81
|
+
return this.resolve(source, undefined, {
|
|
82
|
+
...options,
|
|
83
|
+
skipSelf: true
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
// Case 4: Already-resolved virtual IDs (re-resolve safeguard)
|
|
87
|
+
if (source.startsWith(VIRTUAL_CORE_PREFIX)) {
|
|
88
|
+
return source;
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
async load (id) {
|
|
92
|
+
if (!isRemote) return;
|
|
93
|
+
if (!id.startsWith(VIRTUAL_CORE_PREFIX)) return;
|
|
94
|
+
// Check cache
|
|
95
|
+
if (jsrSourceCache.has(id)) return cacheGet(id);
|
|
96
|
+
// Normalize .js -> .ts (Deno convention: imports use .js, files are .ts)
|
|
97
|
+
let filePath = id.slice(VIRTUAL_CORE_PREFIX.length);
|
|
98
|
+
if (filePath.endsWith('.js') && !filePath.endsWith('.ts')) {
|
|
99
|
+
filePath = filePath.slice(0, -3) + '.ts';
|
|
100
|
+
}
|
|
101
|
+
// Fetch TypeScript source from JSR
|
|
102
|
+
const url = `${jsrSrcBase}${filePath}`;
|
|
103
|
+
let tsCode;
|
|
104
|
+
// M-09 fix: Add 30s timeout for JSR fetches to prevent hanging builds
|
|
105
|
+
const controller = new AbortController();
|
|
106
|
+
const timeoutId = setTimeout(()=>controller.abort(), 30_000);
|
|
107
|
+
try {
|
|
108
|
+
const resp = await fetch(url, {
|
|
109
|
+
signal: controller.signal
|
|
110
|
+
});
|
|
111
|
+
if (!resp.ok) {
|
|
112
|
+
throw new Error(`[open:core-resolve] Failed to fetch ${url}: HTTP ${resp.status}`);
|
|
113
|
+
}
|
|
114
|
+
tsCode = await resp.text();
|
|
115
|
+
clearTimeout(timeoutId);
|
|
116
|
+
} catch (err) {
|
|
117
|
+
clearTimeout(timeoutId);
|
|
118
|
+
throw new OpenElementError(`Failed to load @openelement/core module from JSR: ${filePath}. ` + `URL: ${url}. Error: ${formatError(err)}`, {
|
|
119
|
+
code: 'JSR_FETCH_ERROR',
|
|
120
|
+
statusCode: 500,
|
|
121
|
+
recoverable: false
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
// Compile TypeScript -> JavaScript via Vite's bundled esbuild transform
|
|
125
|
+
let jsCode;
|
|
126
|
+
try {
|
|
127
|
+
const { transformWithEsbuild } = await import('vite');
|
|
128
|
+
const result = await transformWithEsbuild(tsCode, filePath, {
|
|
129
|
+
loader: 'ts',
|
|
130
|
+
target: 'esnext',
|
|
131
|
+
format: 'esm'
|
|
132
|
+
});
|
|
133
|
+
jsCode = result.code;
|
|
134
|
+
} catch (err) {
|
|
135
|
+
throw new OpenElementError(`Failed to compile @openelement/core module from JSR: ${filePath}. ` + `Error: ${formatError(err)}`, {
|
|
136
|
+
code: 'JSR_COMPILE_ERROR',
|
|
137
|
+
statusCode: 500,
|
|
138
|
+
recoverable: false
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
// Post-process: rewrite npm: specifiers to bare specifiers.
|
|
142
|
+
jsCode = jsCode.replace(/(["'])npm:([^"']+)\1/g, (_, quote, specifier)=>{
|
|
143
|
+
const isScoped = specifier.startsWith('@');
|
|
144
|
+
const withoutScope = isScoped ? specifier.slice(1) : specifier;
|
|
145
|
+
const namePart = withoutScope.split('@')[0];
|
|
146
|
+
return `${quote}${isScoped ? '@' : ''}${namePart}${quote}`;
|
|
147
|
+
});
|
|
148
|
+
cacheSet(id, jsCode);
|
|
149
|
+
return jsCode;
|
|
150
|
+
}
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZpbGU6Ly8vaG9tZS9ydW5uZXIvd29yay9vcGVuZWxlbWVudC9vcGVuZWxlbWVudC9wYWNrYWdlcy9hZGFwdGVyLXZpdGUvc3JjL3N1YnBhdGgtcmVzb2x2ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBFeHRyYWN0ZWQgZnJvbSBpbmRleC50cyBpbiB2MC4yMiAoU09QLTAwNDogYWRhcHRlci12aXRlIGRlY29tcG9zaXRpb24pLlxuICpcbiAqIFdoZW4gQG9wZW5lbGVtZW50L2NvcmUgaXMgbG9hZGVkIGZyb20gSlNSIChodHRwczovLyBpbXBvcnQubWV0YS51cmwpLFxuICogVml0ZSdzIFNTUiBydW5uZXIgY2Fubm90IGxvYWQgaHR0cHM6Ly8gVVJMcyB2aWEgTm9kZS5qcyBFU00gbG9hZGVyLlxuICogVGhpcyBtb2R1bGUgaW50ZXJjZXB0cyBAb3BlbmVsZW1lbnQvY29yZS8qIGltcG9ydHMgYW5kIGxvYWRzIHNvdXJjZSBjb2RlXG4gKiB0aHJvdWdoIHZpcnR1YWwgbW9kdWxlcywgYnlwYXNzaW5nIE5vZGUuanMgRVNNIGxvYWRlciBlbnRpcmVseS5cbiAqXG4gKiBBRFIgMDAxOCBQaGFzZSAwOiBidWlsZENvcmVTdWJwYXRoQWxpYXNlcygpIERFTEVURUQuXG4gKiBMb2NhbCBtb2RlIG5vdyByZWxpZXMgb24gQGRlbm8vdml0ZS1wbHVnaW4gZm9yIGJhcmUgc3BlY2lmaWVyIHJlc29sdXRpb24uXG4gKiBSZW1vdGUgSlNSIHJlc29sdXRpb24gKGNyZWF0ZUNvcmVSZXNvbHZlUGx1Z2luKSBpcyByZXRhaW5lZCBiZWNhdXNlXG4gKiBKU1IgcGFja2FnZXMgYXJlIG5vdCBpbiBub2RlX21vZHVsZXMgYW5kIHJlcXVpcmUgdmlydHVhbCBtb2R1bGUgbG9hZGluZy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFBsdWdpbiB9IGZyb20gJ3ZpdGUnO1xuXG5pbXBvcnQgeyBmb3JtYXRFcnJvciwgT3BlbkVsZW1lbnRFcnJvciB9IGZyb20gJ0BvcGVuZWxlbWVudC9jb3JlL2Vycm9ycyc7XG5cbi8qKiBWaXJ0dWFsIG1vZHVsZSBJRCBwcmVmaXggZm9yIEpTUiByZW1vdGUgcmVzb2x1dGlvbiAqL1xuZXhwb3J0IGNvbnN0IFZJUlRVQUxfQ09SRV9QUkVGSVggPSAnXFwwb3BlbmVsZW1lbnQ6Y29yZS9zcmMvJztcblxuLyoqXG4gKiBNYXBwaW5nIG9mIEBvcGVuZWxlbWVudC9jb3JlLyogc3VicGF0aCBzcGVjaWZpZXJzIHRvIHNvdXJjZSBmaWxlc1xuICogKHVzZWQgYnkgSlNSIHJlbW90ZSByZXNvbHV0aW9uIG9ubHkpLlxuICovXG5leHBvcnQgY29uc3QgQ09SRV9TVUJQQVRIUzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgbG9nZ2VyOiAnbG9nZ2VyLnRzJyxcbiAgJ2J1aWxkLWNvbnRleHQnOiAnYnVpbGQtY29udGV4dC50cycsXG4gIG5hdmlnYXRpb246ICduYXZpZ2F0aW9uLnRzJyxcbiAgZXJyb3JzOiAnZXJyb3JzLnRzJyxcbn07XG5cbi8vIE0tMDggZml4OiBBZGQgbWF4IHNpemUgbGltaXQgdG8gcHJldmVudCB1bmJvdW5kZWQgbWVtb3J5IGdyb3d0aCBpbiBsb25nIGRldiBzZXNzaW9uc1xuXG5jb25zdCBKU1JfQ0FDSEVfTUFYID0gMTAwO1xuY29uc3QganNyU291cmNlQ2FjaGUgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuXG5mdW5jdGlvbiBjYWNoZUdldChrZXk6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBqc3JTb3VyY2VDYWNoZS5nZXQoa2V5KTtcbn1cblxuZnVuY3Rpb24gY2FjaGVTZXQoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgaWYgKGpzclNvdXJjZUNhY2hlLnNpemUgPj0gSlNSX0NBQ0hFX01BWCkge1xuICAgIC8vIEV2aWN0IG9sZGVzdCBlbnRyeVxuICAgIGNvbnN0IGZpcnN0S2V5ID0ganNyU291cmNlQ2FjaGUua2V5cygpLm5leHQoKS52YWx1ZTtcbiAgICBpZiAoZmlyc3RLZXkgIT09IHVuZGVmaW5lZCkganNyU291cmNlQ2FjaGUuZGVsZXRlKGZpcnN0S2V5KTtcbiAgfVxuICBqc3JTb3VyY2VDYWNoZS5zZXQoa2V5LCB2YWx1ZSk7XG59XG5cbmNvbnN0IE9QRU5FTEVNRU5UX1BBQ0tBR0VfU1JDX0JBU0VfUkUgPSAvXFwvQG9wZW5lbGVtZW50XFwvKFteL10rKVxcLyhbXi9dKylcXC9zcmNcXC8uKiQvO1xuXG4vKipcbiAqIEV4dHJhY3QgdGhlIEpTUiBwYWNrYWdlIHNvdXJjZSBiYXNlIFVSTCBmcm9tIGltcG9ydC5tZXRhLnVybC5cbiAqIEhhbmRsZXMgYm90aCBzdGFuZGFyZCBKU1IgcGF0aHMgYW5kIGVkZ2UgY2FzZXMgd2hlcmUgdGhlIHZlcnNpb25cbiAqIHNlZ21lbnQgZGlmZmVycyBmcm9tIGV4cGVjdGF0aW9ucy5cbiAqL1xuZnVuY3Rpb24gZ2V0T3BlblBhY2thZ2VTcmNCYXNlKG1ldGFVcmw6IHN0cmluZywgcGFja2FnZU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IG1hdGNoID0gbWV0YVVybC5tYXRjaChPUEVORUxFTUVOVF9QQUNLQUdFX1NSQ19CQVNFX1JFKTtcbiAgaWYgKG1hdGNoKSB7XG4gICAgcmV0dXJuIG1ldGFVcmwucmVwbGFjZShcbiAgICAgIE9QRU5FTEVNRU5UX1BBQ0tBR0VfU1JDX0JBU0VfUkUsXG4gICAgICBgL0BvcGVuZWxlbWVudC8ke3BhY2thZ2VOYW1lfS8ke21hdGNoWzJdfS9zcmMvYCxcbiAgICApO1xuICB9XG4gIHJldHVybiBtZXRhVXJsXG4gICAgLnJlcGxhY2UoL1xcL0BvcGVuZWxlbWVudFxcL1teL10rQChbXi9dKylcXC9zcmNcXC8uKiQvLCBgL0BvcGVuZWxlbWVudC8ke3BhY2thZ2VOYW1lfS8kMS9zcmMvYClcbiAgICAucmVwbGFjZSgvXFwvc3JjXFwvLiokLywgJy9zcmMvJyk7XG59XG5cbi8qKlxuICogQ3JlYXRlIHRoZSBjb3JlIHN1YnBhdGggcmVzb2x1dGlvbiBwbHVnaW4gZm9yIEpTUiByZW1vdGUgZXhlY3V0aW9uLlxuICpcbiAqIFdoZW4gQG9wZW5lbGVtZW50L2NvcmUgaXMgbG9hZGVkIGZyb20gSlNSIChodHRwczovLyBpbXBvcnQubWV0YS51cmwpLFxuICogVml0ZSdzIFNTUiBydW5uZXIgY2Fubm90IGxvYWQgaHR0cHM6Ly8gVVJMcyB2aWEgTm9kZS5qcyBFU00gbG9hZGVyLlxuICogVGhpcyBwbHVnaW4gaW50ZXJjZXB0cyBAb3BlbmVsZW1lbnQvY29yZS8qIGltcG9ydHMgYW5kIGxvYWRzIHNvdXJjZSBjb2RlXG4gKiB0aHJvdWdoIHZpcnR1YWwgbW9kdWxlcywgYnlwYXNzaW5nIE5vZGUuanMgRVNNIGxvYWRlciBlbnRpcmVseS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvcmVSZXNvbHZlUGx1Z2luKG1ldGFVcmw6IHN0cmluZyk6IFBsdWdpbiB7XG4gIGNvbnN0IGlzUmVtb3RlID0gbWV0YVVybC5zdGFydHNXaXRoKCdodHRwczovLycpIHx8IG1ldGFVcmwuc3RhcnRzV2l0aCgnaHR0cDovLycpO1xuXG4gIC8vIENvbXB1dGUgSlNSIGJhc2UgVVJMIGZvciBzb3VyY2UgZmV0Y2hpbmcuXG4gIGxldCBqc3JTcmNCYXNlID0gJyc7XG4gIGlmIChpc1JlbW90ZSkge1xuICAgIGpzclNyY0Jhc2UgPSBnZXRPcGVuUGFja2FnZVNyY0Jhc2UobWV0YVVybCwgJ2NvcmUnKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbmFtZTogJ29wZW46Y29yZS1yZXNvbHZlJyxcbiAgICBlbmZvcmNlOiAncHJlJyxcblxuICAgIHJlc29sdmVJZChzb3VyY2UsIGltcG9ydGVyLCBvcHRpb25zKSB7XG4gICAgICBpZiAoIWlzUmVtb3RlKSByZXR1cm47XG5cbiAgICAgIC8vIENhc2UgMTogQmFyZSBzcGVjaWZpZXIgQG9wZW5lbGVtZW50L2NvcmUgb3IgQG9wZW5lbGVtZW50L2NvcmUvKlxuICAgICAgaWYgKHNvdXJjZSA9PT0gJ0BvcGVuZWxlbWVudC9jb3JlJyB8fCBzb3VyY2Uuc3RhcnRzV2l0aCgnQG9wZW5lbGVtZW50L2NvcmUvJykpIHtcbiAgICAgICAgY29uc3Qgc3VicGF0aCA9IHNvdXJjZSA9PT0gJ0BvcGVuZWxlbWVudC9jb3JlJ1xuICAgICAgICAgID8gJ2luZGV4LnRzJ1xuICAgICAgICAgIDogQ09SRV9TVUJQQVRIU1tzb3VyY2Uuc2xpY2UoJ0BvcGVuZWxlbWVudC9jb3JlLycubGVuZ3RoKV0gfHxcbiAgICAgICAgICAgIGAke3NvdXJjZS5zbGljZSgnQG9wZW5lbGVtZW50L2NvcmUvJy5sZW5ndGgpfS50c2A7XG4gICAgICAgIHJldHVybiBgJHtWSVJUVUFMX0NPUkVfUFJFRklYfSR7c3VicGF0aH1gO1xuICAgICAgfVxuXG4gICAgICAvLyBDYXNlIDI6IFJlbGF0aXZlIGltcG9ydHMgZnJvbSB3aXRoaW4gb3VyIHZpcnR1YWwgbW9kdWxlc1xuICAgICAgaWYgKFxuICAgICAgICBpbXBvcnRlcj8uc3RhcnRzV2l0aChWSVJUVUFMX0NPUkVfUFJFRklYKSAmJlxuICAgICAgICBzb3VyY2Uuc3RhcnRzV2l0aCgnLi8nKVxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IGltcG9ydGVyRGlyID0gaW1wb3J0ZXIucmVwbGFjZSgvWy9cXFxcXVteL1xcXFxdKyQvLCAnJyk7XG4gICAgICAgIHJldHVybiBgJHtpbXBvcnRlckRpcn0vJHtzb3VyY2Uuc2xpY2UoMil9YDtcbiAgICAgIH1cblxuICAgICAgLy8gQ2FzZSAzOiBUaGlyZC1wYXJ0eSBiYXJlIHNwZWNpZmllcnMgZnJvbSB2aXJ0dWFsIG1vZHVsZXNcbiAgICAgIGlmIChcbiAgICAgICAgaW1wb3J0ZXI/LnN0YXJ0c1dpdGgoVklSVFVBTF9DT1JFX1BSRUZJWCkgJiZcbiAgICAgICAgIXNvdXJjZS5zdGFydHNXaXRoKCcvJykgJiZcbiAgICAgICAgIXNvdXJjZS5zdGFydHNXaXRoKCcuJykgJiZcbiAgICAgICAgIXNvdXJjZS5zdGFydHNXaXRoKCdcXDAnKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlc29sdmUoc291cmNlLCB1bmRlZmluZWQsIHsgLi4ub3B0aW9ucywgc2tpcFNlbGY6IHRydWUgfSk7XG4gICAgICB9XG5cbiAgICAgIC8vIENhc2UgNDogQWxyZWFkeS1yZXNvbHZlZCB2aXJ0dWFsIElEcyAocmUtcmVzb2x2ZSBzYWZlZ3VhcmQpXG4gICAgICBpZiAoc291cmNlLnN0YXJ0c1dpdGgoVklSVFVBTF9DT1JFX1BSRUZJWCkpIHtcbiAgICAgICAgcmV0dXJuIHNvdXJjZTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgYXN5bmMgbG9hZChpZCkge1xuICAgICAgaWYgKCFpc1JlbW90ZSkgcmV0dXJuO1xuICAgICAgaWYgKCFpZC5zdGFydHNXaXRoKFZJUlRVQUxfQ09SRV9QUkVGSVgpKSByZXR1cm47XG5cbiAgICAgIC8vIENoZWNrIGNhY2hlXG4gICAgICBpZiAoanNyU291cmNlQ2FjaGUuaGFzKGlkKSkgcmV0dXJuIGNhY2hlR2V0KGlkKTtcblxuICAgICAgLy8gTm9ybWFsaXplIC5qcyAtPiAudHMgKERlbm8gY29udmVudGlvbjogaW1wb3J0cyB1c2UgLmpzLCBmaWxlcyBhcmUgLnRzKVxuICAgICAgbGV0IGZpbGVQYXRoID0gaWQuc2xpY2UoVklSVFVBTF9DT1JFX1BSRUZJWC5sZW5ndGgpO1xuICAgICAgaWYgKGZpbGVQYXRoLmVuZHNXaXRoKCcuanMnKSAmJiAhZmlsZVBhdGguZW5kc1dpdGgoJy50cycpKSB7XG4gICAgICAgIGZpbGVQYXRoID0gZmlsZVBhdGguc2xpY2UoMCwgLTMpICsgJy50cyc7XG4gICAgICB9XG5cbiAgICAgIC8vIEZldGNoIFR5cGVTY3JpcHQgc291cmNlIGZyb20gSlNSXG4gICAgICBjb25zdCB1cmwgPSBgJHtqc3JTcmNCYXNlfSR7ZmlsZVBhdGh9YDtcbiAgICAgIGxldCB0c0NvZGU6IHN0cmluZztcbiAgICAgIC8vIE0tMDkgZml4OiBBZGQgMzBzIHRpbWVvdXQgZm9yIEpTUiBmZXRjaGVzIHRvIHByZXZlbnQgaGFuZ2luZyBidWlsZHNcbiAgICAgIGNvbnN0IGNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgICBjb25zdCB0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IGNvbnRyb2xsZXIuYWJvcnQoKSwgMzBfMDAwKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3AgPSBhd2FpdCBmZXRjaCh1cmwsIHsgc2lnbmFsOiBjb250cm9sbGVyLnNpZ25hbCB9KTtcbiAgICAgICAgaWYgKCFyZXNwLm9rKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYFtvcGVuOmNvcmUtcmVzb2x2ZV0gRmFpbGVkIHRvIGZldGNoICR7dXJsfTogSFRUUCAke3Jlc3Auc3RhdHVzfWAsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB0c0NvZGUgPSBhd2FpdCByZXNwLnRleHQoKTtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgICAgIHRocm93IG5ldyBPcGVuRWxlbWVudEVycm9yKFxuICAgICAgICAgIGBGYWlsZWQgdG8gbG9hZCBAb3BlbmVsZW1lbnQvY29yZSBtb2R1bGUgZnJvbSBKU1I6ICR7ZmlsZVBhdGh9LiBgICtcbiAgICAgICAgICAgIGBVUkw6ICR7dXJsfS4gRXJyb3I6ICR7Zm9ybWF0RXJyb3IoZXJyKX1gLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvZGU6ICdKU1JfRkVUQ0hfRVJST1InLFxuICAgICAgICAgICAgc3RhdHVzQ29kZTogNTAwLFxuICAgICAgICAgICAgcmVjb3ZlcmFibGU6IGZhbHNlLFxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIC8vIENvbXBpbGUgVHlwZVNjcmlwdCAtPiBKYXZhU2NyaXB0IHZpYSBWaXRlJ3MgYnVuZGxlZCBlc2J1aWxkIHRyYW5zZm9ybVxuICAgICAgbGV0IGpzQ29kZTogc3RyaW5nO1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyB0cmFuc2Zvcm1XaXRoRXNidWlsZCB9ID0gYXdhaXQgaW1wb3J0KCd2aXRlJyk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRyYW5zZm9ybVdpdGhFc2J1aWxkKHRzQ29kZSwgZmlsZVBhdGgsIHtcbiAgICAgICAgICBsb2FkZXI6ICd0cycsXG4gICAgICAgICAgdGFyZ2V0OiAnZXNuZXh0JyxcbiAgICAgICAgICBmb3JtYXQ6ICdlc20nLFxuICAgICAgICB9KTtcbiAgICAgICAganNDb2RlID0gcmVzdWx0LmNvZGU7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgdGhyb3cgbmV3IE9wZW5FbGVtZW50RXJyb3IoXG4gICAgICAgICAgYEZhaWxlZCB0byBjb21waWxlIEBvcGVuZWxlbWVudC9jb3JlIG1vZHVsZSBmcm9tIEpTUjogJHtmaWxlUGF0aH0uIGAgK1xuICAgICAgICAgICAgYEVycm9yOiAke2Zvcm1hdEVycm9yKGVycil9YCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb2RlOiAnSlNSX0NPTVBJTEVfRVJST1InLFxuICAgICAgICAgICAgc3RhdHVzQ29kZTogNTAwLFxuICAgICAgICAgICAgcmVjb3ZlcmFibGU6IGZhbHNlLFxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIC8vIFBvc3QtcHJvY2VzczogcmV3cml0ZSBucG06IHNwZWNpZmllcnMgdG8gYmFyZSBzcGVjaWZpZXJzLlxuICAgICAganNDb2RlID0ganNDb2RlLnJlcGxhY2UoXG4gICAgICAgIC8oW1wiJ10pbnBtOihbXlwiJ10rKVxcMS9nLFxuICAgICAgICAoXzogc3RyaW5nLCBxdW90ZTogc3RyaW5nLCBzcGVjaWZpZXI6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGNvbnN0IGlzU2NvcGVkID0gc3BlY2lmaWVyLnN0YXJ0c1dpdGgoJ0AnKTtcbiAgICAgICAgICBjb25zdCB3aXRob3V0U2NvcGUgPSBpc1Njb3BlZCA/IHNwZWNpZmllci5zbGljZSgxKSA6IHNwZWNpZmllcjtcbiAgICAgICAgICBjb25zdCBuYW1lUGFydCA9IHdpdGhvdXRTY29wZS5zcGxpdCgnQCcpWzBdO1xuICAgICAgICAgIHJldHVybiBgJHtxdW90ZX0ke2lzU2NvcGVkID8gJ0AnIDogJyd9JHtuYW1lUGFydH0ke3F1b3RlfWA7XG4gICAgICAgIH0sXG4gICAgICApO1xuXG4gICAgICBjYWNoZVNldChpZCwganNDb2RlKTtcbiAgICAgIHJldHVybiBqc0NvZGU7XG4gICAgfSxcbiAgfTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7O0NBWUMsR0FJRCxTQUFTLFdBQVcsRUFBRSxnQkFBZ0IsUUFBUSwyQkFBMkI7QUFFekUsdURBQXVELEdBQ3ZELE9BQU8sTUFBTSxzQkFBc0IsMEJBQTBCO0FBRTdEOzs7Q0FHQyxHQUNELE9BQU8sTUFBTSxnQkFBd0M7RUFDbkQsUUFBUTtFQUNSLGlCQUFpQjtFQUNqQixZQUFZO0VBQ1osUUFBUTtBQUNWLEVBQUU7QUFFRix1RkFBdUY7QUFFdkYsTUFBTSxnQkFBZ0I7QUFDdEIsTUFBTSxpQkFBaUIsSUFBSTtBQUUzQixTQUFTLFNBQVMsR0FBVztFQUMzQixPQUFPLGVBQWUsR0FBRyxDQUFDO0FBQzVCO0FBRUEsU0FBUyxTQUFTLEdBQVcsRUFBRSxLQUFhO0VBQzFDLElBQUksZUFBZSxJQUFJLElBQUksZUFBZTtJQUN4QyxxQkFBcUI7SUFDckIsTUFBTSxXQUFXLGVBQWUsSUFBSSxHQUFHLElBQUksR0FBRyxLQUFLO0lBQ25ELElBQUksYUFBYSxXQUFXLGVBQWUsTUFBTSxDQUFDO0VBQ3BEO0VBQ0EsZUFBZSxHQUFHLENBQUMsS0FBSztBQUMxQjtBQUVBLE1BQU0sa0NBQWtDO0FBRXhDOzs7O0NBSUMsR0FDRCxTQUFTLHNCQUFzQixPQUFlLEVBQUUsV0FBbUI7RUFDakUsTUFBTSxRQUFRLFFBQVEsS0FBSyxDQUFD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
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { Deno } from "@deno/shim-deno";
|
|
2
|
+
/**
|
|
3
|
+
* @openelement/adapter-vite - Workspace alias auto-generation
|
|
4
|
+
*
|
|
5
|
+
* Reads Deno workspace deno.json exports and generates
|
|
6
|
+
* Vite resolve.alias entries. Uses sync Deno APIs so it
|
|
7
|
+
* can run in synchronous plugin hooks (config, configResolved).
|
|
8
|
+
*/ import { resolve } from 'node:path';
|
|
9
|
+
function tryReadJson(path) {
|
|
10
|
+
try {
|
|
11
|
+
// H-12 fix: Use platform-appropriate file reading API
|
|
12
|
+
// Deno.readTextFileSync in Deno environments, node:fs in Node.js (Vite)
|
|
13
|
+
const content = typeof Deno !== 'undefined' ? Deno.readTextFileSync(path) : require('node:fs').readFileSync(path, 'utf-8');
|
|
14
|
+
// deno.json files may contain comments - strip them before JSON.parse.
|
|
15
|
+
// Naive regex breaks URLs (https:// -> https:), so we walk character by character,
|
|
16
|
+
// tracking whether we're inside a string literal.
|
|
17
|
+
let result = '';
|
|
18
|
+
let inString = false;
|
|
19
|
+
let escape = false;
|
|
20
|
+
for(let i = 0; i < content.length; i++){
|
|
21
|
+
const ch = content[i];
|
|
22
|
+
if (escape) {
|
|
23
|
+
result += ch;
|
|
24
|
+
escape = false;
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
if (ch === '\\') {
|
|
28
|
+
result += ch;
|
|
29
|
+
escape = true;
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
if (ch === '"') {
|
|
33
|
+
inString = !inString;
|
|
34
|
+
result += ch;
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
if (!inString && ch === '/' && content[i + 1] === '/') {
|
|
38
|
+
// Skip until end of line
|
|
39
|
+
while(i < content.length && content[i] !== '\n')i++;
|
|
40
|
+
result += '\n';
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
if (!inString && ch === '/' && content[i + 1] === '*') {
|
|
44
|
+
// Skip until */
|
|
45
|
+
i += 2;
|
|
46
|
+
while(i < content.length && !(content[i] === '*' && content[i + 1] === '/'))i++;
|
|
47
|
+
i++; // skip past */
|
|
48
|
+
result += ' ';
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
result += ch;
|
|
52
|
+
}
|
|
53
|
+
return JSON.parse(result);
|
|
54
|
+
} catch {
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Walk up from startDir to find a deno.json with a "workspace" field.
|
|
60
|
+
*/ export function findWorkspaceRoot(startDir) {
|
|
61
|
+
let dir = resolve(startDir);
|
|
62
|
+
const fsRoot = resolve('/');
|
|
63
|
+
while(dir !== fsRoot && dir !== resolve(dir, '..')){
|
|
64
|
+
const cfg = tryReadJson(resolve(dir, 'deno.json'));
|
|
65
|
+
if (cfg?.workspace && Array.isArray(cfg.workspace)) return dir;
|
|
66
|
+
dir = resolve(dir, '..');
|
|
67
|
+
}
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Generate Vite resolve.alias from workspace packages' deno.json exports.
|
|
72
|
+
* Subpath aliases come before parent (Vite prefix matching rule).
|
|
73
|
+
*/ export function generateWorkspaceAliases(workspaceRoot) {
|
|
74
|
+
const rootCfg = tryReadJson(resolve(workspaceRoot, 'deno.json'));
|
|
75
|
+
if (!rootCfg) return [];
|
|
76
|
+
const members = rootCfg.workspace || [];
|
|
77
|
+
const aliases = [];
|
|
78
|
+
for (const member of members){
|
|
79
|
+
const memberDir = resolve(workspaceRoot, member);
|
|
80
|
+
const memberCfg = tryReadJson(resolve(memberDir, 'deno.json'));
|
|
81
|
+
if (!memberCfg) continue;
|
|
82
|
+
const name = memberCfg.name;
|
|
83
|
+
const exports = memberCfg.exports;
|
|
84
|
+
if (!name || !exports) continue;
|
|
85
|
+
if (typeof exports === 'string') {
|
|
86
|
+
aliases.push({
|
|
87
|
+
find: name,
|
|
88
|
+
replacement: resolve(memberDir, exports)
|
|
89
|
+
});
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
// Subpath aliases first (Vite prefix matching)
|
|
93
|
+
for (const [exportPath, sourcePath] of Object.entries(exports)){
|
|
94
|
+
if (exportPath === '.') continue;
|
|
95
|
+
const subpath = exportPath.replace(/^\.\//, '/');
|
|
96
|
+
aliases.push({
|
|
97
|
+
find: `${name}${subpath}`,
|
|
98
|
+
replacement: resolve(memberDir, sourcePath)
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
// Parent alias last. Subpath aliases above already handle every exported
|
|
102
|
+
// subpath, so a direct import of the package name resolves to the "./"
|
|
103
|
+
// export entry without falling through to directory-index heuristics.
|
|
104
|
+
if (exports['.']) {
|
|
105
|
+
aliases.push({
|
|
106
|
+
find: name,
|
|
107
|
+
replacement: resolve(memberDir, exports['.'])
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return aliases;
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZpbGU6Ly8vaG9tZS9ydW5uZXIvd29yay9vcGVuZWxlbWVudC9vcGVuZWxlbWVudC9wYWNrYWdlcy9hZGFwdGVyLXZpdGUvc3JjL3dvcmtzcGFjZS1hbGlhcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZW5vIH0gZnJvbSBcIkBkZW5vL3NoaW0tZGVub1wiO1xuLyoqXG4gKiBAb3BlbmVsZW1lbnQvYWRhcHRlci12aXRlIC0gV29ya3NwYWNlIGFsaWFzIGF1dG8tZ2VuZXJhdGlvblxuICpcbiAqIFJlYWRzIERlbm8gd29ya3NwYWNlIGRlbm8uanNvbiBleHBvcnRzIGFuZCBnZW5lcmF0ZXNcbiAqIFZpdGUgcmVzb2x2ZS5hbGlhcyBlbnRyaWVzLiBVc2VzIHN5bmMgRGVubyBBUElzIHNvIGl0XG4gKiBjYW4gcnVuIGluIHN5bmNocm9ub3VzIHBsdWdpbiBob29rcyAoY29uZmlnLCBjb25maWdSZXNvbHZlZCkuXG4gKi9cblxuaW1wb3J0IHsgcmVzb2x2ZSB9IGZyb20gJ25vZGU6cGF0aCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWxpYXNFbnRyeSB7XG4gIGZpbmQ6IHN0cmluZztcbiAgcmVwbGFjZW1lbnQ6IHN0cmluZztcbn1cblxuZnVuY3Rpb24gdHJ5UmVhZEpzb24ocGF0aDogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCBudWxsIHtcbiAgdHJ5IHtcbiAgICAvLyBILTEyIGZpeDogVXNlIHBsYXRmb3JtLWFwcHJvcHJpYXRlIGZpbGUgcmVhZGluZyBBUElcbiAgICAvLyBEZW5vLnJlYWRUZXh0RmlsZVN5bmMgaW4gRGVubyBlbnZpcm9ubWVudHMsIG5vZGU6ZnMgaW4gTm9kZS5qcyAoVml0ZSlcbiAgICBjb25zdCBjb250ZW50ID0gdHlwZW9mIERlbm8gIT09ICd1bmRlZmluZWQnXG4gICAgICA/IERlbm8ucmVhZFRleHRGaWxlU3luYyhwYXRoKVxuICAgICAgOiByZXF1aXJlKCdub2RlOmZzJykucmVhZEZpbGVTeW5jKHBhdGgsICd1dGYtOCcpO1xuICAgIC8vIGRlbm8uanNvbiBmaWxlcyBtYXkgY29udGFpbiBjb21tZW50cyAtIHN0cmlwIHRoZW0gYmVmb3JlIEpTT04ucGFyc2UuXG4gICAgLy8gTmFpdmUgcmVnZXggYnJlYWtzIFVSTHMgKGh0dHBzOi8vIC0+IGh0dHBzOiksIHNvIHdlIHdhbGsgY2hhcmFjdGVyIGJ5IGNoYXJhY3RlcixcbiAgICAvLyB0cmFja2luZyB3aGV0aGVyIHdlJ3JlIGluc2lkZSBhIHN0cmluZyBsaXRlcmFsLlxuICAgIGxldCByZXN1bHQgPSAnJztcbiAgICBsZXQgaW5TdHJpbmcgPSBmYWxzZTtcbiAgICBsZXQgZXNjYXBlID0gZmFsc2U7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb250ZW50Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBjaCA9IGNvbnRlbnRbaV07XG4gICAgICBpZiAoZXNjYXBlKSB7XG4gICAgICAgIHJlc3VsdCArPSBjaDtcbiAgICAgICAgZXNjYXBlID0gZmFsc2U7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKGNoID09PSAnXFxcXCcpIHtcbiAgICAgICAgcmVzdWx0ICs9IGNoO1xuICAgICAgICBlc2NhcGUgPSB0cnVlO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmIChjaCA9PT0gJ1wiJykge1xuICAgICAgICBpblN0cmluZyA9ICFpblN0cmluZztcbiAgICAgICAgcmVzdWx0ICs9IGNoO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmICghaW5TdHJpbmcgJiYgY2ggPT09ICcvJyAmJiBjb250ZW50W2kgKyAxXSA9PT0gJy8nKSB7XG4gICAgICAgIC8vIFNraXAgdW50aWwgZW5kIG9mIGxpbmVcbiAgICAgICAgd2hpbGUgKGkgPCBjb250ZW50Lmxlbmd0aCAmJiBjb250ZW50W2ldICE9PSAnXFxuJykgaSsrO1xuICAgICAgICByZXN1bHQgKz0gJ1xcbic7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKCFpblN0cmluZyAmJiBjaCA9PT0gJy8nICYmIGNvbnRlbnRbaSArIDFdID09PSAnKicpIHtcbiAgICAgICAgLy8gU2tpcCB1bnRpbCAqL1xuICAgICAgICBpICs9IDI7XG4gICAgICAgIHdoaWxlIChpIDwgY29udGVudC5sZW5ndGggJiYgIShjb250ZW50W2ldID09PSAnKicgJiYgY29udGVudFtpICsgMV0gPT09ICcvJykpIGkrKztcbiAgICAgICAgaSsrOyAvLyBza2lwIHBhc3QgKi9cbiAgICAgICAgcmVzdWx0ICs9ICcgJztcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICByZXN1bHQgKz0gY2g7XG4gICAgfVxuICAgIHJldHVybiBKU09OLnBhcnNlKHJlc3VsdCk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbi8qKlxuICogV2FsayB1cCBmcm9tIHN0YXJ0RGlyIHRvIGZpbmQgYSBkZW5vLmpzb24gd2l0aCBhIFwid29ya3NwYWNlXCIgZmllbGQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kV29ya3NwYWNlUm9vdChzdGFydERpcjogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gIGxldCBkaXIgPSByZXNvbHZlKHN0YXJ0RGlyKTtcbiAgY29uc3QgZnNSb290ID0gcmVzb2x2ZSgnLycpO1xuICB3aGlsZSAoZGlyICE9PSBmc1Jvb3QgJiYgZGlyICE9PSByZXNvbHZlKGRpciwgJy4uJykpIHtcbiAgICBjb25zdCBjZmcgPSB0cnlSZWFkSnNvbihyZXNvbHZlKGRpciwgJ2Rlbm8uanNvbicpKTtcbiAgICBpZiAoY2ZnPy53b3Jrc3BhY2UgJiYgQXJyYXkuaXNBcnJheShjZmcud29ya3NwYWNlKSkgcmV0dXJuIGRpcjtcbiAgICBkaXIgPSByZXNvbHZlKGRpciwgJy4uJyk7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogR2VuZXJhdGUgVml0ZSByZXNvbHZlLmFsaWFzIGZyb20gd29ya3NwYWNlIHBhY2thZ2VzJyBkZW5vLmpzb24gZXhwb3J0cy5cbiAqIFN1YnBhdGggYWxpYXNlcyBjb21lIGJlZm9yZSBwYXJlbnQgKFZpdGUgcHJlZml4IG1hdGNoaW5nIHJ1bGUpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVXb3Jrc3BhY2VBbGlhc2VzKHdvcmtzcGFjZVJvb3Q6IHN0cmluZyk6IEFsaWFzRW50cnlbXSB7XG4gIGNvbnN0IHJvb3RDZmcgPSB0cnlSZWFkSnNvbihyZXNvbHZlKHdvcmtzcGFjZVJvb3QsICdkZW5vLmpzb24nKSk7XG4gIGlmICghcm9vdENmZykgcmV0dXJuIFtdO1xuXG4gIGNvbnN0IG1lbWJlcnM6IHN0cmluZ1tdID0gKHJvb3RDZmcud29ya3NwYWNlIGFzIHN0cmluZ1tdKSB8fCBbXTtcbiAgY29uc3QgYWxpYXNlczogQWxpYXNFbnRyeVtdID0gW107XG5cbiAgZm9yIChjb25zdCBtZW1iZXIgb2YgbWVtYmVycykge1xuICAgIGNvbnN0IG1lbWJlckRpciA9IHJlc29sdmUod29ya3NwYWNlUm9vdCwgbWVtYmVyKTtcbiAgICBjb25zdCBtZW1iZXJDZmcgPSB0cnlSZWFkSnNvbihyZXNvbHZlKG1lbWJlckRpciwgJ2Rlbm8uanNvbicpKTtcbiAgICBpZiAoIW1lbWJlckNmZykgY29udGludWU7XG5cbiAgICBjb25zdCBuYW1lID0gbWVtYmVyQ2ZnLm5hbWUgYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IGV4cG9ydHMgPSBtZW1iZXJDZmcuZXhwb3J0cyBhc1xuICAgICAgfCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XG4gICAgICB8IHN0cmluZ1xuICAgICAgfCB1bmRlZmluZWQ7XG4gICAgaWYgKCFuYW1lIHx8ICFleHBvcnRzKSBjb250aW51ZTtcblxuICAgIGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGFsaWFzZXMucHVzaCh7IGZpbmQ6IG5hbWUsIHJlcGxhY2VtZW50OiByZXNvbHZlKG1lbWJlckRpciwgZXhwb3J0cykgfSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvLyBTdWJwYXRoIGFsaWFzZXMgZmlyc3QgKFZpdGUgcHJlZml4IG1hdGNoaW5nKVxuICAgIGZvciAoY29uc3QgW2V4cG9ydFBhdGgsIHNvdXJjZVBhdGhdIG9mIE9iamVjdC5lbnRyaWVzKGV4cG9ydHMpKSB7XG4gICAgICBpZiAoZXhwb3J0UGF0aCA9PT0gJy4nKSBjb250aW51ZTtcbiAgICAgIGNvbnN0IHN1YnBhdGggPSBleHBvcnRQYXRoLnJlcGxhY2UoL15cXC5cXC8vLCAnLycpO1xuICAgICAgYWxpYXNlcy5wdXNoKHtcbiAgICAgICAgZmluZDogYCR7bmFtZX0ke3N1YnBhdGh9YCxcbiAgICAgICAgcmVwbGFjZW1lbnQ6IHJlc29sdmUobWVtYmVyRGlyLCBzb3VyY2VQYXRoIGFzIHN0cmluZyksXG4gICAgICB9KTtcbiAgICB9XG4gICAgLy8gUGFyZW50IGFsaWFzIGxhc3QuIFN1YnBhdGggYWxpYXNlcyBhYm92ZSBhbHJlYWR5IGhhbmRsZSBldmVyeSBleHBvcnRlZFxuICAgIC8vIHN1YnBhdGgsIHNvIGEgZGlyZWN0IGltcG9ydCBvZiB0aGUgcGFja2FnZSBuYW1lIHJlc29sdmVzIHRvIHRoZSBcIi4vXCJcbiAgICAvLyBleHBvcnQgZW50cnkgd2l0aG91dCBmYWxsaW5nIHRocm91Z2ggdG8gZGlyZWN0b3J5LWluZGV4IGhldXJpc3RpY3MuXG4gICAgaWYgKGV4cG9ydHNbJy4nXSkge1xuICAgICAgYWxpYXNlcy5wdXNoKHtcbiAgICAgICAgZmluZDogbmFtZSxcbiAgICAgICAgcmVwbGFjZW1lbnQ6IHJlc29sdmUobWVtYmVyRGlyLCBleHBvcnRzWycuJ10gYXMgc3RyaW5nKSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gYWxpYXNlcztcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFTLElBQUksUUFBUSxrQkFBa0I7QUFDdkM7Ozs7OztDQU1DLEdBRUQsU0FB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
|