@promptbook/node 0.86.22 → 0.86.30
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/esm/index.es.js +7 -138
- package/esm/index.es.js.map +1 -1
- package/esm/typings/src/_packages/utils.index.d.ts +0 -2
- package/package.json +2 -2
- package/umd/index.umd.js +7 -138
- package/umd/index.umd.js.map +1 -1
- package/esm/typings/src/conversion/utils/extractVariablesFromScript.d.ts +0 -14
- package/esm/typings/src/conversion/utils/extractVariablesFromScript.test.d.ts +0 -1
- package/esm/typings/src/scripting/javascript/JavascriptEvalExecutionTools.test.d.ts +0 -4
|
@@ -2,7 +2,6 @@ import { BOOK_LANGUAGE_VERSION, PROMPTBOOK_ENGINE_VERSION } from '../version';
|
|
|
2
2
|
import { VALUE_STRINGS } from '../config';
|
|
3
3
|
import { SMALL_NUMBER } from '../config';
|
|
4
4
|
import { renderPromptbookMermaid } from '../conversion/prettify/renderPipelineMermaidOptions';
|
|
5
|
-
import { extractVariablesFromScript } from '../conversion/utils/extractVariablesFromScript';
|
|
6
5
|
import { deserializeError } from '../errors/utils/deserializeError';
|
|
7
6
|
import { serializeError } from '../errors/utils/serializeError';
|
|
8
7
|
import { forEachAsync } from '../execution/utils/forEachAsync';
|
|
@@ -84,7 +83,6 @@ export { BOOK_LANGUAGE_VERSION, PROMPTBOOK_ENGINE_VERSION };
|
|
|
84
83
|
export { VALUE_STRINGS };
|
|
85
84
|
export { SMALL_NUMBER };
|
|
86
85
|
export { renderPromptbookMermaid };
|
|
87
|
-
export { extractVariablesFromScript };
|
|
88
86
|
export { deserializeError };
|
|
89
87
|
export { serializeError };
|
|
90
88
|
export { forEachAsync };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@promptbook/node",
|
|
3
|
-
"version": "0.86.
|
|
3
|
+
"version": "0.86.30",
|
|
4
4
|
"description": "It's time for a paradigm shift. The future of software in plain English, French or Latin",
|
|
5
5
|
"private": false,
|
|
6
6
|
"sideEffects": false,
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"module": "./esm/index.es.js",
|
|
48
48
|
"typings": "./esm/typings/src/_packages/node.index.d.ts",
|
|
49
49
|
"peerDependencies": {
|
|
50
|
-
"@promptbook/core": "0.86.
|
|
50
|
+
"@promptbook/core": "0.86.30"
|
|
51
51
|
},
|
|
52
52
|
"dependencies": {
|
|
53
53
|
"colors": "1.4.0",
|
package/umd/index.umd.js
CHANGED
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
* @generated
|
|
47
47
|
* @see https://github.com/webgptorg/promptbook
|
|
48
48
|
*/
|
|
49
|
-
const PROMPTBOOK_ENGINE_VERSION = '0.86.
|
|
49
|
+
const PROMPTBOOK_ENGINE_VERSION = '0.86.30';
|
|
50
50
|
/**
|
|
51
51
|
* TODO: string_promptbook_version should be constrained to the all versions of Promptbook engine
|
|
52
52
|
* Note: [💞] Ignore a discrepancy between file name and entity name
|
|
@@ -2132,142 +2132,6 @@
|
|
|
2132
2132
|
}, deepClone(ZERO_USAGE));
|
|
2133
2133
|
}
|
|
2134
2134
|
|
|
2135
|
-
/**
|
|
2136
|
-
* Extract all used variable names from ginen JavaScript/TypeScript script
|
|
2137
|
-
*
|
|
2138
|
-
* @param script JavaScript/TypeScript script
|
|
2139
|
-
* @returns Set of variable names
|
|
2140
|
-
* @throws {ParseError} if the script is invalid
|
|
2141
|
-
* @public exported from `@promptbook/utils` <- Note: [👖] This is usable elsewhere than in Promptbook, so keeping in utils
|
|
2142
|
-
*/
|
|
2143
|
-
function extractVariablesFromScript(script) {
|
|
2144
|
-
if (script.trim() === '') {
|
|
2145
|
-
return new Set();
|
|
2146
|
-
}
|
|
2147
|
-
const variables = new Set();
|
|
2148
|
-
// JS keywords and builtins to exclude
|
|
2149
|
-
const exclude = new Set([
|
|
2150
|
-
// Keywords
|
|
2151
|
-
'break',
|
|
2152
|
-
'case',
|
|
2153
|
-
'catch',
|
|
2154
|
-
'class',
|
|
2155
|
-
'const',
|
|
2156
|
-
'continue',
|
|
2157
|
-
'debugger',
|
|
2158
|
-
'default',
|
|
2159
|
-
'delete',
|
|
2160
|
-
'do',
|
|
2161
|
-
'else',
|
|
2162
|
-
'export',
|
|
2163
|
-
'extends',
|
|
2164
|
-
'false',
|
|
2165
|
-
'finally',
|
|
2166
|
-
'for',
|
|
2167
|
-
'function',
|
|
2168
|
-
'if',
|
|
2169
|
-
'import',
|
|
2170
|
-
'in',
|
|
2171
|
-
'instanceof',
|
|
2172
|
-
'let',
|
|
2173
|
-
'new',
|
|
2174
|
-
'null',
|
|
2175
|
-
'return',
|
|
2176
|
-
'super',
|
|
2177
|
-
'switch',
|
|
2178
|
-
'this',
|
|
2179
|
-
'throw',
|
|
2180
|
-
'true',
|
|
2181
|
-
'try',
|
|
2182
|
-
'typeof',
|
|
2183
|
-
'var',
|
|
2184
|
-
'void',
|
|
2185
|
-
'while',
|
|
2186
|
-
'with',
|
|
2187
|
-
'yield',
|
|
2188
|
-
// Common globals
|
|
2189
|
-
'console',
|
|
2190
|
-
'JSON',
|
|
2191
|
-
'Error',
|
|
2192
|
-
// Typescript types
|
|
2193
|
-
'string',
|
|
2194
|
-
'number',
|
|
2195
|
-
'boolean',
|
|
2196
|
-
'object',
|
|
2197
|
-
'symbol',
|
|
2198
|
-
// Common methods on built-in objects
|
|
2199
|
-
'test',
|
|
2200
|
-
'match',
|
|
2201
|
-
'exec',
|
|
2202
|
-
'replace',
|
|
2203
|
-
'search',
|
|
2204
|
-
'split',
|
|
2205
|
-
]);
|
|
2206
|
-
try {
|
|
2207
|
-
// Note: Extract variables from template literals like ${variable}
|
|
2208
|
-
const templateRegex = /\$\{([a-zA-Z_$][a-zA-Z0-9_$]*)\}/g;
|
|
2209
|
-
let match;
|
|
2210
|
-
while ((match = templateRegex.exec(script)) !== null) {
|
|
2211
|
-
const varName = match[1];
|
|
2212
|
-
if (!exclude.has(varName)) {
|
|
2213
|
-
variables.add(varName);
|
|
2214
|
-
}
|
|
2215
|
-
}
|
|
2216
|
-
// Note: Process the script to handle normal variable usage
|
|
2217
|
-
const processedScript = script
|
|
2218
|
-
.replace(/'(?:\\.|[^'\\])*'/g, "''") // <- Note: Remove string literals
|
|
2219
|
-
.replace(/"(?:\\.|[^"\\])*"/g, '""')
|
|
2220
|
-
.replace(/`(?:\\.|[^`\\])*`/g, '``')
|
|
2221
|
-
.replace(/\/(?:\\.|[^/\\])*\/[gimsuy]*/g, '{}'); // <- Note: Remove regex literals
|
|
2222
|
-
// Note: Find identifiers in function arguments
|
|
2223
|
-
const funcArgRegex = /\b([a-zA-Z_$][a-zA-Z0-9_$]*)\s*\(/g;
|
|
2224
|
-
const funcNames = new Set();
|
|
2225
|
-
while ((match = funcArgRegex.exec(processedScript)) !== null) {
|
|
2226
|
-
funcNames.add(match[1]);
|
|
2227
|
-
}
|
|
2228
|
-
// Find variable declarations to exclude them
|
|
2229
|
-
const declaredVars = new Set();
|
|
2230
|
-
const declRegex = /\b(const|let|var)\s+([a-zA-Z_$][a-zA-Z0-9_$]*)\b/g;
|
|
2231
|
-
while ((match = declRegex.exec(processedScript)) !== null) {
|
|
2232
|
-
declaredVars.add(match[2]);
|
|
2233
|
-
}
|
|
2234
|
-
// Note: Find identifiers in the script
|
|
2235
|
-
const identifierRegex = /\b([a-zA-Z_$][a-zA-Z0-9_$]*)\b/g;
|
|
2236
|
-
while ((match = identifierRegex.exec(processedScript)) !== null) {
|
|
2237
|
-
const name = match[1];
|
|
2238
|
-
// Add if not excluded, not a function name, and not a declared variable
|
|
2239
|
-
if (!exclude.has(name) && !funcNames.has(name) && !declaredVars.has(name)) {
|
|
2240
|
-
variables.add(name);
|
|
2241
|
-
}
|
|
2242
|
-
}
|
|
2243
|
-
}
|
|
2244
|
-
catch (error) {
|
|
2245
|
-
if (!(error instanceof Error)) {
|
|
2246
|
-
throw error;
|
|
2247
|
-
}
|
|
2248
|
-
throw new ParseError(spaceTrim__default["default"]((block) => `
|
|
2249
|
-
Can not extract variables from the script
|
|
2250
|
-
${block(error.stack || error.message)}
|
|
2251
|
-
|
|
2252
|
-
Found variables:
|
|
2253
|
-
${Array.from(variables)
|
|
2254
|
-
.map((variableName, i) => `${i + 1}) ${variableName}`)
|
|
2255
|
-
.join('\n')}
|
|
2256
|
-
|
|
2257
|
-
|
|
2258
|
-
The script:
|
|
2259
|
-
|
|
2260
|
-
\`\`\`javascript
|
|
2261
|
-
${block(script)}
|
|
2262
|
-
\`\`\`
|
|
2263
|
-
`));
|
|
2264
|
-
}
|
|
2265
|
-
return variables;
|
|
2266
|
-
}
|
|
2267
|
-
/**
|
|
2268
|
-
* TODO: [🔣] Support for multiple languages - python, java,...
|
|
2269
|
-
*/
|
|
2270
|
-
|
|
2271
2135
|
/**
|
|
2272
2136
|
* Parses the task and returns the set of all used parameters
|
|
2273
2137
|
*
|
|
@@ -2277,7 +2141,7 @@
|
|
|
2277
2141
|
* @public exported from `@promptbook/core` <- Note: [👖] This utility is so tightly interconnected with the Promptbook that it is not exported as util but in core
|
|
2278
2142
|
*/
|
|
2279
2143
|
function extractParameterNamesFromTask(task) {
|
|
2280
|
-
const { title, description, taskType
|
|
2144
|
+
const { title, description, /* [🙊] taskType,*/ content, preparedContent, jokerParameterNames, foreach } = task;
|
|
2281
2145
|
const parameterNames = new Set();
|
|
2282
2146
|
for (const parameterName of [
|
|
2283
2147
|
...extractParameterNames(title),
|
|
@@ -2287,11 +2151,14 @@
|
|
|
2287
2151
|
]) {
|
|
2288
2152
|
parameterNames.add(parameterName);
|
|
2289
2153
|
}
|
|
2154
|
+
/*/
|
|
2155
|
+
// TODO: [🙊] Fix `extractVariablesFromScript` or delete
|
|
2290
2156
|
if (taskType === 'SCRIPT_TASK') {
|
|
2291
2157
|
for (const parameterName of extractVariablesFromScript(content)) {
|
|
2292
2158
|
parameterNames.add(parameterName);
|
|
2293
2159
|
}
|
|
2294
2160
|
}
|
|
2161
|
+
/**/
|
|
2295
2162
|
for (const jokerName of jokerParameterNames || []) {
|
|
2296
2163
|
parameterNames.add(jokerName);
|
|
2297
2164
|
}
|
|
@@ -10081,6 +9948,8 @@
|
|
|
10081
9948
|
// Note: Custom functions are exposed to the current scope as variables
|
|
10082
9949
|
`const ${functionName} = customFunctions.${functionName};`)
|
|
10083
9950
|
.join('\n');
|
|
9951
|
+
script = templateParameters(script, parameters);
|
|
9952
|
+
// <- Note: [🙊]
|
|
10084
9953
|
const statementToEvaluate = spaceTrim__default["default"]((block) => `
|
|
10085
9954
|
|
|
10086
9955
|
// Build-in functions:
|