ember.nvp 1.15.0 → 1.16.0
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/.release-plan.json +37 -5
- package/CHANGELOG.md +20 -0
- package/package.json +1 -1
- package/packages/rolldown/package.json +2 -2
- package/packages/rolldown/src/transform.test.ts +3 -3
- package/packages/vite/package.json +4 -4
- package/packages/vite/src/ember.test.ts +38 -0
- package/packages/vite/src/ember.ts +38 -5
- package/src/bases/minimal-app/files/package.json +2 -2
- package/src/bases/minimal-extension/files/package.json +2 -2
- package/src/layers/qunit/index.js +1 -1
package/.release-plan.json
CHANGED
|
@@ -2,13 +2,17 @@
|
|
|
2
2
|
"solution": {
|
|
3
3
|
"ember.nvp": {
|
|
4
4
|
"impact": "minor",
|
|
5
|
-
"oldVersion": "1.
|
|
6
|
-
"newVersion": "1.
|
|
5
|
+
"oldVersion": "1.15.0",
|
|
6
|
+
"newVersion": "1.16.0",
|
|
7
7
|
"tagName": "latest",
|
|
8
8
|
"constraints": [
|
|
9
9
|
{
|
|
10
10
|
"impact": "minor",
|
|
11
11
|
"reason": "Appears in changelog section :rocket: Enhancement"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"impact": "patch",
|
|
15
|
+
"reason": "Appears in changelog section :bug: Bug Fix"
|
|
12
16
|
}
|
|
13
17
|
],
|
|
14
18
|
"pkgJSONPath": "./package.json"
|
|
@@ -17,11 +21,39 @@
|
|
|
17
21
|
"oldVersion": "1.2.0"
|
|
18
22
|
},
|
|
19
23
|
"@nullvoxpopuli/ember-rolldown": {
|
|
20
|
-
"
|
|
24
|
+
"impact": "minor",
|
|
25
|
+
"oldVersion": "2.10.0",
|
|
26
|
+
"newVersion": "2.11.0",
|
|
27
|
+
"tagName": "latest",
|
|
28
|
+
"constraints": [
|
|
29
|
+
{
|
|
30
|
+
"impact": "minor",
|
|
31
|
+
"reason": "Appears in changelog section :rocket: Enhancement"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"impact": "patch",
|
|
35
|
+
"reason": "Appears in changelog section :bug: Bug Fix"
|
|
36
|
+
}
|
|
37
|
+
],
|
|
38
|
+
"pkgJSONPath": "./packages/rolldown/package.json"
|
|
21
39
|
},
|
|
22
40
|
"@nullvoxpopuli/ember-vite": {
|
|
23
|
-
"
|
|
41
|
+
"impact": "minor",
|
|
42
|
+
"oldVersion": "1.2.0",
|
|
43
|
+
"newVersion": "1.3.0",
|
|
44
|
+
"tagName": "latest",
|
|
45
|
+
"constraints": [
|
|
46
|
+
{
|
|
47
|
+
"impact": "minor",
|
|
48
|
+
"reason": "Appears in changelog section :rocket: Enhancement"
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"impact": "patch",
|
|
52
|
+
"reason": "Appears in changelog section :bug: Bug Fix"
|
|
53
|
+
}
|
|
54
|
+
],
|
|
55
|
+
"pkgJSONPath": "./packages/vite/package.json"
|
|
24
56
|
}
|
|
25
57
|
},
|
|
26
|
-
"description": "## Release (2026-10-
|
|
58
|
+
"description": "## Release (2026-10-12)\n\n* ember.nvp 1.16.0 (minor)\n* @nullvoxpopuli/ember-rolldown 2.11.0 (minor)\n* @nullvoxpopuli/ember-vite 1.3.0 (minor)\n\n#### :rocket: Enhancement\n* `@nullvoxpopuli/ember-rolldown`, `@nullvoxpopuli/ember-vite`, `ember.nvp`\n * [#163](https://github.com/NullVoxPopuli/ember.nvp/pull/163) Update the embroider dependencies, give the config hook its plugin context ([@NullVoxPopuli-ai-agent](https://github.com/NullVoxPopuli-ai-agent))\n\n#### :bug: Bug Fix\n* `@nullvoxpopuli/ember-vite`, `ember.nvp`\n * [#162](https://github.com/NullVoxPopuli/ember.nvp/pull/162) Find the embroider config plugin by name ([@NullVoxPopuli-ai-agent](https://github.com/NullVoxPopuli-ai-agent))\n* `@nullvoxpopuli/ember-rolldown`\n * [#160](https://github.com/NullVoxPopuli/ember.nvp/pull/160) Fix macOS tests ([@tcjr](https://github.com/tcjr))\n\n#### Committers: 2\n- @NullVoxPopuli's reduced-access machine account for AI usage ([@NullVoxPopuli-ai-agent](https://github.com/NullVoxPopuli-ai-agent))\n- Tom Carter ([@tcjr](https://github.com/tcjr))\n"
|
|
27
59
|
}
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## Release (2026-10-12)
|
|
4
|
+
|
|
5
|
+
* ember.nvp 1.16.0 (minor)
|
|
6
|
+
* @nullvoxpopuli/ember-rolldown 2.11.0 (minor)
|
|
7
|
+
* @nullvoxpopuli/ember-vite 1.3.0 (minor)
|
|
8
|
+
|
|
9
|
+
#### :rocket: Enhancement
|
|
10
|
+
* `@nullvoxpopuli/ember-rolldown`, `@nullvoxpopuli/ember-vite`, `ember.nvp`
|
|
11
|
+
* [#163](https://github.com/NullVoxPopuli/ember.nvp/pull/163) Update the embroider dependencies, give the config hook its plugin context ([@NullVoxPopuli-ai-agent](https://github.com/NullVoxPopuli-ai-agent))
|
|
12
|
+
|
|
13
|
+
#### :bug: Bug Fix
|
|
14
|
+
* `@nullvoxpopuli/ember-vite`, `ember.nvp`
|
|
15
|
+
* [#162](https://github.com/NullVoxPopuli/ember.nvp/pull/162) Find the embroider config plugin by name ([@NullVoxPopuli-ai-agent](https://github.com/NullVoxPopuli-ai-agent))
|
|
16
|
+
* `@nullvoxpopuli/ember-rolldown`
|
|
17
|
+
* [#160](https://github.com/NullVoxPopuli/ember.nvp/pull/160) Fix macOS tests ([@tcjr](https://github.com/tcjr))
|
|
18
|
+
|
|
19
|
+
#### Committers: 2
|
|
20
|
+
- @NullVoxPopuli's reduced-access machine account for AI usage ([@NullVoxPopuli-ai-agent](https://github.com/NullVoxPopuli-ai-agent))
|
|
21
|
+
- Tom Carter ([@tcjr](https://github.com/tcjr))
|
|
22
|
+
|
|
3
23
|
## Release (2026-10-02)
|
|
4
24
|
|
|
5
25
|
* ember.nvp 1.15.0 (minor)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ember.nvp",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.16.0",
|
|
4
4
|
"description": "ember project generator, alternative to the official blueprints, but more modern -- hopefully one day to upstream back in to ember-cli / official blueprints",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nullvoxpopuli/ember-rolldown",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.11.0",
|
|
4
4
|
"description": "Meta plugin for building ember v2 libraries/addons with rolldown & tsdown.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "index.ts",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"dependencies": {
|
|
46
46
|
"@babel/core": "^7.28.10 || ^8.0.0",
|
|
47
47
|
"@babel/plugin-transform-typescript": "^7.28.10 || ^8.0.0",
|
|
48
|
-
"@embroider/core": "^4.
|
|
48
|
+
"@embroider/core": "^4.6.9",
|
|
49
49
|
"@jridgewell/remapping": "^2.3.5",
|
|
50
50
|
"@nullvoxpopuli/ember-build-tooling-utils": "workspace:*",
|
|
51
51
|
"babel-plugin-ember-template-compilation": "^4.0.0",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { originalPositionFor, TraceMap } from "@jridgewell/trace-mapping";
|
|
2
2
|
import { existsSync } from "node:fs";
|
|
3
|
-
import { mkdtemp, mkdir, readFile, writeFile } from "node:fs/promises";
|
|
3
|
+
import { mkdtemp, mkdir, readFile, realpath, writeFile } from "node:fs/promises";
|
|
4
4
|
import { tmpdir } from "node:os";
|
|
5
5
|
import path from "node:path";
|
|
6
6
|
import { rolldown } from "rolldown";
|
|
@@ -38,7 +38,7 @@ async function generate(
|
|
|
38
38
|
files: Record<string, string>,
|
|
39
39
|
{ input = ["index.ts"], plugins = () => [], sourcemap = false }: BuildOptions = {},
|
|
40
40
|
): Promise<Build> {
|
|
41
|
-
const dir = await mkdtemp(path.join(tmpdir(), "ember-rolldown-build-"));
|
|
41
|
+
const dir = await realpath(await mkdtemp(path.join(tmpdir(), "ember-rolldown-build-")));
|
|
42
42
|
|
|
43
43
|
for (const [relative, source] of Object.entries(files)) {
|
|
44
44
|
const full = path.join(dir, relative);
|
|
@@ -347,7 +347,7 @@ describe("emberTransform (full plugin via rolldown)", () => {
|
|
|
347
347
|
});
|
|
348
348
|
|
|
349
349
|
it("emits sourcemaps for the specifier rewrite (no SOURCEMAP_BROKEN warnings)", async () => {
|
|
350
|
-
const dir = await mkdtemp(path.join(tmpdir(), "ember-rolldown-map-"));
|
|
350
|
+
const dir = await realpath(await mkdtemp(path.join(tmpdir(), "ember-rolldown-map-")));
|
|
351
351
|
|
|
352
352
|
const files = {
|
|
353
353
|
// index.ts contains a `.gts` specifier, so it goes through the rewrite.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nullvoxpopuli/ember-vite",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "Meta plugin for ember projects focusing on speed.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "index.ts",
|
|
@@ -26,9 +26,9 @@
|
|
|
26
26
|
"packageManager": "pnpm@10.28.0",
|
|
27
27
|
"dependencies": {
|
|
28
28
|
"@babel/core": "^7.28.10 || ^8.0.0",
|
|
29
|
-
"@embroider/core": "^4.
|
|
30
|
-
"@embroider/macros": "^1.
|
|
31
|
-
"@embroider/vite": "^1.
|
|
29
|
+
"@embroider/core": "^4.6.9",
|
|
30
|
+
"@embroider/macros": "^1.21.3",
|
|
31
|
+
"@embroider/vite": "^1.7.15",
|
|
32
32
|
"@nullvoxpopuli/ember-build-tooling-utils": "workspace:*"
|
|
33
33
|
},
|
|
34
34
|
"engines": {
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { extensions } from "@embroider/vite";
|
|
2
|
+
import type { ConfigEnv, ConfigPluginContext } from "vite";
|
|
3
|
+
import { describe, expect, it } from "vitest";
|
|
4
|
+
|
|
5
|
+
import { ember } from "./ember.ts";
|
|
6
|
+
|
|
7
|
+
const ROLLDOWN = { meta: { rolldownVersion: "1.0.0" } } as ConfigPluginContext;
|
|
8
|
+
|
|
9
|
+
async function configure(env: ConfigEnv) {
|
|
10
|
+
const config: any = {};
|
|
11
|
+
const [plugin] = ember();
|
|
12
|
+
|
|
13
|
+
// @ts-expect-error the first entry is the config plugin
|
|
14
|
+
await plugin.config.call(ROLLDOWN, config, env);
|
|
15
|
+
|
|
16
|
+
return config;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
describe("ember", () => {
|
|
20
|
+
/**
|
|
21
|
+
* These values come from the config hook of `@embroider/vite`.
|
|
22
|
+
* They are missing when that hook does not run.
|
|
23
|
+
*/
|
|
24
|
+
it("applies the config from @embroider/vite", async () => {
|
|
25
|
+
const config = await configure({ command: "build", mode: "production" });
|
|
26
|
+
|
|
27
|
+
expect(config.resolve.extensions).toEqual(extensions);
|
|
28
|
+
expect(config.server.port).toBe(4200);
|
|
29
|
+
expect(config.optimizeDeps.exclude).toContain("@embroider/macros");
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
it("gives @embroider/vite the plugin context, so that it configures rolldown", async () => {
|
|
33
|
+
const config = await configure({ command: "build", mode: "production" });
|
|
34
|
+
|
|
35
|
+
expect(config.build.rolldownOptions.moduleTypes).toEqual({ ".ts": "js" });
|
|
36
|
+
expect(config.optimizeDeps.rolldownOptions.resolve.extensions).toEqual(extensions);
|
|
37
|
+
});
|
|
38
|
+
});
|
|
@@ -2,13 +2,43 @@ import { buildMacros } from "@embroider/macros/babel";
|
|
|
2
2
|
import { ember as embroiderEmber, extensions, resolver, templateTag } from "@embroider/vite";
|
|
3
3
|
import { existsSync } from "node:fs";
|
|
4
4
|
import { join, resolve } from "node:path";
|
|
5
|
-
import type { ConfigEnv, ResolvedConfig } from "vite";
|
|
5
|
+
import type { ConfigEnv, ConfigPluginContext, ResolvedConfig, UserConfig } from "vite";
|
|
6
6
|
|
|
7
7
|
import { maybeBabel } from "@nullvoxpopuli/ember-build-tooling-utils";
|
|
8
8
|
|
|
9
9
|
import { testHtml } from "./test-html.ts";
|
|
10
10
|
|
|
11
|
-
const
|
|
11
|
+
const EMBER_CONFIG = "vite-plugin-ember-config";
|
|
12
|
+
|
|
13
|
+
type ConfigHook = (
|
|
14
|
+
this: ConfigPluginContext,
|
|
15
|
+
config: UserConfig,
|
|
16
|
+
env: ConfigEnv,
|
|
17
|
+
) => Promise<unknown> | unknown;
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* `@embroider/vite` does not export its config hook on its own.
|
|
21
|
+
*
|
|
22
|
+
* The position of the plugin in the list changes between releases,
|
|
23
|
+
* so the name is the only stable way to find it.
|
|
24
|
+
*/
|
|
25
|
+
function findEmberConfig(): ConfigHook {
|
|
26
|
+
for (const plugin of embroiderEmber()) {
|
|
27
|
+
if (plugin.name !== EMBER_CONFIG) continue;
|
|
28
|
+
|
|
29
|
+
const hook = plugin.config;
|
|
30
|
+
const handler = typeof hook === "function" ? hook : hook?.handler;
|
|
31
|
+
|
|
32
|
+
if (handler) return handler as ConfigHook;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
throw new Error(
|
|
36
|
+
`@embroider/vite has no "${EMBER_CONFIG}" plugin with a config hook. ` +
|
|
37
|
+
`This version of @embroider/vite is not supported by @nullvoxpopuli/ember-vite.`,
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
const emberConfig = findEmberConfig();
|
|
12
42
|
|
|
13
43
|
const cwd = process.cwd();
|
|
14
44
|
function absolutePath(relativePath: string) {
|
|
@@ -173,9 +203,12 @@ export function ember(nvpConfig: Config = {}) {
|
|
|
173
203
|
{
|
|
174
204
|
// no compat
|
|
175
205
|
name: "ember:nullvoxpopuli",
|
|
176
|
-
async config(viteConfig: any, env: ConfigEnv) {
|
|
177
|
-
|
|
178
|
-
|
|
206
|
+
async config(this: ConfigPluginContext, viteConfig: any, env: ConfigEnv) {
|
|
207
|
+
/**
|
|
208
|
+
* The hook reads the rolldown version from the plugin context,
|
|
209
|
+
* and takes its esbuild path without it.
|
|
210
|
+
*/
|
|
211
|
+
await emberConfig.call(this, viteConfig, env);
|
|
179
212
|
|
|
180
213
|
viteConfig.experimental ||= {};
|
|
181
214
|
viteConfig.build ||= {};
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"start": "vite"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@embroider/macros": "^1.
|
|
28
|
+
"@embroider/macros": "^1.21.3",
|
|
29
29
|
"@embroider/router": "^3.0.6",
|
|
30
30
|
"@glimmer/component": "^2.1.1",
|
|
31
31
|
"decorator-transforms": "^2.3.2",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"@babel/plugin-transform-typescript": "^7.29.7",
|
|
38
38
|
"@babel/runtime": "^7.29.7",
|
|
39
39
|
"@ember/app-tsconfig": "^2.0.0",
|
|
40
|
-
"@embroider/core": "^4.
|
|
40
|
+
"@embroider/core": "^4.6.9",
|
|
41
41
|
"@glint/ember-tsc": "^1.7.5",
|
|
42
42
|
"@glint/template": "^1.7.7",
|
|
43
43
|
"@glint/tsserver-plugin": "^2.5.5",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"start": "vite"
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@embroider/macros": "^1.
|
|
29
|
+
"@embroider/macros": "^1.21.3",
|
|
30
30
|
"@embroider/router": "^3.0.6",
|
|
31
31
|
"@glimmer/component": "^2.1.1",
|
|
32
32
|
"decorator-transforms": "^2.3.2",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"@babel/plugin-transform-typescript": "^7.29.7",
|
|
39
39
|
"@babel/runtime": "^7.29.7",
|
|
40
40
|
"@ember/app-tsconfig": "^2.0.0",
|
|
41
|
-
"@embroider/core": "^4.
|
|
41
|
+
"@embroider/core": "^4.6.9",
|
|
42
42
|
"@glint/ember-tsc": "^1.7.5",
|
|
43
43
|
"@glint/template": "^1.7.7",
|
|
44
44
|
"@glint/tsserver-plugin": "^2.5.5",
|