@embroider/compat 3.6.0 → 3.6.2-unstable.2e5e933

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.
Files changed (75) hide show
  1. package/babel.js +1 -0
  2. package/package.json +12 -10
  3. package/src/audit/babel-visitor.js +7 -1
  4. package/src/audit/babel-visitor.js.map +1 -1
  5. package/src/audit/build.js.map +1 -1
  6. package/src/audit.d.ts +6 -53
  7. package/src/audit.js +98 -285
  8. package/src/audit.js.map +1 -1
  9. package/src/babel-plugin-adjust-imports.js +19 -18
  10. package/src/babel-plugin-adjust-imports.js.map +1 -1
  11. package/src/babel.d.ts +19 -0
  12. package/src/babel.js +153 -0
  13. package/src/babel.js.map +1 -0
  14. package/src/compat-adapters/@ember-data/store.d.ts +1 -5
  15. package/src/compat-adapters/@ember-data/store.js +3 -15
  16. package/src/compat-adapters/@ember-data/store.js.map +1 -1
  17. package/src/compat-adapters/ember-fetch.d.ts +5 -0
  18. package/src/compat-adapters/ember-fetch.js +19 -0
  19. package/src/compat-adapters/ember-fetch.js.map +1 -0
  20. package/src/compat-adapters/ember-resolver.d.ts +4 -0
  21. package/src/compat-adapters/ember-resolver.js +21 -0
  22. package/src/compat-adapters/ember-resolver.js.map +1 -0
  23. package/src/compat-addons.js +1 -1
  24. package/src/compat-addons.js.map +1 -1
  25. package/src/compat-app-builder.d.ts +9 -64
  26. package/src/compat-app-builder.js +110 -1275
  27. package/src/compat-app-builder.js.map +1 -1
  28. package/src/compat-app.d.ts +4 -22
  29. package/src/compat-app.js +70 -216
  30. package/src/compat-app.js.map +1 -1
  31. package/src/content-for-config.d.ts +11 -0
  32. package/src/content-for-config.js +66 -0
  33. package/src/content-for-config.js.map +1 -0
  34. package/src/default-pipeline.d.ts +2 -2
  35. package/src/default-pipeline.js +21 -0
  36. package/src/default-pipeline.js.map +1 -1
  37. package/src/dependency-rules.js +17 -10
  38. package/src/dependency-rules.js.map +1 -1
  39. package/src/detect-babel-plugins.d.ts +1 -0
  40. package/src/detect-babel-plugins.js +14 -0
  41. package/src/detect-babel-plugins.js.map +1 -1
  42. package/src/http-audit.d.ts +13 -0
  43. package/src/http-audit.js +60 -0
  44. package/src/http-audit.js.map +1 -0
  45. package/src/index.d.ts +1 -2
  46. package/src/index.js +2 -3
  47. package/src/index.js.map +1 -1
  48. package/src/module-visitor.d.ts +52 -0
  49. package/src/module-visitor.js +285 -0
  50. package/src/module-visitor.js.map +1 -0
  51. package/src/options.d.ts +3 -2
  52. package/src/options.js +3 -0
  53. package/src/options.js.map +1 -1
  54. package/src/resolver-transform.js +9 -6
  55. package/src/resolver-transform.js.map +1 -1
  56. package/src/standalone-addon-build.js +6 -15
  57. package/src/standalone-addon-build.js.map +1 -1
  58. package/src/v1-config.d.ts +0 -8
  59. package/src/v1-config.js +1 -51
  60. package/src/v1-config.js.map +1 -1
  61. package/src/compat-adapters/@ember-data/debug.d.ts +0 -6
  62. package/src/compat-adapters/@ember-data/debug.js +0 -22
  63. package/src/compat-adapters/@ember-data/debug.js.map +0 -1
  64. package/src/rename-require-plugin.d.ts +0 -1
  65. package/src/rename-require-plugin.js +0 -15
  66. package/src/rename-require-plugin.js.map +0 -1
  67. package/src/sync-dir.d.ts +0 -8
  68. package/src/sync-dir.js +0 -68
  69. package/src/sync-dir.js.map +0 -1
  70. package/src/template-tag-codemod.d.ts +0 -10
  71. package/src/template-tag-codemod.js +0 -258
  72. package/src/template-tag-codemod.js.map +0 -1
  73. package/src/v1-appboot.d.ts +0 -14
  74. package/src/v1-appboot.js +0 -47
  75. package/src/v1-appboot.js.map +0 -1
