diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index aa1729faaf..d00a92007f 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -45,6 +45,7 @@ jobs:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- run: pnpm repo:lint:all
+
verify:
name: Verify
runs-on: ubuntu-latest
@@ -62,6 +63,37 @@ jobs:
- run: pnpm repo:update:metadata
- uses: wyvox/action-no-git-diff@v1
+
+ test-node:
+ name: Node
+ runs-on: ubuntu-latest
+ needs: ['install_dependencies']
+ timeout-minutes: 5
+
+ steps:
+ - uses: wyvox/action@v1
+ with:
+ node-version: 22.13.0
+ repo-token: ${{ secrets.GITHUB_TOKEN }}
+ - run: pnpm test:node
+
+ test-smoke:
+ name: Smoke
+ runs-on: ubuntu-latest
+ needs: ['install_dependencies']
+ timeout-minutes: 5
+
+ steps:
+ - uses: wyvox/action@v1
+ with:
+ node-version: 22.13.0
+ repo-token: ${{ secrets.GITHUB_TOKEN }}
+ - working-directory: ./smoke-tests/node
+ run: |
+ pnpm test:setup
+ pnpm test:node
+
+
test-chrome:
name: Chrome
runs-on: ubuntu-latest
diff --git a/.gitignore b/.gitignore
index 42fbb5942d..ec6222adef 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
+.DS_Store
/dist
**/dist
/control-dist/
diff --git a/.meta-updater/main.mjs b/.meta-updater/main.mjs
index 23cb6e7df4..f527fa34a3 100644
--- a/.meta-updater/main.mjs
+++ b/.meta-updater/main.mjs
@@ -26,10 +26,9 @@ export default () =>
const scripts = /** @type { JsonObject } */ (actual.scripts ??= {});
- update(scripts, 'test:lint', 'eslint . --quiet');
-
// replaced with prepack
delete scripts['test:types'];
+ delete scripts['test:lint'];
const updateRepo = () => {
update(actual, 'repository', {
@@ -57,6 +56,7 @@ export default () =>
*/
if (isRoot) {
updateRepo();
+ update(scripts, 'test:lint', 'eslint . --quiet');
} else {
delete actual.repository;
}
diff --git a/.meta-updater/package.json b/.meta-updater/package.json
index 6df9eb3687..0a1036c0cc 100644
--- a/.meta-updater/package.json
+++ b/.meta-updater/package.json
@@ -6,9 +6,7 @@
"keywords": [
"node"
],
- "scripts": {
- "test:lint": "eslint . --quiet"
- },
+ "scripts": {},
"dependencies": {
"@pnpm/find-workspace-dir": "^1000.0.1",
"@pnpm/meta-updater": "^2.0.3",
diff --git a/bin/package.json b/bin/package.json
index 0bc5b3daec..78409b28ee 100644
--- a/bin/package.json
+++ b/bin/package.json
@@ -13,9 +13,7 @@
"*"
]
},
- "scripts": {
- "test:lint": "eslint . --quiet"
- },
+ "scripts": {},
"dependencies": {
"@glimmer-workspace/repo-metadata": "workspace:*",
"@pnpm/workspace.find-packages": "^1000.0.5",
diff --git a/bin/run-node-tests.mjs b/bin/run-node-tests.mjs
deleted file mode 100755
index 927f6ea45b..0000000000
--- a/bin/run-node-tests.mjs
+++ /dev/null
@@ -1,46 +0,0 @@
-import path from 'node:path';
-
-import { execaSync } from 'execa';
-
-const __dirname = new URL('.', import.meta.url).pathname;
-
-const PROJECT_ROOT = path.resolve(__dirname, '..');
-const EMBER_BIN = 'ember';
-const QUNIT_BIN = 'qunit';
-const NODE_TEST_GLOB = '@glimmer/{node,bundle-compiler}/test/**/*node-test.js';
-
-// With the TAP reporter, testem swallows any errors generated while running
-// this script that are not in TAP format and does not treat non-zero exit codes
-// as a test failure. This handler ensures that any non-zero exits emit a
-// TAP-compatible bail out message.
-process.on('exit', (code) => {
- if (code !== 0) {
- console.log('Bail out! Non-zero exit code ' + code);
- }
-});
-
-let outputDir = process.env['EMBER_CLI_TEST_OUTPUT'];
-
-// When running inside `ember test`, we already have a build we can use.
-if (outputDir) {
- process.chdir(outputDir);
- exec(QUNIT_BIN, [NODE_TEST_GLOB]);
-} else {
- // When running script directly, we need to build first to ensure we have
- // tests to run.
- process.chdir(PROJECT_ROOT);
- exec(EMBER_BIN, ['build']);
- exec(QUNIT_BIN, [`dist/${NODE_TEST_GLOB}`]);
-}
-
-// Executes a command and pipes stdout back to the user.
-/**
- * @param {string} command
- * @param {readonly string[] | undefined} args
- */
-function exec(command, args) {
- execaSync(command, args, {
- stdio: 'inherit',
- preferLocal: true,
- });
-}
diff --git a/package.json b/package.json
index cfdbf92bdf..638730ce57 100644
--- a/package.json
+++ b/package.json
@@ -25,19 +25,20 @@
"lint:format": "prettier -c .",
"postinstall": "node --disable-warning=ExperimentalWarning --experimental-strip-types ./bin/bench-packages.mts",
"repo:lint:all": "turbo run lint:all",
- "repo:lint:files": "turbo run test:lint",
+ "repo:lint:files": "turbo run //#test:lint",
"repo:lint:fix": "turbo run test:lint -- --fix && prettier -w .",
"repo:lint:pub": "turbo run test:publint",
- "repo:lint:types": "tsc -b",
+ "repo:lint:types": "turbo run //#test:types",
"repo:prepack": "turbo run prepack",
"repo:update:conventions": "pnpm meta-updater",
"repo:update:metadata": "node --experimental-strip-types --no-warnings ./repo-metadata/lib/update.ts",
+ "smoke:setup": "node --disable-warning=ExperimentalWarning --experimental-strip-types ./smoke-tests/node/setup.ts",
"start": "vite",
"test": "node bin/run-tests.mjs",
"test:babel-plugins": "yarn workspace @glimmer/vm-babel-plugins test",
"test:browserstack": "ember test --test-port=7774 --host 127.0.0.1 --config-file=testem-browserstack.js",
"test:lint": "eslint . --quiet",
- "test:node": "node bin/run-node-tests.mjs",
+ "test:node": "pnpm turbo test:node",
"test:smoke": "SMOKE_TESTS=true ember test",
"ts": "node --disable-warning=ExperimentalWarning --experimental-strip-types",
"unlink:all": "esyes ./bin/unlink-all.mts"
@@ -54,8 +55,10 @@
"@eslint-community/eslint-plugin-eslint-comments": "^4.4.1",
"@eslint/config-inspector": "^0.7.1",
"@eslint/js": "9.17.0",
+ "@glimmer-workspace/benchmark-env": "workspace:*",
"@glimmer-workspace/build-support": "workspace:*",
"@glimmer-workspace/eslint-plugin": "workspace:*",
+ "@glimmer-workspace/integration-node-tests": "workspace:*",
"@glimmer-workspace/integration-tests": "workspace:*",
"@glimmer-workspace/repo-metadata": "workspace:*",
"@glimmer/env": "0.1.7",
@@ -126,6 +129,7 @@
"typescript": "^5.7.3",
"typescript-eslint": "^8.19.0",
"vite": "^6.0.10",
+ "vitest": "^3.0.4",
"zx": "^8.3.0"
},
"changelog": {
diff --git a/packages/@glimmer-workspace/benchmark-env/package.json b/packages/@glimmer-workspace/benchmark-env/package.json
index 1ada0933e8..7b6ad22f4d 100644
--- a/packages/@glimmer-workspace/benchmark-env/package.json
+++ b/packages/@glimmer-workspace/benchmark-env/package.json
@@ -25,7 +25,6 @@
],
"scripts": {
"prepack": "rollup -c rollup.config.mjs",
- "test:lint": "eslint . --quiet",
"test:publint": "publint"
},
"dependencies": {
diff --git a/packages/@glimmer-workspace/build/package.json b/packages/@glimmer-workspace/build/package.json
index 6d6ecf9097..63feddf552 100644
--- a/packages/@glimmer-workspace/build/package.json
+++ b/packages/@glimmer-workspace/build/package.json
@@ -14,9 +14,7 @@
"console"
]
},
- "scripts": {
- "test:lint": "eslint . --quiet"
- },
+ "scripts": {},
"dependencies": {
"@glimmer/local-debug-babel-plugin": "workspace:*",
"@rollup/plugin-commonjs": "^25.0.7",
diff --git a/packages/@glimmer-workspace/env/package.json b/packages/@glimmer-workspace/env/package.json
index d063182cf0..0dddbc69cf 100644
--- a/packages/@glimmer-workspace/env/package.json
+++ b/packages/@glimmer-workspace/env/package.json
@@ -4,7 +4,5 @@
"version": "0.92.0",
"type": "module",
"exports": "./index.d.ts",
- "scripts": {
- "test:lint": "eslint . --quiet"
- }
+ "scripts": {}
}
diff --git a/packages/@glimmer-workspace/eslint-plugin/package.json b/packages/@glimmer-workspace/eslint-plugin/package.json
index 883eb1e1f2..e6e99e9b15 100644
--- a/packages/@glimmer-workspace/eslint-plugin/package.json
+++ b/packages/@glimmer-workspace/eslint-plugin/package.json
@@ -4,9 +4,7 @@
"version": "0.92.0",
"type": "module",
"exports": "./index.js",
- "scripts": {
- "test:lint": "eslint . --quiet"
- },
+ "scripts": {},
"dependencies": {
"@eslint/eslintrc": "^3.2.0",
"@eslint/js": "^9.18.0",
diff --git a/packages/@glimmer-workspace/integration-node-tests/.gitignore b/packages/@glimmer-workspace/integration-node-tests/.gitignore
new file mode 100644
index 0000000000..8d12edbe86
--- /dev/null
+++ b/packages/@glimmer-workspace/integration-node-tests/.gitignore
@@ -0,0 +1,2 @@
+packages/
+pnpm-lock.yaml
diff --git a/packages/@glimmer-workspace/integration-node-tests/package.json b/packages/@glimmer-workspace/integration-node-tests/package.json
new file mode 100644
index 0000000000..65744ce04a
--- /dev/null
+++ b/packages/@glimmer-workspace/integration-node-tests/package.json
@@ -0,0 +1,21 @@
+{
+ "name": "@glimmer-workspace/integration-node-tests",
+ "version": "0.92.0",
+ "type": "module",
+ "private": true,
+ "repo-meta": {
+ "strictness": "loose"
+ },
+ "scripts": {
+ "test:node": "vitest --run"
+ },
+ "dependencies": {
+ "@glimmer/syntax": "workspace:*",
+ "execa": "^9.5.2",
+ "prettier": "^3.4.2"
+ },
+ "devDependencies": {
+ "@glimmer-workspace/repo-metadata": "workspace:*",
+ "vitest": "^3.0.4"
+ }
+}
diff --git a/packages/@glimmer-workspace/integration-node-tests/test/prettier.test.ts b/packages/@glimmer-workspace/integration-node-tests/test/prettier.test.ts
new file mode 100644
index 0000000000..562477fe12
--- /dev/null
+++ b/packages/@glimmer-workspace/integration-node-tests/test/prettier.test.ts
@@ -0,0 +1,41 @@
+import { createRequire } from 'node:module';
+
+import * as prettier from 'prettier';
+import { describe, expect, it } from 'vitest';
+
+const require = createRequire(import.meta.url);
+
+/**
+ * See: https://github.com/glimmerjs/glimmer-vm/issues/1688
+ *
+ * Requires the root package.json#pnpm#overrides point at our internal
+ * copy of @glimmer/syntax, or else prettier brings its own already published
+ * copy of @glimmer/syntax
+ *
+ * NOTE: that this test alone is insufficient to test our built outputs.
+ * the smoke-tests/* folders are for that purpose.
+ */
+describe('Prettier', () => {
+ it(`SMOKE: we've symlinked to the in-repo copy of @glimmer/syntax`, () => {
+ let workspacePath = require.resolve('@glimmer/syntax');
+ let prettierPath = require.resolve('prettier');
+ let prettierGlimmer = require.resolve('@glimmer/syntax', { paths: [prettierPath] });
+
+ expect(prettierGlimmer).toBe(workspacePath);
+ });
+
+ it('Underlynig preprocess API works', async () => {
+ let result = (await import('@glimmer/syntax')).preprocess('
');
+
+ expect(result, `It can be await import()'d, and doesn't error`).toBeTruthy();
+ });
+
+ it('Prettier can call preprocess', async () => {
+ let result = await prettier.format(` \n
`, { parser: 'glimmer' });
+
+ expect(result).toMatchInlineSnapshot(`
+ "
+
"
+ `);
+ });
+});
diff --git a/packages/@glimmer-workspace/integration-tests/package.json b/packages/@glimmer-workspace/integration-tests/package.json
index c138056767..7767159359 100644
--- a/packages/@glimmer-workspace/integration-tests/package.json
+++ b/packages/@glimmer-workspace/integration-tests/package.json
@@ -12,9 +12,7 @@
"test/**/*"
]
},
- "scripts": {
- "test:lint": "eslint . --quiet"
- },
+ "scripts": {},
"dependencies": {
"@glimmer-workspace/test-utils": "workspace:*",
"@glimmer/compiler": "workspace:*",
diff --git a/packages/@glimmer-workspace/integration-tests/test/package.json b/packages/@glimmer-workspace/integration-tests/test/package.json
index 02ea2e148b..7fda1b061b 100644
--- a/packages/@glimmer-workspace/integration-tests/test/package.json
+++ b/packages/@glimmer-workspace/integration-tests/test/package.json
@@ -2,9 +2,7 @@
"private": true,
"name": "@glimmer-test/integration-tests",
"version": "0.92.0",
- "scripts": {
- "test:lint": "eslint . --quiet"
- },
+ "scripts": {},
"dependencies": {
"@glimmer-workspace/integration-tests": "workspace:*",
"@glimmer-workspace/test-utils": "workspace:*",
diff --git a/packages/@glimmer-workspace/test-utils/package.json b/packages/@glimmer-workspace/test-utils/package.json
index 2e006deeee..aaba44b301 100644
--- a/packages/@glimmer-workspace/test-utils/package.json
+++ b/packages/@glimmer-workspace/test-utils/package.json
@@ -4,9 +4,7 @@
"version": "0.92.0",
"type": "module",
"main": "index.ts",
- "scripts": {
- "test:lint": "eslint . --quiet"
- },
+ "scripts": {},
"dependencies": {
"@glimmer/interfaces": "workspace:*",
"@glimmer/util": "workspace:*"
diff --git a/packages/@glimmer/compiler/package.json b/packages/@glimmer/compiler/package.json
index 7c67297d5e..705c51d504 100644
--- a/packages/@glimmer/compiler/package.json
+++ b/packages/@glimmer/compiler/package.json
@@ -27,7 +27,6 @@
],
"scripts": {
"prepack": "rollup -c rollup.config.mjs",
- "test:lint": "eslint . --quiet",
"test:publint": "publint"
},
"dependencies": {
diff --git a/packages/@glimmer/compiler/test/package.json b/packages/@glimmer/compiler/test/package.json
index c05aeec506..7381093647 100644
--- a/packages/@glimmer/compiler/test/package.json
+++ b/packages/@glimmer/compiler/test/package.json
@@ -2,9 +2,7 @@
"private": true,
"name": "@glimmer-test/compiler",
"version": "0.92.0",
- "scripts": {
- "test:lint": "eslint . --quiet"
- },
+ "scripts": {},
"dependencies": {
"@glimmer/compiler": "workspace:*",
"@glimmer/interfaces": "workspace:*",
diff --git a/packages/@glimmer/constants/package.json b/packages/@glimmer/constants/package.json
index 7ace7a8edb..0450258700 100644
--- a/packages/@glimmer/constants/package.json
+++ b/packages/@glimmer/constants/package.json
@@ -7,9 +7,7 @@
"type": "module",
"main": "index.ts",
"types": "index.ts",
- "scripts": {
- "test:lint": "eslint . --quiet"
- },
+ "scripts": {},
"dependencies": {
"@glimmer/interfaces": "workspace:*"
},
diff --git a/packages/@glimmer/constants/test/package.json b/packages/@glimmer/constants/test/package.json
index 6e38b1da99..1affb87572 100644
--- a/packages/@glimmer/constants/test/package.json
+++ b/packages/@glimmer/constants/test/package.json
@@ -2,9 +2,7 @@
"private": true,
"name": "@glimmer-test/constants",
"version": "0.92.0",
- "scripts": {
- "test:lint": "eslint . --quiet"
- },
+ "scripts": {},
"dependencies": {
"@glimmer/env": "0.1.7",
"@glimmer/util": "workspace:*"
diff --git a/packages/@glimmer/debug-util/lib/present.ts b/packages/@glimmer/debug-util/lib/present.ts
index 5b2886e747..e03386ab4f 100644
--- a/packages/@glimmer/debug-util/lib/present.ts
+++ b/packages/@glimmer/debug-util/lib/present.ts
@@ -14,8 +14,8 @@ export function assertPresent(value: T, message?: string): asserts value is P
}
}
-export function isPresentArray(list: readonly T[]): list is PresentArray {
- return list.length > 0;
+export function isPresentArray(list?: readonly T[]): list is PresentArray {
+ return list ? list.length > 0 : false;
}
export function ifPresent(
diff --git a/packages/@glimmer/debug-util/package.json b/packages/@glimmer/debug-util/package.json
index 4217d34135..a54e810860 100644
--- a/packages/@glimmer/debug-util/package.json
+++ b/packages/@glimmer/debug-util/package.json
@@ -6,9 +6,7 @@
"description": "Common utilities used in Glimmer with debug-specific behavior",
"type": "module",
"exports": "./index.ts",
- "scripts": {
- "test:lint": "eslint . --quiet"
- },
+ "scripts": {},
"dependencies": {
"@glimmer/interfaces": "workspace:*"
},
diff --git a/packages/@glimmer/debug-util/test/package.json b/packages/@glimmer/debug-util/test/package.json
index 6470fea724..8673ef4002 100644
--- a/packages/@glimmer/debug-util/test/package.json
+++ b/packages/@glimmer/debug-util/test/package.json
@@ -2,9 +2,7 @@
"private": true,
"name": "@glimmer-test/debug-util",
"version": "0.92.0",
- "scripts": {
- "test:lint": "eslint . --quiet"
- },
+ "scripts": {},
"dependencies": {
"@glimmer/env": "0.1.7",
"@glimmer/util": "workspace:*"
diff --git a/packages/@glimmer/debug/package.json b/packages/@glimmer/debug/package.json
index 0dd5e96239..dba5654778 100644
--- a/packages/@glimmer/debug/package.json
+++ b/packages/@glimmer/debug/package.json
@@ -7,9 +7,7 @@
"sideEffects": false,
"type": "module",
"exports": "./index.ts",
- "scripts": {
- "test:lint": "eslint . --quiet"
- },
+ "scripts": {},
"dependencies": {
"@glimmer/interfaces": "workspace:*",
"@glimmer/reference": "workspace:*",
diff --git a/packages/@glimmer/debug/test/package.json b/packages/@glimmer/debug/test/package.json
index 3e62957b1a..6ec0d83216 100644
--- a/packages/@glimmer/debug/test/package.json
+++ b/packages/@glimmer/debug/test/package.json
@@ -2,9 +2,7 @@
"private": true,
"name": "@glimmer-test/debug",
"version": "0.92.0",
- "scripts": {
- "test:lint": "eslint . --quiet"
- },
+ "scripts": {},
"dependencies": {
"@glimmer/debug": "workspace:*"
}
diff --git a/packages/@glimmer/destroyable/package.json b/packages/@glimmer/destroyable/package.json
index f7548f22cb..ff82003281 100644
--- a/packages/@glimmer/destroyable/package.json
+++ b/packages/@glimmer/destroyable/package.json
@@ -28,7 +28,6 @@
],
"scripts": {
"prepack": "rollup -c rollup.config.mjs",
- "test:lint": "eslint . --quiet",
"test:publint": "publint"
},
"dependencies": {
diff --git a/packages/@glimmer/destroyable/test/package.json b/packages/@glimmer/destroyable/test/package.json
index a6392d150b..97adbbaa98 100644
--- a/packages/@glimmer/destroyable/test/package.json
+++ b/packages/@glimmer/destroyable/test/package.json
@@ -2,9 +2,7 @@
"private": true,
"name": "@glimmer-test/destroyable",
"version": "0.92.0",
- "scripts": {
- "test:lint": "eslint . --quiet"
- },
+ "scripts": {},
"dependencies": {
"@glimmer/destroyable": "workspace:*",
"@glimmer/global-context": "workspace:*",
diff --git a/packages/@glimmer/encoder/package.json b/packages/@glimmer/encoder/package.json
index 92f15701d2..3463bb5929 100644
--- a/packages/@glimmer/encoder/package.json
+++ b/packages/@glimmer/encoder/package.json
@@ -27,7 +27,6 @@
],
"scripts": {
"prepack": "rollup -c rollup.config.mjs",
- "test:lint": "eslint . --quiet",
"test:publint": "publint"
},
"dependencies": {
diff --git a/packages/@glimmer/global-context/package.json b/packages/@glimmer/global-context/package.json
index ef9052c2b0..123532aae9 100644
--- a/packages/@glimmer/global-context/package.json
+++ b/packages/@glimmer/global-context/package.json
@@ -27,7 +27,6 @@
],
"scripts": {
"prepack": "rollup -c rollup.config.mjs",
- "test:lint": "eslint . --quiet",
"test:publint": "publint"
},
"devDependencies": {
diff --git a/packages/@glimmer/interfaces/package.json b/packages/@glimmer/interfaces/package.json
index 81ebd9e130..d068d7094c 100644
--- a/packages/@glimmer/interfaces/package.json
+++ b/packages/@glimmer/interfaces/package.json
@@ -16,7 +16,6 @@
"index.d.ts"
],
"scripts": {
- "test:lint": "eslint . --quiet",
"test:publint": "publint"
},
"dependencies": {
diff --git a/packages/@glimmer/local-debug-babel-plugin/package.json b/packages/@glimmer/local-debug-babel-plugin/package.json
index 66ae30bb01..a16923bf66 100644
--- a/packages/@glimmer/local-debug-babel-plugin/package.json
+++ b/packages/@glimmer/local-debug-babel-plugin/package.json
@@ -8,7 +8,5 @@
"type": "module",
"private": true,
"exports": "./index.js",
- "scripts": {
- "test:lint": "eslint . --quiet"
- }
+ "scripts": {}
}
diff --git a/packages/@glimmer/local-debug-flags/package.json b/packages/@glimmer/local-debug-flags/package.json
index 30312ee3ad..5b2d8a8479 100644
--- a/packages/@glimmer/local-debug-flags/package.json
+++ b/packages/@glimmer/local-debug-flags/package.json
@@ -6,9 +6,7 @@
"type": "module",
"private": true,
"exports": "./index.ts",
- "scripts": {
- "test:lint": "eslint . --quiet"
- },
+ "scripts": {},
"devDependencies": {
"eslint": "^9.18.0"
}
diff --git a/packages/@glimmer/manager/package.json b/packages/@glimmer/manager/package.json
index 97f23b7b30..afb4c8afe6 100644
--- a/packages/@glimmer/manager/package.json
+++ b/packages/@glimmer/manager/package.json
@@ -27,7 +27,6 @@
],
"scripts": {
"prepack": "rollup -c rollup.config.mjs",
- "test:lint": "eslint . --quiet",
"test:publint": "publint"
},
"dependencies": {
diff --git a/packages/@glimmer/manager/test/package.json b/packages/@glimmer/manager/test/package.json
index 871f709b20..9b53b62fc1 100644
--- a/packages/@glimmer/manager/test/package.json
+++ b/packages/@glimmer/manager/test/package.json
@@ -5,9 +5,7 @@
"strictness": "loose"
},
"version": "0.92.0",
- "scripts": {
- "test:lint": "eslint . --quiet"
- },
+ "scripts": {},
"dependencies": {
"@glimmer/interfaces": "workspace:*",
"@glimmer/manager": "workspace:*",
diff --git a/packages/@glimmer/node/package.json b/packages/@glimmer/node/package.json
index 2f937141a0..fd6a6c855b 100644
--- a/packages/@glimmer/node/package.json
+++ b/packages/@glimmer/node/package.json
@@ -27,7 +27,6 @@
],
"scripts": {
"prepack": "rollup -c rollup.config.mjs",
- "test:lint": "eslint . --quiet",
"test:publint": "publint"
},
"dependencies": {
diff --git a/packages/@glimmer/opcode-compiler/package.json b/packages/@glimmer/opcode-compiler/package.json
index 1f122684db..2b4a83aa9f 100644
--- a/packages/@glimmer/opcode-compiler/package.json
+++ b/packages/@glimmer/opcode-compiler/package.json
@@ -27,7 +27,6 @@
],
"scripts": {
"prepack": "rollup -c rollup.config.mjs",
- "test:lint": "eslint . --quiet",
"test:publint": "publint"
},
"dependencies": {
diff --git a/packages/@glimmer/owner/package.json b/packages/@glimmer/owner/package.json
index f802d06f27..3fd0a8caad 100644
--- a/packages/@glimmer/owner/package.json
+++ b/packages/@glimmer/owner/package.json
@@ -28,7 +28,6 @@
],
"scripts": {
"prepack": "rollup -c rollup.config.mjs",
- "test:lint": "eslint . --quiet",
"test:publint": "publint"
},
"devDependencies": {
diff --git a/packages/@glimmer/owner/test/package.json b/packages/@glimmer/owner/test/package.json
index c6a2c81ed9..2d83d6edef 100644
--- a/packages/@glimmer/owner/test/package.json
+++ b/packages/@glimmer/owner/test/package.json
@@ -2,9 +2,7 @@
"private": true,
"name": "@glimmer-test/owner",
"version": "0.92.0",
- "scripts": {
- "test:lint": "eslint . --quiet"
- },
+ "scripts": {},
"dependencies": {
"@glimmer/owner": "workspace:*"
}
diff --git a/packages/@glimmer/program/package.json b/packages/@glimmer/program/package.json
index 3134fbe265..9a09a9e3e9 100644
--- a/packages/@glimmer/program/package.json
+++ b/packages/@glimmer/program/package.json
@@ -27,7 +27,6 @@
],
"scripts": {
"prepack": "rollup -c rollup.config.mjs",
- "test:lint": "eslint . --quiet",
"test:publint": "publint"
},
"dependencies": {
diff --git a/packages/@glimmer/program/test/package.json b/packages/@glimmer/program/test/package.json
index 0e94631864..8254430227 100644
--- a/packages/@glimmer/program/test/package.json
+++ b/packages/@glimmer/program/test/package.json
@@ -2,9 +2,7 @@
"private": true,
"name": "@glimmer-test/program",
"version": "0.92.0",
- "scripts": {
- "test:lint": "eslint . --quiet"
- },
+ "scripts": {},
"dependencies": {
"@glimmer/program": "workspace:*"
}
diff --git a/packages/@glimmer/reference/package.json b/packages/@glimmer/reference/package.json
index 17b95be601..56e6485c63 100644
--- a/packages/@glimmer/reference/package.json
+++ b/packages/@glimmer/reference/package.json
@@ -28,7 +28,6 @@
],
"scripts": {
"prepack": "rollup -c rollup.config.mjs",
- "test:lint": "eslint . --quiet",
"test:publint": "publint"
},
"dependencies": {
diff --git a/packages/@glimmer/reference/test/package.json b/packages/@glimmer/reference/test/package.json
index c621c30116..2e4a5b8e50 100644
--- a/packages/@glimmer/reference/test/package.json
+++ b/packages/@glimmer/reference/test/package.json
@@ -2,9 +2,7 @@
"private": true,
"name": "@glimmer-test/reference",
"version": "0.92.0",
- "scripts": {
- "test:lint": "eslint . --quiet"
- },
+ "scripts": {},
"dependencies": {
"@glimmer/global-context": "workspace:*",
"@glimmer/reference": "workspace:*",
diff --git a/packages/@glimmer/runtime/package.json b/packages/@glimmer/runtime/package.json
index caf836e48f..3284f2f07c 100644
--- a/packages/@glimmer/runtime/package.json
+++ b/packages/@glimmer/runtime/package.json
@@ -28,7 +28,6 @@
],
"scripts": {
"prepack": "rollup -c rollup.config.mjs",
- "test:lint": "eslint . --quiet",
"test:publint": "publint"
},
"dependencies": {
diff --git a/packages/@glimmer/syntax/package.json b/packages/@glimmer/syntax/package.json
index 286e4648f4..9f61232459 100644
--- a/packages/@glimmer/syntax/package.json
+++ b/packages/@glimmer/syntax/package.json
@@ -27,7 +27,6 @@
],
"scripts": {
"prepack": "rollup -c rollup.config.mjs",
- "test:lint": "eslint . --quiet",
"test:publint": "publint"
},
"dependencies": {
diff --git a/packages/@glimmer/syntax/test/package.json b/packages/@glimmer/syntax/test/package.json
index 39d72baad4..9dc323dd8e 100644
--- a/packages/@glimmer/syntax/test/package.json
+++ b/packages/@glimmer/syntax/test/package.json
@@ -2,9 +2,7 @@
"private": true,
"name": "@glimmer-test/syntax",
"version": "0.92.0",
- "scripts": {
- "test:lint": "eslint . --quiet"
- },
+ "scripts": {},
"dependencies": {
"@glimmer-workspace/integration-tests": "workspace:*",
"@glimmer-workspace/test-utils": "workspace:*",
diff --git a/packages/@glimmer/util/package.json b/packages/@glimmer/util/package.json
index d933ad3d51..7674c22562 100644
--- a/packages/@glimmer/util/package.json
+++ b/packages/@glimmer/util/package.json
@@ -28,7 +28,6 @@
],
"scripts": {
"prepack": "rollup -c rollup.config.mjs",
- "test:lint": "eslint . --quiet",
"test:publint": "publint"
},
"dependencies": {
diff --git a/packages/@glimmer/util/test/package.json b/packages/@glimmer/util/test/package.json
index 21ddd1440c..6a937c0298 100644
--- a/packages/@glimmer/util/test/package.json
+++ b/packages/@glimmer/util/test/package.json
@@ -2,9 +2,7 @@
"private": true,
"name": "@glimmer-test/util",
"version": "0.92.0",
- "scripts": {
- "test:lint": "eslint . --quiet"
- },
+ "scripts": {},
"dependencies": {
"@glimmer/util": "workspace:*"
}
diff --git a/packages/@glimmer/validator/package.json b/packages/@glimmer/validator/package.json
index e46a143e7a..02a48d5039 100644
--- a/packages/@glimmer/validator/package.json
+++ b/packages/@glimmer/validator/package.json
@@ -28,7 +28,6 @@
],
"scripts": {
"prepack": "rollup -c rollup.config.mjs",
- "test:lint": "eslint . --quiet",
"test:publint": "publint"
},
"dependencies": {
diff --git a/packages/@glimmer/validator/test/package.json b/packages/@glimmer/validator/test/package.json
index d208f0d198..2aa799b845 100644
--- a/packages/@glimmer/validator/test/package.json
+++ b/packages/@glimmer/validator/test/package.json
@@ -5,9 +5,7 @@
"strictness": "strict"
},
"version": "0.92.0",
- "scripts": {
- "test:lint": "eslint . --quiet"
- },
+ "scripts": {},
"dependencies": {
"@glimmer/global-context": "workspace:*",
"@glimmer/interfaces": "workspace:*",
diff --git a/packages/@glimmer/vm-babel-plugins/package.json b/packages/@glimmer/vm-babel-plugins/package.json
index 9ef0e89b50..65b3ceef89 100644
--- a/packages/@glimmer/vm-babel-plugins/package.json
+++ b/packages/@glimmer/vm-babel-plugins/package.json
@@ -31,7 +31,6 @@
"scripts": {
"prepack": "rollup -c rollup.config.mjs",
"test": "mocha",
- "test:lint": "eslint . --quiet",
"test:publint": "publint"
},
"dependencies": {
diff --git a/packages/@glimmer/vm/package.json b/packages/@glimmer/vm/package.json
index 4517aa56d1..01d2fc2b75 100644
--- a/packages/@glimmer/vm/package.json
+++ b/packages/@glimmer/vm/package.json
@@ -27,7 +27,6 @@
],
"scripts": {
"prepack": "rollup -c rollup.config.mjs",
- "test:lint": "eslint . --quiet",
"test:publint": "publint"
},
"dependencies": {
diff --git a/packages/@glimmer/wire-format/package.json b/packages/@glimmer/wire-format/package.json
index b4488cd4e7..7f5379590c 100644
--- a/packages/@glimmer/wire-format/package.json
+++ b/packages/@glimmer/wire-format/package.json
@@ -28,7 +28,6 @@
],
"scripts": {
"prepack": "rollup -c rollup.config.mjs",
- "test:lint": "eslint . --quiet",
"test:publint": "publint"
},
"dependencies": {
diff --git a/packages/@types/eslint-community__eslint-plugin-eslint-comments/package.json b/packages/@types/eslint-community__eslint-plugin-eslint-comments/package.json
index 7bd289f386..7ad830c1d3 100644
--- a/packages/@types/eslint-community__eslint-plugin-eslint-comments/package.json
+++ b/packages/@types/eslint-community__eslint-plugin-eslint-comments/package.json
@@ -3,9 +3,7 @@
"name": "@types/eslint-community__eslint-plugin-eslint-comments",
"version": "0.92.0",
"exports": "./index.d.ts",
- "scripts": {
- "test:lint": "eslint . --quiet"
- },
+ "scripts": {},
"dependencies": {
"@types/eslint": "^9.6.1"
}
diff --git a/packages/@types/eslint-plugin-import/package.json b/packages/@types/eslint-plugin-import/package.json
index b24da21ab4..00cb79fc3e 100644
--- a/packages/@types/eslint-plugin-import/package.json
+++ b/packages/@types/eslint-plugin-import/package.json
@@ -4,9 +4,7 @@
"version": "0.92.0",
"type": "module",
"exports": "./index.d.ts",
- "scripts": {
- "test:lint": "eslint . --quiet"
- },
+ "scripts": {},
"dependencies": {
"@types/eslint": "^9.6.1"
}
diff --git a/packages/@types/eslint-plugin-qunit/package.json b/packages/@types/eslint-plugin-qunit/package.json
index 61521e64da..7f8896aec9 100644
--- a/packages/@types/eslint-plugin-qunit/package.json
+++ b/packages/@types/eslint-plugin-qunit/package.json
@@ -3,9 +3,7 @@
"name": "@types/eslint-plugin-qunit",
"types": "index.d.ts",
"version": "0.92.0",
- "scripts": {
- "test:lint": "eslint . --quiet"
- },
+ "scripts": {},
"dependencies": {
"@types/eslint": "^9.6.1"
}
diff --git a/packages/@types/js-reporters/package.json b/packages/@types/js-reporters/package.json
index 4c95412521..4e1419c705 100644
--- a/packages/@types/js-reporters/package.json
+++ b/packages/@types/js-reporters/package.json
@@ -3,7 +3,5 @@
"name": "@types/js-reporters",
"version": "0.92.0",
"exports": "./index.d.ts",
- "scripts": {
- "test:lint": "eslint . --quiet"
- }
+ "scripts": {}
}
diff --git a/packages/@types/puppeteer-chromium-resolver/package.json b/packages/@types/puppeteer-chromium-resolver/package.json
index 780b101976..66280a4cf2 100644
--- a/packages/@types/puppeteer-chromium-resolver/package.json
+++ b/packages/@types/puppeteer-chromium-resolver/package.json
@@ -3,9 +3,7 @@
"name": "@types/puppeteer-chromium-resolver",
"version": "0.92.0",
"exports": "./index.d.ts",
- "scripts": {
- "test:lint": "eslint . --quiet"
- },
+ "scripts": {},
"dependencies": {
"puppeteer": "23.11.1"
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 126251827c..9148d31c8b 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -47,12 +47,18 @@ importers:
'@eslint/js':
specifier: 9.17.0
version: 9.17.0
+ '@glimmer-workspace/benchmark-env':
+ specifier: workspace:*
+ version: link:packages/@glimmer-workspace/benchmark-env
'@glimmer-workspace/build-support':
specifier: workspace:*
version: link:packages/@glimmer-workspace/build
'@glimmer-workspace/eslint-plugin':
specifier: workspace:*
version: link:packages/@glimmer-workspace/eslint-plugin
+ '@glimmer-workspace/integration-node-tests':
+ specifier: workspace:*
+ version: link:packages/@glimmer-workspace/integration-node-tests
'@glimmer-workspace/integration-tests':
specifier: workspace:*
version: link:packages/@glimmer-workspace/integration-tests
@@ -263,6 +269,9 @@ importers:
vite:
specifier: ^6.0.10
version: 6.0.10(@types/node@20.17.10)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)
+ vitest:
+ specifier: ^3.0.4
+ version: 3.0.4(@types/node@20.17.10)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)
zx:
specifier: ^8.3.0
version: 8.3.0
@@ -592,6 +601,25 @@ importers:
specifier: ^9.18.0
version: 9.18.0(jiti@2.4.2)
+ packages/@glimmer-workspace/integration-node-tests:
+ dependencies:
+ '@glimmer/syntax':
+ specifier: workspace:*
+ version: link:../../@glimmer/syntax
+ execa:
+ specifier: ^9.5.2
+ version: 9.5.2
+ prettier:
+ specifier: ^3.4.2
+ version: 3.4.2
+ devDependencies:
+ '@glimmer-workspace/repo-metadata':
+ specifier: workspace:*
+ version: link:../../../repo-metadata
+ vitest:
+ specifier: ^3.0.4
+ version: 3.0.4(@types/node@20.17.10)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)
+
packages/@glimmer-workspace/integration-tests:
dependencies:
'@glimmer-workspace/test-utils':
@@ -4416,6 +4444,35 @@ packages:
resolution: {integrity: sha512-v/BpkeeYAsPkKCkR8BDwcno0llhzWVqPOamQrAEMdpZav2Y9OVjd9dwJyBLJWwf335B5DmlifECIkZRJCaGaHA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ '@vitest/expect@3.0.4':
+ resolution: {integrity: sha512-Nm5kJmYw6P2BxhJPkO3eKKhGYKRsnqJqf+r0yOGRKpEP+bSCBDsjXgiu1/5QFrnPMEgzfC38ZEjvCFgaNBC0Eg==}
+
+ '@vitest/mocker@3.0.4':
+ resolution: {integrity: sha512-gEef35vKafJlfQbnyOXZ0Gcr9IBUsMTyTLXsEQwuyYAerpHqvXhzdBnDFuHLpFqth3F7b6BaFr4qV/Cs1ULx5A==}
+ peerDependencies:
+ msw: ^2.4.9
+ vite: ^5.0.0 || ^6.0.0
+ peerDependenciesMeta:
+ msw:
+ optional: true
+ vite:
+ optional: true
+
+ '@vitest/pretty-format@3.0.4':
+ resolution: {integrity: sha512-ts0fba+dEhK2aC9PFuZ9LTpULHpY/nd6jhAQ5IMU7Gaj7crPCTdCFfgvXxruRBLFS+MLraicCuFXxISEq8C93g==}
+
+ '@vitest/runner@3.0.4':
+ resolution: {integrity: sha512-dKHzTQ7n9sExAcWH/0sh1elVgwc7OJ2lMOBrAm73J7AH6Pf9T12Zh3lNE1TETZaqrWFXtLlx3NVrLRb5hCK+iw==}
+
+ '@vitest/snapshot@3.0.4':
+ resolution: {integrity: sha512-+p5knMLwIk7lTQkM3NonZ9zBewzVp9EVkVpvNta0/PlFWpiqLaRcF4+33L1it3uRUCh0BGLOaXPPGEjNKfWb4w==}
+
+ '@vitest/spy@3.0.4':
+ resolution: {integrity: sha512-sXIMF0oauYyUy2hN49VFTYodzEAu744MmGcPR3ZBsPM20G+1/cSW/n1U+3Yu/zHxX2bIDe1oJASOkml+osTU6Q==}
+
+ '@vitest/utils@3.0.4':
+ resolution: {integrity: sha512-8BqC1ksYsHtbWH+DfpOAKrFw3jl3Uf9J7yeFh85Pz52IWuh1hBBtyfEbRNNZNjl8H8A5yMLH9/t+k7HIKzQcZQ==}
+
'@xmldom/xmldom@0.8.10':
resolution: {integrity: sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==}
engines: {node: '>=10.0.0'}
@@ -4675,6 +4732,10 @@ packages:
assert-never@1.4.0:
resolution: {integrity: sha512-5oJg84os6NMQNl27T9LnZkvvqzvAnHu03ShCnoj6bsJwS7L8AO4lf+C/XjK/nvzEqQB744moC6V128RucQd1jA==}
+ assertion-error@2.0.1:
+ resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==}
+ engines: {node: '>=12'}
+
assign-symbols@1.0.0:
resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==}
engines: {node: '>=0.10.0'}
@@ -5116,6 +5177,10 @@ packages:
resolution: {integrity: sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==}
hasBin: true
+ chai@5.1.2:
+ resolution: {integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==}
+ engines: {node: '>=12'}
+
chalk@1.1.3:
resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==}
engines: {node: '>=0.10.0'}
@@ -5146,6 +5211,10 @@ packages:
charm@1.0.2:
resolution: {integrity: sha512-wqW3VdPnlSWT4eRiYX+hcs+C6ViBPUWk1qTCd+37qw9kEm/a5n2qcyQDMBWvSYKN/ctqZzeXNQaeBjOetJJUkw==}
+ check-error@2.1.1:
+ resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==}
+ engines: {node: '>= 16'}
+
chokidar@3.5.3:
resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
engines: {node: '>= 8.10.0'}
@@ -5817,6 +5886,10 @@ packages:
resolution: {integrity: sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==}
engines: {node: '>=4'}
+ deep-eql@5.0.2:
+ resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==}
+ engines: {node: '>=6'}
+
deep-extend@0.6.0:
resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==}
engines: {node: '>=4.0.0'}
@@ -6121,6 +6194,9 @@ packages:
resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
engines: {node: '>= 0.4'}
+ es-module-lexer@1.6.0:
+ resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==}
+
es-object-atoms@1.0.0:
resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==}
engines: {node: '>= 0.4'}
@@ -6394,6 +6470,9 @@ packages:
estree-walker@2.0.2:
resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
+ estree-walker@3.0.3:
+ resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==}
+
esutils@2.0.3:
resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
engines: {node: '>=0.10.0'}
@@ -6462,6 +6541,10 @@ packages:
resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==}
engines: {node: '>=0.10.0'}
+ expect-type@1.1.0:
+ resolution: {integrity: sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==}
+ engines: {node: '>=12.0.0'}
+
express@4.21.2:
resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==}
engines: {node: '>= 0.10.0'}
@@ -7897,12 +7980,14 @@ packages:
lodash.omit@4.5.0:
resolution: {integrity: sha512-XeqSp49hNGmlkj2EJlfrQFIzQ6lXdNro9sddtQzcJY8QaoC2GO0DT7xaIokHeyM+mIT0mPMlPvkYzg2xCuHdZg==}
+ deprecated: This package is deprecated. Use destructuring assignment syntax instead.
lodash.restparam@3.6.1:
resolution: {integrity: sha512-L4/arjjuq4noiUJpt3yS6KIKDtJwNe2fIYgMqyYYKoeIfV1iEqvPwhCx23o+R9dzouGihDAPN1dTIRWa7zk8tw==}
lodash.template@4.5.0:
resolution: {integrity: sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==}
+ deprecated: This package is deprecated. Use https://socket.dev/npm/package/eta instead.
lodash.templatesettings@4.2.0:
resolution: {integrity: sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==}
@@ -7939,6 +8024,9 @@ packages:
resolution: {integrity: sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg==}
engines: {node: '>=4'}
+ loupe@3.1.2:
+ resolution: {integrity: sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==}
+
lower-case@2.0.2:
resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==}
@@ -8820,6 +8908,13 @@ packages:
pathe@1.1.2:
resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==}
+ pathe@2.0.2:
+ resolution: {integrity: sha512-15Ztpk+nov8DR524R4BF7uEuzESgzUEAV4Ah7CUMNGXdE5ELuvxElxGXndBl32vMSsWa1jpNf22Z+Er3sKwq+w==}
+
+ pathval@2.0.0:
+ resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==}
+ engines: {node: '>= 14.16'}
+
pause-stream@0.0.11:
resolution: {integrity: sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==}
@@ -9790,6 +9885,9 @@ packages:
resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==}
engines: {node: '>= 0.4'}
+ siginfo@2.0.0:
+ resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==}
+
signal-exit@3.0.7:
resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
@@ -9969,6 +10067,9 @@ packages:
resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==}
deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility'
+ stackback@0.0.2:
+ resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==}
+
stacktracey@2.1.8:
resolution: {integrity: sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw==}
@@ -9984,6 +10085,9 @@ packages:
resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==}
engines: {node: '>= 0.8'}
+ std-env@3.8.0:
+ resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==}
+
stdin-discarder@0.2.2:
resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==}
engines: {node: '>=18'}
@@ -10266,6 +10370,24 @@ packages:
tiny-lr@2.0.0:
resolution: {integrity: sha512-f6nh0VMRvhGx4KCeK1lQ/jaL0Zdb5WdR+Jk8q9OSUQnaSDxAEGH1fgqLZ+cMl5EW3F2MGnCsalBO1IsnnogW1Q==}
+ tinybench@2.9.0:
+ resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==}
+
+ tinyexec@0.3.2:
+ resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==}
+
+ tinypool@1.0.2:
+ resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==}
+ engines: {node: ^18.0.0 || >=20.0.0}
+
+ tinyrainbow@2.0.0:
+ resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==}
+ engines: {node: '>=14.0.0'}
+
+ tinyspy@3.0.2:
+ resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==}
+ engines: {node: '>=14.0.0'}
+
tmp@0.0.28:
resolution: {integrity: sha512-c2mmfiBmND6SOVxzogm1oda0OJ1HZVIk/5n26N59dDTh80MUeavpiCls4PGAdkX1PFkKokLpcf7prSjCeXLsJg==}
engines: {node: '>=0.4.0'}
@@ -10703,6 +10825,11 @@ packages:
resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
engines: {node: '>= 0.8'}
+ vite-node@3.0.4:
+ resolution: {integrity: sha512-7JZKEzcYV2Nx3u6rlvN8qdo3QV7Fxyt6hx+CCKz9fbWxdX5IvUOmTWEAxMrWxaiSf7CKGLJQ5rFu8prb/jBjOA==}
+ engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
+ hasBin: true
+
vite@5.4.10:
resolution: {integrity: sha512-1hvaPshuPUtxeQ0hsVH3Mud0ZanOLwVTneA1EgbAM5LhaZEqyPWGRQ7BtaMvUrTDeEaC8pxtj6a6jku3x4z6SQ==}
engines: {node: ^18.0.0 || >=20.0.0}
@@ -10774,6 +10901,34 @@ packages:
yaml:
optional: true
+ vitest@3.0.4:
+ resolution: {integrity: sha512-6XG8oTKy2gnJIFTHP6LD7ExFeNLxiTkK3CfMvT7IfR8IN+BYICCf0lXUQmX7i7JoxUP8QmeP4mTnWXgflu4yjw==}
+ engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
+ hasBin: true
+ peerDependencies:
+ '@edge-runtime/vm': '*'
+ '@types/debug': ^4.1.12
+ '@types/node': ^20.17.10
+ '@vitest/browser': 3.0.4
+ '@vitest/ui': 3.0.4
+ happy-dom: '*'
+ jsdom: '*'
+ peerDependenciesMeta:
+ '@edge-runtime/vm':
+ optional: true
+ '@types/debug':
+ optional: true
+ '@types/node':
+ optional: true
+ '@vitest/browser':
+ optional: true
+ '@vitest/ui':
+ optional: true
+ happy-dom:
+ optional: true
+ jsdom:
+ optional: true
+
walk-sync@0.3.4:
resolution: {integrity: sha512-ttGcuHA/OBnN2pcM6johpYlEms7XpO5/fyKIr48541xXedan4roO8cS1Q2S/zbbjGH/BarYDAMeS2Mi9HE5Tig==}
@@ -10854,6 +11009,11 @@ packages:
engines: {node: ^18.17.0 || >=20.5.0}
hasBin: true
+ why-is-node-running@2.3.0:
+ resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==}
+ engines: {node: '>=8'}
+ hasBin: true
+
wide-align@1.1.5:
resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==}
@@ -14221,6 +14381,46 @@ snapshots:
'@typescript-eslint/types': 8.20.0
eslint-visitor-keys: 4.2.0
+ '@vitest/expect@3.0.4':
+ dependencies:
+ '@vitest/spy': 3.0.4
+ '@vitest/utils': 3.0.4
+ chai: 5.1.2
+ tinyrainbow: 2.0.0
+
+ '@vitest/mocker@3.0.4(vite@6.0.10(@types/node@20.17.10)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0))':
+ dependencies:
+ '@vitest/spy': 3.0.4
+ estree-walker: 3.0.3
+ magic-string: 0.30.17
+ optionalDependencies:
+ vite: 6.0.10(@types/node@20.17.10)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)
+
+ '@vitest/pretty-format@3.0.4':
+ dependencies:
+ tinyrainbow: 2.0.0
+
+ '@vitest/runner@3.0.4':
+ dependencies:
+ '@vitest/utils': 3.0.4
+ pathe: 2.0.2
+
+ '@vitest/snapshot@3.0.4':
+ dependencies:
+ '@vitest/pretty-format': 3.0.4
+ magic-string: 0.30.17
+ pathe: 2.0.2
+
+ '@vitest/spy@3.0.4':
+ dependencies:
+ tinyspy: 3.0.2
+
+ '@vitest/utils@3.0.4':
+ dependencies:
+ '@vitest/pretty-format': 3.0.4
+ loupe: 3.1.2
+ tinyrainbow: 2.0.0
+
'@xmldom/xmldom@0.8.10': {}
'@zkochan/which@2.0.3':
@@ -14487,6 +14687,8 @@ snapshots:
assert-never@1.4.0: {}
+ assertion-error@2.0.1: {}
+
assign-symbols@1.0.0: {}
ast-types@0.13.4:
@@ -15238,6 +15440,14 @@ snapshots:
ansicolors: 0.3.2
redeyed: 2.1.1
+ chai@5.1.2:
+ dependencies:
+ assertion-error: 2.0.1
+ check-error: 2.1.1
+ deep-eql: 5.0.2
+ loupe: 3.1.2
+ pathval: 2.0.0
+
chalk@1.1.3:
dependencies:
ansi-styles: 2.2.1
@@ -15269,6 +15479,8 @@ snapshots:
dependencies:
inherits: 2.0.4
+ check-error@2.1.1: {}
+
chokidar@3.5.3:
dependencies:
anymatch: 3.1.3
@@ -15812,6 +16024,8 @@ snapshots:
dependencies:
mimic-response: 1.0.1
+ deep-eql@5.0.2: {}
+
deep-extend@0.6.0: {}
deep-is@0.1.4: {}
@@ -16289,6 +16503,8 @@ snapshots:
es-errors@1.3.0: {}
+ es-module-lexer@1.6.0: {}
+
es-object-atoms@1.0.0:
dependencies:
es-errors: 1.3.0
@@ -16717,6 +16933,10 @@ snapshots:
estree-walker@2.0.2: {}
+ estree-walker@3.0.3:
+ dependencies:
+ '@types/estree': 1.0.6
+
esutils@2.0.3: {}
esyes@1.0.3:
@@ -16860,6 +17080,8 @@ snapshots:
dependencies:
homedir-polyfill: 1.0.3
+ expect-type@1.1.0: {}
+
express@4.21.2:
dependencies:
accepts: 1.3.8
@@ -18547,6 +18769,8 @@ snapshots:
cli-cursor: 2.1.0
wrap-ansi: 3.0.1
+ loupe@3.1.2: {}
+
lower-case@2.0.2:
dependencies:
tslib: 2.8.1
@@ -19492,6 +19716,10 @@ snapshots:
pathe@1.1.2: {}
+ pathe@2.0.2: {}
+
+ pathval@2.0.0: {}
+
pause-stream@0.0.11:
dependencies:
through: 2.3.8
@@ -20599,6 +20827,8 @@ snapshots:
side-channel-map: 1.0.1
side-channel-weakmap: 1.0.2
+ siginfo@2.0.0: {}
+
signal-exit@3.0.7: {}
signal-exit@4.1.0: {}
@@ -20801,6 +21031,8 @@ snapshots:
stable@0.1.8: {}
+ stackback@0.0.2: {}
+
stacktracey@2.1.8:
dependencies:
as-table: 1.0.55
@@ -20815,6 +21047,8 @@ snapshots:
statuses@2.0.1: {}
+ std-env@3.8.0: {}
+
stdin-discarder@0.2.2: {}
stream-combiner@0.0.4:
@@ -21292,6 +21526,16 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ tinybench@2.9.0: {}
+
+ tinyexec@0.3.2: {}
+
+ tinypool@1.0.2: {}
+
+ tinyrainbow@2.0.0: {}
+
+ tinyspy@3.0.2: {}
+
tmp@0.0.28:
dependencies:
os-tmpdir: 1.0.2
@@ -21751,6 +21995,27 @@ snapshots:
vary@1.1.2: {}
+ vite-node@3.0.4(@types/node@20.17.10)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0):
+ dependencies:
+ cac: 6.7.14
+ debug: 4.4.0(supports-color@8.1.1)
+ es-module-lexer: 1.6.0
+ pathe: 2.0.2
+ vite: 6.0.10(@types/node@20.17.10)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)
+ transitivePeerDependencies:
+ - '@types/node'
+ - jiti
+ - less
+ - lightningcss
+ - sass
+ - sass-embedded
+ - stylus
+ - sugarss
+ - supports-color
+ - terser
+ - tsx
+ - yaml
+
vite@5.4.10(@types/node@20.17.10)(terser@5.37.0):
dependencies:
esbuild: 0.21.5
@@ -21774,6 +22039,44 @@ snapshots:
tsx: 4.19.2
yaml: 2.7.0
+ vitest@3.0.4(@types/node@20.17.10)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0):
+ dependencies:
+ '@vitest/expect': 3.0.4
+ '@vitest/mocker': 3.0.4(vite@6.0.10(@types/node@20.17.10)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0))
+ '@vitest/pretty-format': 3.0.4
+ '@vitest/runner': 3.0.4
+ '@vitest/snapshot': 3.0.4
+ '@vitest/spy': 3.0.4
+ '@vitest/utils': 3.0.4
+ chai: 5.1.2
+ debug: 4.4.0(supports-color@8.1.1)
+ expect-type: 1.1.0
+ magic-string: 0.30.17
+ pathe: 2.0.2
+ std-env: 3.8.0
+ tinybench: 2.9.0
+ tinyexec: 0.3.2
+ tinypool: 1.0.2
+ tinyrainbow: 2.0.0
+ vite: 6.0.10(@types/node@20.17.10)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)
+ vite-node: 3.0.4(@types/node@20.17.10)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)
+ why-is-node-running: 2.3.0
+ optionalDependencies:
+ '@types/node': 20.17.10
+ transitivePeerDependencies:
+ - jiti
+ - less
+ - lightningcss
+ - msw
+ - sass
+ - sass-embedded
+ - stylus
+ - sugarss
+ - supports-color
+ - terser
+ - tsx
+ - yaml
+
walk-sync@0.3.4:
dependencies:
ensure-posix-path: 1.1.1
@@ -21891,6 +22194,11 @@ snapshots:
dependencies:
isexe: 3.1.1
+ why-is-node-running@2.3.0:
+ dependencies:
+ siginfo: 2.0.0
+ stackback: 0.0.2
+
wide-align@1.1.5:
dependencies:
string-width: 4.2.3
diff --git a/repo-metadata/metadata.json b/repo-metadata/metadata.json
index 5d3c8e26cb..506264e0fb 100644
--- a/repo-metadata/metadata.json
+++ b/repo-metadata/metadata.json
@@ -47,7 +47,6 @@
"./package.json": [[["default"], "./package.json"]],
"./patch-all.mjs": [[["default"], "./patch-all.mjs"]],
"./run-browserstack-tests.mjs": [[["default"], "./run-browserstack-tests.mjs"]],
- "./run-node-tests.mjs": [[["default"], "./run-node-tests.mjs"]],
"./run-tests.mjs": [[["default"], "./run-tests.mjs"]],
"./run-types-tests.mjs": [[["default"], "./run-types-tests.mjs"]],
"./sync-npm-owners.mjs": [[["default"], "./sync-npm-owners.mjs"]]
@@ -108,6 +107,20 @@
".": [[["default"], "./index.js"]]
}
},
+ {
+ "root": "packages/@glimmer-workspace/integration-node-tests",
+ "name": "@glimmer-workspace/integration-node-tests",
+ "version": "0.92.0",
+ "type": "module",
+ "private": true,
+ "repo-meta": {
+ "built": false,
+ "strictness": "loose"
+ },
+ "entryPoints": {
+ "./package.json": [[["default"], "./package.json"]]
+ }
+ },
{
"root": "packages/@glimmer-workspace/integration-tests",
"name": "@glimmer-workspace/integration-tests",
diff --git a/repo-metadata/package.json b/repo-metadata/package.json
index 70721f96d6..f5f9a2b0c4 100644
--- a/repo-metadata/package.json
+++ b/repo-metadata/package.json
@@ -10,9 +10,7 @@
},
"./metadata.json": "./metadata.json"
},
- "scripts": {
- "test:lint": "eslint . --quiet"
- },
+ "scripts": {},
"dependencies": {
"chalk": "^5.4.1",
"execa": "^9.5.2",
diff --git a/smoke-tests/node/.gitignore b/smoke-tests/node/.gitignore
new file mode 100644
index 0000000000..8d12edbe86
--- /dev/null
+++ b/smoke-tests/node/.gitignore
@@ -0,0 +1,2 @@
+packages/
+pnpm-lock.yaml
diff --git a/smoke-tests/node/package.json b/smoke-tests/node/package.json
new file mode 100644
index 0000000000..e29ef78dbe
--- /dev/null
+++ b/smoke-tests/node/package.json
@@ -0,0 +1,42 @@
+{
+ "name": "@glimmer-workspace/smoke-tests-node",
+ "type": "module",
+ "private": true,
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "exports": {
+ ".": "./setup.ts"
+ },
+ "scripts": {
+ "test:lint": "eslint . --quiet",
+ "test:node": "vitest --run",
+ "test:setup": "node --disable-warning=ExperimentalWarning --experimental-strip-types ./setup.ts"
+ },
+ "devDependencies": {
+ "execa": "^9.5.2",
+ "vite": "^5.4.10",
+ "vitest": "^3.0.4"
+ },
+ "config": {
+ "tsconfig": "../../tsconfig.json"
+ },
+ "dependencies": {
+ "@glimmer/syntax": "file:./packages/@glimmer/syntax.tgz",
+ "@glimmer/util": "file:./packages/@glimmer/util.tgz",
+ "@glimmer/wire-format": "file:./packages/@glimmer/wire-format.tgz",
+ "@glimmer/compiler": "file:./packages/@glimmer/compiler.tgz",
+ "@glimmer/interfaces": "file:./packages/@glimmer/interfaces.tgz",
+ "@glimmer/runtime": "file:./packages/@glimmer/runtime.tgz"
+ },
+ "pnpm": {
+ "overrides": {
+ "@glimmer/syntax": "file:./packages/@glimmer/syntax.tgz",
+ "@glimmer/util": "file:./packages/@glimmer/util.tgz",
+ "@glimmer/wire-format": "file:./packages/@glimmer/wire-format.tgz",
+ "@glimmer/compiler": "file:./packages/@glimmer/compiler.tgz",
+ "@glimmer/interfaces": "file:./packages/@glimmer/interfaces.tgz",
+ "@glimmer/runtime": "file:./packages/@glimmer/runtime.tgz"
+ }
+ }
+}
diff --git a/smoke-tests/node/setup.ts b/smoke-tests/node/setup.ts
new file mode 100644
index 0000000000..7fb744be74
--- /dev/null
+++ b/smoke-tests/node/setup.ts
@@ -0,0 +1,74 @@
+import { readFile } from 'node:fs/promises';
+import { join } from 'node:path';
+import { styleText } from 'node:util';
+
+import { execaCommand } from 'execa';
+
+const WORKSPACE_ROOT = join(import.meta.dirname, '../../');
+const NODE_SMOKE_DIR = join(WORKSPACE_ROOT, './smoke-tests/node');
+
+function inRoot(cmd: string, options = {}) {
+ return inDir(WORKSPACE_ROOT, cmd, options);
+}
+
+let asBin = false;
+
+function log(msg: any) {
+ if (asBin) {
+ console.info(msg);
+ }
+}
+
+function inDir(dir: string, cmd: string, options = {}) {
+ log(styleText('gray', `in ${dir}:\n`) + styleText('green', '\t' + cmd));
+
+ return execaCommand(cmd, {
+ cwd: dir,
+ preferLocal: true,
+ shell: true,
+ stdio: 'inherit',
+ ...options,
+ });
+}
+
+export function inNodeSmoke(cmd: string, options = {}) {
+ return inDir(NODE_SMOKE_DIR, cmd, options);
+}
+
+export async function prepare() {
+ //////////
+ // build
+ // When turbo is set up with "dependsOn": "["^prepack"], we see these packages
+ // - @glimmer/syntax
+ // - @glimmer/util
+ // - @glimmer/wire-format
+ //
+ // So these 3 packages need to be packed and installed
+ await inRoot(`pnpm turbo prepack`);
+
+ let manifestPath = join(WORKSPACE_ROOT, 'smoke-tests/node/package.json');
+ let manifest = JSON.parse((await readFile(manifestPath)).toString());
+ let deps = Object.keys(manifest.dependencies);
+
+ //////////
+ // install the tarballs using stable names so we don't have to
+ // dynamically build the package.json
+ let pack = (out: string) => `pnpm pack --out ${join(NODE_SMOKE_DIR, 'packages', out)}.tgz`;
+
+ for (let dep of deps) {
+ await inDir(join(WORKSPACE_ROOT, `packages/${dep}`), pack(dep));
+ }
+}
+
+if (process.argv[1] === import.meta.filename) {
+ asBin = true;
+ log(`Setting up smoke test packages`);
+ log({ WORKSPACE_ROOT, NODE_SMOKE_DIR });
+
+ await prepare();
+
+ log(`Installing Deps`);
+ await inNodeSmoke(`pnpm install --ignore-workspace`);
+
+ log(`Done`);
+}
diff --git a/smoke-tests/node/tests/syntax.test.ts b/smoke-tests/node/tests/syntax.test.ts
new file mode 100644
index 0000000000..8c5a927c97
--- /dev/null
+++ b/smoke-tests/node/tests/syntax.test.ts
@@ -0,0 +1,96 @@
+import { preprocess } from '@glimmer/syntax';
+import { describe, it, expect } from 'vitest';
+
+describe('@glimmer/syntax', () => {
+ it('process()', () => {
+ expect(preprocess('')).toMatchInlineSnapshot(`
+ {
+ "blockParams": [],
+ "body": [
+ {
+ "attributes": [],
+ "blockParams": [],
+ "children": [],
+ "closeTag": {
+ "end": {
+ "column": 9,
+ "line": 1,
+ },
+ "start": {
+ "column": 4,
+ "line": 1,
+ },
+ },
+ "comments": [],
+ "loc": {
+ "end": {
+ "column": 9,
+ "line": 1,
+ },
+ "start": {
+ "column": 0,
+ "line": 1,
+ },
+ },
+ "modifiers": [],
+ "openTag": {
+ "end": {
+ "column": 4,
+ "line": 1,
+ },
+ "start": {
+ "column": 0,
+ "line": 1,
+ },
+ },
+ "params": [],
+ "path": {
+ "head": {
+ "loc": {
+ "end": {
+ "column": 3,
+ "line": 1,
+ },
+ "start": {
+ "column": 1,
+ "line": 1,
+ },
+ },
+ "name": "h1",
+ "original": "h1",
+ "type": "VarHead",
+ },
+ "loc": {
+ "end": {
+ "column": 3,
+ "line": 1,
+ },
+ "start": {
+ "column": 1,
+ "line": 1,
+ },
+ },
+ "original": "h1",
+ "tail": [],
+ "type": "PathExpression",
+ },
+ "selfClosing": false,
+ "tag": "h1",
+ "type": "ElementNode",
+ },
+ ],
+ "loc": {
+ "end": {
+ "column": 9,
+ "line": 1,
+ },
+ "start": {
+ "column": 0,
+ "line": 1,
+ },
+ },
+ "type": "Template",
+ }
+ `);
+ });
+});
diff --git a/smoke-tests/node/vite.config.ts b/smoke-tests/node/vite.config.ts
new file mode 100644
index 0000000000..75417a1826
--- /dev/null
+++ b/smoke-tests/node/vite.config.ts
@@ -0,0 +1,7 @@
+import { defineConfig } from 'vite';
+
+export default defineConfig({
+ resolve: {
+ conditions: ['module', 'node', process.env['NODE_ENV'] ?? 'production'],
+ },
+});
diff --git a/tsconfig.json b/tsconfig.json
index 5df27cdb99..c0b5a690e7 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -34,6 +34,7 @@
"packages/@types/*/index.*",
"packages/@types/*/lib/**/*",
"benchmark/**/*",
+ "smoke-tests/**/*",
"bin/**/*",
"**/*.config.mts"
],
diff --git a/turbo.json b/turbo.json
index fd41e11e97..a6d1808e00 100644
--- a/turbo.json
+++ b/turbo.json
@@ -25,6 +25,7 @@
"cache": false,
"dependsOn": ["test:lint", "test:publint"]
},
+ "test:node": {},
"test:lint": {},
"test:publint": {
"dependsOn": ["prepack", "prepare"]
@@ -34,11 +35,25 @@
"outputs": ["dist/**"]
},
"prepack": {
- "outputs": ["dist/**"]
+ "outputs": ["dist/**"],
+ "dependsOn": ["^prepack"]
+ },
+ "//#test:lint": {
+ "dependsOn": ["//#repo:update:conventions", "//#repo:update:metadata"]
},
+ "//#repo:update:conventions": {},
+ "//#repo:update:metadata": {},
"//#test:types": {
"inputs": ["**/dist/**", "tsconfig.dist.json"],
- "dependsOn": ["^build"]
+ "dependsOn": ["^prepack", "//#benchmark:setup", "//#smoke:setup"]
+ },
+ "//#benchmark:setup": {
+ "outputs": ["./benchmark/benchmarks/krausest/packages"],
+ "dependsOn": ["^prepack"]
+ },
+ "//#smoke:setup": {
+ "outputs": ["./smoke-tests/node/packages"],
+ "dependsOn": ["^prepack"]
}
}
}