aboutsummaryrefslogtreecommitdiff
path: root/src/client/util/Scripting.ts
diff options
context:
space:
mode:
authorA.J. Shulman <Shulman.aj@gmail.com>2024-10-17 17:41:49 -0400
committerA.J. Shulman <Shulman.aj@gmail.com>2024-10-17 17:41:49 -0400
commitc933ae724c1bf77fa8bd83c3c9e27d0029ef5cb0 (patch)
treedf16f68e9bdb822e5f91c997a431c4b130377290 /src/client/util/Scripting.ts
parent98d0bba3e59ab7ec9dfbf5e6c9c58e6ac1d22ae3 (diff)
parentdd93f5175064850c6c0e47f025cd7bbba1f23106 (diff)
Merge branch 'ajs-before-executable' of https://github.com/brown-dash/Dash-Web into ajs-before-executable
Diffstat (limited to 'src/client/util/Scripting.ts')
-rw-r--r--src/client/util/Scripting.ts12
1 files changed, 5 insertions, 7 deletions
diff --git a/src/client/util/Scripting.ts b/src/client/util/Scripting.ts
index b1db0bf39..5d78c2fab 100644
--- a/src/client/util/Scripting.ts
+++ b/src/client/util/Scripting.ts
@@ -48,7 +48,7 @@ export function isCompileError(toBeDetermined: CompileResult): toBeDetermined is
// eslint-disable-next-line no-use-before-define
function Run(script: string | undefined, customParams: string[], diagnostics: ts.Diagnostic[], originalScript: string, options: ScriptOptions): CompileResult {
- const errors = diagnostics.filter(diag => diag.category === ts.DiagnosticCategory.Error);
+ const errors = diagnostics.filter(diag => diag.category === ts.DiagnosticCategory.Error).filter(diag => diag.code !== 2304 && diag.code !== 2339);
if ((options.typecheck !== false && errors.length) || !script) {
return { compiled: false, errors };
}
@@ -188,6 +188,7 @@ export function CompileScript(script: string, options: ScriptOptions = {}): Comp
}, '');
const found = ScriptField.GetScriptFieldCache(script + ':' + signature); // if already compiled, found is the result; cache set below
if (found) return found as CompiledScript;
+ options.typecheck = true;
const { requiredType = '', addReturn = false, params = {}, capturedVariables = {}, typecheck = true } = options;
if (options.params && !options.params.this) options.params.this = Doc.name;
if (options.globals) {
@@ -221,13 +222,10 @@ export function CompileScript(script: string, options: ScriptOptions = {}): Comp
if ('this' in params || 'this' in capturedVariables) {
paramNames.push('this');
}
- for (const key in params) {
- if (key !== 'this') {
- paramNames.push(key);
- }
- }
+ paramNames.push(...Object.keys(params).filter(p => p!== 'this' && !Object.keys(capturedVariables).includes(p)));
+
const paramList = paramNames.map(key => {
- const val = params[key];
+ const val = typeof params[key] === "string" && params[key].length && !"\"'`".includes(params[key][0]) ? `"${params[key]}"` : params[key];
return `${key}: ${val}`;
});
for (const key in capturedVariables) {