@ember/app-blueprint 6.10.0-alpha.4 → 6.10.0-alpha.6

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/.editorconfig CHANGED
@@ -1,6 +1,6 @@
1
1
  # EditorConfig helps developers define and maintain consistent
2
2
  # coding styles between different editors and IDEs
3
- # editorconfig.org
3
+ # https://editorconfig.org/
4
4
 
5
5
  root = true
6
6
 
@@ -16,4 +16,4 @@ indent_size = 2
16
16
  insert_final_newline = false
17
17
 
18
18
  [*.{diff,md}]
19
- trim_trailing_whitespace = false
19
+ trim_trailing_whitespace = false
@@ -30,13 +30,17 @@ jobs:
30
30
  os:
31
31
  - ubuntu-latest
32
32
  - windows-latest
33
+ node:
34
+ - 20
35
+ - 22
36
+ - 24
33
37
 
34
38
  steps:
35
39
  - uses: actions/checkout@v4
36
40
  - uses: pnpm/action-setup@v4
37
41
  - uses: actions/setup-node@v4
38
42
  with:
39
- node-version: 20
43
+ node-version: ${{ matrix.node }}
40
44
  cache: pnpm
41
45
  - name: Set TEMP to D:/Temp on windows
42
46
  if: ${{matrix.os}} == windows-latest
package/.prettierignore CHANGED
@@ -1,4 +1,5 @@
1
1
  files/
2
+ conditional-files/
2
3
  node_modules/
3
4
  tests/fixtures/
4
5
 
