Repository: ember-cli/ember-cli (js)

Issue:
Drop support for Node v12
Node v12 is EOL since 2022-04-30, which means we should be able to drop support according to [our Node support doc](https://github.com/ember-cli/ember-cli/blob/master/docs/node-support.md).
Is this something we can do right away or do we need to do other things first before we can drop support here?

Pull request description:
Drop support for Node v12
Node v12 is EOL since 2022-04-30, which means we can drop support following [our Node support doc](https://github.com/ember-cli/ember-cli/blob/master/docs/node-support.md).

Closes #9893.

Patch:
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index f7daaac40..c48011b47 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -27,7 +27,7 @@ jobs:
       - uses: actions/checkout@v3
       - uses: actions/setup-node@v3
         with:
-          node-version: 12.x
+          node-version: 14.x
           cache: 'yarn'
 
       - run: yarn install --frozen-lockfile --non-interactive
@@ -45,7 +45,7 @@ jobs:
       - uses: actions/checkout@v3
       - uses: actions/setup-node@v3
         with:
-          node-version: 12.x
+          node-version: 14.x
           cache: 'yarn'
 
       - run: yarn install --frozen-lockfile --non-interactive
@@ -60,7 +60,7 @@ jobs:
     strategy:
       fail-fast: false
       matrix:
-        node-version: [12.x, 14.x, 16.x]
+        node-version: [14.x, 16.x]
         os: [ubuntu, windows]
 
     steps:
@@ -92,7 +92,7 @@ jobs:
       - uses: actions/checkout@v3
       - uses: actions/setup-node@v3
         with:
-          node-version: 12.x
+          node-version: 14.x
           cache: 'yarn'
 
       - run: yarn install --frozen-lockfile --non-interactive
diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml
index fe43899c7..6eacd3fe7 100644
--- a/.github/workflows/coverage.yml
+++ b/.github/workflows/coverage.yml
@@ -13,7 +13,7 @@ jobs:
       - uses: actions/checkout@v1
       - uses: actions/setup-node@v3
         with:
-          node-version: 12.x
+          node-version: 14.x
 
       - run: yarn install --frozen-lockfile --non-interactive
 
diff --git a/blueprints/addon/files/.github/workflows/ci.yml b/blueprints/addon/files/.github/workflows/ci.yml
index ed7073d70..b90d07993 100644
--- a/blueprints/addon/files/.github/workflows/ci.yml
+++ b/blueprints/addon/files/.github/workflows/ci.yml
@@ -22,7 +22,7 @@ jobs:
       - name: Install Node
         uses: actions/setup-node@v3
         with:
-          node-version: 12.x
+          node-version: 14.x
           cache: <%= yarn ? 'yarn' : 'npm' %>
       - name: Install Dependencies
         run: <%= yarn ? 'yarn install --frozen-lockfile' : 'npm ci' %>
@@ -40,7 +40,7 @@ jobs:
       - uses: actions/checkout@v3
       - uses: actions/setup-node@v3
         with:
-          node-version: 12.x
+          node-version: 14.x
           cache: <%= yarn ? 'yarn' : 'npm' %>
       - name: Install Dependencies
         run: <%= yarn ? 'yarn install --no-lockfile' : 'npm install --no-shrinkwrap' %>
@@ -71,7 +71,7 @@ jobs:
       - name: Install Node
         uses: actions/setup-node@v3
         with:
-          node-version: 12.x
+          node-version: 14.x
           cache: <%= yarn ? 'yarn' : 'npm' %>
       - name: Install Dependencies
         run: <%= yarn ? 'yarn install --frozen-lockfile' : 'npm ci' %>
diff --git a/blueprints/addon/files/.travis.yml b/blueprints/addon/files/.travis.yml
index 28601bb30..6eea3c54b 100644
--- a/blueprints/addon/files/.travis.yml
+++ b/blueprints/addon/files/.travis.yml
@@ -3,7 +3,7 @@ language: node_js
 node_js:
   # we recommend testing addons with the same minimum supported node version as Ember CLI
   # so that your addon works for all apps
-  - "12"
+  - "14"
 
 dist: xenial
 
diff --git a/blueprints/addon/files/README.md b/blueprints/addon/files/README.md
index ad234d0fb..4bb27353b 100644
--- a/blueprints/addon/files/README.md
+++ b/blueprints/addon/files/README.md
@@ -7,7 +7,7 @@
 
 * Ember.js v3.24 or above
 * Ember CLI v3.24 or above
-* Node.js v12 or above
+* Node.js v14 or above
 
 
 ## Installation
diff --git a/blueprints/app/files/.github/workflows/ci.yml b/blueprints/app/files/.github/workflows/ci.yml
index 271fe730d..326bfce5c 100644
--- a/blueprints/app/files/.github/workflows/ci.yml
+++ b/blueprints/app/files/.github/workflows/ci.yml
@@ -22,7 +22,7 @@ jobs:
       - name: Install Node
         uses: actions/setup-node@v3
         with:
-          node-version: 12.x
+          node-version: 14.x
           cache: <%= yarn ? 'yarn' : 'npm' %>
       - name: Install Dependencies
         run: <%= yarn ? 'yarn install --frozen-lockfile' : 'npm ci' %>
@@ -39,7 +39,7 @@ jobs:
       - name: Install Node
         uses: actions/setup-node@v3
         with:
-          node-version: 12.x
+          node-version: 14.x
           cache: <%= yarn ? 'yarn' : 'npm' %>
       - name: Install Dependencies
         run: <%= yarn ? 'yarn install --frozen-lockfile' : 'npm ci' %>
diff --git a/blueprints/app/files/.travis.yml b/blueprints/app/files/.travis.yml
index c0afe2c99..89157e55b 100644
--- a/blueprints/app/files/.travis.yml
+++ b/blueprints/app/files/.travis.yml
@@ -1,7 +1,7 @@
 ---
 language: node_js
 node_js:
-  - "12"
+  - "14"
 
 dist: xenial
 
diff --git a/blueprints/app/files/package.json b/blueprints/app/files/package.json
index a8f64c6b2..bd73fe88a 100644
--- a/blueprints/app/files/package.json
+++ b/blueprints/app/files/package.json
@@ -64,7 +64,7 @@
     "webpack": "^5.72.1"
   },
   "engines": {
-    "node": "12.* || 14.* || >= 16"
+    "node": "14.* || >= 16"
   },
   "ember": {
     "edition": "octane"
diff --git a/docs/node-support.md b/docs/node-support.md
index 2592234f9..239be329b 100644
--- a/docs/node-support.md
+++ b/docs/node-support.md
@@ -14,7 +14,7 @@
 | 9.x              | 2.16.2 - 3.2.x               |
 | 10.x             | 3.1.3 - 3.28.0               |
 | 11.x             | 3.9.0 - 3.13.0               |
-| 12.x             | 3.10.0 - Current             |
+| 12.x             | 3.10.0 - 4.6.0               |
 | 13.x             | 3.15.0 - 3.20.0              |
 | 14.x             | 3.19.0 - Current             |
 | 16.x             | 3.28.0 - Current             |
@@ -30,8 +30,6 @@ Node.js](https://github.com/nodejs/LTS#lts_schedule).
 
 ## Current support:
 
-* v12: Released as stable version then converted to LTS.
-  * Supported by ember-cli/ember-cli#master until: 2022-04-30.
 * v14: Released as stable version then converted to LTS.
   * Supported by ember-cli/ember-cli#master until: 2023-04-30.
 * v16: Released as stable version then converted to LTS.
diff --git a/package.json b/package.json
index da4742226..1973dcb50 100644
--- a/package.json
+++ b/package.json
@@ -166,7 +166,7 @@
     "yuidocjs": "0.10.2"
   },
   "engines": {
-    "node": ">= 12"
+    "node": ">= 14"
   },
   "publishConfig": {
     "registry": "https://registry.npmjs.org"


Test patch:
diff --git a/tests/fixtures/addon/defaults-travis/.travis.yml b/tests/fixtures/addon/defaults-travis/.travis.yml
index 7751bd2c0..15c36f6e4 100644
--- a/tests/fixtures/addon/defaults-travis/.travis.yml
+++ b/tests/fixtures/addon/defaults-travis/.travis.yml
@@ -3,7 +3,7 @@ language: node_js
 node_js:
   # we recommend testing addons with the same minimum supported node version as Ember CLI
   # so that your addon works for all apps
-  - "12"
+  - "14"
 
 dist: xenial
 
diff --git a/tests/fixtures/addon/defaults-travis/README.md b/tests/fixtures/addon/defaults-travis/README.md
index 378fb8a25..f15f8060a 100644
--- a/tests/fixtures/addon/defaults-travis/README.md
+++ b/tests/fixtures/addon/defaults-travis/README.md
@@ -9,7 +9,7 @@ Compatibility
 
 * Ember.js v3.24 or above
 * Ember CLI v3.24 or above
-* Node.js v12 or above
+* Node.js v14 or above
 
 
 Installation
diff --git a/tests/fixtures/addon/defaults-travis/package.json b/tests/fixtures/addon/defaults-travis/package.json
index 5a75df59e..20fc917e7 100644
--- a/tests/fixtures/addon/defaults-travis/package.json
+++ b/tests/fixtures/addon/defaults-travis/package.json
@@ -66,7 +66,7 @@
     "qunit-dom": "^1.6.0"
   },
   "engines": {
-    "node": "12.* || 14.* || >= 16"
+    "node": "14.* || >= 16"
   },
   "ember": {
     "edition": "octane"
diff --git a/tests/fixtures/addon/defaults/.github/workflows/ci.yml b/tests/fixtures/addon/defaults/.github/workflows/ci.yml
index 7fa2dcf62..73f2e4c50 100644
--- a/tests/fixtures/addon/defaults/.github/workflows/ci.yml
+++ b/tests/fixtures/addon/defaults/.github/workflows/ci.yml
@@ -22,7 +22,7 @@ jobs:
       - name: Install Node
         uses: actions/setup-node@v3
         with:
-          node-version: 12.x
+          node-version: 14.x
           cache: npm
       - name: Install Dependencies
         run: npm ci
@@ -40,7 +40,7 @@ jobs:
       - uses: actions/checkout@v3
       - uses: actions/setup-node@v3
         with:
-          node-version: 12.x
+          node-version: 14.x
           cache: npm
       - name: Install Dependencies
         run: npm install --no-shrinkwrap
@@ -71,7 +71,7 @@ jobs:
       - name: Install Node
         uses: actions/setup-node@v3
         with:
-          node-version: 12.x
+          node-version: 14.x
           cache: npm
       - name: Install Dependencies
         run: npm ci
diff --git a/tests/fixtures/addon/defaults/README.md b/tests/fixtures/addon/defaults/README.md
index 840c7ef32..6ae34d2e4 100644
--- a/tests/fixtures/addon/defaults/README.md
+++ b/tests/fixtures/addon/defaults/README.md
@@ -7,7 +7,7 @@
 
 * Ember.js v3.24 or above
 * Ember CLI v3.24 or above
-* Node.js v12 or above
+* Node.js v14 or above
 
 
 ## Installation
diff --git a/tests/fixtures/addon/defaults/package.json b/tests/fixtures/addon/defaults/package.json
index ad982979d..87d24d4f8 100644
--- a/tests/fixtures/addon/defaults/package.json
+++ b/tests/fixtures/addon/defaults/package.json
@@ -66,7 +66,7 @@
     "webpack": "^5.72.1"
   },
   "engines": {
-    "node": "12.* || 14.* || >= 16"
+    "node": "14.* || >= 16"
   },
   "ember": {
     "edition": "octane"
diff --git a/tests/fixtures/addon/yarn/.github/workflows/ci.yml b/tests/fixtures/addon/yarn/.github/workflows/ci.yml
index b00d82863..7aceb858a 100644
--- a/tests/fixtures/addon/yarn/.github/workflows/ci.yml
+++ b/tests/fixtures/addon/yarn/.github/workflows/ci.yml
@@ -22,7 +22,7 @@ jobs:
       - name: Install Node
         uses: actions/setup-node@v3
         with:
-          node-version: 12.x
+          node-version: 14.x
           cache: yarn
       - name: Install Dependencies
         run: yarn install --frozen-lockfile
@@ -40,7 +40,7 @@ jobs:
       - uses: actions/checkout@v3
       - uses: actions/setup-node@v3
         with:
-          node-version: 12.x
+          node-version: 14.x
           cache: yarn
       - name: Install Dependencies
         run: yarn install --no-lockfile
@@ -71,7 +71,7 @@ jobs:
       - name: Install Node
         uses: actions/setup-node@v3
         with:
-          node-version: 12.x
+          node-version: 14.x
           cache: yarn
       - name: Install Dependencies
         run: yarn install --frozen-lockfile
diff --git a/tests/fixtures/addon/yarn/.travis.yml b/tests/fixtures/addon/yarn/.travis.yml
index 00716a43f..36d57571f 100644
--- a/tests/fixtures/addon/yarn/.travis.yml
+++ b/tests/fixtures/addon/yarn/.travis.yml
@@ -3,7 +3,7 @@ language: node_js
 node_js:
   # we recommend testing addons with the same minimum supported node version as Ember CLI
   # so that your addon works for all apps
-  - "12"
+  - "14"
 
 dist: xenial
 
diff --git a/tests/fixtures/addon/yarn/README.md b/tests/fixtures/addon/yarn/README.md
index 840c7ef32..6ae34d2e4 100644
--- a/tests/fixtures/addon/yarn/README.md
+++ b/tests/fixtures/addon/yarn/README.md
@@ -7,7 +7,7 @@
 
 * Ember.js v3.24 or above
 * Ember CLI v3.24 or above
-* Node.js v12 or above
+* Node.js v14 or above
 
 
 ## Installation
diff --git a/tests/fixtures/addon/yarn/package.json b/tests/fixtures/addon/yarn/package.json
index 22171f72b..803e2ff4c 100644
--- a/tests/fixtures/addon/yarn/package.json
+++ b/tests/fixtures/addon/yarn/package.json
@@ -67,7 +67,7 @@
     "webpack": "^5.72.1"
   },
   "engines": {
-    "node": "12.* || 14.* || >= 16"
+    "node": "14.* || >= 16"
   },
   "ember": {
     "edition": "octane"
diff --git a/tests/fixtures/app/defaults/.github/workflows/ci.yml b/tests/fixtures/app/defaults/.github/workflows/ci.yml
index e3b841d5f..83762c9ac 100644
--- a/tests/fixtures/app/defaults/.github/workflows/ci.yml
+++ b/tests/fixtures/app/defaults/.github/workflows/ci.yml
@@ -22,7 +22,7 @@ jobs:
       - name: Install Node
         uses: actions/setup-node@v3
         with:
-          node-version: 12.x
+          node-version: 14.x
           cache: npm
       - name: Install Dependencies
         run: npm ci
@@ -39,7 +39,7 @@ jobs:
       - name: Install Node
         uses: actions/setup-node@v3
         with:
-          node-version: 12.x
+          node-version: 14.x
           cache: npm
       - name: Install Dependencies
         run: npm ci
diff --git a/tests/fixtures/app/defaults/package.json b/tests/fixtures/app/defaults/package.json
index 09003cf8f..51446f3ef 100644
--- a/tests/fixtures/app/defaults/package.json
+++ b/tests/fixtures/app/defaults/package.json
@@ -61,7 +61,7 @@
     "webpack": "^5.72.1"
   },
   "engines": {
-    "node": "12.* || 14.* || >= 16"
+    "node": "14.* || >= 16"
   },
   "ember": {
     "edition": "octane"
diff --git a/tests/fixtures/app/embroider-no-welcome/package.json b/tests/fixtures/app/embroider-no-welcome/package.json
index f9d6da633..093be27a3 100644
--- a/tests/fixtures/app/embroider-no-welcome/package.json
+++ b/tests/fixtures/app/embroider-no-welcome/package.json
@@ -63,7 +63,7 @@
     "webpack": "^5.72.1"
   },
   "engines": {
-    "node": "12.* || 14.* || >= 16"
+    "node": "14.* || >= 16"
   },
   "ember": {
     "edition": "octane"
diff --git a/tests/fixtures/app/embroider-yarn/package.json b/tests/fixtures/app/embroider-yarn/package.json
index 67d617854..caa763f5d 100644
--- a/tests/fixtures/app/embroider-yarn/package.json
+++ b/tests/fixtures/app/embroider-yarn/package.json
@@ -64,7 +64,7 @@
     "webpack": "^5.72.1"
   },
   "engines": {
-    "node": "12.* || 14.* || >= 16"
+    "node": "14.* || >= 16"
   },
   "ember": {
     "edition": "octane"
diff --git a/tests/fixtures/app/embroider/package.json b/tests/fixtures/app/embroider/package.json
index 67d617854..caa763f5d 100644
--- a/tests/fixtures/app/embroider/package.json
+++ b/tests/fixtures/app/embroider/package.json
@@ -64,7 +64,7 @@
     "webpack": "^5.72.1"
   },
   "engines": {
-    "node": "12.* || 14.* || >= 16"
+    "node": "14.* || >= 16"
   },
   "ember": {
     "edition": "octane"
diff --git a/tests/fixtures/app/nested-project/actual-project/package.json b/tests/fixtures/app/nested-project/actual-project/package.json
index fb5657274..afb65b37f 100644
--- a/tests/fixtures/app/nested-project/actual-project/package.json
+++ b/tests/fixtures/app/nested-project/actual-project/package.json
@@ -60,7 +60,7 @@
     "qunit-dom": "^1.6.0"
   },
   "engines": {
-    "node": "12.* || 14.* || >= 16"
+    "node": "14.* || >= 16"
   },
   "ember": {
     "edition": "octane"
diff --git a/tests/fixtures/app/npm-travis/.travis.yml b/tests/fixtures/app/npm-travis/.travis.yml
index 24d893796..b5dc27946 100644
--- a/tests/fixtures/app/npm-travis/.travis.yml
+++ b/tests/fixtures/app/npm-travis/.travis.yml
@@ -1,7 +1,7 @@
 ---
 language: node_js
 node_js:
-  - "12"
+  - "14"
 
 dist: xenial
 
diff --git a/tests/fixtures/app/npm-travis/package.json b/tests/fixtures/app/npm-travis/package.json
index 79108d821..d1ac95589 100644
--- a/tests/fixtures/app/npm-travis/package.json
+++ b/tests/fixtures/app/npm-travis/package.json
@@ -60,7 +60,7 @@
     "qunit-dom": "^1.6.0"
   },
   "engines": {
-    "node": "12.* || 14.* || >= 16"
+    "node": "14.* || >= 16"
   },
   "ember": {
     "edition": "octane"
diff --git a/tests/fixtures/app/npm/.github/workflows/ci.yml b/tests/fixtures/app/npm/.github/workflows/ci.yml
index e3b841d5f..83762c9ac 100644
--- a/tests/fixtures/app/npm/.github/workflows/ci.yml
+++ b/tests/fixtures/app/npm/.github/workflows/ci.yml
@@ -22,7 +22,7 @@ jobs:
       - name: Install Node
         uses: actions/setup-node@v3
         with:
-          node-version: 12.x
+          node-version: 14.x
           cache: npm
       - name: Install Dependencies
         run: npm ci
@@ -39,7 +39,7 @@ jobs:
       - name: Install Node
         uses: actions/setup-node@v3
         with:
-          node-version: 12.x
+          node-version: 14.x
           cache: npm
       - name: Install Dependencies
         run: npm ci
diff --git a/tests/fixtures/app/npm/package.json b/tests/fixtures/app/npm/package.json
index 9ae341ce2..f56929b06 100644
--- a/tests/fixtures/app/npm/package.json
+++ b/tests/fixtures/app/npm/package.json
@@ -60,7 +60,7 @@
     "webpack": "^5.72.1"
   },
   "engines": {
-    "node": "12.* || 14.* || >= 16"
+    "node": "14.* || >= 16"
   },
   "ember": {
     "edition": "octane"
diff --git a/tests/fixtures/app/with-blueprint-override-lint-fail/.travis.yml b/tests/fixtures/app/with-blueprint-override-lint-fail/.travis.yml
index 24d893796..b5dc27946 100644
--- a/tests/fixtures/app/with-blueprint-override-lint-fail/.travis.yml
+++ b/tests/fixtures/app/with-blueprint-override-lint-fail/.travis.yml
@@ -1,7 +1,7 @@
 ---
 language: node_js
 node_js:
-  - "12"
+  - "14"
 
 dist: xenial
 
diff --git a/tests/fixtures/app/with-blueprint-override-lint-fail/package.json b/tests/fixtures/app/with-blueprint-override-lint-fail/package.json
index 47d227ee7..487014bb8 100644
--- a/tests/fixtures/app/with-blueprint-override-lint-fail/package.json
+++ b/tests/fixtures/app/with-blueprint-override-lint-fail/package.json
@@ -59,7 +59,7 @@
     "qunit-dom": "^1.6.0"
   },
   "engines": {
-    "node": "12.* || 14.* || >= 16"
+    "node": "14.* || >= 16"
   },
   "ember": {
     "edition": "octane"
diff --git a/tests/fixtures/app/yarn-travis/.travis.yml b/tests/fixtures/app/yarn-travis/.travis.yml
index 9348f55ee..4977d8bbc 100644
--- a/tests/fixtures/app/yarn-travis/.travis.yml
+++ b/tests/fixtures/app/yarn-travis/.travis.yml
@@ -1,7 +1,7 @@
 ---
 language: node_js
 node_js:
-  - "12"
+  - "14"
 
 dist: xenial
 
diff --git a/tests/fixtures/app/yarn-travis/package.json b/tests/fixtures/app/yarn-travis/package.json
index 4c4856915..279b8bc3b 100644
--- a/tests/fixtures/app/yarn-travis/package.json
+++ b/tests/fixtures/app/yarn-travis/package.json
@@ -61,7 +61,7 @@
     "qunit-dom": "^1.6.0"
   },
   "engines": {
-    "node": "12.* || 14.* || >= 16"
+    "node": "14.* || >= 16"
   },
   "ember": {
     "edition": "octane"
diff --git a/tests/fixtures/app/yarn/.github/workflows/ci.yml b/tests/fixtures/app/yarn/.github/workflows/ci.yml
index 2ab194795..0321412cd 100644
--- a/tests/fixtures/app/yarn/.github/workflows/ci.yml
+++ b/tests/fixtures/app/yarn/.github/workflows/ci.yml
@@ -22,7 +22,7 @@ jobs:
       - name: Install Node
         uses: actions/setup-node@v3
         with:
-          node-version: 12.x
+          node-version: 14.x
           cache: yarn
       - name: Install Dependencies
         run: yarn install --frozen-lockfile
@@ -39,7 +39,7 @@ jobs:
       - name: Install Node
         uses: actions/setup-node@v3
         with:
-          node-version: 12.x
+          node-version: 14.x
           cache: yarn
       - name: Install Dependencies
         run: yarn install --frozen-lockfile
diff --git a/tests/fixtures/app/yarn/package.json b/tests/fixtures/app/yarn/package.json
index 09003cf8f..51446f3ef 100644
--- a/tests/fixtures/app/yarn/package.json
+++ b/tests/fixtures/app/yarn/package.json
@@ -61,7 +61,7 @@
     "webpack": "^5.72.1"
   },
   "engines": {
-    "node": "12.* || 14.* || >= 16"
+    "node": "14.* || >= 16"
   },
   "ember": {
     "edition": "octane"
diff --git a/tests/unit/utilities/platform-checker-test.js b/tests/unit/utilities/platform-checker-test.js
index e29ce4b00..ff5bc506a 100644
--- a/tests/unit/utilities/platform-checker-test.js
+++ b/tests/unit/utilities/platform-checker-test.js
@@ -16,10 +16,11 @@ describe('platform-checker', function () {
 
     check('v8.0.0', { isTested: false, isDeprecated: true, isValid: false });
     check('v10.0.0', { isTested: false, isDeprecated: true, isValid: false });
-    check('v12.0.0', { isTested: true, isDeprecated: false, isValid: true });
-    check('v13.0.0', { isTested: false, isDeprecated: false, isValid: true });
+    check('v12.0.0', { isTested: false, isDeprecated: true, isValid: false });
+    check('v13.0.0', { isTested: false, isDeprecated: true, isValid: false });
     check('v14.0.0', { isTested: true, isDeprecated: false, isValid: true });
     check('v15.0.0', { isTested: false, isDeprecated: false, isValid: true });
+    check('v16.0.0', { isTested: true, isDeprecated: false, isValid: true });
   });
 
   it('checkIsDeprecated', function () {