@prompd/cli 0.4.11 → 0.5.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/commands/compile.d.ts.map +1 -1
- package/dist/commands/compile.js +8 -1
- package/dist/commands/compile.js.map +1 -1
- package/dist/commands/package.d.ts.map +1 -1
- package/dist/commands/package.js +182 -9
- package/dist/commands/package.js.map +1 -1
- package/dist/commands/registry.d.ts.map +1 -1
- package/dist/commands/registry.js +58 -4
- package/dist/commands/registry.js.map +1 -1
- package/dist/commands/uninstall.d.ts.map +1 -1
- package/dist/commands/uninstall.js +52 -18
- package/dist/commands/uninstall.js.map +1 -1
- package/dist/lib/commandExecutor.d.ts +2 -2
- package/dist/lib/commandExecutor.d.ts.map +1 -1
- package/dist/lib/commandExecutor.js +2 -2
- package/dist/lib/commandExecutor.js.map +1 -1
- package/dist/lib/compiler/file-system.d.ts.map +1 -1
- package/dist/lib/compiler/file-system.js +10 -0
- package/dist/lib/compiler/file-system.js.map +1 -1
- package/dist/lib/compiler/index.d.ts +1 -0
- package/dist/lib/compiler/index.d.ts.map +1 -1
- package/dist/lib/compiler/index.js +9 -1
- package/dist/lib/compiler/index.js.map +1 -1
- package/dist/lib/compiler/package-resolver.d.ts +24 -3
- package/dist/lib/compiler/package-resolver.d.ts.map +1 -1
- package/dist/lib/compiler/package-resolver.js +112 -27
- package/dist/lib/compiler/package-resolver.js.map +1 -1
- package/dist/lib/compiler/stages/semantic.d.ts +7 -0
- package/dist/lib/compiler/stages/semantic.d.ts.map +1 -1
- package/dist/lib/compiler/stages/semantic.js +78 -2
- package/dist/lib/compiler/stages/semantic.js.map +1 -1
- package/dist/lib/compiler/stages/template.d.ts.map +1 -1
- package/dist/lib/compiler/stages/template.js +24 -12
- package/dist/lib/compiler/stages/template.js.map +1 -1
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +14 -2
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/nodeTypeRegistry.d.ts +1 -1
- package/dist/lib/nodeTypeRegistry.d.ts.map +1 -1
- package/dist/lib/providers/types.d.ts +4 -0
- package/dist/lib/providers/types.d.ts.map +1 -1
- package/dist/lib/providers/types.js.map +1 -1
- package/dist/lib/registry.d.ts +42 -3
- package/dist/lib/registry.d.ts.map +1 -1
- package/dist/lib/registry.js +448 -84
- package/dist/lib/registry.js.map +1 -1
- package/dist/lib/validation.d.ts.map +1 -1
- package/dist/lib/validation.js +10 -2
- package/dist/lib/validation.js.map +1 -1
- package/dist/lib/workflowExecutor.d.ts +2 -0
- package/dist/lib/workflowExecutor.d.ts.map +1 -1
- package/dist/lib/workflowExecutor.js +75 -67
- package/dist/lib/workflowExecutor.js.map +1 -1
- package/dist/types/index.d.ts +48 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +54 -1
- package/dist/types/index.js.map +1 -1
- package/package.json +127 -124
|
@@ -42,6 +42,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
42
42
|
exports.resolvePackage = resolvePackage;
|
|
43
43
|
exports.parsePackageReference = parsePackageReference;
|
|
44
44
|
exports.isValidPackageReference = isValidPackageReference;
|
|
45
|
+
exports.findProjectRoot = findProjectRoot;
|
|
46
|
+
exports.getGlobalBaseDir = getGlobalBaseDir;
|
|
47
|
+
exports.getLocalBaseDir = getLocalBaseDir;
|
|
45
48
|
exports.getGlobalCacheDir = getGlobalCacheDir;
|
|
46
49
|
exports.getLocalCacheDir = getLocalCacheDir;
|
|
47
50
|
exports.getPackageCacheDir = getPackageCacheDir;
|
|
@@ -53,6 +56,7 @@ const os = __importStar(require("os"));
|
|
|
53
56
|
const registry_1 = require("../registry");
|
|
54
57
|
const errors_1 = require("../errors");
|
|
55
58
|
const file_system_1 = require("./file-system");
|
|
59
|
+
const types_1 = require("../../types");
|
|
56
60
|
/**
|
|
57
61
|
* Resolve a package reference to a local file path or in-memory path.
|
|
58
62
|
*
|
|
@@ -107,26 +111,39 @@ async function resolvePackage(packageRef, fileSystemOrOptions, registryUrl) {
|
|
|
107
111
|
}
|
|
108
112
|
}
|
|
109
113
|
// Default: disk-based resolution
|
|
110
|
-
// Resolution order
|
|
111
|
-
// 1. Check local
|
|
112
|
-
// 2. Check global
|
|
113
|
-
// 3.
|
|
114
|
-
//
|
|
115
|
-
|
|
116
|
-
|
|
114
|
+
// Resolution order:
|
|
115
|
+
// 1. Check local type directories (.prompd/packages/, .prompd/workflows/, etc.)
|
|
116
|
+
// 2. Check global type directories (~/.prompd/packages/, ~/.prompd/workflows/, etc.)
|
|
117
|
+
// 3. Check legacy cache dirs (.prompd/cache/) for backward compatibility
|
|
118
|
+
// 4. Download from registry
|
|
119
|
+
const localBase = getLocalBaseDir(workspaceRoot);
|
|
120
|
+
const globalBase = getGlobalBaseDir();
|
|
121
|
+
const typeDirs = Object.values(types_1.PACKAGE_TYPE_DIRS);
|
|
122
|
+
// Check all type directories locally first
|
|
123
|
+
for (const typeDir of typeDirs) {
|
|
124
|
+
const dir = path.join(localBase, typeDir, name, version);
|
|
125
|
+
if (await fs.pathExists(dir)) {
|
|
126
|
+
return dir;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
// Check all type directories globally
|
|
130
|
+
for (const typeDir of typeDirs) {
|
|
131
|
+
const dir = path.join(globalBase, typeDir, name, version);
|
|
132
|
+
if (await fs.pathExists(dir)) {
|
|
133
|
+
return dir;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
// Legacy: check old flat cache directories
|
|
117
137
|
const localCacheDir = getLocalCacheDir(workspaceRoot);
|
|
118
138
|
const globalCacheDir = getGlobalCacheDir();
|
|
119
|
-
// Check local project cache first (both formats)
|
|
120
139
|
const localPackageDir = path.join(localCacheDir, name, version);
|
|
121
140
|
if (await fs.pathExists(localPackageDir)) {
|
|
122
141
|
return localPackageDir;
|
|
123
142
|
}
|
|
124
|
-
// Legacy format: name@version as single directory (frontend packageCache.ts format)
|
|
125
143
|
const localPackageDirLegacy = path.join(localCacheDir, `${name}@${version}`);
|
|
126
144
|
if (await fs.pathExists(localPackageDirLegacy)) {
|
|
127
145
|
return localPackageDirLegacy;
|
|
128
146
|
}
|
|
129
|
-
// Check global cache (both formats)
|
|
130
147
|
const globalPackageDir = path.join(globalCacheDir, name, version);
|
|
131
148
|
if (await fs.pathExists(globalPackageDir)) {
|
|
132
149
|
return globalPackageDir;
|
|
@@ -140,14 +157,18 @@ async function resolvePackage(packageRef, fileSystemOrOptions, registryUrl) {
|
|
|
140
157
|
// Create registry client with optional URL override
|
|
141
158
|
const registry = new registry_1.RegistryClient(resolvedRegistryUrl ? { registryUrl: resolvedRegistryUrl } : undefined);
|
|
142
159
|
await registry.install(packageRef, { skipCache: false, workspaceRoot });
|
|
143
|
-
// After installation, check
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
160
|
+
// After installation, check type directories again (new install location)
|
|
161
|
+
for (const typeDir of typeDirs) {
|
|
162
|
+
const localDir = path.join(localBase, typeDir, name, version);
|
|
163
|
+
if (await fs.pathExists(localDir)) {
|
|
164
|
+
return localDir;
|
|
165
|
+
}
|
|
166
|
+
const globalDir = path.join(globalBase, typeDir, name, version);
|
|
167
|
+
if (await fs.pathExists(globalDir)) {
|
|
168
|
+
return globalDir;
|
|
169
|
+
}
|
|
149
170
|
}
|
|
150
|
-
throw new Error(`Package installation succeeded but package not found
|
|
171
|
+
throw new Error(`Package installation succeeded but package not found: ${packageRef}`);
|
|
151
172
|
}
|
|
152
173
|
catch (error) {
|
|
153
174
|
throw new Error(`Failed to resolve package ${packageRef}: ${error instanceof Error ? error.message : String(error)}`);
|
|
@@ -189,23 +210,72 @@ function isValidPackageReference(packageRef) {
|
|
|
189
210
|
}
|
|
190
211
|
return true;
|
|
191
212
|
}
|
|
213
|
+
/**
|
|
214
|
+
* Find the project root by walking up the directory tree looking for a
|
|
215
|
+
* prompd.json with both 'name' and 'version' fields (a real project manifest,
|
|
216
|
+
* not a dependency-only fragment).
|
|
217
|
+
*
|
|
218
|
+
* Falls back to startDir (or process.cwd()) if no project root is found.
|
|
219
|
+
*
|
|
220
|
+
* @param startDir - Directory to start searching from. Defaults to process.cwd().
|
|
221
|
+
*/
|
|
222
|
+
function findProjectRoot(startDir) {
|
|
223
|
+
let dir = path.resolve(startDir || process.cwd());
|
|
224
|
+
const root = path.parse(dir).root;
|
|
225
|
+
while (true) {
|
|
226
|
+
const candidate = path.join(dir, 'prompd.json');
|
|
227
|
+
if (fs.pathExistsSync(candidate)) {
|
|
228
|
+
try {
|
|
229
|
+
const content = fs.readJsonSync(candidate);
|
|
230
|
+
if (content.name && content.version) {
|
|
231
|
+
return dir;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
catch {
|
|
235
|
+
// Invalid JSON, skip and keep walking
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
const parent = path.dirname(dir);
|
|
239
|
+
if (parent === dir || dir === root) {
|
|
240
|
+
break;
|
|
241
|
+
}
|
|
242
|
+
dir = parent;
|
|
243
|
+
}
|
|
244
|
+
return path.resolve(startDir || process.cwd());
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Get the global .prompd base directory (~/.prompd/).
|
|
248
|
+
*/
|
|
249
|
+
function getGlobalBaseDir() {
|
|
250
|
+
return path.join(os.homedir(), '.prompd');
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Get the local project .prompd base directory (./.prompd/).
|
|
254
|
+
* @param workspaceRoot - Optional workspace root directory. If not provided, auto-detects project root.
|
|
255
|
+
*/
|
|
256
|
+
function getLocalBaseDir(workspaceRoot) {
|
|
257
|
+
const basePath = workspaceRoot || findProjectRoot();
|
|
258
|
+
return path.join(basePath, '.prompd');
|
|
259
|
+
}
|
|
192
260
|
/**
|
|
193
261
|
* Get the global package cache directory (~/.prompd/cache/).
|
|
262
|
+
* @deprecated Legacy path. New installs use type-specific dirs (packages/, workflows/, etc.)
|
|
194
263
|
*/
|
|
195
264
|
function getGlobalCacheDir() {
|
|
196
265
|
return path.join(os.homedir(), '.prompd', 'cache');
|
|
197
266
|
}
|
|
198
267
|
/**
|
|
199
268
|
* Get the local project package cache directory (./.prompd/cache/).
|
|
200
|
-
* @
|
|
269
|
+
* @deprecated Legacy path. New installs use type-specific dirs (packages/, workflows/, etc.)
|
|
270
|
+
* @param workspaceRoot - Optional workspace root directory. If not provided, auto-detects project root.
|
|
201
271
|
*/
|
|
202
272
|
function getLocalCacheDir(workspaceRoot) {
|
|
203
|
-
const basePath = workspaceRoot ||
|
|
273
|
+
const basePath = workspaceRoot || findProjectRoot();
|
|
204
274
|
return path.join(basePath, '.prompd', 'cache');
|
|
205
275
|
}
|
|
206
276
|
/**
|
|
207
277
|
* Get the package cache directory (for backward compatibility).
|
|
208
|
-
* @deprecated Use
|
|
278
|
+
* @deprecated Use getGlobalBaseDir() or getLocalBaseDir() instead
|
|
209
279
|
*/
|
|
210
280
|
function getPackageCacheDir() {
|
|
211
281
|
return getGlobalCacheDir();
|
|
@@ -235,21 +305,36 @@ function resolvePackageFile(packagePath, filePath) {
|
|
|
235
305
|
return resolvedPath;
|
|
236
306
|
}
|
|
237
307
|
/**
|
|
238
|
-
* Check if a package is installed (in local or global
|
|
308
|
+
* Check if a package is installed (in any type directory, local or global).
|
|
239
309
|
* @param packageRef - Package reference to check
|
|
240
310
|
* @param workspaceRoot - Optional workspace root directory for local cache
|
|
241
311
|
*/
|
|
242
312
|
async function isPackageInstalled(packageRef, workspaceRoot) {
|
|
243
313
|
try {
|
|
244
314
|
const { name, version } = parsePackageReference(packageRef);
|
|
245
|
-
|
|
246
|
-
const
|
|
247
|
-
|
|
315
|
+
const localBase = getLocalBaseDir(workspaceRoot);
|
|
316
|
+
const globalBase = getGlobalBaseDir();
|
|
317
|
+
const typeDirs = Object.values(types_1.PACKAGE_TYPE_DIRS);
|
|
318
|
+
// Check all type directories locally
|
|
319
|
+
for (const typeDir of typeDirs) {
|
|
320
|
+
if (await fs.pathExists(path.join(localBase, typeDir, name, version))) {
|
|
321
|
+
return true;
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
// Check all type directories globally
|
|
325
|
+
for (const typeDir of typeDirs) {
|
|
326
|
+
if (await fs.pathExists(path.join(globalBase, typeDir, name, version))) {
|
|
327
|
+
return true;
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
// Legacy: check flat cache directories
|
|
331
|
+
if (await fs.pathExists(path.join(getLocalCacheDir(workspaceRoot), name, version))) {
|
|
248
332
|
return true;
|
|
249
333
|
}
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
334
|
+
if (await fs.pathExists(path.join(getGlobalCacheDir(), name, version))) {
|
|
335
|
+
return true;
|
|
336
|
+
}
|
|
337
|
+
return false;
|
|
253
338
|
}
|
|
254
339
|
catch {
|
|
255
340
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package-resolver.js","sourceRoot":"","sources":["../../../src/lib/compiler/package-resolver.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"package-resolver.js","sourceRoot":"","sources":["../../../src/lib/compiler/package-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,13 @@ export declare class SemanticAnalysisStage implements CompilerStage {
|
|
|
11
11
|
* Validate parameter type.
|
|
12
12
|
*/
|
|
13
13
|
private validateParameterType;
|
|
14
|
+
/**
|
|
15
|
+
* Coerce a parameter value to its declared type.
|
|
16
|
+
* CLI args always arrive as strings; this converts them to the correct runtime type
|
|
17
|
+
* before the value is handed to the template engine.
|
|
18
|
+
* Already-correct types (e.g. from a JSON params file) are passed through unchanged.
|
|
19
|
+
*/
|
|
20
|
+
private coerceParameterValue;
|
|
14
21
|
/**
|
|
15
22
|
* Validate required metadata fields (id, name, version).
|
|
16
23
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"semantic.d.ts","sourceRoot":"","sources":["../../../../src/lib/compiler/stages/semantic.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAE7D,qBAAa,qBAAsB,YAAW,aAAa;IACnD,OAAO,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"semantic.d.ts","sourceRoot":"","sources":["../../../../src/lib/compiler/stages/semantic.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAE7D,qBAAa,qBAAsB,YAAW,aAAa;IACnD,OAAO,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IA0FzD;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA4B7B;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAwC5B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAoEhC,OAAO,IAAI,MAAM;CAGlB"}
|
|
@@ -34,6 +34,11 @@ class SemanticAnalysisStage {
|
|
|
34
34
|
if (isExecutionMode && param.required && !(param.name in context.parameters)) {
|
|
35
35
|
context.addWarning(`Required parameter '${param.name}' not provided`);
|
|
36
36
|
}
|
|
37
|
+
// Type coercion for provided parameters.
|
|
38
|
+
// CLI args always arrive as strings; coerce to the declared type before validation.
|
|
39
|
+
if (param.name in context.parameters) {
|
|
40
|
+
context.parameters[param.name] = this.coerceParameterValue(context.parameters[param.name], param.type);
|
|
41
|
+
}
|
|
37
42
|
// Type validation for provided parameters
|
|
38
43
|
if (param.name in context.parameters) {
|
|
39
44
|
const value = context.parameters[param.name];
|
|
@@ -73,19 +78,90 @@ class SemanticAnalysisStage {
|
|
|
73
78
|
validateParameterType(value, expectedType) {
|
|
74
79
|
switch (expectedType) {
|
|
75
80
|
case 'string':
|
|
81
|
+
case 'file': // file path provided as a string
|
|
82
|
+
case 'base64': // base64-encoded binary provided as a string
|
|
76
83
|
return typeof value === 'string';
|
|
77
84
|
case 'number':
|
|
78
|
-
case 'integer':
|
|
79
85
|
case 'float':
|
|
80
86
|
return typeof value === 'number' && !isNaN(value);
|
|
87
|
+
case 'integer':
|
|
88
|
+
return typeof value === 'number' && !isNaN(value) && Number.isInteger(value);
|
|
81
89
|
case 'boolean':
|
|
82
90
|
return typeof value === 'boolean';
|
|
83
91
|
case 'array':
|
|
84
92
|
return Array.isArray(value);
|
|
85
93
|
case 'object':
|
|
86
94
|
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
95
|
+
case 'json':
|
|
96
|
+
// Accepts any JSON-compatible value: already-parsed object/array, primitives,
|
|
97
|
+
// or a string that is valid JSON.
|
|
98
|
+
if (value === null || value === undefined)
|
|
99
|
+
return false;
|
|
100
|
+
if (typeof value !== 'string')
|
|
101
|
+
return true; // already parsed
|
|
102
|
+
try {
|
|
103
|
+
JSON.parse(value);
|
|
104
|
+
return true;
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
return false;
|
|
108
|
+
}
|
|
109
|
+
default:
|
|
110
|
+
return true; // Unknown type — allow it
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Coerce a parameter value to its declared type.
|
|
115
|
+
* CLI args always arrive as strings; this converts them to the correct runtime type
|
|
116
|
+
* before the value is handed to the template engine.
|
|
117
|
+
* Already-correct types (e.g. from a JSON params file) are passed through unchanged.
|
|
118
|
+
*/
|
|
119
|
+
coerceParameterValue(value, type) {
|
|
120
|
+
if (value === null || value === undefined)
|
|
121
|
+
return value;
|
|
122
|
+
switch (type) {
|
|
123
|
+
case 'boolean':
|
|
124
|
+
if (typeof value === 'boolean')
|
|
125
|
+
return value;
|
|
126
|
+
if (typeof value === 'string') {
|
|
127
|
+
if (value.toLowerCase() === 'true')
|
|
128
|
+
return true;
|
|
129
|
+
if (value.toLowerCase() === 'false')
|
|
130
|
+
return false;
|
|
131
|
+
}
|
|
132
|
+
return value;
|
|
133
|
+
case 'integer':
|
|
134
|
+
if (typeof value === 'number')
|
|
135
|
+
return value;
|
|
136
|
+
if (typeof value === 'string') {
|
|
137
|
+
const n = Number(value);
|
|
138
|
+
if (!isNaN(n))
|
|
139
|
+
return n;
|
|
140
|
+
}
|
|
141
|
+
return value;
|
|
142
|
+
case 'number':
|
|
143
|
+
case 'float':
|
|
144
|
+
if (typeof value === 'number')
|
|
145
|
+
return value;
|
|
146
|
+
if (typeof value === 'string') {
|
|
147
|
+
const n = parseFloat(value);
|
|
148
|
+
if (!isNaN(n))
|
|
149
|
+
return n;
|
|
150
|
+
}
|
|
151
|
+
return value;
|
|
152
|
+
case 'json':
|
|
153
|
+
case 'array':
|
|
154
|
+
case 'object':
|
|
155
|
+
if (typeof value !== 'string')
|
|
156
|
+
return value; // already parsed
|
|
157
|
+
try {
|
|
158
|
+
return JSON.parse(value);
|
|
159
|
+
}
|
|
160
|
+
catch {
|
|
161
|
+
return value;
|
|
162
|
+
}
|
|
87
163
|
default:
|
|
88
|
-
return
|
|
164
|
+
return value;
|
|
89
165
|
}
|
|
90
166
|
}
|
|
91
167
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"semantic.js","sourceRoot":"","sources":["../../../../src/lib/compiler/stages/semantic.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"semantic.js","sourceRoot":"","sources":["../../../../src/lib/compiler/stages/semantic.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../../../src/lib/compiler/stages/template.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAO7D,qBAAa,uBAAwB,YAAW,aAAa;IAC3D,OAAO,CAAC,gBAAgB,CAA2B;IACnD,OAAO,CAAC,WAAW,CAAuB;;IAyB1C;;OAEG;IACH,OAAO,CAAC,eAAe;
|
|
1
|
+
{"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../../../src/lib/compiler/stages/template.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAO7D,qBAAa,uBAAwB,YAAW,aAAa;IAC3D,OAAO,CAAC,gBAAgB,CAA2B;IACnD,OAAO,CAAC,WAAW,CAAuB;;IAyB1C;;OAEG;IACH,OAAO,CAAC,eAAe;IAiLvB;;OAEG;IACH,OAAO,CAAC,QAAQ;IA8BhB;;OAEG;IACH,OAAO,CAAC,YAAY;IA6Bd,OAAO,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAkCzD;;OAEG;YACW,wBAAwB;IAuCtC;;OAEG;YACW,mBAAmB;IAgDjC;;OAEG;YACW,kBAAkB;IAyHhC;;OAEG;YACW,0BAA0B;IA8ExC;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,yBAAyB;IAmCjC;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAsBhC;;;;;;;OAOG;IACH,OAAO,CAAC,gBAAgB;IAuCxB;;;OAGG;YACW,eAAe;IAqF7B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAiP5B;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IAiDlC;;OAEG;IACH,OAAO,CAAC,WAAW;IAInB,OAAO,IAAI,MAAM;CAGlB"}
|
|
@@ -83,13 +83,16 @@ class TemplateProcessingStage {
|
|
|
83
83
|
}
|
|
84
84
|
return this.parseCsv(csvString);
|
|
85
85
|
});
|
|
86
|
-
// fromjson - Parse JSON string into object/array
|
|
87
|
-
|
|
88
|
-
|
|
86
|
+
// fromjson - Parse JSON string into object/array.
|
|
87
|
+
// If the value is already a parsed object or array (e.g. from a JSON params file),
|
|
88
|
+
// pass it through unchanged instead of returning null.
|
|
89
|
+
this.nunjucksEnv.addFilter('fromjson', (value) => {
|
|
90
|
+
if (value === null || value === undefined)
|
|
89
91
|
return null;
|
|
90
|
-
|
|
92
|
+
if (typeof value !== 'string')
|
|
93
|
+
return value; // already parsed
|
|
91
94
|
try {
|
|
92
|
-
return JSON.parse(
|
|
95
|
+
return JSON.parse(value);
|
|
93
96
|
}
|
|
94
97
|
catch {
|
|
95
98
|
return null;
|
|
@@ -719,10 +722,16 @@ class TemplateProcessingStage {
|
|
|
719
722
|
reject(error);
|
|
720
723
|
}
|
|
721
724
|
});
|
|
725
|
+
let timeoutId;
|
|
722
726
|
const timeoutPromise = new Promise((_, reject) => {
|
|
723
|
-
setTimeout(() => reject(new Error('Template rendering timeout')), renderTimeout);
|
|
727
|
+
timeoutId = setTimeout(() => reject(new Error('Template rendering timeout')), renderTimeout);
|
|
724
728
|
});
|
|
725
|
-
|
|
729
|
+
try {
|
|
730
|
+
content = await Promise.race([renderPromise, timeoutPromise]);
|
|
731
|
+
}
|
|
732
|
+
finally {
|
|
733
|
+
clearTimeout(timeoutId);
|
|
734
|
+
}
|
|
726
735
|
}
|
|
727
736
|
catch (error) {
|
|
728
737
|
// Report template syntax errors properly
|
|
@@ -825,13 +834,16 @@ class TemplateProcessingStage {
|
|
|
825
834
|
}
|
|
826
835
|
return this.parseCsv(csvString);
|
|
827
836
|
});
|
|
828
|
-
// fromjson - Parse JSON string into object/array
|
|
829
|
-
|
|
830
|
-
|
|
837
|
+
// fromjson - Parse JSON string into object/array.
|
|
838
|
+
// If the value is already a parsed object or array (e.g. from a JSON params file),
|
|
839
|
+
// pass it through unchanged instead of returning null.
|
|
840
|
+
env.addFilter('fromjson', (value) => {
|
|
841
|
+
if (value === null || value === undefined)
|
|
831
842
|
return null;
|
|
832
|
-
|
|
843
|
+
if (typeof value !== 'string')
|
|
844
|
+
return value; // already parsed
|
|
833
845
|
try {
|
|
834
|
-
return JSON.parse(
|
|
846
|
+
return JSON.parse(value);
|
|
835
847
|
}
|
|
836
848
|
catch {
|
|
837
849
|
return null;
|