package/src/sync-dir.js DELETED
@@ -1,68 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.SyncDir = void 0;
7
- const assert_never_1 = __importDefault(require("assert-never"));
8
- const fs_tree_diff_1 = __importDefault(require("fs-tree-diff"));
9
- const walk_sync_1 = __importDefault(require("walk-sync"));
10
- const path_1 = require("path");
11
- const fs_extra_1 = require("fs-extra");
12
- // mirrors the changes in the src dir to the dest dir, while tracking the
13
- // current set of files present. If dest is undefined, it only tracks the set of
14
- // files without mirroring the changes to anywhere
15
- class SyncDir {
16
- constructor(src, dest) {
17
- this.src = src;
18
- this.dest = dest;
19
- this.prev = new fs_tree_diff_1.default();
20
- this.files = new Set();
21
- }
22
- update() {
23
- let next = new fs_tree_diff_1.default({
24
- entries: walk_sync_1.default.entries(this.src),
25
- });
26
- for (let [operation, relativePath] of this.prev.calculatePatch(next)) {
27
- let outputPath;
28
- if (this.dest) {
29
- outputPath = (0, path_1.resolve)(this.dest, relativePath);
30
- }
31
- switch (operation) {
32
- case 'unlink':
33
- if (outputPath) {
34
- (0, fs_extra_1.unlinkSync)(outputPath);
35
- }
36
- this.files.delete(relativePath);
37
- break;
38
- case 'rmdir':
39
- if (outputPath) {
40
- (0, fs_extra_1.rmdirSync)(outputPath);
41
- }
42
- break;
43
- case 'mkdir':
44
- if (outputPath) {
45
- (0, fs_extra_1.mkdirpSync)(outputPath);
46
- }
47
- break;
48
- case 'change':
49
- if (outputPath) {
50
- (0, fs_extra_1.removeSync)(outputPath);
51
- (0, fs_extra_1.copySync)((0, path_1.resolve)(this.src, relativePath), outputPath, { dereference: true });
52
- }
53
- break;
54
- case 'create':
55
- if (outputPath) {
56
- (0, fs_extra_1.copySync)((0, path_1.resolve)(this.src, relativePath), outputPath, { dereference: true });
57
- }
58
- this.files.add(relativePath);
59
- break;
60
- default:
61
- (0, assert_never_1.default)(operation);
62
- }
63
- this.prev = next;
64
- }
65
- }
66
- }
67
- exports.SyncDir = SyncDir;
68
- //# sourceMappingURL=sync-dir.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sync-dir.js","sourceRoot":"","sources":["sync-dir.ts"],"names":[],"mappings":";;;;;;AAAA,gEAAuC;AACvC,gEAAkC;AAClC,0DAAiC;AACjC,+BAA+B;AAC/B,uCAAmF;AAEnF,yEAAyE;AACzE,gFAAgF;AAChF,kDAAkD;AAClD,MAAa,OAAO;IAIlB,YAAoB,GAAW,EAAU,IAAwB;QAA7C,QAAG,GAAH,GAAG,CAAQ;QAAU,SAAI,GAAJ,IAAI,CAAoB;QAHzD,SAAI,GAAW,IAAI,sBAAM,EAAE,CAAC;QAC3B,UAAK,GAAgB,IAAI,GAAG,EAAE,CAAC;IAE4B,CAAC;IAErE,MAAM;QACJ,IAAI,IAAI,GAAG,IAAI,sBAAM,CAAC;YACpB,OAAO,EAAE,mBAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;SACpC,CAAC,CAAC;QACH,KAAK,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;YACrE,IAAI,UAA8B,CAAC;YACnC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,UAAU,GAAG,IAAA,cAAO,EAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;YAChD,CAAC;YACD,QAAQ,SAAS,EAAE,CAAC;gBAClB,KAAK,QAAQ;oBACX,IAAI,UAAU,EAAE,CAAC;wBACf,IAAA,qBAAU,EAAC,UAAU,CAAC,CAAC;oBACzB,CAAC;oBACD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;oBAChC,MAAM;gBACR,KAAK,OAAO;oBACV,IAAI,UAAU,EAAE,CAAC;wBACf,IAAA,oBAAS,EAAC,UAAU,CAAC,CAAC;oBACxB,CAAC;oBACD,MAAM;gBACR,KAAK,OAAO;oBACV,IAAI,UAAU,EAAE,CAAC;wBACf,IAAA,qBAAU,EAAC,UAAU,CAAC,CAAC;oBACzB,CAAC;oBACD,MAAM;gBACR,KAAK,QAAQ;oBACX,IAAI,UAAU,EAAE,CAAC;wBACf,IAAA,qBAAU,EAAC,UAAU,CAAC,CAAC;wBACvB,IAAA,mBAAQ,EAAC,IAAA,cAAO,EAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,EAAE,UAAU,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC/E,CAAC;oBACD,MAAM;gBACR,KAAK,QAAQ;oBACX,IAAI,UAAU,EAAE,CAAC;wBACf,IAAA,mBAAQ,EAAC,IAAA,cAAO,EAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,EAAE,UAAU,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC/E,CAAC;oBACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;oBAC7B,MAAM;gBACR;oBACE,IAAA,sBAAW,EAAC,SAAS,CAAC,CAAC;YAC3B,CAAC;YACD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,CAAC;IACH,CAAC;CACF;AAlDD,0BAkDC","sourcesContent":["import assertNever from 'assert-never';\nimport FSTree from 'fs-tree-diff';\nimport walkSync from 'walk-sync';\nimport { resolve } from 'path';\nimport { copySync, mkdirpSync, removeSync, rmdirSync, unlinkSync } from 'fs-extra';\n\n// mirrors the changes in the src dir to the dest dir, while tracking the\n// current set of files present. If dest is undefined, it only tracks the set of\n// files without mirroring the changes to anywhere\nexport class SyncDir {\n private prev: FSTree = new FSTree();\n readonly files: Set<string> = new Set();\n\n constructor(private src: string, private dest: string | undefined) {}\n\n update(): void {\n let next = new FSTree({\n entries: walkSync.entries(this.src),\n });\n for (let [operation, relativePath] of this.prev.calculatePatch(next)) {\n let outputPath: string | undefined;\n if (this.dest) {\n outputPath = resolve(this.dest, relativePath);\n }\n switch (operation) {\n case 'unlink':\n if (outputPath) {\n unlinkSync(outputPath);\n }\n this.files.delete(relativePath);\n break;\n case 'rmdir':\n if (outputPath) {\n rmdirSync(outputPath);\n }\n break;\n case 'mkdir':\n if (outputPath) {\n mkdirpSync(outputPath);\n }\n break;\n case 'change':\n if (outputPath) {\n removeSync(outputPath);\n copySync(resolve(this.src, relativePath), outputPath, { dereference: true });\n }\n break;\n case 'create':\n if (outputPath) {\n copySync(resolve(this.src, relativePath), outputPath, { dereference: true });\n }\n this.files.add(relativePath);\n break;\n default:\n assertNever(operation);\n }\n this.prev = next;\n }\n }\n}\n"]}
@@ -1,10 +0,0 @@
1
- import type { EmberAppInstance } from '@embroider/core';
2
- import type { Node } from 'broccoli-node-api';
3
- export interface TemplateTagCodemodOptions {
4
- shouldTransformPath: (outputPath: string) => boolean;
5
- dryRun: boolean;
6
- }
7
- export default function templateTagCodemod(emberApp: EmberAppInstance, { shouldTransformPath, dryRun }?: {
8
- shouldTransformPath?: ((outputPath: string) => boolean) | undefined;
9
- dryRun?: boolean | undefined;
10
- }): Node;
@@ -1,258 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.default = templateTagCodemod;
7
- const default_pipeline_1 = __importDefault(require("./default-pipeline"));
8
- const path_1 = require("path");
9
- const fs_1 = require("fs");
10
- const broccoli_plugin_1 = __importDefault(require("broccoli-plugin"));
11
- const core_1 = require("@babel/core");
12
- const core_2 = require("@embroider/core");
13
- const babel_import_util_1 = require("babel-import-util");
14
- const resolver_transform_1 = __importDefault(require("./resolver-transform"));
15
- const child_process_1 = require("child_process");
16
- const core_3 = require("@embroider/core");
17
- function templateTagCodemod(emberApp, { shouldTransformPath = (() => true), dryRun = false } = {}) {
18
- return new TemplateTagCodemodPlugin([
19
- (0, default_pipeline_1.default)(emberApp, undefined, {
20
- staticAddonTrees: true,
21
- staticAddonTestSupportTrees: true,
22
- staticComponents: true,
23
- staticHelpers: true,
24
- staticModifiers: true,
25
- staticEmberSource: true,
26
- amdCompatibility: {
27
- es: [],
28
- },
29
- }),
30
- ], { shouldTransformPath, dryRun });
31
- }
32
- class TemplateTagCodemodPlugin extends broccoli_plugin_1.default {
33
- constructor(inputNodes, options) {
34
- super(inputNodes, {
35
- name: 'TemplateTagCodemodPlugin',
36
- });
37
- this.options = options;
38
- }
39
- async build() {
40
- var _a, _b;
41
- function* walkSync(dir) {
42
- const files = (0, fs_1.readdirSync)(dir);
43
- for (const file of files) {
44
- const pathToFile = (0, path_1.join)(dir, file);
45
- const isDirectory = (0, fs_1.statSync)(pathToFile).isDirectory();
46
- if (isDirectory) {
47
- yield* walkSync(pathToFile);
48
- }
49
- else {
50
- yield pathToFile;
51
- }
52
- }
53
- }
54
- this.inputPaths[0];
55
- const tmp_path = (0, fs_1.readFileSync)(this.inputPaths[0] + '/.stage2-output').toLocaleString();
56
- const compatPattern = /#embroider_compat\/(?<type>[^\/]+)\/(?<rest>.*)/;
57
- const resolver = new core_2.ResolverLoader(process.cwd()).resolver;
58
- const hbs_file_test = /[\\/]rewritten-app[\\/]components[\\/].*\.hbs$/;
59
- // locate ember-source for the host app so we know which version to insert builtIns for
60
- const emberSourceEntrypoint = require.resolve('ember-source', { paths: [process.cwd()] });
61
- const emberVersion = JSON.parse((0, fs_1.readFileSync)((0, path_1.join)(emberSourceEntrypoint, '../../package.json')).toString()).version;
62
- for await (const current_file of walkSync(tmp_path)) {
63
- if (hbs_file_test.test(current_file) && this.options.shouldTransformPath(current_file)) {
64
- const template_file_src = (0, fs_1.readFileSync)(current_file).toLocaleString();
65
- const ember_template_compiler = resolver.nodeResolve('ember-source/vendor/ember/ember-template-compiler', (0, path_1.resolve)((0, core_3.locateEmbroiderWorkingDir)(process.cwd()), 'rewritten-app', 'package.json'));
66
- if (ember_template_compiler.type === 'not_found') {
67
- throw 'This will not ever be true';
68
- }
69
- const embroider_compat_path = require.resolve('@embroider/compat', { paths: [process.cwd()] });
70
- const babel_plugin_ember_template_compilation = require.resolve('babel-plugin-ember-template-compilation', {
71
- paths: [embroider_compat_path],
72
- });
73
- const babel_plugin_syntax_decorators = require.resolve('@babel/plugin-syntax-decorators', {
74
- paths: [embroider_compat_path],
75
- });
76
- let src = (_b = (_a = (0, core_1.transformSync)((0, core_2.hbsToJS)(template_file_src), {
77
- plugins: [
78
- [
79
- babel_plugin_ember_template_compilation,
80
- {
81
- compilerPath: ember_template_compiler.filename,
82
- transforms: [(0, resolver_transform_1.default)({ appRoot: process.cwd(), emberVersion: emberVersion })],
83
- targetFormat: 'hbs',
84
- },
85
- ],
86
- ],
87
- })) === null || _a === void 0 ? void 0 : _a.code) !== null && _b !== void 0 ? _b : '';
88
- const import_bucket = [];
89
- let transformed_template_value = '';
90
- (0, core_1.transformSync)(src, {
91
- plugins: [
92
- function template_tag_extractor() {
93
- return {
94
- visitor: {
95
- ImportDeclaration(import_declaration) {
96
- const extractor = import_declaration.node.source.value.match(compatPattern);
97
- if (extractor) {
98
- const result = resolver.nodeResolve(extractor[0], current_file);
99
- if (result.type === 'real') {
100
- // find package
101
- const owner_package = resolver.packageCache.ownerOfFile(result.filename);
102
- // change import to real one
103
- import_declaration.node.source.value =
104
- owner_package.name + '/' + extractor[1] + '/' + extractor[2];
105
- import_bucket.push(import_declaration);
106
- }
107
- }
108
- else if (import_declaration.node.source.value.indexOf('@ember/template-compilation') === -1) {
109
- import_bucket.push(import_declaration);
110
- }
111
- },
112
- CallExpression(path) {
113
- // reverse of hbs to js
114
- // extract the template string to put into template tag in backing class
115
- if ('name' in path.node.callee &&
116
- path.node.callee.name === 'precompileTemplate' &&
117
- path.node.arguments &&
118
- 'value' in path.node.arguments[0]) {
119
- transformed_template_value = `<template>\n\t${path.node.arguments[0].value}\n</template>`;
120
- }
121
- },
122
- },
123
- };
124
- },
125
- ],
126
- });
127
- //find backing class
128
- const backing_class_resolution = resolver.nodeResolve('#embroider_compat/' + (0, path_1.relative)(tmp_path, current_file).replace(/[\\]/g, '/').slice(0, -4), tmp_path);
129
- const backing_class_filename = 'filename' in backing_class_resolution ? backing_class_resolution.filename : '';
130
- const backing_class_src = (0, fs_1.readFileSync)(backing_class_filename).toString();
131
- const magic_string = '__MAGIC_STRING_FOR_TEMPLATE_TAG_REPLACE__';
132
- const is_template_only = backing_class_src.indexOf("import templateOnlyComponent from '@ember/component/template-only';") !== -1;
133
- src = (0, core_1.transformSync)(backing_class_src, {
134
- plugins: [
135
- [babel_plugin_syntax_decorators, { decoratorsBeforeExport: true }],
136
- function glimmer_syntax_creator(babel) {
137
- return {
138
- name: 'test',
139
- visitor: {
140
- Program: {
141
- enter(path) {
142
- var _a;
143
- // Always instantiate the ImportUtil instance at the Program scope
144
- const importUtil = new babel_import_util_1.ImportUtil(babel.types, path);
145
- const first_node = path.get('body')[0];
146
- if (first_node &&
147
- first_node.node &&
148
- first_node.node.leadingComments &&
149
- ((_a = first_node.node.leadingComments[0]) === null || _a === void 0 ? void 0 : _a.value.includes('__COLOCATED_TEMPLATE__'))) {
150
- //remove magic comment
151
- first_node.node.leadingComments.splice(0, 1);
152
- }
153
- for (const template_import of import_bucket) {
154
- for (let i = 0, len = template_import.node.specifiers.length; i < len; ++i) {
155
- const specifier = template_import.node.specifiers[i];
156
- if (specifier.type === 'ImportDefaultSpecifier') {
157
- importUtil.import(path, template_import.node.source.value, 'default', specifier.local.name);
158
- }
159
- else if (specifier.type === 'ImportSpecifier') {
160
- importUtil.import(path, template_import.node.source.value, specifier.local.name);
161
- }
162
- }
163
- }
164
- },
165
- },
166
- ImportDeclaration(import_declaration) {
167
- if (import_declaration.node.source.value.indexOf('@ember/component/template-only') !== -1) {
168
- import_declaration.remove();
169
- }
170
- },
171
- ExportDefaultDeclaration(path) {
172
- path.traverse({
173
- ClassBody(path) {
174
- const classbody_nodes = path.get('body');
175
- //add magic string to be replaces with the contents of the template tag
176
- classbody_nodes[classbody_nodes.length - 1].addComment('trailing', magic_string, false);
177
- },
178
- });
179
- },
180
- },
181
- };
182
- },
183
- ],
184
- }).code.replace(`/*${magic_string}*/`, transformed_template_value);
185
- if (is_template_only) {
186
- // because we can't inject a comment as the default export
187
- // we replace the known exported string
188
- src = src.replace('templateOnlyComponent()', transformed_template_value);
189
- }
190
- const dryRun = this.options.dryRun ? '--dry-run' : '';
191
- // work out original file path in app tree
192
- const app_relative_path = (0, path_1.join)('app', (0, path_1.relative)(tmp_path, current_file));
193
- const new_file_path = app_relative_path.slice(0, -4) + '.gjs';
194
- // write glimmer file out
195
- if (this.options.dryRun) {
196
- console.log('Write new file', new_file_path, src);
197
- }
198
- else {
199
- (0, fs_1.writeFileSync)((0, path_1.join)(process.cwd(), new_file_path), src, { flag: 'wx+' });
200
- }
201
- // git rm old files (js/ts if exists + hbs)
202
- let rm_hbs = await execute(`git rm ${app_relative_path} ${dryRun}`, {
203
- pwd: process.cwd(),
204
- });
205
- console.log(rm_hbs.output);
206
- if (!is_template_only) {
207
- // remove backing class only if it's not a template only component
208
- // resolve repative path to rewritten-app
209
- const app_relative_path = (0, path_1.join)('app', (0, path_1.relative)(tmp_path, backing_class_filename));
210
- let rm_js = await execute(`git rm ${app_relative_path} ${dryRun}`, {
211
- pwd: process.cwd(),
212
- });
213
- console.log(rm_js.output);
214
- }
215
- }
216
- }
217
- }
218
- }
219
- async function execute(shellCommand, opts) {
220
- let env;
221
- if (opts === null || opts === void 0 ? void 0 : opts.env) {
222
- env = { ...process.env, ...opts.env };
223
- }
224
- let child = (0, child_process_1.spawn)(shellCommand, {
225
- stdio: ['inherit', 'pipe', 'pipe'],
226
- cwd: opts === null || opts === void 0 ? void 0 : opts.pwd,
227
- shell: true,
228
- env,
229
- });
230
- let stderrBuffer = [];
231
- let stdoutBuffer = [];
232
- let combinedBuffer = [];
233
- child.stderr.on('data', data => {
234
- stderrBuffer.push(data);
235
- combinedBuffer.push(data);
236
- });
237
- child.stdout.on('data', data => {
238
- stdoutBuffer.push(data);
239
- combinedBuffer.push(data);
240
- });
241
- return new Promise(resolve => {
242
- child.on('close', (exitCode) => {
243
- resolve({
244
- exitCode,
245
- get stdout() {
246
- return stdoutBuffer.join('');
247
- },
248
- get stderr() {
249
- return stderrBuffer.join('');
250
- },
251
- get output() {
252
- return combinedBuffer.join('');
253
- },
254
- });
255
- });
256
- });
257
- }
258
- //# sourceMappingURL=template-tag-codemod.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"template-tag-codemod.js","sourceRoot":"","sources":["template-tag-codemod.ts"],"names":[],"mappings":"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","sourcesContent":["import { default as compatBuild } from './default-pipeline';\nimport type { EmberAppInstance } from '@embroider/core';\nimport type { Node, InputNode } from 'broccoli-node-api';\nimport { join, relative, resolve } from 'path';\nimport type { types as t } from '@babel/core';\nimport type { NodePath } from '@babel/traverse';\nimport { statSync, readdirSync, readFileSync, writeFileSync } from 'fs';\nimport Plugin from 'broccoli-plugin';\nimport { transformSync } from '@babel/core';\nimport { hbsToJS, ResolverLoader } from '@embroider/core';\nimport { ImportUtil } from 'babel-import-util';\nimport ResolverTransform from './resolver-transform';\nimport { spawn } from 'child_process';\nimport { locateEmbroiderWorkingDir } from '@embroider/core';\n\nexport interface TemplateTagCodemodOptions {\n shouldTransformPath: (outputPath: string) => boolean;\n dryRun: boolean;\n}\n\nexport default function templateTagCodemod(\n emberApp: EmberAppInstance,\n { shouldTransformPath = (() => true) as TemplateTagCodemodOptions['shouldTransformPath'], dryRun = false } = {}\n): Node {\n return new TemplateTagCodemodPlugin(\n [\n compatBuild(emberApp, undefined, {\n staticAddonTrees: true,\n staticAddonTestSupportTrees: true,\n staticComponents: true,\n staticHelpers: true,\n staticModifiers: true,\n staticEmberSource: true,\n amdCompatibility: {\n es: [],\n },\n }),\n ],\n { shouldTransformPath, dryRun }\n );\n}\nclass TemplateTagCodemodPlugin extends Plugin {\n constructor(inputNodes: InputNode[], readonly options: TemplateTagCodemodOptions) {\n super(inputNodes, {\n name: 'TemplateTagCodemodPlugin',\n });\n }\n async build() {\n function* walkSync(dir: string): Generator<string> {\n const files = readdirSync(dir);\n\n for (const file of files) {\n const pathToFile = join(dir, file);\n const isDirectory = statSync(pathToFile).isDirectory();\n if (isDirectory) {\n yield* walkSync(pathToFile);\n } else {\n yield pathToFile;\n }\n }\n }\n this.inputPaths[0];\n const tmp_path = readFileSync(this.inputPaths[0] + '/.stage2-output').toLocaleString();\n const compatPattern = /#embroider_compat\\/(?<type>[^\\/]+)\\/(?<rest>.*)/;\n const resolver = new ResolverLoader(process.cwd()).resolver;\n const hbs_file_test = /[\\\\/]rewritten-app[\\\\/]components[\\\\/].*\\.hbs$/;\n // locate ember-source for the host app so we know which version to insert builtIns for\n const emberSourceEntrypoint = require.resolve('ember-source', { paths: [process.cwd()] });\n const emberVersion = JSON.parse(readFileSync(join(emberSourceEntrypoint, '../../package.json')).toString()).version;\n\n for await (const current_file of walkSync(tmp_path)) {\n if (hbs_file_test.test(current_file) && this.options.shouldTransformPath(current_file)) {\n const template_file_src = readFileSync(current_file).toLocaleString();\n const ember_template_compiler = resolver.nodeResolve(\n 'ember-source/vendor/ember/ember-template-compiler',\n resolve(locateEmbroiderWorkingDir(process.cwd()), 'rewritten-app', 'package.json')\n );\n if (ember_template_compiler.type === 'not_found') {\n throw 'This will not ever be true';\n }\n\n const embroider_compat_path = require.resolve('@embroider/compat', { paths: [process.cwd()] });\n const babel_plugin_ember_template_compilation = require.resolve('babel-plugin-ember-template-compilation', {\n paths: [embroider_compat_path],\n });\n const babel_plugin_syntax_decorators = require.resolve('@babel/plugin-syntax-decorators', {\n paths: [embroider_compat_path],\n });\n let src =\n transformSync(hbsToJS(template_file_src), {\n plugins: [\n [\n babel_plugin_ember_template_compilation,\n {\n compilerPath: ember_template_compiler.filename,\n transforms: [ResolverTransform({ appRoot: process.cwd(), emberVersion: emberVersion })],\n targetFormat: 'hbs',\n },\n ],\n ],\n })?.code ?? '';\n const import_bucket: NodePath<t.ImportDeclaration>[] = [];\n let transformed_template_value = '';\n transformSync(src, {\n plugins: [\n function template_tag_extractor(): unknown {\n return {\n visitor: {\n ImportDeclaration(import_declaration: NodePath<t.ImportDeclaration>) {\n const extractor = import_declaration.node.source.value.match(compatPattern);\n if (extractor) {\n const result = resolver.nodeResolve(extractor[0], current_file);\n if (result.type === 'real') {\n // find package\n const owner_package = resolver.packageCache.ownerOfFile(result.filename);\n // change import to real one\n import_declaration.node.source.value =\n owner_package!.name + '/' + extractor[1] + '/' + extractor[2];\n import_bucket.push(import_declaration);\n }\n } else if (import_declaration.node.source.value.indexOf('@ember/template-compilation') === -1) {\n import_bucket.push(import_declaration);\n }\n },\n CallExpression(path: NodePath<t.CallExpression>) {\n // reverse of hbs to js\n // extract the template string to put into template tag in backing class\n if (\n 'name' in path.node.callee &&\n path.node.callee.name === 'precompileTemplate' &&\n path.node.arguments &&\n 'value' in path.node.arguments[0]\n ) {\n transformed_template_value = `<template>\\n\\t${path.node.arguments[0].value}\\n</template>`;\n }\n },\n },\n };\n },\n ],\n });\n\n //find backing class\n const backing_class_resolution = resolver.nodeResolve(\n '#embroider_compat/' + relative(tmp_path, current_file).replace(/[\\\\]/g, '/').slice(0, -4),\n tmp_path\n );\n\n const backing_class_filename = 'filename' in backing_class_resolution ? backing_class_resolution.filename : '';\n const backing_class_src = readFileSync(backing_class_filename).toString();\n const magic_string = '__MAGIC_STRING_FOR_TEMPLATE_TAG_REPLACE__';\n const is_template_only =\n backing_class_src.indexOf(\"import templateOnlyComponent from '@ember/component/template-only';\") !== -1;\n\n src = transformSync(backing_class_src, {\n plugins: [\n [babel_plugin_syntax_decorators, { decoratorsBeforeExport: true }],\n function glimmer_syntax_creator(babel): unknown {\n return {\n name: 'test',\n visitor: {\n Program: {\n enter(path: NodePath<t.Program>) {\n // Always instantiate the ImportUtil instance at the Program scope\n const importUtil = new ImportUtil(babel.types, path);\n const first_node = path.get('body')[0];\n if (\n first_node &&\n first_node.node &&\n first_node.node.leadingComments &&\n first_node.node.leadingComments[0]?.value.includes('__COLOCATED_TEMPLATE__')\n ) {\n //remove magic comment\n first_node.node.leadingComments.splice(0, 1);\n }\n for (const template_import of import_bucket) {\n for (let i = 0, len = template_import.node.specifiers.length; i < len; ++i) {\n const specifier = template_import.node.specifiers[i];\n if (specifier.type === 'ImportDefaultSpecifier') {\n importUtil.import(path, template_import.node.source.value, 'default', specifier.local.name);\n } else if (specifier.type === 'ImportSpecifier') {\n importUtil.import(path, template_import.node.source.value, specifier.local.name);\n }\n }\n }\n },\n },\n ImportDeclaration(import_declaration: NodePath<t.ImportDeclaration>) {\n if (import_declaration.node.source.value.indexOf('@ember/component/template-only') !== -1) {\n import_declaration.remove();\n }\n },\n ExportDefaultDeclaration(path: NodePath<t.ExportDefaultDeclaration>) {\n path.traverse({\n ClassBody(path) {\n const classbody_nodes = path.get('body');\n //add magic string to be replaces with the contents of the template tag\n classbody_nodes[classbody_nodes.length - 1].addComment('trailing', magic_string, false);\n },\n });\n },\n },\n };\n },\n ],\n })!.code!.replace(`/*${magic_string}*/`, transformed_template_value);\n if (is_template_only) {\n // because we can't inject a comment as the default export\n // we replace the known exported string\n src = src.replace('templateOnlyComponent()', transformed_template_value);\n }\n\n const dryRun = this.options.dryRun ? '--dry-run' : '';\n // work out original file path in app tree\n const app_relative_path = join('app', relative(tmp_path, current_file));\n const new_file_path = app_relative_path.slice(0, -4) + '.gjs';\n\n // write glimmer file out\n if (this.options.dryRun) {\n console.log('Write new file', new_file_path, src);\n } else {\n writeFileSync(join(process.cwd(), new_file_path), src, { flag: 'wx+' });\n }\n\n // git rm old files (js/ts if exists + hbs)\n let rm_hbs = await execute(`git rm ${app_relative_path} ${dryRun}`, {\n pwd: process.cwd(),\n });\n console.log(rm_hbs.output);\n\n if (!is_template_only) {\n // remove backing class only if it's not a template only component\n // resolve repative path to rewritten-app\n const app_relative_path = join('app', relative(tmp_path, backing_class_filename));\n let rm_js = await execute(`git rm ${app_relative_path} ${dryRun}`, {\n pwd: process.cwd(),\n });\n\n console.log(rm_js.output);\n }\n }\n }\n }\n}\n\nasync function execute(\n shellCommand: string,\n opts?: { env?: Record<string, string>; pwd?: string }\n): Promise<{\n exitCode: number;\n stderr: string;\n stdout: string;\n output: string;\n}> {\n let env: Record<string, string | undefined> | undefined;\n if (opts?.env) {\n env = { ...process.env, ...opts.env };\n }\n let child = spawn(shellCommand, {\n stdio: ['inherit', 'pipe', 'pipe'],\n cwd: opts?.pwd,\n shell: true,\n env,\n });\n let stderrBuffer: string[] = [];\n let stdoutBuffer: string[] = [];\n let combinedBuffer: string[] = [];\n child.stderr.on('data', data => {\n stderrBuffer.push(data);\n combinedBuffer.push(data);\n });\n child.stdout.on('data', data => {\n stdoutBuffer.push(data);\n combinedBuffer.push(data);\n });\n return new Promise(resolve => {\n child.on('close', (exitCode: number) => {\n resolve({\n exitCode,\n get stdout() {\n return stdoutBuffer.join('');\n },\n get stderr() {\n return stderrBuffer.join('');\n },\n get output() {\n return combinedBuffer.join('');\n },\n });\n });\n });\n}\n"]}
@@ -1,14 +0,0 @@
1
- import Plugin from 'broccoli-plugin';
2
- import type { Node } from 'broccoli-node-api';
3
- export declare class WriteV1AppBoot extends Plugin {
4
- private lastContents;
5
- constructor();
6
- build(): void;
7
- }
8
- export declare class ReadV1AppBoot extends Plugin {
9
- private appBoot;
10
- private hasBuilt;
11
- constructor(appBootTree: Node);
12
- build(): void;
13
- readAppBoot(): string | undefined;
14
- }
package/src/v1-appboot.js DELETED
@@ -1,47 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.ReadV1AppBoot = exports.WriteV1AppBoot = void 0;
7
- const broccoli_plugin_1 = __importDefault(require("broccoli-plugin"));
8
- const path_1 = require("path");
9
- const fs_extra_1 = require("fs-extra");
10
- class WriteV1AppBoot extends broccoli_plugin_1.default {
11
- constructor() {
12
- super([], {
13
- persistentOutput: true,
14
- needsCache: false,
15
- });
16
- }
17
- build() {
18
- let filename = (0, path_1.join)(this.outputPath, 'config/app-boot.js');
19
- let contents = `{{content-for "app-boot"}}`;
20
- if (!this.lastContents || this.lastContents !== contents) {
21
- (0, fs_extra_1.outputFileSync)(filename, contents);
22
- }
23
- this.lastContents = contents;
24
- }
25
- }
26
- exports.WriteV1AppBoot = WriteV1AppBoot;
27
- class ReadV1AppBoot extends broccoli_plugin_1.default {
28
- constructor(appBootTree) {
29
- super([appBootTree], {
30
- persistentOutput: true,
31
- needsCache: false,
32
- });
33
- this.hasBuilt = false;
34
- }
35
- build() {
36
- this.appBoot = (0, fs_extra_1.readFileSync)((0, path_1.join)(this.inputPaths[0], `config/app-boot.js`), 'utf8');
37
- this.hasBuilt = true;
38
- }
39
- readAppBoot() {
40
- if (!this.hasBuilt) {
41
- throw new Error(`AppBoot not available until after the build`);
42
- }
43
- return this.appBoot;
44
- }
45
- }
46
- exports.ReadV1AppBoot = ReadV1AppBoot;
47
- //# sourceMappingURL=v1-appboot.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"v1-appboot.js","sourceRoot":"","sources":["v1-appboot.ts"],"names":[],"mappings":";;;;;;AAAA,sEAAqC;AAErC,+BAA4B;AAC5B,uCAAwD;AAExD,MAAa,cAAe,SAAQ,yBAAM;IAExC;QACE,KAAK,CAAC,EAAE,EAAE;YACR,gBAAgB,EAAE,IAAI;YACtB,UAAU,EAAE,KAAK;SAClB,CAAC,CAAC;IACL,CAAC;IACD,KAAK;QACH,IAAI,QAAQ,GAAG,IAAA,WAAI,EAAC,IAAI,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;QAC3D,IAAI,QAAQ,GAAG,4BAA4B,CAAC;QAC5C,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;YACzD,IAAA,yBAAc,EAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACrC,CAAC;QACD,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC;IAC/B,CAAC;CACF;AAhBD,wCAgBC;AAED,MAAa,aAAc,SAAQ,yBAAM;IAGvC,YAAY,WAAiB;QAC3B,KAAK,CAAC,CAAC,WAAW,CAAC,EAAE;YACnB,gBAAgB,EAAE,IAAI;YACtB,UAAU,EAAE,KAAK;SAClB,CAAC,CAAC;QALG,aAAQ,GAAG,KAAK,CAAC;IAMzB,CAAC;IACD,KAAK;QACH,IAAI,CAAC,OAAO,GAAG,IAAA,uBAAY,EAAC,IAAA,WAAI,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,oBAAoB,CAAC,EAAE,MAAM,CAAC,CAAC;QACpF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACvB,CAAC;IAED,WAAW;QACT,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF;AApBD,sCAoBC","sourcesContent":["import Plugin from 'broccoli-plugin';\nimport type { Node } from 'broccoli-node-api';\nimport { join } from 'path';\nimport { readFileSync, outputFileSync } from 'fs-extra';\n\nexport class WriteV1AppBoot extends Plugin {\n private lastContents: string | undefined;\n constructor() {\n super([], {\n persistentOutput: true,\n needsCache: false,\n });\n }\n build() {\n let filename = join(this.outputPath, 'config/app-boot.js');\n let contents = `{{content-for \"app-boot\"}}`;\n if (!this.lastContents || this.lastContents !== contents) {\n outputFileSync(filename, contents);\n }\n this.lastContents = contents;\n }\n}\n\nexport class ReadV1AppBoot extends Plugin {\n private appBoot: string | undefined;\n private hasBuilt = false;\n constructor(appBootTree: Node) {\n super([appBootTree], {\n persistentOutput: true,\n needsCache: false,\n });\n }\n build() {\n this.appBoot = readFileSync(join(this.inputPaths[0], `config/app-boot.js`), 'utf8');\n this.hasBuilt = true;\n }\n\n readAppBoot() {\n if (!this.hasBuilt) {\n throw new Error(`AppBoot not available until after the build`);\n }\n return this.appBoot;\n }\n}\n"]}