@@ -1,11 +1,15 @@
1
1
  {
2
2
  "solution": {
3
3
  "@ember/app-blueprint": {
4
- "impact": "patch",
5
- "oldVersion": "6.10.0-alpha.3",
6
- "newVersion": "6.10.0-alpha.4",
4
+ "impact": "minor",
5
+ "oldVersion": "6.10.0-alpha.5",
6
+ "newVersion": "6.10.0-alpha.6",
7
7
  "tagName": "alpha",
8
8
  "constraints": [
9
+ {
10
+ "impact": "minor",
11
+ "reason": "Appears in changelog section :rocket: Enhancement"
12
+ },
9
13
  {
10
14
  "impact": "patch",
11
15
  "reason": "Appears in changelog section :bug: Bug Fix"
@@ -14,5 +18,5 @@
14
18
  "pkgJSONPath": "./package.json"
15
19
  }
16
20
  },
17
- "description": "## Release (2025-11-12)\n\n* @ember/app-blueprint 6.10.0-alpha.4 (patch)\n\n#### :bug: Bug Fix\n* `@ember/app-blueprint`\n * [#133](https://github.com/ember-cli/ember-app-blueprint/pull/133) remove ember-auto-import from newly generated app ([@mansona](https://github.com/mansona))\n\n#### Committers: 1\n- Chris Manson ([@mansona](https://github.com/mansona))\n"
21
+ "description": "## Release (2025-11-26)\n\n* @ember/app-blueprint 6.10.0-alpha.6 (minor)\n\n#### :rocket: Enhancement\n* `@ember/app-blueprint`\n * [#145](https://github.com/ember-cli/ember-app-blueprint/pull/145) Update generated workflow files ([@NullVoxPopuli](https://github.com/NullVoxPopuli))\n\n#### :bug: Bug Fix\n* `@ember/app-blueprint`\n * [#149](https://github.com/ember-cli/ember-app-blueprint/pull/149) Fix the full path display during project generation ([@NullVoxPopuli](https://github.com/NullVoxPopuli))\n * [#146](https://github.com/ember-cli/ember-app-blueprint/pull/146) Test against our supported node versions (and fix the babel config for the maintenance-node version (20)) ([@NullVoxPopuli](https://github.com/NullVoxPopuli))\n * [#148](https://github.com/ember-cli/ember-app-blueprint/pull/148) Sort the package.json, using the replacers strategy ([@NullVoxPopuli](https://github.com/NullVoxPopuli))\n\n#### Committers: 1\n- [@NullVoxPopuli](https://github.com/NullVoxPopuli)\n"
18
22
  }
package/CHANGELOG.md CHANGED
@@ -1,5 +1,45 @@
1
1
  # Changelog
2
2
 
3
+ ## Release (2025-11-26)
4
+
5
+ * @ember/app-blueprint 6.10.0-alpha.6 (minor)
6
+
7
+ #### :rocket: Enhancement
8
+ * `@ember/app-blueprint`
9
+ * [#145](https://github.com/ember-cli/ember-app-blueprint/pull/145) Update generated workflow files ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
10
+
11
+ #### :bug: Bug Fix
12
+ * `@ember/app-blueprint`
13
+ * [#149](https://github.com/ember-cli/ember-app-blueprint/pull/149) Fix the full path display during project generation ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
14
+ * [#146](https://github.com/ember-cli/ember-app-blueprint/pull/146) Test against our supported node versions (and fix the babel config for the maintenance-node version (20)) ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
15
+ * [#148](https://github.com/ember-cli/ember-app-blueprint/pull/148) Sort the package.json, using the replacers strategy ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
16
+
17
+ #### Committers: 1
18
+ - [@NullVoxPopuli](https://github.com/NullVoxPopuli)
19
+
20
+ ## Release (2025-11-21)
21
+
22
+ * @ember/app-blueprint 6.10.0-alpha.5 (minor)
23
+
24
+ #### :rocket: Enhancement
25
+ * `@ember/app-blueprint`
26
+ * [#140](https://github.com/ember-cli/ember-app-blueprint/pull/140) Use an `.mjs` file for configuring Stylelint ([@bertdeblock](https://github.com/bertdeblock))
27
+ * [#142](https://github.com/ember-cli/ember-app-blueprint/pull/142) Use pnpm v10 ([@bertdeblock](https://github.com/bertdeblock))
28
+ * [#138](https://github.com/ember-cli/ember-app-blueprint/pull/138) Update generated ESLint config ([@bertdeblock](https://github.com/bertdeblock))
29
+ * [#44](https://github.com/ember-cli/ember-app-blueprint/pull/44) Use ESM for the babel config ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
30
+
31
+ #### :bug: Bug Fix
32
+ * `@ember/app-blueprint`
33
+ * [#139](https://github.com/ember-cli/ember-app-blueprint/pull/139) Remove `/declarations/` entry in `.gitignore` file ([@bertdeblock](https://github.com/bertdeblock))
34
+
35
+ #### :memo: Documentation
36
+ * `@ember/app-blueprint`
37
+ * [#141](https://github.com/ember-cli/ember-app-blueprint/pull/141) Update some links to use https ([@bertdeblock](https://github.com/bertdeblock))
38
+
39
+ #### Committers: 2
40
+ - Bert De Block ([@bertdeblock](https://github.com/bertdeblock))
41
+ - [@NullVoxPopuli](https://github.com/NullVoxPopuli)
42
+
3
43
  ## Release (2025-11-12)
4
44
 
5
45
  * @ember/app-blueprint 6.10.0-alpha.4 (patch)
@@ -1,11 +1,11 @@
1
- 'use strict';
2
-
3
- const {
1
+ import { dirname } from 'node:path';
2
+ import { fileURLToPath } from 'node:url';
3
+ import {
4
4
  babelCompatSupport,
5
5
  templateCompatSupport,
6
- } = require('@embroider/compat/babel');
6
+ } from '@embroider/compat/babel';
7
7
 
8
- module.exports = {
8
+ export default {
9
9
  plugins: [
10
10
  [
11
11
  'babel-plugin-ember-template-compilation',
@@ -23,14 +23,14 @@ module.exports = {
23
23
  'module:decorator-transforms',
24
24
  {
25
25
  runtime: {
26
- import: require.resolve('decorator-transforms/runtime-esm'),
26
+ import: import.meta.resolve('decorator-transforms/runtime-esm'),
27
27
  },
28
28
  },
29
29
  ],
30
30
  [
31
31
  '@babel/plugin-transform-runtime',
32
32
  {
33
- absoluteRuntime: __dirname,
33
+ absoluteRuntime: dirname(fileURLToPath(import.meta.url)),
34
34
  useESModules: true,
35
35
  regenerator: false,
36
36
  },
@@ -14,6 +14,7 @@
14
14
  */
15
15
  import globals from 'globals';
16
16
  import js from '@eslint/js';
17
+ import { defineConfig, globalIgnores } from 'eslint/config';
17
18
 
18
19
  import ember from 'eslint-plugin-ember/recommended';
19
20
  <% if (warpDrive) { %>import WarpDrive from 'eslint-plugin-warp-drive/recommended';<% } %>
@@ -28,20 +29,13 @@ const esmParserOptions = {
28
29
  ecmaVersion: 'latest',
29
30
  };
30
31
 
31
- export default [
32
+ export default defineConfig([
33
+ globalIgnores(['dist/', 'coverage/', '!**/.*']),
32
34
  js.configs.recommended,
33
35
  eslintConfigPrettier,
34
36
  ember.configs.base,
35
37
  ember.configs.gjs,
36
38
  <% if (warpDrive) { %>...WarpDrive,<% } %>
37
-
38
- /**
39
- * Ignores must be in their own object
40
- * https://eslint.org/docs/latest/use/configure/ignore
41
- */
42
- {
43
- ignores: ['dist/', 'node_modules/', 'coverage/', '!**/.*'],
44
- },
45
39
  /**
46
40
  * https://eslint.org/docs/latest/use/configure/configuration-files#configuring-linter-options
47
41
  */
@@ -75,16 +69,7 @@ export default [
75
69
  * CJS node files
76
70
  */
77
71
  {
78
- files: [
79
- '**/*.cjs',
80
- 'config/**/*.js',
81
- 'testem.js',
82
- 'testem*.js',
83
- '.prettierrc.js',
84
- '.stylelintrc.js',
85
- '.template-lintrc.js',
86
- 'ember-cli-build.js',
87
- ],
72
+ files: ['**/*.cjs', 'config/**/*.js', 'ember-cli-build.js'],
88
73
  plugins: {
89
74
  n,
90
75
  },
@@ -115,4 +100,4 @@ export default [
115
100
  },
116
101
  },
117
102
  },
118
- ];
103
+ ]);
@@ -1,11 +1,11 @@
1
- 'use strict';
2
-
3
- const {
1
+ import { dirname } from 'node:path';
2
+ import { fileURLToPath } from 'node:url';
3
+ import {
4
4
  babelCompatSupport,
5
5
  templateCompatSupport,
6
- } = require('@embroider/compat/babel');
6
+ } from '@embroider/compat/babel';
7
7
 
8
- module.exports = {
8
+ export default {
9
9
  plugins: [
10
10
  [
11
11
  '@babel/plugin-transform-typescript',
@@ -31,14 +31,14 @@ module.exports = {
31
31
  'module:decorator-transforms',
32
32
  {
33
33
  runtime: {
34
- import: require.resolve('decorator-transforms/runtime-esm'),
34
+ import: import.meta.resolve('decorator-transforms/runtime-esm'),
35
35
  },
36
36
  },
37
37
  ],
38
38
  [
39
39
  '@babel/plugin-transform-runtime',
40
40
  {
41
- absoluteRuntime: __dirname,
41
+ absoluteRuntime: dirname(fileURLToPath(import.meta.url)),
42
42
  useESModules: true,
43
43
  regenerator: false,
44
44
  },
@@ -14,6 +14,7 @@
14
14
  */
15
15
  import globals from 'globals';
16
16
  import js from '@eslint/js';
17
+ import { defineConfig, globalIgnores } from 'eslint/config';
17
18
 
18
19
  import ts from 'typescript-eslint';
19
20
 
@@ -39,20 +40,14 @@ const parserOptions = {
39
40
  },
40
41
  };
41
42
 
42
- export default ts.config(
43
+ export default defineConfig([
44
+ globalIgnores(['dist/', 'coverage/', '!**/.*']),
43
45
  js.configs.recommended,
44
46
  ember.configs.base,
45
47
  ember.configs.gjs,
46
48
  ember.configs.gts,
47
49
  <% if (warpDrive) { %>...WarpDrive,<% } %>
48
50
  eslintConfigPrettier,
49
- /**
50
- * Ignores must be in their own object
51
- * https://eslint.org/docs/latest/use/configure/ignore
52
- */
53
- {
54
- ignores: ['dist/', 'node_modules/', 'coverage/', '!**/.*'],
55
- },
56
51
  /**
57
52
  * https://eslint.org/docs/latest/use/configure/configuration-files#configuring-linter-options
58
53
  */
@@ -94,16 +89,7 @@ export default ts.config(
94
89
  * CJS node files
95
90
  */
96
91
  {
97
- files: [
98
- '**/*.cjs',
99
- 'config/**/*.js',
100
- 'testem.js',
101
- 'testem*.js',
102
- '.prettierrc.js',
103
- '.stylelintrc.js',
104
- '.template-lintrc.js',
105
- 'ember-cli-build.js',
106
- ],
92
+ files: ['**/*.cjs', 'config/**/*.js', 'ember-cli-build.js'],
107
93
  plugins: {
108
94
  n,
109
95
  },
@@ -134,4 +120,4 @@ export default ts.config(
134
120
  },
135
121
  },
136
122
  },
137
- );
123
+ ]);
package/eslint.config.mjs CHANGED
@@ -28,8 +28,8 @@ export default [
28
28
  ignores: [
29
29
  'tests/fixtures/*',
30
30
  'files/ember-cli-build.js',
31
- 'files/_js_*',
32
- 'files/_ts_*',
31
+ 'conditional-files/_js_*',
32
+ 'conditional-files/_ts_*',
33
33
  ],
34
34
  },
35
35
  ];
@@ -1,6 +1,6 @@
1
1
  # EditorConfig helps developers define and maintain consistent
2
2
  # coding styles between different editors and IDEs
3
- # editorconfig.org
3
+ # https://editorconfig.org/
4
4
 
5
5
  root = true
6
6
 
@@ -18,14 +18,14 @@ jobs:
18
18
  timeout-minutes: 10
19
19
 
20
20
  steps:
21
- - uses: actions/checkout@v3<% if (pnpm) { %>
21
+ - uses: actions/checkout@v6<% if (pnpm) { %>
22
22
  - uses: pnpm/action-setup@v4
23
23
  with:
24
- version: 9<% } %>
24
+ version: 10<% } %>
25
25
  - name: Install Node
26
- uses: actions/setup-node@v3
26
+ uses: actions/setup-node@v6
27
27
  with:
28
- node-version: 18
28
+ node-version: 22
29
29
  cache: <%= pnpm ? 'pnpm' : yarn ? 'yarn' : 'npm' %>
30
30
  - name: Install Dependencies
31
31
  run: <%= pnpm ? 'pnpm install --frozen-lockfile' : yarn ? 'yarn install --frozen-lockfile' : 'npm ci' %>
@@ -38,14 +38,14 @@ jobs:
38
38
  timeout-minutes: 10
39
39
 
40
40
  steps:
41
- - uses: actions/checkout@v3<% if (pnpm) { %>
41
+ - uses: actions/checkout@v6<% if (pnpm) { %>
42
42
  - uses: pnpm/action-setup@v4
43
43
  with:
44
- version: 9<% } %>
44
+ version: 10<% } %>
45
45
  - name: Install Node
46
- uses: actions/setup-node@v3
46
+ uses: actions/setup-node@v6
47
47
  with:
48
- node-version: 18
48
+ node-version: 22
49
49
  cache: <%= pnpm ? 'pnpm' : yarn ? 'yarn' : 'npm' %>
50
50
  - name: Install Dependencies
51
51
  run: <%= pnpm ? 'pnpm install --frozen-lockfile' : yarn ? 'yarn install --frozen-lockfile' : 'npm ci' %>
@@ -1,5 +1,3 @@
1
- 'use strict';
2
-
3
- module.exports = {
1
+ export default {
4
2
  extends: ['stylelint-config-standard'],
5
3
  };
@@ -0,0 +1 @@
1
+ // See: conditional-files
@@ -0,0 +1 @@
1
+ // See: conditional-files
package/files/gitignore CHANGED
@@ -1,6 +1,5 @@
1
1
  # compiled output
2
2
  /dist/
3
- /declarations/
4
3
  /tmp/
5
4
 
6
5
  # dependencies
@@ -1,3 +1,3 @@
1
- # http://www.robotstxt.org
1
+ # https://www.robotstxt.org/
2
2
  User-agent: *
3
3
  Disallow:
package/index.js CHANGED
@@ -3,6 +3,47 @@
3
3
  const stringUtil = require('ember-cli-string-utils');
4
4
  const chalk = require('chalk');
5
5
  const directoryForPackageName = require('./lib/directory-for-package-name');
6
+ const { sortPackageJson } = require('sort-package-json');
7
+ const { join } = require('path');
8
+ const { readFileSync } = require('fs');
9
+ const ejs = require('ejs');
10
+
11
+ const CONDITIONAL_FILES = join(__dirname, 'conditional-files');
12
+
13
+ function stringifyAndNormalize(contents) {
14
+ return `${JSON.stringify(contents, null, 2)}\n`;
15
+ }
16
+
17
+ /**
18
+ * This overrides ember-cli's default replace function,
19
+ * which is a call to ejs with the template locals.
20
+ *
21
+ * If we want to continue using ejs in any of these,
22
+ * we _may_ need to call ejs ourselves
23
+ * (in the case where we ignore the "contents" passed to these functions)
24
+ * (see `conditional-files`)
25
+ */
26
+ const replacers = {
27
+ 'package.json'(...args) {
28
+ return this.updatePackageJson(...args);
29
+ },
30
+ 'eslint.config.mjs'(locals) {
31
+ let prefix = locals.typescript ? '_ts_' : '_js_';
32
+ let filePath = join(CONDITIONAL_FILES, prefix + 'eslint.config.mjs');
33
+
34
+ let raw = readFileSync(filePath).toString();
35
+
36
+ return ejs.render(raw, locals);
37
+ },
38
+ 'babel.config.mjs'(locals) {
39
+ let prefix = locals.typescript ? '_ts_' : '_js_';
40
+ let filePath = join(CONDITIONAL_FILES, prefix + 'babel.config.mjs');
41
+
42
+ let raw = readFileSync(filePath).toString();
43
+
44
+ return ejs.render(raw, locals);
45
+ },
46
+ };
6
47
 
7
48
  module.exports = {
8
49
  description: 'The default blueprint for ember-cli projects.',
@@ -127,44 +168,20 @@ module.exports = {
127
168
 
128
169
  /**
129
170
  * @override
130
- *
131
- * This modification of buildFileInfo allows our differing
132
- * input files to output to a single file, depending on the options.
133
- * For example:
134
- *
135
- * for javascript,
136
- * _ts_eslint.config.mjs is deleted
137
- * _js_eslint.config.mjs is renamed to eslint.config.mjs
138
- *
139
- * for typescript,
140
- * _js_eslint.config.mjs is deleted
141
- * _ts_eslint.config.mjs is renamed to eslint.config.mjs
142
171
  */
143
- buildFileInfo(intoDir, templateVariables, file, options) {
172
+ buildFileInfo(intoDir, templateVariables, file) {
144
173
  let fileInfo = this._super.buildFileInfo.apply(this, arguments);
145
174
 
146
- if (file.includes('_js_')) {
147
- if (options.typescript) {
148
- return null;
149
- }
150
-
151
- fileInfo.outputBasePath = fileInfo.outputPath.replace('_js_', '');
152
- fileInfo.outputPath = fileInfo.outputPath.replace('_js_', '');
153
- fileInfo.displayPath = fileInfo.outputPath.replace('_js_', '');
154
- return fileInfo;
175
+ if (file in replacers) {
176
+ fileInfo.replacer = replacers[file].bind(this, templateVariables);
155
177
  }
156
178
 
157
- if (file.includes('_ts_')) {
158
- if (!options.typescript) {
159
- return null;
160
- }
179
+ return fileInfo;
180
+ },
161
181
 
162
- fileInfo.outputBasePath = fileInfo.outputPath.replace('_ts_', '');
163
- fileInfo.outputPath = fileInfo.outputPath.replace('_ts_', '');
164
- fileInfo.displayPath = fileInfo.outputPath.replace('_ts_', '');
165
- return fileInfo;
166
- }
182
+ updatePackageJson(options, content) {
183
+ let contents = JSON.parse(content);
167
184
 
168
- return fileInfo;
185
+ return stringifyAndNormalize(sortPackageJson(contents));
169
186
  },
170
187
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ember/app-blueprint",
3
- "version": "6.10.0-alpha.4",
3
+ "version": "6.10.0-alpha.6",
4
4
  "description": "Blueprint for next generation of Ember apps",
5
5
  "keywords": [
6
6
  "ember-blueprint"
@@ -22,6 +22,7 @@
22
22
  },
23
23
  "dependencies": {
24
24
  "chalk": "^4.1.2",
25
+ "ejs": "^3.1.10",
25
26
  "ember-cli-string-utils": "^1.1.0",
26
27
  "lodash": "^4.17.21",
27
28
  "walk-sync": "^3.0.0"
@@ -1,15 +0,0 @@
1
- import { pageTitle } from 'ember-page-title';
2
- <% if (welcome) {%>import { WelcomePage } from 'ember-welcome-page';<% } %>
3
-
4
- <template>
5
- {{pageTitle "<%= namespace %>"}}<% if (welcome) { %>
6
-
7
- {{outlet}}
8
-
9
- {{! The following component displays Ember's default welcome message. }}
10
- <WelcomePage />
11
- {{! Feel free to remove this! }}<% } else { %>
12
- <h2 id="title">Welcome to Ember</h2>
13
-
14
- {{outlet}}<% } %>
15
- </template>