mancha 0.24.0 → 0.24.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/README.md +25 -7
- package/dist/browser.d.ts +451 -2
- package/dist/browser.js +32 -1
- package/dist/css_gen_utils.d.ts +8 -915
- package/dist/css_gen_utils.js +382 -641
- package/dist/css_gen_utils.js.map +1 -1
- package/dist/mancha.js +25 -36
- package/dist/plugins.js +11 -1
- package/dist/plugins.js.map +1 -1
- package/dist/store.d.ts +8 -1
- package/dist/store.js +10 -3
- package/dist/store.js.map +1 -1
- package/dist/trusted_attributes.d.ts +0 -3
- package/dist/trusted_attributes.js +1 -3
- package/dist/trusted_attributes.js.map +1 -1
- package/docs/03_reactivity.md +20 -3
- package/docs/05_css.md +270 -275
- package/package.json +19 -4
- package/.biomeignore +0 -3
- package/.github/workflows/ci.yml +0 -109
- package/.vscode/extensions.json +0 -3
- package/.vscode/launch.json +0 -34
- package/biome.json +0 -46
- package/dist/browser.js.map +0 -1
- package/dist/expressions/ast.test.d.ts +0 -1
- package/dist/expressions/ast.test.js +0 -147
- package/dist/expressions/ast.test.js.map +0 -1
- package/dist/expressions/ast_factory.test.d.ts +0 -1
- package/dist/expressions/ast_factory.test.js +0 -94
- package/dist/expressions/ast_factory.test.js.map +0 -1
- package/dist/expressions/constants.test.d.ts +0 -1
- package/dist/expressions/constants.test.js +0 -84
- package/dist/expressions/constants.test.js.map +0 -1
- package/dist/expressions/eval.test.d.ts +0 -1
- package/dist/expressions/eval.test.js +0 -215
- package/dist/expressions/eval.test.js.map +0 -1
- package/dist/expressions/expressions.test.d.ts +0 -6
- package/dist/expressions/expressions.test.js +0 -7
- package/dist/expressions/expressions.test.js.map +0 -1
- package/dist/expressions/parser.test.d.ts +0 -1
- package/dist/expressions/parser.test.js +0 -174
- package/dist/expressions/parser.test.js.map +0 -1
- package/dist/expressions/tokenizer.test.d.ts +0 -1
- package/dist/expressions/tokenizer.test.js +0 -124
- package/dist/expressions/tokenizer.test.js.map +0 -1
- package/dist/interfaces-C8heJ6BZ.d.ts +0 -452
- package/dist/mancha.js.map +0 -1
- package/dist/renderer-B4AORGUN.js +0 -43
- package/dist/safe_browser.d.ts +0 -16
- package/dist/safe_browser.js +0 -1
- package/dist/safe_browser.js.map +0 -1
- package/dist/test_types/api.d.ts +0 -11
- package/dist/test_types/api.js +0 -3
- package/dist/test_types/api.js.map +0 -1
- package/dist/test_types/nested/child.d.ts +0 -12
- package/dist/test_types/nested/child.js +0 -2
- package/dist/test_types/nested/child.js.map +0 -1
- package/dist/test_types/product.d.ts +0 -11
- package/dist/test_types/product.js +0 -3
- package/dist/test_types/product.js.map +0 -1
- package/dist/test_types/user.d.ts +0 -10
- package/dist/test_types/user.js +0 -3
- package/dist/test_types/user.js.map +0 -1
- package/dist/test_utils.d.ts +0 -20
- package/dist/test_utils.js +0 -94
- package/dist/test_utils.js.map +0 -1
- package/global.d.ts +0 -4
- package/gulpfile.ts +0 -47
- package/scripts/generate-css-docs.ts +0 -622
- package/tsconfig.json +0 -37
- package/tsdown.config.ts +0 -32
- package/tsec_exemptions.json +0 -9
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mancha",
|
|
3
|
-
"version": "0.24.
|
|
3
|
+
"version": "0.24.1",
|
|
4
4
|
"description": "Javscript HTML rendering engine",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -20,16 +20,25 @@
|
|
|
20
20
|
"default": "./dist/*.js"
|
|
21
21
|
}
|
|
22
22
|
},
|
|
23
|
+
"files": [
|
|
24
|
+
"dist",
|
|
25
|
+
"docs",
|
|
26
|
+
"!dist/fixtures",
|
|
27
|
+
"!dist/test_types",
|
|
28
|
+
"!dist/test_utils.*",
|
|
29
|
+
"!dist/**/*.test.*"
|
|
30
|
+
],
|
|
23
31
|
"scripts": {
|
|
24
32
|
"clean": "rm -rf dist/",
|
|
25
33
|
"build": "gulp build",
|
|
26
34
|
"pretest": "npm run build",
|
|
27
35
|
"test:node": "mocha 'dist/**/*.test.js' --ignore 'dist/browser.test.js'",
|
|
28
|
-
"test:browser": "web-test-runner 'dist/**/*.test.js' '!dist/cli.test.js' '!dist/ssr.test.js' '!dist/index.test.js' '!dist/worker.test.js' '!dist/type_checker.test.js' --node-resolve --compatibility all --playwright --browsers chromium --no-sandbox",
|
|
36
|
+
"test:browser": "web-test-runner 'dist/**/*.test.js' '!dist/cli.test.js' '!dist/ssr.test.js' '!dist/index.test.js' '!dist/worker.test.js' '!dist/type_checker.test.js' '!dist/package.test.js' '!dist/css_gen_lint.test.js' --node-resolve --compatibility all --playwright --browsers chromium --no-sandbox",
|
|
29
37
|
"test": "npm run test:node && npm run test:browser",
|
|
30
38
|
"check:size": "brotli -c dist/mancha.js | wc -c",
|
|
31
39
|
"cli": "node dist/cli.js",
|
|
32
40
|
"gen:docs": "tsx scripts/generate-css-docs.ts",
|
|
41
|
+
"compare:sizes": "tsx scripts/compare-sizes.ts",
|
|
33
42
|
"lint": "biome check .",
|
|
34
43
|
"lint:fix": "biome check --write ."
|
|
35
44
|
},
|
|
@@ -50,6 +59,7 @@
|
|
|
50
59
|
"license": "MIT",
|
|
51
60
|
"dependencies": {
|
|
52
61
|
"dom-serializer": "^2.0.0",
|
|
62
|
+
"domhandler": "^5.0.3",
|
|
53
63
|
"glob": "^10.3.10",
|
|
54
64
|
"htmlparser2": "^9.1.0",
|
|
55
65
|
"jsdom": "^27.0.1",
|
|
@@ -62,25 +72,30 @@
|
|
|
62
72
|
"serialize-javascript": "^7.0.3",
|
|
63
73
|
"diff": "^8.0.3",
|
|
64
74
|
"playwright": "^1.60.0",
|
|
65
|
-
"playwright-core": "^1.60.0"
|
|
75
|
+
"playwright-core": "^1.60.0",
|
|
76
|
+
"ws": "^8.21.0",
|
|
77
|
+
"minimatch": {
|
|
78
|
+
"brace-expansion": "^2.1.4"
|
|
79
|
+
}
|
|
66
80
|
},
|
|
67
81
|
"devDependencies": {
|
|
68
82
|
"@biomejs/biome": "^2.3.10",
|
|
69
83
|
"@types/chai": "^5.2.3",
|
|
70
84
|
"@types/chai-as-promised": "^8.0.1",
|
|
85
|
+
"@types/css-tree": "^3.2.0",
|
|
71
86
|
"@types/glob": "^8.1.0",
|
|
72
87
|
"@types/gulp": "^4.0.18",
|
|
73
88
|
"@types/gulp-csso": "^4.0.5",
|
|
74
89
|
"@types/jsdom": "^21.1.6",
|
|
75
90
|
"@types/mocha": "^10.0.10",
|
|
76
91
|
"@types/node": "^20.12.11",
|
|
77
|
-
"@types/path-browserify": "^1.0.1",
|
|
78
92
|
"@types/trusted-types": "^2.0.7",
|
|
79
93
|
"@types/yargs": "^17.0.29",
|
|
80
94
|
"@web/test-runner": "^0.19.0",
|
|
81
95
|
"@web/test-runner-playwright": "^0.11.1",
|
|
82
96
|
"chai": "^5.3.3",
|
|
83
97
|
"chai-as-promised": "^8.0.1",
|
|
98
|
+
"css-tree": "^3.2.1",
|
|
84
99
|
"csso": "^5.0.5",
|
|
85
100
|
"gulp": "^5.0.0",
|
|
86
101
|
"gulp-csso": "^4.0.1",
|
package/.biomeignore
DELETED
package/.github/workflows/ci.yml
DELETED
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
name: CI and Publish
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
push:
|
|
5
|
-
branches:
|
|
6
|
-
- main
|
|
7
|
-
tags:
|
|
8
|
-
- "v*"
|
|
9
|
-
pull_request:
|
|
10
|
-
branches:
|
|
11
|
-
- main
|
|
12
|
-
|
|
13
|
-
permissions:
|
|
14
|
-
contents: read
|
|
15
|
-
pages: write
|
|
16
|
-
id-token: write # Required for GitHub Pages and npm OIDC trusted publishing
|
|
17
|
-
|
|
18
|
-
concurrency:
|
|
19
|
-
group: ${{ github.workflow }}-${{ github.ref }}
|
|
20
|
-
cancel-in-progress: true
|
|
21
|
-
|
|
22
|
-
jobs:
|
|
23
|
-
build-test:
|
|
24
|
-
runs-on: ubuntu-latest
|
|
25
|
-
name: Test and Build
|
|
26
|
-
steps:
|
|
27
|
-
- name: Checkout code
|
|
28
|
-
uses: actions/checkout@v4
|
|
29
|
-
|
|
30
|
-
- name: Setup Node.js
|
|
31
|
-
uses: actions/setup-node@v4
|
|
32
|
-
with:
|
|
33
|
-
node-version: "24"
|
|
34
|
-
registry-url: "https://registry.npmjs.org"
|
|
35
|
-
|
|
36
|
-
- name: Install dependencies
|
|
37
|
-
run: npm ci
|
|
38
|
-
|
|
39
|
-
- name: Run lint/format check
|
|
40
|
-
run: npm run lint
|
|
41
|
-
|
|
42
|
-
- name: Install Playwright browsers
|
|
43
|
-
run: npx playwright install
|
|
44
|
-
|
|
45
|
-
- name: Run tests
|
|
46
|
-
run: npm test
|
|
47
|
-
|
|
48
|
-
- name: Build package
|
|
49
|
-
run: npm run build
|
|
50
|
-
|
|
51
|
-
- name: Upload build artifacts
|
|
52
|
-
uses: actions/upload-artifact@v4
|
|
53
|
-
with:
|
|
54
|
-
name: build-artifacts
|
|
55
|
-
path: dist/
|
|
56
|
-
|
|
57
|
-
deploy-pages:
|
|
58
|
-
needs: build-test
|
|
59
|
-
runs-on: ubuntu-latest
|
|
60
|
-
name: Deploy to GitHub Pages
|
|
61
|
-
if: github.ref == 'refs/heads/main'
|
|
62
|
-
environment:
|
|
63
|
-
name: github-pages
|
|
64
|
-
url: ${{ steps.deployment.outputs.page_url }}
|
|
65
|
-
steps:
|
|
66
|
-
- name: Download build artifacts
|
|
67
|
-
uses: actions/download-artifact@v4
|
|
68
|
-
with:
|
|
69
|
-
name: build-artifacts
|
|
70
|
-
path: dist/
|
|
71
|
-
|
|
72
|
-
- name: Upload pages artifact
|
|
73
|
-
uses: actions/upload-pages-artifact@v3
|
|
74
|
-
with:
|
|
75
|
-
path: "dist"
|
|
76
|
-
|
|
77
|
-
- name: Deploy to GitHub Pages
|
|
78
|
-
id: deployment
|
|
79
|
-
uses: actions/deploy-pages@v4
|
|
80
|
-
|
|
81
|
-
publish-npm:
|
|
82
|
-
needs: build-test
|
|
83
|
-
runs-on: ubuntu-latest
|
|
84
|
-
name: Publish to NPM
|
|
85
|
-
if: startsWith(github.ref, 'refs/tags/v')
|
|
86
|
-
permissions:
|
|
87
|
-
contents: read
|
|
88
|
-
id-token: write # Required for npm OIDC trusted publishing
|
|
89
|
-
steps:
|
|
90
|
-
- name: Checkout code
|
|
91
|
-
uses: actions/checkout@v4
|
|
92
|
-
|
|
93
|
-
- name: Setup Node.js
|
|
94
|
-
uses: actions/setup-node@v4
|
|
95
|
-
with:
|
|
96
|
-
node-version: "24"
|
|
97
|
-
registry-url: "https://registry.npmjs.org"
|
|
98
|
-
|
|
99
|
-
- name: Install dependencies
|
|
100
|
-
run: npm ci
|
|
101
|
-
|
|
102
|
-
- name: Download build artifacts
|
|
103
|
-
uses: actions/download-artifact@v4
|
|
104
|
-
with:
|
|
105
|
-
name: build-artifacts
|
|
106
|
-
path: dist/
|
|
107
|
-
|
|
108
|
-
- name: Publish to NPM with provenance
|
|
109
|
-
run: npm publish --provenance --access public
|
package/.vscode/extensions.json
DELETED
package/.vscode/launch.json
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
// Use IntelliSense to learn about possible attributes.
|
|
3
|
-
// Hover to view descriptions of existing attributes.
|
|
4
|
-
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
|
5
|
-
"version": "0.2.0",
|
|
6
|
-
"configurations": [
|
|
7
|
-
{
|
|
8
|
-
"name": "Mocha All",
|
|
9
|
-
"type": "node",
|
|
10
|
-
"request": "launch",
|
|
11
|
-
"program": "${workspaceFolder}/node_modules/mocha/bin/_mocha",
|
|
12
|
-
"args": [
|
|
13
|
-
"-r",
|
|
14
|
-
"ts-node/register",
|
|
15
|
-
"--no-timeouts",
|
|
16
|
-
"--colors",
|
|
17
|
-
"${workspaceFolder}/dist/**/*.test.ts"
|
|
18
|
-
],
|
|
19
|
-
"console": "integratedTerminal",
|
|
20
|
-
"internalConsoleOptions": "neverOpen",
|
|
21
|
-
"skipFiles": ["<node_internals>/**/*.js"]
|
|
22
|
-
},
|
|
23
|
-
{
|
|
24
|
-
"name": "Mocha Current File",
|
|
25
|
-
"type": "node",
|
|
26
|
-
"request": "launch",
|
|
27
|
-
"program": "${workspaceFolder}/node_modules/mocha/bin/_mocha",
|
|
28
|
-
"args": ["-r", "ts-node/register", "--no-timeouts", "--colors", "${file}"],
|
|
29
|
-
"console": "integratedTerminal",
|
|
30
|
-
"internalConsoleOptions": "neverOpen",
|
|
31
|
-
"skipFiles": ["<node_internals>/**/*.js"]
|
|
32
|
-
}
|
|
33
|
-
]
|
|
34
|
-
}
|
package/biome.json
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://biomejs.dev/schemas/2.4.6/schema.json",
|
|
3
|
-
"vcs": {
|
|
4
|
-
"enabled": true,
|
|
5
|
-
"clientKind": "git",
|
|
6
|
-
"useIgnoreFile": true
|
|
7
|
-
},
|
|
8
|
-
"files": {
|
|
9
|
-
"ignoreUnknown": true,
|
|
10
|
-
"includes": ["**/*.ts", "**/*.tsx", "**/*.js", "**/*.jsx", "**/*.json"]
|
|
11
|
-
},
|
|
12
|
-
"formatter": {
|
|
13
|
-
"enabled": true,
|
|
14
|
-
"formatWithErrors": false,
|
|
15
|
-
"indentStyle": "tab",
|
|
16
|
-
"indentWidth": 2,
|
|
17
|
-
"lineEnding": "lf",
|
|
18
|
-
"lineWidth": 100,
|
|
19
|
-
"attributePosition": "auto"
|
|
20
|
-
},
|
|
21
|
-
"linter": {
|
|
22
|
-
"enabled": true,
|
|
23
|
-
"rules": {
|
|
24
|
-
"recommended": true,
|
|
25
|
-
"complexity": {
|
|
26
|
-
"noUselessTypeConstraint": "error"
|
|
27
|
-
},
|
|
28
|
-
"style": {
|
|
29
|
-
"noNonNullAssertion": "error",
|
|
30
|
-
"useConst": "error",
|
|
31
|
-
"useImportType": "error"
|
|
32
|
-
},
|
|
33
|
-
"suspicious": {
|
|
34
|
-
"noExplicitAny": "error",
|
|
35
|
-
"useIterableCallbackReturn": "error"
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
},
|
|
39
|
-
"javascript": {
|
|
40
|
-
"formatter": {
|
|
41
|
-
"quoteStyle": "double",
|
|
42
|
-
"trailingCommas": "all",
|
|
43
|
-
"semicolons": "always"
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}
|
package/dist/browser.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
import { assert } from "../test_utils.js";
|
|
2
|
-
describe("AST Node Interfaces", () => {
|
|
3
|
-
it("should define Literal node correctly", () => {
|
|
4
|
-
const node = { type: "Literal", value: 123 };
|
|
5
|
-
assert.equal(node.type, "Literal");
|
|
6
|
-
assert.equal(node.value, 123);
|
|
7
|
-
});
|
|
8
|
-
it("should define ID node correctly", () => {
|
|
9
|
-
const node = { type: "ID", value: "myVar" };
|
|
10
|
-
assert.equal(node.type, "ID");
|
|
11
|
-
assert.equal(node.value, "myVar");
|
|
12
|
-
});
|
|
13
|
-
it("should define Unary node correctly", () => {
|
|
14
|
-
const node = { type: "Unary", operator: "-", child: { type: "ID", value: "x" } };
|
|
15
|
-
assert.equal(node.type, "Unary");
|
|
16
|
-
assert.equal(node.operator, "-");
|
|
17
|
-
assert.equal(node.child.value, "x");
|
|
18
|
-
});
|
|
19
|
-
it("should define Binary node correctly", () => {
|
|
20
|
-
const node = {
|
|
21
|
-
type: "Binary",
|
|
22
|
-
operator: "+",
|
|
23
|
-
left: { type: "ID", value: "x" },
|
|
24
|
-
right: { type: "ID", value: "y" },
|
|
25
|
-
};
|
|
26
|
-
assert.equal(node.type, "Binary");
|
|
27
|
-
assert.equal(node.operator, "+");
|
|
28
|
-
assert.equal(node.left.value, "x");
|
|
29
|
-
assert.equal(node.right.value, "y");
|
|
30
|
-
});
|
|
31
|
-
it("should define Getter node correctly", () => {
|
|
32
|
-
const node = {
|
|
33
|
-
type: "Getter",
|
|
34
|
-
receiver: { type: "ID", value: "obj" },
|
|
35
|
-
name: "prop",
|
|
36
|
-
optional: true,
|
|
37
|
-
};
|
|
38
|
-
assert.equal(node.type, "Getter");
|
|
39
|
-
assert.equal(node.receiver.value, "obj");
|
|
40
|
-
assert.equal(node.name, "prop");
|
|
41
|
-
assert.equal(node.optional, true);
|
|
42
|
-
});
|
|
43
|
-
it("should define Invoke node correctly", () => {
|
|
44
|
-
const node = {
|
|
45
|
-
type: "Invoke",
|
|
46
|
-
receiver: { type: "ID", value: "fn" },
|
|
47
|
-
method: "callMe",
|
|
48
|
-
arguments: [{ type: "Literal", value: 1 }],
|
|
49
|
-
optional: true,
|
|
50
|
-
};
|
|
51
|
-
assert.equal(node.type, "Invoke");
|
|
52
|
-
assert.equal(node.receiver.value, "fn");
|
|
53
|
-
assert.equal(node.method, "callMe");
|
|
54
|
-
assert.equal((node.arguments?.[0]).value, 1);
|
|
55
|
-
assert.equal(node.optional, true);
|
|
56
|
-
});
|
|
57
|
-
it("should define Index node correctly", () => {
|
|
58
|
-
const node = {
|
|
59
|
-
type: "Index",
|
|
60
|
-
receiver: { type: "ID", value: "arr" },
|
|
61
|
-
argument: { type: "Literal", value: 0 },
|
|
62
|
-
optional: true,
|
|
63
|
-
};
|
|
64
|
-
assert.equal(node.type, "Index");
|
|
65
|
-
assert.equal(node.receiver.value, "arr");
|
|
66
|
-
assert.equal(node.argument.value, 0);
|
|
67
|
-
assert.equal(node.optional, true);
|
|
68
|
-
});
|
|
69
|
-
it("should define Ternary node correctly", () => {
|
|
70
|
-
const node = {
|
|
71
|
-
type: "Ternary",
|
|
72
|
-
condition: { type: "ID", value: "x" },
|
|
73
|
-
trueExpr: { type: "Literal", value: 1 },
|
|
74
|
-
falseExpr: { type: "Literal", value: 0 },
|
|
75
|
-
};
|
|
76
|
-
assert.equal(node.type, "Ternary");
|
|
77
|
-
assert.equal(node.condition.value, "x");
|
|
78
|
-
});
|
|
79
|
-
it("should define Map node correctly", () => {
|
|
80
|
-
const node = {
|
|
81
|
-
type: "Map",
|
|
82
|
-
properties: [
|
|
83
|
-
{ type: "Property", key: "a", value: { type: "Literal", value: 1 } },
|
|
84
|
-
{ type: "SpreadProperty", expression: { type: "ID", value: "obj" } },
|
|
85
|
-
],
|
|
86
|
-
};
|
|
87
|
-
assert.equal(node.type, "Map");
|
|
88
|
-
assert.equal(node.properties?.length, 2);
|
|
89
|
-
assert.equal(node.properties?.[0].type, "Property");
|
|
90
|
-
assert.equal(node.properties?.[1].type, "SpreadProperty");
|
|
91
|
-
});
|
|
92
|
-
it("should define List node correctly", () => {
|
|
93
|
-
const node = {
|
|
94
|
-
type: "List",
|
|
95
|
-
items: [
|
|
96
|
-
{ type: "Literal", value: 1 },
|
|
97
|
-
{ type: "SpreadElement", expression: { type: "ID", value: "arr" } },
|
|
98
|
-
],
|
|
99
|
-
};
|
|
100
|
-
assert.equal(node.type, "List");
|
|
101
|
-
assert.equal(node.items?.length, 2);
|
|
102
|
-
assert.equal(node.items?.[0]?.type, "Literal");
|
|
103
|
-
assert.equal(node.items?.[1]?.type, "SpreadElement");
|
|
104
|
-
});
|
|
105
|
-
it("should define ArrowFunction node correctly", () => {
|
|
106
|
-
const node = {
|
|
107
|
-
type: "ArrowFunction",
|
|
108
|
-
params: ["x", "y"],
|
|
109
|
-
body: {
|
|
110
|
-
type: "Binary",
|
|
111
|
-
operator: "+",
|
|
112
|
-
left: { type: "ID", value: "x" },
|
|
113
|
-
right: { type: "ID", value: "y" },
|
|
114
|
-
},
|
|
115
|
-
};
|
|
116
|
-
assert.equal(node.type, "ArrowFunction");
|
|
117
|
-
assert.deepEqual(node.params, ["x", "y"]);
|
|
118
|
-
assert.equal(node.body.type, "Binary");
|
|
119
|
-
});
|
|
120
|
-
it("should define SpreadProperty node correctly", () => {
|
|
121
|
-
const node = {
|
|
122
|
-
type: "SpreadProperty",
|
|
123
|
-
expression: { type: "ID", value: "obj" },
|
|
124
|
-
};
|
|
125
|
-
assert.equal(node.type, "SpreadProperty");
|
|
126
|
-
assert.equal(node.expression.value, "obj");
|
|
127
|
-
});
|
|
128
|
-
it("should define SpreadElement node correctly", () => {
|
|
129
|
-
const node = {
|
|
130
|
-
type: "SpreadElement",
|
|
131
|
-
expression: { type: "ID", value: "arr" },
|
|
132
|
-
};
|
|
133
|
-
assert.equal(node.type, "SpreadElement");
|
|
134
|
-
assert.equal(node.expression.value, "arr");
|
|
135
|
-
});
|
|
136
|
-
it("should define Property node correctly", () => {
|
|
137
|
-
const node = {
|
|
138
|
-
type: "Property",
|
|
139
|
-
key: "key",
|
|
140
|
-
value: { type: "Literal", value: 1 },
|
|
141
|
-
};
|
|
142
|
-
assert.equal(node.type, "Property");
|
|
143
|
-
assert.equal(node.key, "key");
|
|
144
|
-
assert.equal(node.value.value, 1);
|
|
145
|
-
});
|
|
146
|
-
});
|
|
147
|
-
//# sourceMappingURL=ast.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ast.test.js","sourceRoot":"","sources":["../../src/expressions/ast.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
import { assert } from "../test_utils.js";
|
|
2
|
-
import { DefaultAstFactory } from "./ast_factory.js";
|
|
3
|
-
describe("DefaultAstFactory", () => {
|
|
4
|
-
let factory;
|
|
5
|
-
beforeEach(() => {
|
|
6
|
-
factory = new DefaultAstFactory();
|
|
7
|
-
});
|
|
8
|
-
it("should create Literal nodes", () => {
|
|
9
|
-
const node = factory.literal(123);
|
|
10
|
-
assert.deepEqual(node, { type: "Literal", value: 123 });
|
|
11
|
-
});
|
|
12
|
-
it("should create ID nodes", () => {
|
|
13
|
-
const node = factory.id("myVar");
|
|
14
|
-
assert.deepEqual(node, { type: "ID", value: "myVar" });
|
|
15
|
-
});
|
|
16
|
-
it("should create Unary nodes", () => {
|
|
17
|
-
const child = factory.id("x");
|
|
18
|
-
const node = factory.unary("-", child);
|
|
19
|
-
assert.deepEqual(node, { type: "Unary", operator: "-", child });
|
|
20
|
-
});
|
|
21
|
-
it("should create Binary nodes", () => {
|
|
22
|
-
const left = factory.id("x");
|
|
23
|
-
const right = factory.id("y");
|
|
24
|
-
const node = factory.binary(left, "+", right);
|
|
25
|
-
assert.deepEqual(node, { type: "Binary", operator: "+", left, right });
|
|
26
|
-
});
|
|
27
|
-
it("should create Getter nodes", () => {
|
|
28
|
-
const receiver = factory.id("obj");
|
|
29
|
-
const node = factory.getter(receiver, "prop", true);
|
|
30
|
-
assert.deepEqual(node, { type: "Getter", receiver, name: "prop", optional: true });
|
|
31
|
-
});
|
|
32
|
-
it("should create Invoke nodes", () => {
|
|
33
|
-
const receiver = factory.id("fn");
|
|
34
|
-
const arg = factory.literal(1);
|
|
35
|
-
const node = factory.invoke(receiver, "callMe", [arg], true);
|
|
36
|
-
assert.deepEqual(node, {
|
|
37
|
-
type: "Invoke",
|
|
38
|
-
receiver,
|
|
39
|
-
method: "callMe",
|
|
40
|
-
arguments: [arg],
|
|
41
|
-
optional: true,
|
|
42
|
-
});
|
|
43
|
-
});
|
|
44
|
-
it("should create Index nodes", () => {
|
|
45
|
-
const receiver = factory.id("arr");
|
|
46
|
-
const argument = factory.literal(0);
|
|
47
|
-
const node = factory.index(receiver, argument, true);
|
|
48
|
-
assert.deepEqual(node, { type: "Index", receiver, argument, optional: true });
|
|
49
|
-
});
|
|
50
|
-
it("should create Ternary nodes", () => {
|
|
51
|
-
const condition = factory.id("x");
|
|
52
|
-
const trueExpr = factory.literal(1);
|
|
53
|
-
const falseExpr = factory.literal(0);
|
|
54
|
-
const node = factory.ternary(condition, trueExpr, falseExpr);
|
|
55
|
-
assert.deepEqual(node, { type: "Ternary", condition, trueExpr, falseExpr });
|
|
56
|
-
});
|
|
57
|
-
it("should create Map nodes", () => {
|
|
58
|
-
const prop1 = factory.property("a", factory.literal(1));
|
|
59
|
-
const prop2 = factory.spreadProperty(factory.id("obj"));
|
|
60
|
-
const node = factory.map([prop1, prop2]);
|
|
61
|
-
assert.deepEqual(node, { type: "Map", properties: [prop1, prop2] });
|
|
62
|
-
});
|
|
63
|
-
it("should create List nodes", () => {
|
|
64
|
-
const item1 = factory.literal(1);
|
|
65
|
-
const item2 = factory.spreadElement(factory.id("arr"));
|
|
66
|
-
const node = factory.list([item1, item2]);
|
|
67
|
-
assert.deepEqual(node, { type: "List", items: [item1, item2] });
|
|
68
|
-
});
|
|
69
|
-
it("should create ArrowFunction nodes", () => {
|
|
70
|
-
const body = factory.binary(factory.id("x"), "+", factory.id("y"));
|
|
71
|
-
const node = factory.arrowFunction(["x", "y"], body);
|
|
72
|
-
assert.deepEqual(node, { type: "ArrowFunction", params: ["x", "y"], body });
|
|
73
|
-
});
|
|
74
|
-
it("should create SpreadProperty nodes", () => {
|
|
75
|
-
const expr = factory.id("obj");
|
|
76
|
-
const node = factory.spreadProperty(expr);
|
|
77
|
-
assert.deepEqual(node, { type: "SpreadProperty", expression: expr });
|
|
78
|
-
});
|
|
79
|
-
it("should create SpreadElement nodes", () => {
|
|
80
|
-
const expr = factory.id("arr");
|
|
81
|
-
const node = factory.spreadElement(expr);
|
|
82
|
-
assert.deepEqual(node, { type: "SpreadElement", expression: expr });
|
|
83
|
-
});
|
|
84
|
-
it("should create Property nodes", () => {
|
|
85
|
-
const value = factory.literal(1);
|
|
86
|
-
const node = factory.property("key", value);
|
|
87
|
-
assert.deepEqual(node, { type: "Property", key: "key", value });
|
|
88
|
-
});
|
|
89
|
-
it("should create Empty node", () => {
|
|
90
|
-
const node = factory.empty();
|
|
91
|
-
assert.deepEqual(node, { type: "Empty" });
|
|
92
|
-
});
|
|
93
|
-
});
|
|
94
|
-
//# sourceMappingURL=ast_factory.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ast_factory.test.js","sourceRoot":"","sources":["../../src/expressions/ast_factory.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
import { assert } from "../test_utils.js";
|
|
2
|
-
import { BINARY_OPERATORS, KEYWORDS, POSTFIX_PRECEDENCE, PRECEDENCE, UNARY_OPERATORS, WORD_OPERATORS, } from "./constants.js";
|
|
3
|
-
describe("Expression Constants", () => {
|
|
4
|
-
it("should define KEYWORDS correctly", () => {
|
|
5
|
-
assert.deepEqual(KEYWORDS, new Set(["this", "typeof"]));
|
|
6
|
-
});
|
|
7
|
-
it("should define WORD_OPERATORS correctly", () => {
|
|
8
|
-
assert.deepEqual(WORD_OPERATORS, new Set(["in"]));
|
|
9
|
-
});
|
|
10
|
-
it("should define UNARY_OPERATORS correctly", () => {
|
|
11
|
-
assert.deepEqual(UNARY_OPERATORS, new Set(["+", "-", "!", "typeof"]));
|
|
12
|
-
});
|
|
13
|
-
it("should define BINARY_OPERATORS correctly", () => {
|
|
14
|
-
assert.deepEqual(BINARY_OPERATORS, new Set([
|
|
15
|
-
"=",
|
|
16
|
-
"+",
|
|
17
|
-
"-",
|
|
18
|
-
"*",
|
|
19
|
-
"/",
|
|
20
|
-
"%",
|
|
21
|
-
"^",
|
|
22
|
-
"==",
|
|
23
|
-
"!=",
|
|
24
|
-
">",
|
|
25
|
-
"<",
|
|
26
|
-
">=",
|
|
27
|
-
"<=",
|
|
28
|
-
"||",
|
|
29
|
-
"&&",
|
|
30
|
-
"??",
|
|
31
|
-
"&",
|
|
32
|
-
"===",
|
|
33
|
-
"!==",
|
|
34
|
-
"|",
|
|
35
|
-
"in",
|
|
36
|
-
]));
|
|
37
|
-
});
|
|
38
|
-
it("should define PRECEDENCE correctly", () => {
|
|
39
|
-
const expectedPrecedence = {
|
|
40
|
-
"!": 0,
|
|
41
|
-
":": 0,
|
|
42
|
-
",": 0,
|
|
43
|
-
")": 0,
|
|
44
|
-
"]": 0,
|
|
45
|
-
"}": 0,
|
|
46
|
-
"?": 2,
|
|
47
|
-
"??": 3,
|
|
48
|
-
"||": 4,
|
|
49
|
-
"&&": 5,
|
|
50
|
-
"|": 6,
|
|
51
|
-
"^": 7,
|
|
52
|
-
"&": 8,
|
|
53
|
-
// equality
|
|
54
|
-
"!=": 9,
|
|
55
|
-
"==": 9,
|
|
56
|
-
"!==": 9,
|
|
57
|
-
"===": 9,
|
|
58
|
-
// relational
|
|
59
|
-
">=": 10,
|
|
60
|
-
">": 10,
|
|
61
|
-
"<=": 10,
|
|
62
|
-
"<": 10,
|
|
63
|
-
in: 10,
|
|
64
|
-
// additive
|
|
65
|
-
"+": 11,
|
|
66
|
-
"-": 11,
|
|
67
|
-
// multiplicative
|
|
68
|
-
"%": 12,
|
|
69
|
-
"/": 12,
|
|
70
|
-
"*": 12,
|
|
71
|
-
// postfix
|
|
72
|
-
"(": 13,
|
|
73
|
-
"[": 13,
|
|
74
|
-
".": 13,
|
|
75
|
-
"?.": 13,
|
|
76
|
-
"{": 13,
|
|
77
|
-
};
|
|
78
|
-
assert.deepEqual(PRECEDENCE, expectedPrecedence);
|
|
79
|
-
});
|
|
80
|
-
it("should define POSTFIX_PRECEDENCE correctly", () => {
|
|
81
|
-
assert.equal(POSTFIX_PRECEDENCE, 13);
|
|
82
|
-
});
|
|
83
|
-
});
|
|
84
|
-
//# sourceMappingURL=constants.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.test.js","sourceRoot":"","sources":["../../src/expressions/constants.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EACN,gBAAgB,EAChB,QAAQ,EACR,kBAAkB,EAClB,UAAU,EACV,eAAe,EACf,cAAc,GACd,MAAM,gBAAgB,CAAC;AAExB,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACrC,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC3C,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QACjD,MAAM,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QAClD,MAAM,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QACnD,MAAM,CAAC,SAAS,CACf,gBAAgB,EAChB,IAAI,GAAG,CAAC;YACP,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,IAAI;YACJ,IAAI;YACJ,GAAG;YACH,GAAG;YACH,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,GAAG;YACH,KAAK;YACL,KAAK;YACL,GAAG;YACH,IAAI;SACJ,CAAC,CACF,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC7C,MAAM,kBAAkB,GAA2B;YAClD,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,CAAC;YAEN,GAAG,EAAE,CAAC;YACN,IAAI,EAAE,CAAC;YACP,IAAI,EAAE,CAAC;YACP,IAAI,EAAE,CAAC;YACP,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,CAAC;YAEN,WAAW;YACX,IAAI,EAAE,CAAC;YACP,IAAI,EAAE,CAAC;YACP,KAAK,EAAE,CAAC;YACR,KAAK,EAAE,CAAC;YAER,aAAa;YACb,IAAI,EAAE,EAAE;YACR,GAAG,EAAE,EAAE;YACP,IAAI,EAAE,EAAE;YACR,GAAG,EAAE,EAAE;YACP,EAAE,EAAE,EAAE;YAEN,WAAW;YACX,GAAG,EAAE,EAAE;YACP,GAAG,EAAE,EAAE;YAEP,iBAAiB;YACjB,GAAG,EAAE,EAAE;YACP,GAAG,EAAE,EAAE;YACP,GAAG,EAAE,EAAE;YAEP,UAAU;YACV,GAAG,EAAE,EAAE;YACP,GAAG,EAAE,EAAE;YACP,GAAG,EAAE,EAAE;YACP,IAAI,EAAE,EAAE;YACR,GAAG,EAAE,EAAE;SACP,CAAC;QACF,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACrD,MAAM,CAAC,KAAK,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
|