@embroider/core 1.8.3 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- package/package.json +6 -20
- package/src/app.d.ts +4 -5
- package/src/app.js +44 -53
- package/src/app.js.map +1 -1
- package/src/babel-plugin-adjust-imports.d.ts +0 -1
- package/src/babel-plugin-adjust-imports.js +10 -17
- package/src/babel-plugin-adjust-imports.js.map +1 -1
- package/src/index.d.ts +0 -4
- package/src/index.js +2 -6
- package/src/index.js.map +1 -1
- package/src/messages.d.ts +3 -1
- package/src/messages.js +15 -4
- package/src/messages.js.map +1 -1
- package/src/packager.d.ts +4 -1
- package/src/packager.js +2 -1
- package/src/packager.js.map +1 -1
- package/src/portable-babel-config.js +1 -1
- package/src/portable-babel-config.js.map +1 -1
- package/src/atomic-write.d.ts +0 -1
- package/src/atomic-write.js +0 -18
- package/src/atomic-write.js.map +0 -1
- package/src/babel-plugin-inline-hbs-deps-node.d.ts +0 -14
- package/src/babel-plugin-inline-hbs-deps-node.js +0 -31
- package/src/babel-plugin-inline-hbs-deps-node.js.map +0 -1
- package/src/babel-plugin-inline-hbs-deps.d.ts +0 -10
- package/src/babel-plugin-inline-hbs-deps.js +0 -134
- package/src/babel-plugin-inline-hbs-deps.js.map +0 -1
- package/src/babel-plugin-inline-hbs-node.d.ts +0 -7
- package/src/babel-plugin-inline-hbs-node.js +0 -15
- package/src/babel-plugin-inline-hbs-node.js.map +0 -1
- package/src/babel-plugin-inline-hbs.d.ts +0 -24
- package/src/babel-plugin-inline-hbs.js +0 -142
- package/src/babel-plugin-inline-hbs.js.map +0 -1
- package/src/babel-plugin-stage1-inline-hbs-node.d.ts +0 -12
- package/src/babel-plugin-stage1-inline-hbs-node.js +0 -9
- package/src/babel-plugin-stage1-inline-hbs-node.js.map +0 -1
- package/src/babel-plugin-stage1-inline-hbs.d.ts +0 -9
- package/src/babel-plugin-stage1-inline-hbs.js +0 -96
- package/src/babel-plugin-stage1-inline-hbs.js.map +0 -1
- package/src/browser-index.d.ts +0 -1
- package/src/browser-index.js +0 -6
- package/src/browser-index.js.map +0 -1
- package/src/ember-template-compiler-types.d.ts +0 -41
- package/src/ember-template-compiler-types.js +0 -3
- package/src/ember-template-compiler-types.js.map +0 -1
- package/src/load-ember-template-compiler.d.ts +0 -6
- package/src/load-ember-template-compiler.js +0 -57
- package/src/load-ember-template-compiler.js.map +0 -1
- package/src/mini-modules-polyfill.d.ts +0 -12
- package/src/mini-modules-polyfill.js +0 -80
- package/src/mini-modules-polyfill.js.map +0 -1
- package/src/patch-template-compiler.d.ts +0 -1
- package/src/patch-template-compiler.js +0 -176
- package/src/patch-template-compiler.js.map +0 -1
- package/src/resolver.d.ts +0 -14
- package/src/resolver.js +0 -3
- package/src/resolver.js.map +0 -1
- package/src/template-compiler-common.d.ts +0 -70
- package/src/template-compiler-common.js +0 -176
- package/src/template-compiler-common.js.map +0 -1
- package/src/template-compiler-node.d.ts +0 -17
- package/src/template-compiler-node.js +0 -32
- package/src/template-compiler-node.js.map +0 -1
- package/src/write-template-compiler.d.ts +0 -6
- package/src/write-template-compiler.js +0 -24
- package/src/write-template-compiler.js.map +0 -1
@@ -1,57 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.getEmberExports = void 0;
|
4
|
-
const fs_1 = require("fs");
|
5
|
-
const vm_1 = require("vm");
|
6
|
-
const crypto_1 = require("crypto");
|
7
|
-
const patch_template_compiler_1 = require("./patch-template-compiler");
|
8
|
-
const CACHE = new Map();
|
9
|
-
function getEmberExports(templateCompilerPath) {
|
10
|
-
let entry = CACHE.get(templateCompilerPath);
|
11
|
-
if (entry) {
|
12
|
-
let currentStat = (0, fs_1.statSync)(templateCompilerPath);
|
13
|
-
// Let's ensure the template is still what we cached
|
14
|
-
if (currentStat.mode === entry.stat.mode &&
|
15
|
-
currentStat.size === entry.stat.size &&
|
16
|
-
currentStat.mtime.getTime() === entry.stat.mtime.getTime()) {
|
17
|
-
return entry.value;
|
18
|
-
}
|
19
|
-
}
|
20
|
-
let stat = (0, fs_1.statSync)(templateCompilerPath);
|
21
|
-
let source = (0, patch_template_compiler_1.patch)((0, fs_1.readFileSync)(templateCompilerPath, 'utf8'), templateCompilerPath);
|
22
|
-
let theExports = undefined;
|
23
|
-
// cacheKey, theExports
|
24
|
-
let cacheKey = (0, crypto_1.createHash)('md5').update(source).digest('hex');
|
25
|
-
entry = Object.freeze({
|
26
|
-
value: {
|
27
|
-
cacheKey,
|
28
|
-
get theExports() {
|
29
|
-
if (theExports) {
|
30
|
-
return theExports;
|
31
|
-
}
|
32
|
-
// matches (essentially) what ember-cli-htmlbars does in https://git.io/Jtbpj
|
33
|
-
let sandbox = {
|
34
|
-
module: { require, exports: {} },
|
35
|
-
require,
|
36
|
-
};
|
37
|
-
if (typeof globalThis === 'undefined') {
|
38
|
-
// for Node 10 usage with Ember 3.27+ we have to define the `global` global
|
39
|
-
// in order for ember-template-compiler.js to evaluate properly
|
40
|
-
// due to this code https://git.io/Jtb7
|
41
|
-
sandbox.global = sandbox;
|
42
|
-
}
|
43
|
-
// using vm.createContext / vm.Script to ensure we evaluate in a fresh sandbox context
|
44
|
-
// so that any global mutation done within ember-template-compiler.js does not leak out
|
45
|
-
let context = (0, vm_1.createContext)(sandbox);
|
46
|
-
let script = new vm_1.Script(source, { filename: templateCompilerPath });
|
47
|
-
script.runInContext(context);
|
48
|
-
return (theExports = context.module.exports);
|
49
|
-
},
|
50
|
-
},
|
51
|
-
stat, // This is stored, so we can reload the templateCompiler if it changes mid-build.
|
52
|
-
});
|
53
|
-
CACHE.set(templateCompilerPath, entry);
|
54
|
-
return entry.value;
|
55
|
-
}
|
56
|
-
exports.getEmberExports = getEmberExports;
|
57
|
-
//# sourceMappingURL=load-ember-template-compiler.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"load-ember-template-compiler.js","sourceRoot":"","sources":["load-ember-template-compiler.ts"],"names":[],"mappings":";;;AAAA,2BAAgD;AAChD,2BAA2C;AAC3C,mCAAoC;AACpC,uEAAkD;AAYlD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAsC,CAAC;AAE5D,SAAgB,eAAe,CAAC,oBAA4B;IAC1D,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAE5C,IAAI,KAAK,EAAE;QACT,IAAI,WAAW,GAAG,IAAA,aAAQ,EAAC,oBAAoB,CAAC,CAAC;QAEjD,oDAAoD;QACpD,IACE,WAAW,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI;YACpC,WAAW,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI;YACpC,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAC1D;YACA,OAAO,KAAK,CAAC,KAAK,CAAC;SACpB;KACF;IAED,IAAI,IAAI,GAAG,IAAA,aAAQ,EAAC,oBAAoB,CAAC,CAAC;IAE1C,IAAI,MAAM,GAAG,IAAA,+BAAK,EAAC,IAAA,iBAAY,EAAC,oBAAoB,EAAE,MAAM,CAAC,EAAE,oBAAoB,CAAC,CAAC;IACrF,IAAI,UAAU,GAAQ,SAAS,CAAC;IAEhC,uBAAuB;IACvB,IAAI,QAAQ,GAAG,IAAA,mBAAU,EAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAE9D,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;QACpB,KAAK,EAAE;YACL,QAAQ;YACR,IAAI,UAAU;gBACZ,IAAI,UAAU,EAAE;oBACd,OAAO,UAAU,CAAC;iBACnB;gBAED,6EAA6E;gBAC7E,IAAI,OAAO,GAAG;oBACZ,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE;oBAChC,OAAO;iBACR,CAAC;gBAEF,IAAI,OAAO,UAAU,KAAK,WAAW,EAAE;oBACrC,2EAA2E;oBAC3E,+DAA+D;oBAC/D,uCAAuC;oBACtC,OAAe,CAAC,MAAM,GAAG,OAAO,CAAC;iBACnC;gBACD,sFAAsF;gBACtF,uFAAuF;gBACvF,IAAI,OAAO,GAAG,IAAA,kBAAa,EAAC,OAAO,CAAC,CAAC;gBACrC,IAAI,MAAM,GAAG,IAAI,WAAM,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,oBAAoB,EAAE,CAAC,CAAC;gBAEpE,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;gBAC7B,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC/C,CAAC;SACF;QACD,IAAI,EAAE,iFAAiF;KACxF,CAAC,CAAC;IAEH,KAAK,CAAC,GAAG,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;IACvC,OAAO,KAAK,CAAC,KAAK,CAAC;AACrB,CAAC;AA1DD,0CA0DC","sourcesContent":["import fs, { readFileSync, statSync } from 'fs';\nimport { createContext, Script } from 'vm';\nimport { createHash } from 'crypto';\nimport { patch } from './patch-template-compiler';\n\ntype TemplateCompilerCacheEntry = {\n value: EmbersExports;\n stat: fs.Stats;\n};\n\ntype EmbersExports = {\n cacheKey: string;\n theExports: any;\n};\n\nconst CACHE = new Map<string, TemplateCompilerCacheEntry>();\n\nexport function getEmberExports(templateCompilerPath: string): EmbersExports {\n let entry = CACHE.get(templateCompilerPath);\n\n if (entry) {\n let currentStat = statSync(templateCompilerPath);\n\n // Let's ensure the template is still what we cached\n if (\n currentStat.mode === entry.stat.mode &&\n currentStat.size === entry.stat.size &&\n currentStat.mtime.getTime() === entry.stat.mtime.getTime()\n ) {\n return entry.value;\n }\n }\n\n let stat = statSync(templateCompilerPath);\n\n let source = patch(readFileSync(templateCompilerPath, 'utf8'), templateCompilerPath);\n let theExports: any = undefined;\n\n // cacheKey, theExports\n let cacheKey = createHash('md5').update(source).digest('hex');\n\n entry = Object.freeze({\n value: {\n cacheKey,\n get theExports() {\n if (theExports) {\n return theExports;\n }\n\n // matches (essentially) what ember-cli-htmlbars does in https://git.io/Jtbpj\n let sandbox = {\n module: { require, exports: {} },\n require,\n };\n\n if (typeof globalThis === 'undefined') {\n // for Node 10 usage with Ember 3.27+ we have to define the `global` global\n // in order for ember-template-compiler.js to evaluate properly\n // due to this code https://git.io/Jtb7\n (sandbox as any).global = sandbox;\n }\n // using vm.createContext / vm.Script to ensure we evaluate in a fresh sandbox context\n // so that any global mutation done within ember-template-compiler.js does not leak out\n let context = createContext(sandbox);\n let script = new Script(source, { filename: templateCompilerPath });\n\n script.runInContext(context);\n return (theExports = context.module.exports);\n },\n },\n stat, // This is stored, so we can reload the templateCompiler if it changes mid-build.\n });\n\n CACHE.set(templateCompilerPath, entry);\n return entry.value;\n}\n"]}
|
@@ -1,12 +0,0 @@
|
|
1
|
-
import type { types as t } from '@babel/core';
|
2
|
-
import type { NodePath } from '@babel/traverse';
|
3
|
-
declare type BabelTypes = typeof t;
|
4
|
-
export default function miniModulesPolyfill(babel: unknown): {
|
5
|
-
visitor: {
|
6
|
-
Program: {
|
7
|
-
exit(path: NodePath<t.Program>): void;
|
8
|
-
};
|
9
|
-
};
|
10
|
-
};
|
11
|
-
export declare function handleImportDeclaration(t: BabelTypes, path: NodePath<t.ImportDeclaration>): undefined;
|
12
|
-
export {};
|
@@ -1,80 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.handleImportDeclaration = void 0;
|
4
|
-
// this is intentionally not the whole babel-plugin-ember-modules-api-polyfill.
|
5
|
-
// That runs very early, so any usage of polyfilled imports that gets emitted by
|
6
|
-
// our other babel plugins can't take advantage of it.
|
7
|
-
//
|
8
|
-
// If I was going to try to do this properly, I would change
|
9
|
-
// babel-plugin-ember-modules-api-polyfill to run very late in the game, like
|
10
|
-
// this code does, so that other plugins could always not worry about it. But
|
11
|
-
// seeing as modules-api-polyfill is already on the way out, it's simpler to
|
12
|
-
// just handle the small piece of its functionality that matter to us:
|
13
|
-
//
|
14
|
-
// - all our usage (emitted by our babel plugins) is static imports, not dynamic
|
15
|
-
// ones, so it's OK to just walk the top level, saving us the cost of a full
|
16
|
-
// traverse
|
17
|
-
// - we only emit a handful of specific imports that are easy to just list here
|
18
|
-
//
|
19
|
-
//
|
20
|
-
let replacements = {
|
21
|
-
'@ember/component/template-only': {
|
22
|
-
default(t) {
|
23
|
-
return t.memberExpression(t.identifier('Ember'), t.identifier('_templateOnlyComponent'));
|
24
|
-
},
|
25
|
-
},
|
26
|
-
'@ember/template-factory': {
|
27
|
-
createTemplateFactory(t) {
|
28
|
-
return t.memberExpression(t.memberExpression(t.identifier('Ember'), t.identifier('HTMLBars')), t.identifier('template'));
|
29
|
-
},
|
30
|
-
},
|
31
|
-
'@ember/component': {
|
32
|
-
default(t) {
|
33
|
-
return t.memberExpression(t.identifier('Ember'), t.identifier('Component'));
|
34
|
-
},
|
35
|
-
setComponentTemplate(t) {
|
36
|
-
return t.memberExpression(t.identifier('Ember'), t.identifier('_setComponentTemplate'));
|
37
|
-
},
|
38
|
-
},
|
39
|
-
};
|
40
|
-
function miniModulesPolyfill(babel) {
|
41
|
-
let t = babel.types;
|
42
|
-
return {
|
43
|
-
visitor: {
|
44
|
-
Program: {
|
45
|
-
exit(path) {
|
46
|
-
for (let child of path.get('body')) {
|
47
|
-
if (child.isImportDeclaration()) {
|
48
|
-
let replacement = handleImportDeclaration(t, child);
|
49
|
-
if (replacement) {
|
50
|
-
path.replaceWith(replacement);
|
51
|
-
}
|
52
|
-
}
|
53
|
-
}
|
54
|
-
},
|
55
|
-
},
|
56
|
-
},
|
57
|
-
};
|
58
|
-
}
|
59
|
-
exports.default = miniModulesPolyfill;
|
60
|
-
function handleImportDeclaration(t, path) {
|
61
|
-
let match = replacements[path.node.source.value];
|
62
|
-
if (match) {
|
63
|
-
let specifiers = path.get('specifiers');
|
64
|
-
let replacers = specifiers.map(specifier => ({ replacer: match[specifier.node.local.name], specifier }));
|
65
|
-
if (replacers.every(r => Boolean(r.replacer))) {
|
66
|
-
path.replaceWith(t.variableDeclaration('const', replacers.map(r => t.variableDeclarator(r.specifier.node.local, r.replacer(t)))));
|
67
|
-
}
|
68
|
-
else {
|
69
|
-
for (let { specifier, replacer } of replacers) {
|
70
|
-
if (replacer) {
|
71
|
-
path.insertAfter(t.variableDeclaration('const', [t.variableDeclarator(specifier.node.local, replacer(t))]));
|
72
|
-
specifier.remove();
|
73
|
-
}
|
74
|
-
}
|
75
|
-
}
|
76
|
-
}
|
77
|
-
return undefined;
|
78
|
-
}
|
79
|
-
exports.handleImportDeclaration = handleImportDeclaration;
|
80
|
-
//# sourceMappingURL=mini-modules-polyfill.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"mini-modules-polyfill.js","sourceRoot":"","sources":["mini-modules-polyfill.ts"],"names":[],"mappings":"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","sourcesContent":["import type { types as t } from '@babel/core';\nimport type { NodePath } from '@babel/traverse';\n\ntype BabelTypes = typeof t;\n\n// this is intentionally not the whole babel-plugin-ember-modules-api-polyfill.\n// That runs very early, so any usage of polyfilled imports that gets emitted by\n// our other babel plugins can't take advantage of it.\n//\n// If I was going to try to do this properly, I would change\n// babel-plugin-ember-modules-api-polyfill to run very late in the game, like\n// this code does, so that other plugins could always not worry about it. But\n// seeing as modules-api-polyfill is already on the way out, it's simpler to\n// just handle the small piece of its functionality that matter to us:\n//\n// - all our usage (emitted by our babel plugins) is static imports, not dynamic\n// ones, so it's OK to just walk the top level, saving us the cost of a full\n// traverse\n// - we only emit a handful of specific imports that are easy to just list here\n//\n//\nlet replacements: { [moduleSpecifier: string]: { [name: string]: ((t: BabelTypes) => t.Expression) | undefined } } = {\n '@ember/component/template-only': {\n default(t: BabelTypes) {\n return t.memberExpression(t.identifier('Ember'), t.identifier('_templateOnlyComponent'));\n },\n },\n '@ember/template-factory': {\n createTemplateFactory(t) {\n return t.memberExpression(\n t.memberExpression(t.identifier('Ember'), t.identifier('HTMLBars')),\n t.identifier('template')\n );\n },\n },\n '@ember/component': {\n default(t: BabelTypes) {\n return t.memberExpression(t.identifier('Ember'), t.identifier('Component'));\n },\n setComponentTemplate(t: BabelTypes) {\n return t.memberExpression(t.identifier('Ember'), t.identifier('_setComponentTemplate'));\n },\n },\n};\n\nexport default function miniModulesPolyfill(babel: unknown) {\n let t = (babel as any).types as BabelTypes;\n return {\n visitor: {\n Program: {\n exit(path: NodePath<t.Program>) {\n for (let child of path.get('body')) {\n if (child.isImportDeclaration()) {\n let replacement = handleImportDeclaration(t, child);\n if (replacement) {\n path.replaceWith(replacement);\n }\n }\n }\n },\n },\n },\n };\n}\n\nexport function handleImportDeclaration(t: BabelTypes, path: NodePath<t.ImportDeclaration>) {\n let match = replacements[path.node.source.value];\n if (match) {\n let specifiers = path.get('specifiers');\n let replacers = specifiers.map(specifier => ({ replacer: match[specifier.node.local.name], specifier }));\n if (replacers.every(r => Boolean(r.replacer))) {\n path.replaceWith(\n t.variableDeclaration(\n 'const',\n replacers.map(r => t.variableDeclarator(r.specifier.node.local, r.replacer!(t)))\n )\n );\n } else {\n for (let { specifier, replacer } of replacers) {\n if (replacer) {\n path.insertAfter(t.variableDeclaration('const', [t.variableDeclarator(specifier.node.local, replacer(t))]));\n specifier.remove();\n }\n }\n }\n }\n return undefined;\n}\n"]}
|
@@ -1 +0,0 @@
|
|
1
|
-
export declare function patch(source: string, templateCompilerPath: string): string;
|
@@ -1,176 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.patch = void 0;
|
4
|
-
const core_1 = require("@babel/core");
|
5
|
-
function parseVersion(templateCompilerPath, source) {
|
6
|
-
// ember-template-compiler.js contains a comment that indicates what version it is for
|
7
|
-
// that looks like:
|
8
|
-
/*!
|
9
|
-
* @overview Ember - JavaScript Application Framework
|
10
|
-
* @copyright Copyright 2011-2020 Tilde Inc. and contributors
|
11
|
-
* Portions Copyright 2006-2011 Strobe Inc.
|
12
|
-
* Portions Copyright 2008-2011 Apple Inc. All rights reserved.
|
13
|
-
* @license Licensed under MIT license
|
14
|
-
* See https://raw.github.com/emberjs/ember.js/master/LICENSE
|
15
|
-
* @version 3.25.1
|
16
|
-
*/
|
17
|
-
let version = source.match(/@version\s+([\d\.]+)/);
|
18
|
-
if (!version || !version[1]) {
|
19
|
-
throw new Error(`Could not find version string in \`${templateCompilerPath}\`. Maybe we don't support your ember-source version?`);
|
20
|
-
}
|
21
|
-
let numbers = version[1].split('.');
|
22
|
-
let major = parseInt(numbers[0], 10);
|
23
|
-
let minor = parseInt(numbers[1], 10);
|
24
|
-
let patch = parseInt(numbers[2], 10);
|
25
|
-
return { major, minor, patch };
|
26
|
-
}
|
27
|
-
function emberVersionGte(templateCompilerPath, source, major, minor) {
|
28
|
-
let actual = parseVersion(templateCompilerPath, source);
|
29
|
-
return actual.major > major || (actual.major === major && actual.minor >= minor);
|
30
|
-
}
|
31
|
-
function patch(source, templateCompilerPath) {
|
32
|
-
let version = parseVersion(templateCompilerPath, source);
|
33
|
-
if (emberVersionGte(templateCompilerPath, source, 3, 26) ||
|
34
|
-
(version.major === 3 && version.minor === 25 && version.patch >= 2) ||
|
35
|
-
(version.major === 3 && version.minor === 24 && version.patch >= 3)) {
|
36
|
-
// no modifications are needed after
|
37
|
-
// https://github.com/emberjs/ember.js/pull/19426 and backported to
|
38
|
-
// 3.26.0-beta.3, 3.25.2, 3.24.3
|
39
|
-
return source;
|
40
|
-
}
|
41
|
-
let replacedVar = false;
|
42
|
-
let patchedSource;
|
43
|
-
let needsAngleBracketPrinterFix = emberVersionGte(templateCompilerPath, source, 3, 12) && !emberVersionGte(templateCompilerPath, source, 3, 17);
|
44
|
-
if (needsAngleBracketPrinterFix) {
|
45
|
-
// here we are stripping off the first `var Ember;`. That one small change
|
46
|
-
// lets us crack open the file and get access to its internal loader, because
|
47
|
-
// we can give it our own predefined `Ember` variable instead, which it will
|
48
|
-
// use and put `Ember.__loader` onto.
|
49
|
-
//
|
50
|
-
// on ember 3.12 through 3.16 (which use variants of glimmer-vm 0.38.5) we
|
51
|
-
// also apply a patch to the printer in @glimmer/syntax to fix
|
52
|
-
// https://github.com/glimmerjs/glimmer-vm/pull/941/files because it can
|
53
|
-
// really bork apps under embroider, and we'd like to support at least all
|
54
|
-
// active LTS versions of ember.
|
55
|
-
patchedSource = (0, core_1.transform)(source, {
|
56
|
-
plugins: [
|
57
|
-
function () {
|
58
|
-
return {
|
59
|
-
visitor: {
|
60
|
-
VariableDeclarator(path) {
|
61
|
-
let id = path.node.id;
|
62
|
-
if (id.type === 'Identifier' && id.name === 'Ember' && !replacedVar) {
|
63
|
-
replacedVar = true;
|
64
|
-
path.remove();
|
65
|
-
}
|
66
|
-
},
|
67
|
-
CallExpression: {
|
68
|
-
enter(path, state) {
|
69
|
-
let callee = path.get('callee');
|
70
|
-
if (!callee.isIdentifier() || callee.node.name !== 'define') {
|
71
|
-
return;
|
72
|
-
}
|
73
|
-
let firstArg = path.get('arguments')[0];
|
74
|
-
if (!firstArg.isStringLiteral() || firstArg.node.value !== '@glimmer/syntax') {
|
75
|
-
return;
|
76
|
-
}
|
77
|
-
state.definingGlimmerSyntax = path;
|
78
|
-
},
|
79
|
-
exit(path, state) {
|
80
|
-
if (state.definingGlimmerSyntax === path) {
|
81
|
-
state.definingGlimmerSyntax = false;
|
82
|
-
}
|
83
|
-
},
|
84
|
-
},
|
85
|
-
FunctionDeclaration: {
|
86
|
-
enter(path, state) {
|
87
|
-
if (!state.definingGlimmerSyntax) {
|
88
|
-
return;
|
89
|
-
}
|
90
|
-
let id = path.get('id');
|
91
|
-
if (id.isIdentifier() && id.node.name === 'build') {
|
92
|
-
state.declaringBuildFunction = path;
|
93
|
-
}
|
94
|
-
},
|
95
|
-
exit(path, state) {
|
96
|
-
if (state.declaringBuildFunction === path) {
|
97
|
-
state.declaringBuildFunction = false;
|
98
|
-
}
|
99
|
-
},
|
100
|
-
},
|
101
|
-
SwitchCase: {
|
102
|
-
enter(path, state) {
|
103
|
-
if (!state.definingGlimmerSyntax) {
|
104
|
-
return;
|
105
|
-
}
|
106
|
-
let test = path.get('test');
|
107
|
-
if (test.isStringLiteral() && test.node.value === 'ElementNode') {
|
108
|
-
state.caseElementNode = path;
|
109
|
-
}
|
110
|
-
},
|
111
|
-
exit(path, state) {
|
112
|
-
if (state.caseElementNode === path) {
|
113
|
-
state.caseElementNode = false;
|
114
|
-
}
|
115
|
-
},
|
116
|
-
},
|
117
|
-
IfStatement(path, state) {
|
118
|
-
if (!state.caseElementNode) {
|
119
|
-
return;
|
120
|
-
}
|
121
|
-
let test = path.get('test');
|
122
|
-
// the place we want is the only if with a computed member
|
123
|
-
// expression predicate.
|
124
|
-
if (test.isMemberExpression() && test.node.computed) {
|
125
|
-
path.node.alternate = core_1.types.ifStatement(core_1.types.memberExpression(core_1.types.identifier('ast'), core_1.types.identifier('selfClosing')), core_1.types.blockStatement([
|
126
|
-
core_1.types.expressionStatement(core_1.types.callExpression(core_1.types.memberExpression(core_1.types.identifier('output'), core_1.types.identifier('push')), [
|
127
|
-
core_1.types.stringLiteral(' />'),
|
128
|
-
])),
|
129
|
-
]), path.node.alternate);
|
130
|
-
}
|
131
|
-
},
|
132
|
-
},
|
133
|
-
};
|
134
|
-
},
|
135
|
-
],
|
136
|
-
}).code;
|
137
|
-
}
|
138
|
-
else {
|
139
|
-
// applies to < 3.12 and >= 3.17
|
140
|
-
//
|
141
|
-
// here we are stripping off the first `var Ember;`. That one small change
|
142
|
-
// lets us crack open the file and get access to its internal loader, because
|
143
|
-
// we can give it our own predefined `Ember` variable instead, which it will
|
144
|
-
// use and put `Ember.__loader` onto.
|
145
|
-
patchedSource = (0, core_1.transform)(source, {
|
146
|
-
generatorOpts: {
|
147
|
-
compact: true,
|
148
|
-
},
|
149
|
-
plugins: [
|
150
|
-
function () {
|
151
|
-
return {
|
152
|
-
visitor: {
|
153
|
-
VariableDeclarator(path) {
|
154
|
-
let id = path.node.id;
|
155
|
-
if (id.type === 'Identifier' && id.name === 'Ember' && !replacedVar) {
|
156
|
-
replacedVar = true;
|
157
|
-
path.remove();
|
158
|
-
}
|
159
|
-
},
|
160
|
-
},
|
161
|
-
};
|
162
|
-
},
|
163
|
-
],
|
164
|
-
}).code;
|
165
|
-
}
|
166
|
-
if (!replacedVar) {
|
167
|
-
throw new Error(`didn't find expected source in ${templateCompilerPath}. Maybe we don't support your ember-source version?`);
|
168
|
-
}
|
169
|
-
return `
|
170
|
-
let Ember = {};
|
171
|
-
${patchedSource};
|
172
|
-
module.exports.Ember = Ember;
|
173
|
-
`;
|
174
|
-
}
|
175
|
-
exports.patch = patch;
|
176
|
-
//# sourceMappingURL=patch-template-compiler.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"patch-template-compiler.js","sourceRoot":"","sources":["patch-template-compiler.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodePath } from '@babel/traverse';\nimport { transform, types as t } from '@babel/core';\n\nfunction parseVersion(templateCompilerPath: string, source: string): { major: number; minor: number; patch: number } {\n // ember-template-compiler.js contains a comment that indicates what version it is for\n // that looks like:\n\n /*!\n * @overview Ember - JavaScript Application Framework\n * @copyright Copyright 2011-2020 Tilde Inc. and contributors\n * Portions Copyright 2006-2011 Strobe Inc.\n * Portions Copyright 2008-2011 Apple Inc. All rights reserved.\n * @license Licensed under MIT license\n * See https://raw.github.com/emberjs/ember.js/master/LICENSE\n * @version 3.25.1\n */\n\n let version = source.match(/@version\\s+([\\d\\.]+)/);\n if (!version || !version[1]) {\n throw new Error(\n `Could not find version string in \\`${templateCompilerPath}\\`. Maybe we don't support your ember-source version?`\n );\n }\n\n let numbers = version[1].split('.');\n let major = parseInt(numbers[0], 10);\n let minor = parseInt(numbers[1], 10);\n let patch = parseInt(numbers[2], 10);\n\n return { major, minor, patch };\n}\n\nfunction emberVersionGte(templateCompilerPath: string, source: string, major: number, minor: number): boolean {\n let actual = parseVersion(templateCompilerPath, source);\n\n return actual.major > major || (actual.major === major && actual.minor >= minor);\n}\n\nexport function patch(source: string, templateCompilerPath: string): string {\n let version = parseVersion(templateCompilerPath, source);\n\n if (\n emberVersionGte(templateCompilerPath, source, 3, 26) ||\n (version.major === 3 && version.minor === 25 && version.patch >= 2) ||\n (version.major === 3 && version.minor === 24 && version.patch >= 3)\n ) {\n // no modifications are needed after\n // https://github.com/emberjs/ember.js/pull/19426 and backported to\n // 3.26.0-beta.3, 3.25.2, 3.24.3\n return source;\n }\n\n let replacedVar = false;\n let patchedSource;\n\n let needsAngleBracketPrinterFix =\n emberVersionGte(templateCompilerPath, source, 3, 12) && !emberVersionGte(templateCompilerPath, source, 3, 17);\n\n if (needsAngleBracketPrinterFix) {\n // here we are stripping off the first `var Ember;`. That one small change\n // lets us crack open the file and get access to its internal loader, because\n // we can give it our own predefined `Ember` variable instead, which it will\n // use and put `Ember.__loader` onto.\n //\n // on ember 3.12 through 3.16 (which use variants of glimmer-vm 0.38.5) we\n // also apply a patch to the printer in @glimmer/syntax to fix\n // https://github.com/glimmerjs/glimmer-vm/pull/941/files because it can\n // really bork apps under embroider, and we'd like to support at least all\n // active LTS versions of ember.\n patchedSource = transform(source, {\n plugins: [\n function () {\n return {\n visitor: {\n VariableDeclarator(path: NodePath<t.VariableDeclarator>) {\n let id = path.node.id;\n if (id.type === 'Identifier' && id.name === 'Ember' && !replacedVar) {\n replacedVar = true;\n path.remove();\n }\n },\n CallExpression: {\n enter(path: NodePath<t.CallExpression>, state: BabelState) {\n let callee = path.get('callee');\n if (!callee.isIdentifier() || callee.node.name !== 'define') {\n return;\n }\n let firstArg = path.get('arguments')[0];\n if (!firstArg.isStringLiteral() || firstArg.node.value !== '@glimmer/syntax') {\n return;\n }\n state.definingGlimmerSyntax = path;\n },\n exit(path: NodePath<t.CallExpression>, state: BabelState) {\n if (state.definingGlimmerSyntax === path) {\n state.definingGlimmerSyntax = false;\n }\n },\n },\n FunctionDeclaration: {\n enter(path: NodePath<t.FunctionDeclaration>, state: BabelState) {\n if (!state.definingGlimmerSyntax) {\n return;\n }\n let id = path.get('id');\n if (id.isIdentifier() && id.node.name === 'build') {\n state.declaringBuildFunction = path;\n }\n },\n exit(path: NodePath<t.FunctionDeclaration>, state: BabelState) {\n if (state.declaringBuildFunction === path) {\n state.declaringBuildFunction = false;\n }\n },\n },\n SwitchCase: {\n enter(path: NodePath<t.SwitchCase>, state: BabelState) {\n if (!state.definingGlimmerSyntax) {\n return;\n }\n let test = path.get('test');\n if (test.isStringLiteral() && test.node.value === 'ElementNode') {\n state.caseElementNode = path;\n }\n },\n exit(path: NodePath<t.SwitchCase>, state: BabelState) {\n if (state.caseElementNode === path) {\n state.caseElementNode = false;\n }\n },\n },\n IfStatement(path: NodePath<t.IfStatement>, state: BabelState) {\n if (!state.caseElementNode) {\n return;\n }\n let test = path.get('test');\n // the place we want is the only if with a computed member\n // expression predicate.\n if (test.isMemberExpression() && test.node.computed) {\n path.node.alternate = t.ifStatement(\n t.memberExpression(t.identifier('ast'), t.identifier('selfClosing')),\n t.blockStatement([\n t.expressionStatement(\n t.callExpression(t.memberExpression(t.identifier('output'), t.identifier('push')), [\n t.stringLiteral(' />'),\n ])\n ),\n ]),\n path.node.alternate\n );\n }\n },\n },\n };\n },\n ],\n })!.code!;\n } else {\n // applies to < 3.12 and >= 3.17\n //\n // here we are stripping off the first `var Ember;`. That one small change\n // lets us crack open the file and get access to its internal loader, because\n // we can give it our own predefined `Ember` variable instead, which it will\n // use and put `Ember.__loader` onto.\n patchedSource = transform(source, {\n generatorOpts: {\n compact: true,\n },\n plugins: [\n function () {\n return {\n visitor: {\n VariableDeclarator(path: NodePath<t.VariableDeclarator>) {\n let id = path.node.id;\n if (id.type === 'Identifier' && id.name === 'Ember' && !replacedVar) {\n replacedVar = true;\n path.remove();\n }\n },\n },\n };\n },\n ],\n })!.code!;\n }\n\n if (!replacedVar) {\n throw new Error(\n `didn't find expected source in ${templateCompilerPath}. Maybe we don't support your ember-source version?`\n );\n }\n\n return `\n let Ember = {};\n ${patchedSource};\n module.exports.Ember = Ember;\n `;\n}\n\ninterface BabelState {\n definingGlimmerSyntax: NodePath | false;\n declaringBuildFunction: NodePath | false;\n caseElementNode: NodePath | false;\n}\n"]}
|
package/src/resolver.d.ts
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
import type { TemplateCompiler } from './template-compiler-common';
|
2
|
-
import { Options } from './babel-plugin-adjust-imports';
|
3
|
-
export interface ResolvedDep {
|
4
|
-
runtimeName: string;
|
5
|
-
path: string;
|
6
|
-
absPath: string;
|
7
|
-
}
|
8
|
-
export interface Resolver {
|
9
|
-
astTransformer(templateCompiler: TemplateCompiler): unknown;
|
10
|
-
dependenciesOf(moduleName: string): ResolvedDep[];
|
11
|
-
absPathToRuntimePath(absPath: string): string;
|
12
|
-
absPathToRuntimeName(absPath: string): string;
|
13
|
-
adjustImportsOptions: Options;
|
14
|
-
}
|
package/src/resolver.js
DELETED
package/src/resolver.js.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"resolver.js","sourceRoot":"","sources":["resolver.ts"],"names":[],"mappings":"","sourcesContent":["import type { TemplateCompiler } from './template-compiler-common';\nimport { Options } from './babel-plugin-adjust-imports';\n\nexport interface ResolvedDep {\n runtimeName: string;\n path: string;\n absPath: string;\n}\n\nexport interface Resolver {\n astTransformer(templateCompiler: TemplateCompiler): unknown;\n dependenciesOf(moduleName: string): ResolvedDep[];\n\n // this takes an absolute path to a file and gives back a path like\n // \"the-package-name/path/to/the-file.js\", while taking into account any\n // backward-compatible runtime name of the package. It's used by the template\n // compiler, because this is the kind of path AST plugins expect to see.\n absPathToRuntimePath(absPath: string): string;\n\n // this takes an absolute path to a file and gives back the runtime name of\n // that module, as it would tradtionally be named within loader.js.\n absPathToRuntimeName(absPath: string): string;\n\n adjustImportsOptions: Options;\n}\n"]}
|
@@ -1,70 +0,0 @@
|
|
1
|
-
import { Resolver, ResolvedDep } from './resolver';
|
2
|
-
export interface Plugins {
|
3
|
-
ast?: unknown[];
|
4
|
-
}
|
5
|
-
export interface AST {
|
6
|
-
_deliberatelyOpaque: 'AST';
|
7
|
-
}
|
8
|
-
export interface PreprocessOptions {
|
9
|
-
contents: string;
|
10
|
-
moduleName: string;
|
11
|
-
plugins?: Plugins;
|
12
|
-
filename?: string;
|
13
|
-
parseOptions?: {
|
14
|
-
srcName?: string;
|
15
|
-
ignoreStandalone?: boolean;
|
16
|
-
};
|
17
|
-
mode?: 'codemod' | 'precompile';
|
18
|
-
strictMode?: boolean;
|
19
|
-
locals?: string[];
|
20
|
-
}
|
21
|
-
export interface PrinterOptions {
|
22
|
-
entityEncoding?: 'transformed' | 'raw';
|
23
|
-
}
|
24
|
-
export interface GlimmerSyntax {
|
25
|
-
preprocess(html: string, options?: PreprocessOptions): AST;
|
26
|
-
print(ast: AST, options?: PrinterOptions): string;
|
27
|
-
defaultOptions(options: PreprocessOptions): PreprocessOptions;
|
28
|
-
precompile(templateContents: string, options: {
|
29
|
-
contents: string;
|
30
|
-
moduleName: string;
|
31
|
-
filename: string;
|
32
|
-
plugins?: any;
|
33
|
-
parseOptions?: {
|
34
|
-
srcName?: string;
|
35
|
-
};
|
36
|
-
}): string;
|
37
|
-
_Ember: {
|
38
|
-
FEATURES: any;
|
39
|
-
ENV: any;
|
40
|
-
};
|
41
|
-
}
|
42
|
-
export interface TemplateCompilerParams {
|
43
|
-
loadEmberTemplateCompiler: () => {
|
44
|
-
theExports: unknown;
|
45
|
-
cacheKey: string;
|
46
|
-
};
|
47
|
-
resolver?: Resolver;
|
48
|
-
EmberENV: unknown;
|
49
|
-
plugins: Plugins;
|
50
|
-
}
|
51
|
-
export declare class TemplateCompiler {
|
52
|
-
private loadEmberTemplateCompiler;
|
53
|
-
private resolver?;
|
54
|
-
private EmberENV;
|
55
|
-
private plugins;
|
56
|
-
constructor(params: TemplateCompilerParams);
|
57
|
-
private get syntax();
|
58
|
-
get cacheKey(): string;
|
59
|
-
private setup;
|
60
|
-
private getReversedASTPlugins;
|
61
|
-
precompile(templateSource: string, options: Record<string, unknown> & {
|
62
|
-
filename: string;
|
63
|
-
}): {
|
64
|
-
compiled: string;
|
65
|
-
dependencies: ResolvedDep[];
|
66
|
-
};
|
67
|
-
applyTransforms(moduleName: string, contents: string): string;
|
68
|
-
parse(moduleName: string, contents: string): AST;
|
69
|
-
baseDir(): string;
|
70
|
-
}
|