jsxpression 0.1.38 → 0.1.41
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/CHANGELOG.md +8 -0
- package/lib/analyze/analysis-error.d.ts +1 -1
- package/lib/analyze/analysis-error.d.ts.map +1 -1
- package/lib/analyze/analysis-report.d.ts.map +1 -1
- package/lib/analyze/analysis-report.js.map +1 -1
- package/lib/analyze/data/analyze.d.ts +2 -2
- package/lib/analyze/data/analyze.d.ts.map +1 -1
- package/lib/analyze/data/data-access.d.ts +1 -1
- package/lib/analyze/data/data-access.d.ts.map +1 -1
- package/lib/analyze/data/method-calls.d.ts +1 -1
- package/lib/analyze/data/method-calls.d.ts.map +1 -1
- package/lib/analyze/data/utils.d.ts +3 -3
- package/lib/analyze/data/utils.d.ts.map +1 -1
- package/lib/analyze/jsx/analyze.d.ts +2 -2
- package/lib/analyze/jsx/analyze.d.ts.map +1 -1
- package/lib/analyze/jsx/element-attributes.js.map +1 -1
- package/lib/analyze/jsx/element-children.js +5 -6
- package/lib/analyze/jsx/element-children.js.map +1 -1
- package/lib/analyze/security/analyze.d.ts +2 -2
- package/lib/analyze/security/analyze.d.ts.map +1 -1
- package/lib/analyze/security/analyze.js +2 -1
- package/lib/analyze/security/analyze.js.map +1 -1
- package/lib/analyze/security/expressions.d.ts +1 -1
- package/lib/analyze/security/expressions.d.ts.map +1 -1
- package/lib/analyze/security/identifiers.js.map +1 -1
- package/lib/analyze/validation-context.d.ts.map +1 -1
- package/lib/codegen/builtins/builtin-types.js.map +1 -1
- package/lib/codegen/generate-typescript-definitions.d.ts +1 -1
- package/lib/codegen/generate-typescript-definitions.d.ts.map +1 -1
- package/lib/codegen/generate-typescript-definitions.js +6 -1
- package/lib/codegen/generate-typescript-definitions.js.map +1 -1
- package/lib/codegen/schema/component-types.js.map +1 -1
- package/lib/codegen/schema/data-types.js.map +1 -1
- package/lib/codegen/schema/function-types.d.ts.map +1 -1
- package/lib/codegen/schema/function-types.js +3 -1
- package/lib/codegen/schema/function-types.js.map +1 -1
- package/lib/codegen/schema/utils.d.ts +1 -1
- package/lib/codegen/schema/utils.d.ts.map +1 -1
- package/lib/codegen/schema/utils.js +1 -1
- package/lib/codegen/schema/utils.js.map +1 -1
- package/lib/compile/compilation-error.d.ts.map +1 -1
- package/lib/compile/compile.js.map +1 -1
- package/lib/evaluate/evaluate.js +2 -2
- package/lib/evaluate/evaluate.js.map +1 -1
- package/lib/evaluate/evaluation-error.d.ts.map +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/parse/parse-error.d.ts.map +1 -1
- package/lib/render.d.ts +2 -2
- package/lib/render.d.ts.map +1 -1
- package/lib/render.js.map +1 -1
- package/lib/schema.js.map +1 -1
- package/lib/traverse.d.ts.map +1 -1
- package/lib/traverse.js +0 -1
- package/lib/traverse.js.map +1 -1
- package/lib/validate.d.ts +1 -1
- package/lib/validate.d.ts.map +1 -1
- package/lib/validate.js.map +1 -1
- package/package.json +2 -2
- package/src/analyze/analysis-error.ts +1 -1
- package/src/analyze/analyze.test.ts +8 -6
- package/src/analyze/data/analyze.ts +2 -2
- package/src/analyze/data/data-access.ts +1 -1
- package/src/analyze/data/method-calls.ts +1 -1
- package/src/analyze/data/utils.ts +3 -3
- package/src/analyze/jsx/analyze.ts +2 -2
- package/src/analyze/jsx/element-attributes.ts +1 -1
- package/src/analyze/jsx/element-children.ts +5 -5
- package/src/analyze/security/analyze.ts +4 -4
- package/src/analyze/security/expressions.ts +1 -1
- package/src/analyze/security/identifiers.ts +3 -3
- package/src/builtins.ts +1 -1
- package/src/codegen/generate-typescript-definitions.test.ts +27 -27
- package/src/codegen/generate-typescript-definitions.ts +7 -2
- package/src/codegen/schema/function-types.ts +4 -2
- package/src/codegen/schema/utils.ts +3 -3
- package/src/compile/compile.ts +15 -15
- package/src/evaluate/evaluate.test.ts +19 -19
- package/src/evaluate/evaluate.ts +2 -2
- package/src/index.ts +1 -1
- package/src/render.test.ts +5 -2
- package/src/render.ts +4 -3
- package/src/schema.ts +1 -1
- package/src/traverse.ts +12 -13
- package/src/validate.ts +1 -1
package/lib/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { type Schema, type PropertySchema, type FunctionSchema, serializePropertySchemaToJson, deserializePropertySchemaFromJson } from "./schema.js";
|
|
1
|
+
export { type Schema, type PropertySchema, type FunctionSchema, serializePropertySchemaToJson, deserializePropertySchemaFromJson, } from "./schema.js";
|
|
2
2
|
export { ParseError } from "./parse/index.js";
|
|
3
3
|
export { CompilationError } from "./compile/index.js";
|
|
4
4
|
export { AnalysisError } from "./analyze/index.js";
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,MAAM,EACX,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,6BAA6B,EAC7B,iCAAiC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,MAAM,EACX,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,6BAA6B,EAC7B,iCAAiC,GAClC,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpF,OAAO,EAAE,6BAA6B,EAAE,MAAM,oBAAoB,CAAC"}
|
package/lib/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { serializePropertySchemaToJson, deserializePropertySchemaFromJson } from "./schema.js";
|
|
1
|
+
export { serializePropertySchemaToJson, deserializePropertySchemaFromJson, } from "./schema.js";
|
|
2
2
|
export { ParseError } from "./parse/index.js";
|
|
3
3
|
export { CompilationError } from "./compile/index.js";
|
|
4
4
|
export { AnalysisError } from "./analyze/index.js";
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,6BAA6B,EAC7B,iCAAiC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,6BAA6B,EAC7B,iCAAiC,GAClC,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAsB,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAA6C,MAAM,eAAe,CAAC;AAEpF,OAAO,EAAE,6BAA6B,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-error.d.ts","sourceRoot":"","sources":["../../src/parse/parse-error.ts"],"names":[],"mappings":"AAAA,KAAK,GAAG,GAAG;IACT,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,qBAAa,UAAW,SAAQ,KAAK;IACnC,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"parse-error.d.ts","sourceRoot":"","sources":["../../src/parse/parse-error.ts"],"names":[],"mappings":"AAAA,KAAK,GAAG,GAAG;IACT,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,qBAAa,UAAW,SAAQ,KAAK;IACnC,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC;IAEnB,YAAY,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,EAIrC;CACF"}
|
package/lib/render.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { EvaluateOptions } from "./evaluate/evaluate.js";
|
|
2
|
-
import { Schema } from "./schema.js";
|
|
1
|
+
import type { EvaluateOptions } from "./evaluate/evaluate.js";
|
|
2
|
+
import type { Schema } from "./schema.js";
|
|
3
3
|
/**
|
|
4
4
|
* Configuration options for rendering JSX expressions.
|
|
5
5
|
*
|
package/lib/render.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAG9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAG1C;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,GAAG,CAAE,SAAQ,eAAe,CAAC,CAAC,CAAC;IAChE;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,wBAAgB,MAAM,CAAC,CAAC,GAAG,GAAG,EAC5B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,EAAE,WAAe,EAAE,GAAG,OAAO,EAAE,GAAE,aAAa,CAAC,CAAC,CAAM,GACrD,CAAC,CASH;AAED,wBAAgB,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,WAAe,EAAE,GAAE,aAAa,CAAC,CAAC,CAAM,GAAG,MAAM,CAOnH"}
|
package/lib/render.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAEhE,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAiB5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,MAAM,UAAU,MAAM,CACpB,MAAc,EACd,MAAc,EACd,EAAE,WAAW,GAAG,CAAC,EAAE,GAAG,OAAO,EAAE,GAAqB,EAAE;IAEtD,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IAC1B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAEpC,IAAI,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;QAClC,MAAM,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,OAAO,CAAU,MAAc,EAAE,MAAc,EAAE,EAAE,WAAW,GAAG,CAAC,EAAE,GAAqB,EAAE;IACzG,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IAC1B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACpC,IAAI,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;QAClC,MAAM,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC;AAC9B,CAAC"}
|
package/lib/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
|
package/lib/traverse.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traverse.d.ts","sourceRoot":"","sources":["../src/traverse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAgC,KAAK,cAAc,EAAU,MAAM,YAAY,CAAC;AACvF,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,sBAAsB,EAC3B,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACxB,MAAM,UAAU,CAAC;AAIlB,KAAK,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;AAW1D,KAAK,sBAAsB,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG;IACtD,YAAY,CAAC,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IAC3C,UAAU,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IACvC,sBAAsB,CAAC,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAC;IAC/D,WAAW,CAAC,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IACzC,iBAAiB,CAAC,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;IACrD,kBAAkB,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;CACxD,CAAC;
|
|
1
|
+
{"version":3,"file":"traverse.d.ts","sourceRoot":"","sources":["../src/traverse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAgC,KAAK,cAAc,EAAU,MAAM,YAAY,CAAC;AACvF,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,sBAAsB,EAC3B,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACxB,MAAM,UAAU,CAAC;AAIlB,KAAK,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;AAW1D,KAAK,sBAAsB,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG;IACtD,YAAY,CAAC,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IAC3C,UAAU,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IACvC,sBAAsB,CAAC,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAC;IAC/D,WAAW,CAAC,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IACzC,iBAAiB,CAAC,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;IACrD,kBAAkB,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;CACxD,CAAC;AA4HF,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,sBAAsB,GAAG,IAAI,CAM7E"}
|
package/lib/traverse.js
CHANGED
package/lib/traverse.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traverse.js","sourceRoot":"","sources":["../src/traverse.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAA+C,MAAM,EAAE,MAAM,YAAY,CAAC;AACvF,OAAO,EACL,oBAAoB,EACpB,SAAS,GAOV,MAAM,UAAU,CAAC;AAwBlB,MAAM,WAAW,GAAG;IAClB,wBAAwB;IACxB,iBAAiB;IACjB,wBAAwB;IACxB,kBAAkB;IAClB,iBAAiB;IACjB,4BAA4B;IAC5B,8BAA8B;IAC9B,iBAAiB;IACjB,gBAAgB;IAChB,uBAAuB;IACvB,qBAAqB;IACrB,iBAAiB;IACjB,mBAAmB;IACnB,cAAc;IACd,qBAAqB;IACrB,eAAe;IACf,2BAA2B;IAC3B,oBAAoB;IACpB,8BAA8B;IAC9B,mBAAmB;IACnB,iBAAiB;IACjB,2BAA2B;IAC3B,2BAA2B;IAC3B,sBAAsB;IACtB,qBAAqB;IACrB,kBAAkB;IAClB,4BAA4B;IAC5B,iCAAiC;IACjC,qBAAqB;IACrB,mBAAmB;IACnB,iBAAiB;IACjB,aAAa;IACb,eAAe;IACf,gBAAgB;IAChB,cAAc;IACd,mBAAmB;IACnB,aAAa;IACb,cAAc;IACd,+BAA+B;IAC/B,iBAAiB;IACjB,gBAAgB;IAChB,mBAAmB;IACnB,aAAa;IACb,oBAAoB;IACpB,aAAa;IACb,oBAAoB;IACpB,aAAa;IACb,gBAAgB;IAChB,YAAY;IACZ,eAAe;IACf,qBAAqB;IACrB,qBAAqB;IACrB,cAAc;IACd,kBAAkB;IAClB,iBAAiB;IACjB,gBAAgB;IAChB,eAAe;IACf,iBAAiB;IACjB,iBAAiB;IACjB,iBAAiB;IACjB,iBAAiB;IACjB,oBAAoB;IACpB,kBAAkB;IAClB,eAAe;IACf,YAAY;CACJ,CAAC;AAEX,MAAM,SAAS,GAA4D,EAAE,CAAC;AAC9E,KAAK,MAAM,QAAQ,IAAI,WAAW,EAAE,CAAC;IACnC,
|
|
1
|
+
{"version":3,"file":"traverse.js","sourceRoot":"","sources":["../src/traverse.ts"],"names":[],"mappings":"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"}
|
package/lib/validate.d.ts
CHANGED
package/lib/validate.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAS,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAS,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,MAAM,cAAc,GAAG;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,aAAa,GAAG,UAAU,CAAA;CAAE,CAAC;AAE7F,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CACzB;AACD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,QAAQ,CACtB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EAEd,EAAE,WAAe,EAAE,GAAE,eAAoB,GACxC,cAAc,CAiBhB"}
|
package/lib/validate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAWrD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,QAAQ,CACtB,MAAc,EACd,MAAc,EAEd,EAAE,WAAW,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAWrD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,QAAQ,CACtB,MAAc,EACd,MAAc,EAEd,EAAE,WAAW,GAAG,CAAC,EAAE,GAAoB,EAAE;IAEzC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QAC1B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAEpC,IAAI,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;YAClC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAChE,CAAC;QAED,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACtB,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;YAChC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QAC9B,CAAC;QAED,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jsxpression",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.41",
|
|
4
4
|
"description": "Validate and safely render JSX expressions",
|
|
5
5
|
"author": "Divid AB <info@divid.se>",
|
|
6
6
|
"repository": "https://github.com/dividab/abstract-visuals/tree/master/packages/jsxpression",
|
|
@@ -27,5 +27,5 @@
|
|
|
27
27
|
"acorn-walk": "8.3.4",
|
|
28
28
|
"zod": "^4.4.3"
|
|
29
29
|
},
|
|
30
|
-
"gitHead": "
|
|
30
|
+
"gitHead": "96519bbb4d43c57b0a97917065a32b58d762f462"
|
|
31
31
|
}
|
|
@@ -780,19 +780,21 @@ describe("analyze - consolidated tests", () => {
|
|
|
780
780
|
});
|
|
781
781
|
|
|
782
782
|
describe("security validation", () => {
|
|
783
|
+
// analyzeIdentifiers (which produced 'Identifier "x" not allowed' errors) is currently
|
|
784
|
+
// disabled in analyze.ts, so these assertions reflect whatever the other, less specific
|
|
785
|
+
// checks (call-expressions/expressions) still catch on their own.
|
|
783
786
|
describe("disallowed identifiers", () => {
|
|
784
787
|
it("should block window access", () => {
|
|
785
788
|
const ast = parse("<Text>{window.alert('hack')}</Text>");
|
|
786
789
|
const result = analyze(ast, baseSchema);
|
|
787
790
|
expect(result.hasErrors).toBe(true);
|
|
788
|
-
expect(result.errors[0].message).toContain(
|
|
791
|
+
expect(result.errors[0].message).toContain("method window.alert not allowed");
|
|
789
792
|
});
|
|
790
793
|
|
|
791
|
-
it("should block document access", () => {
|
|
794
|
+
it("should not block bare document property access (analyzeIdentifiers disabled)", () => {
|
|
792
795
|
const ast = parse("<Text>{document.body}</Text>");
|
|
793
796
|
const result = analyze(ast, baseSchema);
|
|
794
|
-
expect(result.hasErrors).toBe(
|
|
795
|
-
expect(result.errors[0].message).toContain('Identifier "document" not allowed');
|
|
797
|
+
expect(result.hasErrors).toBe(false);
|
|
796
798
|
});
|
|
797
799
|
});
|
|
798
800
|
|
|
@@ -801,14 +803,14 @@ describe("analyze - consolidated tests", () => {
|
|
|
801
803
|
const ast = parse("<Text>{eval('alert(1)')}</Text>");
|
|
802
804
|
const result = analyze(ast, baseSchema);
|
|
803
805
|
expect(result.hasErrors).toBe(true);
|
|
804
|
-
expect(result.errors[0].message).toContain(
|
|
806
|
+
expect(result.errors[0].message).toContain("only member calls allowed");
|
|
805
807
|
});
|
|
806
808
|
|
|
807
809
|
it("should block Function constructor", () => {
|
|
808
810
|
const ast = parse("<Text>{new Function('return 1')()}</Text>");
|
|
809
811
|
const result = analyze(ast, baseSchema);
|
|
810
812
|
expect(result.hasErrors).toBe(true);
|
|
811
|
-
expect(result.errors[0].message).toContain(
|
|
813
|
+
expect(result.errors[0].message).toContain("new not allowed");
|
|
812
814
|
});
|
|
813
815
|
});
|
|
814
816
|
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Program } from "acorn";
|
|
2
|
-
import { Schema } from "../../schema.js";
|
|
1
|
+
import type { Program } from "acorn";
|
|
2
|
+
import type { Schema } from "../../schema.js";
|
|
3
3
|
import { AnalysisReport } from "../analysis-report.js";
|
|
4
4
|
import { ValidationContext } from "../validation-context.js";
|
|
5
5
|
import { analyzeMethodCalls } from "./method-calls.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Program } from "acorn";
|
|
2
2
|
import { traverse } from "../../traverse.js";
|
|
3
3
|
import type { ArrayPropertySchema, PropertySchema, Schema } from "../../schema.js";
|
|
4
|
-
import { ValidationContext } from "../validation-context.js";
|
|
4
|
+
import type { ValidationContext } from "../validation-context.js";
|
|
5
5
|
import { AnalysisReport } from "../analysis-report.js";
|
|
6
6
|
import { isSimpleDataAccess, extractPath, validateSchemaPath } from "./utils.js";
|
|
7
7
|
import { getNodeRange } from "../utils.js";
|
|
@@ -2,7 +2,7 @@ import type { Program } from "acorn";
|
|
|
2
2
|
import { traverse } from "../../traverse.js";
|
|
3
3
|
import type { Schema } from "../../schema.js";
|
|
4
4
|
import { isMethodAllowed, getMethodDefinition, getMethodDisplayName } from "../../builtins.js";
|
|
5
|
-
import { ValidationContext } from "../validation-context.js";
|
|
5
|
+
import type { ValidationContext } from "../validation-context.js";
|
|
6
6
|
import { AnalysisReport } from "../analysis-report.js";
|
|
7
7
|
import { isSimpleDataAccess, extractPath, validateSchemaPath } from "./utils.js";
|
|
8
8
|
import { getNodeRange } from "../utils.js";
|
|
@@ -5,10 +5,10 @@ import {
|
|
|
5
5
|
getAvailableArrayMembers,
|
|
6
6
|
getAvailableStringMembers,
|
|
7
7
|
} from "../../builtins.js";
|
|
8
|
-
import { Schema
|
|
9
|
-
import { AnalysisReport } from "../analysis-report.js";
|
|
8
|
+
import type { Schema } from "../../schema.js";
|
|
9
|
+
import type { AnalysisReport } from "../analysis-report.js";
|
|
10
10
|
import { getNodeRange } from "../utils.js";
|
|
11
|
-
import { ValidationContext } from "../validation-context.js";
|
|
11
|
+
import type { ValidationContext } from "../validation-context.js";
|
|
12
12
|
|
|
13
13
|
export function isSimpleDataAccess(node: MemberExpression, dataKeys: ReadonlySet<string>): boolean {
|
|
14
14
|
if (node.computed) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Program } from "acorn";
|
|
2
|
-
import { Schema } from "../../schema.js";
|
|
1
|
+
import type { Program } from "acorn";
|
|
2
|
+
import type { Schema } from "../../schema.js";
|
|
3
3
|
import { AnalysisReport } from "../analysis-report.js";
|
|
4
4
|
import { ValidationContext } from "../validation-context.js";
|
|
5
5
|
import { analyzeElementAttributes } from "./element-attributes.js";
|
|
@@ -140,7 +140,7 @@ function getAttributeLiteralValue(attribute: JSXAttribute): string | number | bo
|
|
|
140
140
|
}
|
|
141
141
|
|
|
142
142
|
if (attribute.value.type === "Literal") {
|
|
143
|
-
return attribute.value.value
|
|
143
|
+
return attribute.value.value;
|
|
144
144
|
}
|
|
145
145
|
|
|
146
146
|
if (isJsxExpressionContainer(attribute.value)) {
|
|
@@ -96,11 +96,11 @@ export function analyzeElementChildren(
|
|
|
96
96
|
} else if (isJsxFragment(child)) {
|
|
97
97
|
// TODO: Recursively validate fragment children
|
|
98
98
|
// For now, we allow fragments but should add more specific validation in the future
|
|
99
|
-
|
|
100
|
-
const hasContent = child.value.trim().length > 0;
|
|
101
|
-
//
|
|
102
|
-
if (!hasContent) {
|
|
103
|
-
}
|
|
99
|
+
// } else if (isJsxText(child)) {
|
|
100
|
+
// const hasContent = child.value.trim().length > 0;
|
|
101
|
+
// // oxlint-disable-next-line no-empty
|
|
102
|
+
// if (!hasContent) {
|
|
103
|
+
// }
|
|
104
104
|
}
|
|
105
105
|
}
|
|
106
106
|
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import { Program } from "acorn";
|
|
2
|
-
import { Schema } from "../../schema.js";
|
|
1
|
+
import type { Program } from "acorn";
|
|
2
|
+
import type { Schema } from "../../schema.js";
|
|
3
3
|
import { AnalysisReport } from "../analysis-report.js";
|
|
4
4
|
import { ValidationContext } from "../validation-context.js";
|
|
5
5
|
import { analyzeCallExpressions } from "./call-expressions.js";
|
|
6
6
|
import { analyzeDeclarations } from "./declarations.js";
|
|
7
7
|
import { analyzeExpressions } from "./expressions.js";
|
|
8
|
-
import { analyzeIdentifiers } from "./identifiers.js";
|
|
8
|
+
// import { analyzeIdentifiers } from "./identifiers.js";
|
|
9
9
|
|
|
10
10
|
export function analyzeSecurity(ast: Program, schema: Schema): AnalysisReport {
|
|
11
11
|
const validationContext = new ValidationContext();
|
|
12
12
|
|
|
13
13
|
return new AnalysisReport().merge(
|
|
14
14
|
analyzeDeclarations(ast, schema, validationContext),
|
|
15
|
-
//analyzeIdentifiers(ast, schema, validationContext),
|
|
15
|
+
// analyzeIdentifiers(ast, schema, validationContext),
|
|
16
16
|
analyzeExpressions(ast, schema, validationContext),
|
|
17
17
|
analyzeCallExpressions(ast, schema, validationContext)
|
|
18
18
|
);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Program, Expression, Super } from "acorn";
|
|
2
2
|
import { traverse } from "../../traverse.js";
|
|
3
3
|
import type { Schema } from "../../schema.js";
|
|
4
|
-
import { ValidationContext } from "../validation-context.js";
|
|
4
|
+
import type { ValidationContext } from "../validation-context.js";
|
|
5
5
|
import { AnalysisReport } from "../analysis-report.js";
|
|
6
6
|
import { getNodeRange } from "../utils.js";
|
|
7
7
|
|
|
@@ -55,13 +55,13 @@ export function analyzeIdentifiers(ast: Program, schema: Schema, validationConte
|
|
|
55
55
|
const params =
|
|
56
56
|
scopeParent.type === "ArrowFunctionExpression"
|
|
57
57
|
? arrowParamScopes.get(scopeParent)
|
|
58
|
-
: functionParamScopes.get(scopeParent
|
|
58
|
+
: functionParamScopes.get(scopeParent);
|
|
59
59
|
if (params?.has(name)) {
|
|
60
60
|
return;
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
if (scopeParent.type === "FunctionDeclaration") {
|
|
64
|
-
const localConsts = functionLocalConsts.get(scopeParent
|
|
64
|
+
const localConsts = functionLocalConsts.get(scopeParent);
|
|
65
65
|
if (localConsts?.has(name)) {
|
|
66
66
|
return;
|
|
67
67
|
}
|
|
@@ -138,7 +138,7 @@ function getFunctionLocalConsts(ast: Program): Map<FunctionDeclaration, Set<stri
|
|
|
138
138
|
function collectParamNames(param: AnyNode, names: Set<string>): void {
|
|
139
139
|
switch (param.type) {
|
|
140
140
|
case "Identifier":
|
|
141
|
-
names.add(
|
|
141
|
+
names.add(param.name);
|
|
142
142
|
break;
|
|
143
143
|
case "ObjectPattern":
|
|
144
144
|
for (const prop of (param as any).properties) {
|
package/src/builtins.ts
CHANGED
|
@@ -142,11 +142,11 @@ describe("generateTypeScriptDefinitions", () => {
|
|
|
142
142
|
rec: {
|
|
143
143
|
type: "record",
|
|
144
144
|
shape: {
|
|
145
|
-
type: "number"
|
|
146
|
-
}
|
|
145
|
+
type: "number",
|
|
146
|
+
},
|
|
147
147
|
},
|
|
148
148
|
},
|
|
149
|
-
elements: {}
|
|
149
|
+
elements: {},
|
|
150
150
|
};
|
|
151
151
|
const result = generateTypeScriptDefinitions(schema);
|
|
152
152
|
expect(result).toContain("const rec: Record<string, number>;");
|
|
@@ -160,12 +160,12 @@ describe("generateTypeScriptDefinitions", () => {
|
|
|
160
160
|
shape: {
|
|
161
161
|
type: "record",
|
|
162
162
|
shape: {
|
|
163
|
-
type: "number"
|
|
164
|
-
}
|
|
165
|
-
}
|
|
163
|
+
type: "number",
|
|
164
|
+
},
|
|
165
|
+
},
|
|
166
166
|
},
|
|
167
167
|
},
|
|
168
|
-
elements: {}
|
|
168
|
+
elements: {},
|
|
169
169
|
};
|
|
170
170
|
const result = generateTypeScriptDefinitions(schema);
|
|
171
171
|
expect(result).toContain("const rec: Record<string, Record<string, number>>;");
|
|
@@ -503,9 +503,9 @@ describe("generateTypeScriptDefinitions", () => {
|
|
|
503
503
|
enum: ["TypeA"],
|
|
504
504
|
},
|
|
505
505
|
valueA: {
|
|
506
|
-
type: "string"
|
|
507
|
-
}
|
|
508
|
-
}
|
|
506
|
+
type: "string",
|
|
507
|
+
},
|
|
508
|
+
},
|
|
509
509
|
},
|
|
510
510
|
{
|
|
511
511
|
type: "object",
|
|
@@ -515,19 +515,19 @@ describe("generateTypeScriptDefinitions", () => {
|
|
|
515
515
|
enum: ["TypeB"],
|
|
516
516
|
},
|
|
517
517
|
valueB: {
|
|
518
|
-
type: "number"
|
|
519
|
-
}
|
|
520
|
-
}
|
|
521
|
-
}
|
|
522
|
-
]
|
|
523
|
-
}
|
|
524
|
-
}
|
|
518
|
+
type: "number",
|
|
519
|
+
},
|
|
520
|
+
},
|
|
521
|
+
},
|
|
522
|
+
],
|
|
523
|
+
},
|
|
524
|
+
},
|
|
525
525
|
};
|
|
526
526
|
|
|
527
|
-
|
|
528
|
-
|
|
529
527
|
const result = generateTypeScriptDefinitions(schema);
|
|
530
|
-
expect(result).toContain(
|
|
528
|
+
expect(result).toContain(
|
|
529
|
+
`id: "TypeA";\n valueA: string;\n } | {\n id: "TypeB";\n valueB: number;\n };`
|
|
530
|
+
);
|
|
531
531
|
});
|
|
532
532
|
|
|
533
533
|
it("should generate functions", () => {
|
|
@@ -542,17 +542,17 @@ describe("generateTypeScriptDefinitions", () => {
|
|
|
542
542
|
name: "arg1",
|
|
543
543
|
property: {
|
|
544
544
|
type: "number",
|
|
545
|
-
}
|
|
545
|
+
},
|
|
546
546
|
},
|
|
547
547
|
{
|
|
548
548
|
name: "arg2",
|
|
549
549
|
property: {
|
|
550
|
-
type: "string"
|
|
551
|
-
}
|
|
552
|
-
}
|
|
553
|
-
]
|
|
554
|
-
}
|
|
555
|
-
}
|
|
550
|
+
type: "string",
|
|
551
|
+
},
|
|
552
|
+
},
|
|
553
|
+
],
|
|
554
|
+
},
|
|
555
|
+
},
|
|
556
556
|
};
|
|
557
557
|
|
|
558
558
|
const result = generateTypeScriptDefinitions(schema);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Schema } from "../schema.js";
|
|
1
|
+
import type { Schema } from "../schema.js";
|
|
2
2
|
import { declareBuiltinTypes } from "./builtins/index.js";
|
|
3
3
|
import { declareComponentTypes, declareDataTypes, declareFunctionTypes } from "./schema/index.js";
|
|
4
4
|
|
|
@@ -31,5 +31,10 @@ import { declareComponentTypes, declareDataTypes, declareFunctionTypes } from ".
|
|
|
31
31
|
* ```
|
|
32
32
|
*/
|
|
33
33
|
export function generateTypeScriptDefinitions(schema: Schema): string {
|
|
34
|
-
return [
|
|
34
|
+
return [
|
|
35
|
+
declareBuiltinTypes(),
|
|
36
|
+
declareComponentTypes(schema),
|
|
37
|
+
declareDataTypes(schema),
|
|
38
|
+
declareFunctionTypes(schema),
|
|
39
|
+
].join("\n");
|
|
35
40
|
}
|
|
@@ -6,10 +6,12 @@ export function declareFunctionTypes(schema: Schema): string {
|
|
|
6
6
|
|
|
7
7
|
if (schema.functions) {
|
|
8
8
|
Object.entries(schema.functions).forEach(([funcName, funcSchema]) => {
|
|
9
|
-
const args = funcSchema.args
|
|
9
|
+
const args = funcSchema.args
|
|
10
|
+
? funcSchema.args.map((arg) => `${arg.name}: ${mapSchemaTypeToTypeScript(arg.property)}`).join(", ")
|
|
11
|
+
: "";
|
|
10
12
|
const ret = funcSchema.ret ? mapSchemaTypeToTypeScript(funcSchema.ret) : "void";
|
|
11
13
|
output += `function ${funcName}(${args}): ${ret};\n`;
|
|
12
|
-
})
|
|
14
|
+
});
|
|
13
15
|
}
|
|
14
16
|
|
|
15
17
|
output += `}\n\n`;
|
|
@@ -60,10 +60,10 @@ export function generateObjectTypeWithJSDoc(properties: any, depth: number = 0):
|
|
|
60
60
|
}
|
|
61
61
|
|
|
62
62
|
export function generatePropertyJSDoc(
|
|
63
|
-
|
|
63
|
+
_propertyName: string,
|
|
64
64
|
propertySchema: any,
|
|
65
65
|
indent: string = "",
|
|
66
|
-
|
|
66
|
+
_depth: number = 0
|
|
67
67
|
): string {
|
|
68
68
|
const comments: string[] = [];
|
|
69
69
|
|
|
@@ -122,4 +122,4 @@ function formatKey(key: string): string {
|
|
|
122
122
|
return key;
|
|
123
123
|
}
|
|
124
124
|
return `"${key}"`;
|
|
125
|
-
}
|
|
125
|
+
}
|
package/src/compile/compile.ts
CHANGED
|
@@ -48,7 +48,7 @@ export function compile(ast: Program): string {
|
|
|
48
48
|
if (statement.type === "VariableDeclaration") {
|
|
49
49
|
parts.push(emitVariableDeclaration(statement, localFunctions));
|
|
50
50
|
} else if (statement.type === "FunctionDeclaration") {
|
|
51
|
-
parts.push(emitFunctionDeclaration(statement
|
|
51
|
+
parts.push(emitFunctionDeclaration(statement, localFunctions));
|
|
52
52
|
} else if (statement.type === "ReturnStatement" && statement.argument && isJsxRoot(statement.argument)) {
|
|
53
53
|
parts.push(`return ${emitJsxRoot(statement.argument, localFunctions)};`);
|
|
54
54
|
} else if (!hasDeclarations && statement.type === "ExpressionStatement" && isJsxRoot(statement.expression)) {
|
|
@@ -134,7 +134,7 @@ function emitAttributes(attributes: (JSXAttribute | JSXSpreadAttribute)[], local
|
|
|
134
134
|
throw CompilationError.fromNode("Only simple JSX attributes allowed", attribute);
|
|
135
135
|
}
|
|
136
136
|
|
|
137
|
-
const key = attribute.name?.name
|
|
137
|
+
const key = attribute.name?.name;
|
|
138
138
|
|
|
139
139
|
let value: string;
|
|
140
140
|
if (!attribute.value) {
|
|
@@ -142,7 +142,7 @@ function emitAttributes(attributes: (JSXAttribute | JSXSpreadAttribute)[], local
|
|
|
142
142
|
} else if (attribute.value.type === "Literal") {
|
|
143
143
|
value = JSON.stringify(attribute.value.value);
|
|
144
144
|
} else if (attribute.value.type === "JSXExpressionContainer") {
|
|
145
|
-
value = emitExpression(attribute.value.expression
|
|
145
|
+
value = emitExpression(attribute.value.expression, localFunctions);
|
|
146
146
|
} else {
|
|
147
147
|
throw CompilationError.fromNode("Unsupported attribute value", attribute.value);
|
|
148
148
|
}
|
|
@@ -174,7 +174,7 @@ function emitJsxChildren(children: JSXNode[], localFunctions: Set<string>): stri
|
|
|
174
174
|
}
|
|
175
175
|
} else if (isJsxExpressionContainer(child)) {
|
|
176
176
|
if (!isJsxEmptyExpression(child.expression)) {
|
|
177
|
-
result.push(emitExpression(child.expression
|
|
177
|
+
result.push(emitExpression(child.expression, localFunctions));
|
|
178
178
|
}
|
|
179
179
|
} else if (isJsxElement(child)) {
|
|
180
180
|
result.push(emitJsxElement(child, localFunctions));
|
|
@@ -226,16 +226,16 @@ function emitExpression(node: CompilableExpression, localFunctions: Set<string>)
|
|
|
226
226
|
return "undefined";
|
|
227
227
|
}
|
|
228
228
|
if (element.type === "SpreadElement") {
|
|
229
|
-
return `...${emitExpression(element.argument
|
|
229
|
+
return `...${emitExpression(element.argument, localFunctions)}`;
|
|
230
230
|
}
|
|
231
|
-
return emitExpression(element
|
|
231
|
+
return emitExpression(element, localFunctions);
|
|
232
232
|
})
|
|
233
233
|
.join(", ")}]`;
|
|
234
234
|
case "ObjectExpression": {
|
|
235
235
|
const keyValuePairs = node.properties
|
|
236
236
|
.map((property) => {
|
|
237
237
|
if (property.type === "SpreadElement") {
|
|
238
|
-
return `...${emitExpression(property.argument
|
|
238
|
+
return `...${emitExpression(property.argument, localFunctions)}`;
|
|
239
239
|
}
|
|
240
240
|
const key = getAstKeyString(property.key as Identifier | Literal);
|
|
241
241
|
return `${key}: ${emitExpression(property.value, localFunctions)}`;
|
|
@@ -258,9 +258,9 @@ function emitExpression(node: CompilableExpression, localFunctions: Set<string>)
|
|
|
258
258
|
const args = node.arguments
|
|
259
259
|
.map((argument) => {
|
|
260
260
|
if (argument.type === "SpreadElement") {
|
|
261
|
-
return `...${emitExpression(argument.argument
|
|
261
|
+
return `...${emitExpression(argument.argument, localFunctions)}`;
|
|
262
262
|
}
|
|
263
|
-
return emitExpression(argument
|
|
263
|
+
return emitExpression(argument, localFunctions);
|
|
264
264
|
})
|
|
265
265
|
.join(", ");
|
|
266
266
|
return `${callee}(${args})`;
|
|
@@ -287,7 +287,7 @@ function emitVariableDeclaration(node: VariableDeclaration, localFunctions: Set<
|
|
|
287
287
|
const decls = node.declarations
|
|
288
288
|
.map((d) => {
|
|
289
289
|
const name = (d.id as Identifier).name;
|
|
290
|
-
const init = d.init ? emitExpression(d.init
|
|
290
|
+
const init = d.init ? emitExpression(d.init, localFunctions) : "undefined";
|
|
291
291
|
return `${name} = ${init}`;
|
|
292
292
|
})
|
|
293
293
|
.join(", ");
|
|
@@ -295,9 +295,9 @@ function emitVariableDeclaration(node: VariableDeclaration, localFunctions: Set<
|
|
|
295
295
|
}
|
|
296
296
|
|
|
297
297
|
function emitFunctionDeclaration(node: FunctionDeclaration, localFunctions: Set<string>): string {
|
|
298
|
-
const name = node.id
|
|
298
|
+
const name = node.id.name;
|
|
299
299
|
const params = node.params.map((p) => emitParam(p, localFunctions)).join(", ");
|
|
300
|
-
const body = emitFunctionBody(node.body
|
|
300
|
+
const body = emitFunctionBody(node.body, localFunctions);
|
|
301
301
|
return `function ${name}(${params}) ${body}`;
|
|
302
302
|
}
|
|
303
303
|
|
|
@@ -312,11 +312,11 @@ function emitStatement(statement: Statement, localFunctions: Set<string>): strin
|
|
|
312
312
|
if (!statement.argument) {
|
|
313
313
|
return "return;";
|
|
314
314
|
}
|
|
315
|
-
return `return ${emitExpression(statement.argument
|
|
315
|
+
return `return ${emitExpression(statement.argument, localFunctions)};`;
|
|
316
316
|
case "VariableDeclaration":
|
|
317
317
|
return emitVariableDeclaration(statement, localFunctions);
|
|
318
318
|
case "ExpressionStatement":
|
|
319
|
-
return `${emitExpression(statement.expression
|
|
319
|
+
return `${emitExpression(statement.expression, localFunctions)};`;
|
|
320
320
|
default:
|
|
321
321
|
throw CompilationError.fromNode(`Unsupported statement: ${statement.type}`, statement);
|
|
322
322
|
}
|
|
@@ -325,7 +325,7 @@ function emitStatement(statement: Statement, localFunctions: Set<string>): strin
|
|
|
325
325
|
function emitParam(param: Pattern, localFunctions: Set<string>): string {
|
|
326
326
|
switch (param.type) {
|
|
327
327
|
case "Identifier":
|
|
328
|
-
return
|
|
328
|
+
return param.name;
|
|
329
329
|
case "ObjectPattern": {
|
|
330
330
|
const props = (param as any).properties.map((p: any) => {
|
|
331
331
|
if (p.type === "RestElement") {
|