@embroider/compat 4.1.1-unstable.f6c658d → 4.1.2
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/dist/src/babel.js
CHANGED
|
@@ -54,6 +54,8 @@ function babelMacros() {
|
|
|
54
54
|
}
|
|
55
55
|
function oldDebugMacros() {
|
|
56
56
|
let debugMacros = require.resolve('babel-plugin-debug-macros');
|
|
57
|
+
// Translate debug flag/calls to macroCondition(isDevelopingApp()) for consistency with @ember packages from ember-source
|
|
58
|
+
const isDebug = '@embroider/macros';
|
|
57
59
|
return [
|
|
58
60
|
[
|
|
59
61
|
debugMacros,
|
|
@@ -62,13 +64,13 @@ function oldDebugMacros() {
|
|
|
62
64
|
{
|
|
63
65
|
source: '@glimmer/env',
|
|
64
66
|
flags: {
|
|
65
|
-
DEBUG:
|
|
66
|
-
CI:
|
|
67
|
+
DEBUG: isDebug,
|
|
68
|
+
CI: !!process.env.CI,
|
|
67
69
|
},
|
|
68
70
|
},
|
|
69
71
|
],
|
|
70
72
|
debugTools: {
|
|
71
|
-
isDebug
|
|
73
|
+
isDebug,
|
|
72
74
|
source: '@ember/debug',
|
|
73
75
|
assertPredicateIndex: 1,
|
|
74
76
|
},
|
|
@@ -85,7 +87,7 @@ function oldDebugMacros() {
|
|
|
85
87
|
module: '@ember/application/deprecations',
|
|
86
88
|
},
|
|
87
89
|
debugTools: {
|
|
88
|
-
isDebug
|
|
90
|
+
isDebug,
|
|
89
91
|
source: '@ember/application/deprecations',
|
|
90
92
|
assertPredicateIndex: 1,
|
|
91
93
|
},
|
|
@@ -128,7 +130,7 @@ function templateColocation() {
|
|
|
128
130
|
return [core_1.templateColocationPluginPath, colocationOptions];
|
|
129
131
|
}
|
|
130
132
|
function babelCompatSupport() {
|
|
131
|
-
return [...
|
|
133
|
+
return [...oldDebugMacros(), ...babelMacros(), templateColocation(), ...pluginsFromV1Addons()];
|
|
132
134
|
}
|
|
133
135
|
function templateCompatSupport() {
|
|
134
136
|
return [...transformsFromV1Addons(), ...templateMacros(), looseModeSupport()];
|
package/dist/src/babel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"babel.js","sourceRoot":"","sources":["../../src/babel.ts"],"names":[],"mappings":";;AAuCA,kDAGC;AAED,wDAGC;AAED,4CAOC;AAED,wCAGC;AAED,kCAGC;AAED,
|
|
1
|
+
{"version":3,"file":"babel.js","sourceRoot":"","sources":["../../src/babel.ts"],"names":[],"mappings":";;AAuCA,kDAGC;AAED,wDAGC;AAED,4CAOC;AAED,wCAGC;AAED,kCAGC;AAED,wCA6CC;AAED,gDAkCC;AAED,gDAEC;AAED,sDAEC;AA5JD,2BAAgC;AAChC,0CAKyB;AACzB,+BAA4B;AAG5B,mDAAsD;AAStD,SAAS,gBAAgB;IACvB,IAAI,UAAU,GAAG,IAAA,WAAI,EAAC,IAAA,gCAAyB,EAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,mBAAmB,CAAC,CAAC;IACrF,IAAI,IAAA,eAAU,EAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,iEAAiE;QACjE,OAAO,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7B,CAAC;IAED,IAAI,MAAM,GAAG,IAAA,mBAAW,GAAE,CAAC;IAE3B,OAAO;QACL,OAAO,EAAE,EAAE;QACX,kBAAkB,EAAE,EAAE;QACtB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,cAAc,EAAE,MAAM,CAAC,cAAqB;KAC7C,CAAC;AACJ,CAAC;AAED,MAAM,cAAc,GAAG,IAAI,qBAAc,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AAEzD,SAAgB,mBAAmB;IACjC,IAAI,MAAM,GAAG,gBAAgB,EAAE,CAAC;IAChC,OAAO,MAAM,CAAC,OAAO,CAAC;AACxB,CAAC;AAED,SAAgB,sBAAsB;IACpC,IAAI,MAAM,GAAG,gBAAgB,EAAE,CAAC;IAChC,OAAO,MAAM,CAAC,kBAAkB,CAAC;AACnC,CAAC;AAED,SAAgB,gBAAgB;IAC9B,MAAM,EAAE,QAAQ,EAAE,GAAG,cAAc,CAAC;IACpC,IAAI,IAAI,GAA6B;QACnC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,OAAO;QACjC,YAAY,EAAE,QAAQ,CAAC,OAAO,CAAC,YAAY;KAC5C,CAAC;IACF,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC,EAAE,IAAI,CAAC,CAAC;AACzD,CAAC;AAED,SAAgB,cAAc;IAC5B,IAAI,MAAM,GAAG,gBAAgB,EAAE,CAAC;IAChC,OAAO,MAAM,CAAC,cAAc,CAAC;AAC/B,CAAC;AAED,SAAgB,WAAW;IACzB,IAAI,MAAM,GAAG,gBAAgB,EAAE,CAAC;IAChC,OAAO,MAAM,CAAC,WAAW,CAAC;AAC5B,CAAC;AAED,SAAgB,cAAc;IAC5B,IAAI,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;IAE/D,yHAAyH;IACzH,MAAM,OAAO,GAAG,mBAAmB,CAAC;IAEpC,OAAO;QACL;YACE,WAAW;YACX;gBACE,KAAK,EAAE;oBACL;wBACE,MAAM,EAAE,cAAc;wBACtB,KAAK,EAAE;4BACL,KAAK,EAAE,OAAO;4BACd,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;yBACrB;qBACF;iBACF;gBACD,UAAU,EAAE;oBACV,OAAO;oBACP,MAAM,EAAE,cAAc;oBACtB,oBAAoB,EAAE,CAAC;iBACxB;gBACD,kBAAkB,EAAE;oBAClB,MAAM,EAAE,cAAc;iBACvB;aACF;YACD,wBAAwB;SACzB;QACD;YACE,WAAW;YACX;gBACE,kBAAkB,EAAE;oBAClB,MAAM,EAAE,iCAAiC;iBAC1C;gBACD,UAAU,EAAE;oBACV,OAAO;oBACP,MAAM,EAAE,iCAAiC;oBACzC,oBAAoB,EAAE,CAAC;iBACxB;aACF;YACD,2CAA2C;SAC5C;KACF,CAAC;AACJ,CAAC;AAED,SAAgB,kBAAkB;IAChC,IAAI,iBAAiB,GAAoC;QACvD,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO;QAEhD,sEAAsE;QACtE,EAAE;QACF,uEAAuE;QACvE,8CAA8C;QAC9C,EAAE;QACF,0EAA0E;QAC1E,wEAAwE;QACxE,qEAAqE;QACrE,2DAA2D;QAC3D,EAAE;QACF,uEAAuE;QACvE,4CAA4C;QAC5C,EAAE;QACF,+DAA+D;QAC/D,6DAA6D;QAC7D,wEAAwE;QACxE,sEAAsE;QACtE,gBAAgB;QAChB,EAAE;QACF,yEAAyE;QACzE,wEAAwE;QACxE,kBAAkB;QAClB,kBAAkB,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;QAEvC,oEAAoE;QACpE,wEAAwE;QACxE,sEAAsE;QACtE,YAAY,EAAE,IAAI;KACnB,CAAC;IACF,OAAO,CAAC,mCAA4B,EAAE,iBAAiB,CAAC,CAAC;AAC3D,CAAC;AAED,SAAgB,kBAAkB;IAChC,OAAO,CAAC,GAAG,cAAc,EAAE,EAAE,GAAG,WAAW,EAAE,EAAE,kBAAkB,EAAE,EAAE,GAAG,mBAAmB,EAAE,CAAC,CAAC;AACjG,CAAC;AAED,SAAgB,qBAAqB;IACnC,OAAO,CAAC,GAAG,sBAAsB,EAAE,EAAE,GAAG,cAAc,EAAE,EAAE,gBAAgB,EAAE,CAAC,CAAC;AAChF,CAAC","sourcesContent":["import type { PluginItem } from '@babel/core';\nimport { existsSync } from 'fs';\nimport {\n locateEmbroiderWorkingDir,\n ResolverLoader,\n templateColocationPluginPath,\n type TemplateColocationPluginOptions,\n} from '@embroider/core';\nimport { join } from 'path';\nimport type { Transform } from 'babel-plugin-ember-template-compilation';\nimport type { Options as ResolverTransformOptions } from './resolver-transform';\nimport { buildMacros } from '@embroider/macros/babel';\n\nexport interface CompatBabelState {\n plugins: PluginItem[];\n templateTransforms: Transform[];\n babelMacros: PluginItem[];\n templateMacros: Transform[];\n}\n\nfunction loadCompatConfig(): CompatBabelState {\n let compatFile = join(locateEmbroiderWorkingDir(process.cwd()), '_babel_compat_.js');\n if (existsSync(compatFile)) {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n return require(compatFile);\n }\n\n let macros = buildMacros();\n\n return {\n plugins: [],\n templateTransforms: [],\n babelMacros: macros.babelMacros,\n templateMacros: macros.templateMacros as any,\n };\n}\n\nconst resolverLoader = new ResolverLoader(process.cwd());\n\nexport function pluginsFromV1Addons() {\n let config = loadCompatConfig();\n return config.plugins;\n}\n\nexport function transformsFromV1Addons() {\n let config = loadCompatConfig();\n return config.templateTransforms;\n}\n\nexport function looseModeSupport(): Transform {\n const { resolver } = resolverLoader;\n let opts: ResolverTransformOptions = {\n appRoot: resolver.options.appRoot,\n emberVersion: resolver.options.emberVersion,\n };\n return [require.resolve('./resolver-transform'), opts];\n}\n\nexport function templateMacros() {\n let config = loadCompatConfig();\n return config.templateMacros;\n}\n\nexport function babelMacros() {\n let config = loadCompatConfig();\n return config.babelMacros;\n}\n\nexport function oldDebugMacros(): PluginItem[] {\n let debugMacros = require.resolve('babel-plugin-debug-macros');\n\n // Translate debug flag/calls to macroCondition(isDevelopingApp()) for consistency with @ember packages from ember-source\n const isDebug = '@embroider/macros';\n\n return [\n [\n debugMacros,\n {\n flags: [\n {\n source: '@glimmer/env',\n flags: {\n DEBUG: isDebug,\n CI: !!process.env.CI,\n },\n },\n ],\n debugTools: {\n isDebug,\n source: '@ember/debug',\n assertPredicateIndex: 1,\n },\n externalizeHelpers: {\n module: '@ember/debug',\n },\n },\n '@ember/debug stripping',\n ],\n [\n debugMacros,\n {\n externalizeHelpers: {\n module: '@ember/application/deprecations',\n },\n debugTools: {\n isDebug,\n source: '@ember/application/deprecations',\n assertPredicateIndex: 1,\n },\n },\n '@ember/application/deprecations stripping',\n ],\n ];\n}\n\nexport function templateColocation(): PluginItem {\n let colocationOptions: TemplateColocationPluginOptions = {\n appRoot: resolverLoader.resolver.options.appRoot,\n\n // This extra weirdness is a compromise in favor of build performance.\n //\n // 1. When auto-upgrading an addon from v1 to v2, we definitely want to\n // run any custom AST transforms in stage1.\n //\n // 2. In general case, AST transforms are allowed to manipulate Javascript\n // scope. This means that running transforms -- even when we're doing\n // source-to-source compilation that emits handlebars and not wire\n // format -- implies changing .hbs files into .js files.\n //\n // 3. So stage1 may need to rewrite .hbs to .hbs.js (to avoid colliding\n // with an existing co-located .js file).\n //\n // 4. But stage1 doesn't necessarily want to run babel over the\n // corresponding JS file. Most of the time, that's just an\n // unnecessarily expensive second parse. (We only run it in stage1 to\n // eliminate an addon's custom babel plugins, and many addons don't\n // have any.)\n //\n // 5. Therefore, the work of template-colocation gets defered until here,\n // and it may see co-located templates named `.hbs.js` instead of the\n // usual `.hbs.\n templateExtensions: ['.hbs', '.hbs.js'],\n\n // All of the above only applies to auto-upgraded packages that were\n // authored in v1. V2 packages don't get any of this complexity, they're\n // supposed to take care of colocating their own templates explicitly.\n packageGuard: true,\n };\n return [templateColocationPluginPath, colocationOptions];\n}\n\nexport function babelCompatSupport(): PluginItem[] {\n return [...oldDebugMacros(), ...babelMacros(), templateColocation(), ...pluginsFromV1Addons()];\n}\n\nexport function templateCompatSupport(): Transform[] {\n return [...transformsFromV1Addons(), ...templateMacros(), looseModeSupport()];\n}\n"]}
|
|
@@ -311,6 +311,7 @@ function fixDeprecate(babel) {
|
|
|
311
311
|
VariableDeclarator(path) {
|
|
312
312
|
if (path.node.id.type === 'Identifier' && path.node.id.name === 'deprecate') {
|
|
313
313
|
path.node.id.name = 'currentDeprecate';
|
|
314
|
+
path.node.init = null; // leave undefined for newDeprecate's (currentDeprecate ?? _deprecated) expression
|
|
314
315
|
}
|
|
315
316
|
},
|
|
316
317
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ember-source.js","sourceRoot":"","sources":["../../../src/compat-adapters/ember-source.ts"],"names":[],"mappings":"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","sourcesContent":["import V1Addon from '../v1-addon';\nimport buildFunnel from 'broccoli-funnel';\nimport mergeTrees from 'broccoli-merge-trees';\nimport AddToTree from '../add-to-tree';\nimport { outputFileSync, readFileSync, readdirSync, unlinkSync } from 'fs-extra';\nimport { join, resolve } from 'path';\nimport { Memoize } from 'typescript-memoize';\nimport { satisfies } from 'semver';\nimport { transform } from '@babel/core';\nimport type * as Babel from '@babel/core';\nimport type { NodePath } from '@babel/traverse';\nimport Plugin from 'broccoli-plugin';\nimport type { Node } from 'broccoli-node-api';\nimport { existsSync } from 'fs';\n\nexport default class extends V1Addon {\n get v2Tree() {\n return mergeTrees([super.v2Tree, buildFunnel(this.rootTree, { include: ['dist/ember-template-compiler.js'] })]);\n }\n\n // versions of ember-source prior to\n // https://github.com/emberjs/ember.js/pull/20675 ship dist/packages and\n // dist/dependencies separately and the imports between them are package-name\n // imports. Since many of the dependencies are also true package.json\n // dependencies (in order to get typescript types), and our module-resolver\n // prioritizes true dependencies, it's necessary to detect and remove the\n // package.json dependencies.\n //\n // After the above linked change, ember-source ships only dist/packages and\n // the inter-package imports are all relative. Some of the things in\n // dist/packages are still the rolled-in dependencies, but now that the\n // imports are all relative we need no special handling for them (beyond the\n // normal v2 addon renamed-modules support.\n @Memoize()\n private get includedDependencies() {\n let result: string[] = [];\n let depsDir = resolve(this.root, 'dist', 'dependencies');\n if (!existsSync(depsDir)) {\n return result;\n }\n for (let name of readdirSync(depsDir)) {\n if (name[0] === '@') {\n for (let innerName of readdirSync(resolve(this.root, 'dist', 'dependencies', name))) {\n if (innerName.endsWith('.js')) {\n result.push(name + '/' + innerName.slice(0, -3));\n }\n }\n } else {\n if (name.endsWith('.js')) {\n result.push(name.slice(0, -3));\n }\n }\n }\n return result;\n }\n\n get newPackageJSON() {\n let json = super.newPackageJSON;\n\n for (let name of this.includedDependencies) {\n // weirdly, many of the inlined dependency are still listed as real\n // dependencies too. If we don't delete them here, they will take\n // precedence over the inlined ones, because the embroider module-resolver\n // tries to prioritize real deps.\n delete json.dependencies?.[name];\n }\n\n return json;\n }\n\n customizes(treeName: string) {\n // we are adding custom implementations of these\n return treeName === 'treeForAddon' || treeName === 'treeForVendor' || super.customizes(treeName);\n }\n\n invokeOriginalTreeFor(name: string) {\n if (name === 'addon') {\n return this.customAddonTree();\n }\n if (name === 'vendor') {\n return this.customVendorTree();\n }\n }\n\n // Our addon tree is all of the \"packages\" we share. @embroider/compat already\n // supports that pattern of emitting modules into other package's namespaces.\n private customAddonTree() {\n let packages = buildFunnel(this.rootTree, {\n srcDir: 'dist/packages',\n });\n\n let trees: Node[] = [\n packages,\n buildFunnel(this.rootTree, {\n srcDir: 'dist/dependencies',\n allowEmpty: true,\n }),\n ];\n\n if (satisfies(this.packageJSON.version, '>= 4.0.0-alpha.0 <4.10.0-alpha.0', { includePrerelease: true })) {\n // import { loc } from '@ember/string' was removed in 4.0. but the\n // top-level `ember` package tries to import it until 4.10. A\n // spec-compliant ES modules implementation will treat this as a parse\n // error.\n trees.push(new ReplaceRequire([new FixStringLoc([packages])]));\n } else if (satisfies(this.packageJSON.version, '<5.7.0')) {\n trees.push(new ReplaceRequire([packages]));\n }\n\n if (satisfies(this.packageJSON.version, '<5.12.0')) {\n trees.push(new FixDeprecateFunction([packages]));\n }\n\n if (satisfies(this.packageJSON.version, '<5.11.1')) {\n trees.push(new FixCycleImports([packages]));\n }\n\n return mergeTrees(trees, { overwrite: true });\n }\n\n // We're zeroing out these files in vendor rather than deleting them, because\n // we can't easily intercept the `app.import` that presumably exists for them,\n // so rather than error they will just be empty.\n //\n // The reason we're zeroing these out is that we're going to consume all our\n // modules directly out of treeForAddon instead, as real modules that webpack\n // can see.\n private customVendorTree() {\n return new AddToTree(this.addonInstance._treeFor('vendor'), outputPath => {\n unlinkSync(join(outputPath, 'ember', 'ember.js'));\n outputFileSync(join(outputPath, 'ember', 'ember.js'), '');\n unlinkSync(join(outputPath, 'ember', 'ember-testing.js'));\n outputFileSync(join(outputPath, 'ember', 'ember-testing.js'), '');\n });\n }\n\n get packageMeta() {\n let meta = super.packageMeta;\n\n if (!meta['implicit-modules']) {\n meta['implicit-modules'] = [];\n }\n meta['implicit-modules'].push('./ember/index.js');\n // before 5.6, Ember uses the AMD loader to decide if it's test-only parts\n // are present, so we must ensure they're registered. After that it's\n // enough to evaluate ember-testing, which @embroider/core is hard-coded\n // to do in the backward-compatible tests bundle.\n if (!satisfies(this.packageJSON.version, '>= 5.6.0-alpha.0', { includePrerelease: true })) {\n if (!meta['implicit-test-modules']) {\n meta['implicit-test-modules'] = [];\n }\n meta['implicit-test-modules'].push('./ember-testing/index.js');\n }\n\n return meta;\n }\n}\n\nclass FixStringLoc extends Plugin {\n build() {\n let inSource = readFileSync(resolve(this.inputPaths[0], 'ember', 'index.js'), 'utf8');\n let outSource = transform(inSource, {\n plugins: [fixStringLoc],\n configFile: false,\n })!.code!;\n outputFileSync(resolve(this.outputPath, 'ember', 'index.js'), outSource, 'utf8');\n }\n}\n\nclass ReplaceRequire extends Plugin {\n build() {\n updateFileWithTransform(this, 'ember/index.js', function (babel: typeof Babel) {\n const { types: t } = babel;\n\n function createLoader() {\n return t.objectExpression([\n t.objectMethod(\n 'get',\n t.identifier('require'),\n [],\n t.blockStatement([\n t.returnStatement(t.memberExpression(t.identifier('globalThis'), t.identifier('require'))),\n ])\n ),\n t.objectMethod(\n 'get',\n t.identifier('define'),\n [],\n t.blockStatement([\n t.returnStatement(t.memberExpression(t.identifier('globalThis'), t.identifier('define'))),\n ])\n ),\n t.objectMethod(\n 'get',\n t.identifier('registry'),\n [],\n\n t.blockStatement([\n t.returnStatement(\n t.logicalExpression(\n '??',\n t.optionalMemberExpression(\n t.memberExpression(t.identifier('globalThis'), t.identifier('requirejs')),\n t.identifier('entries'),\n false,\n true\n ),\n t.optionalMemberExpression(\n t.memberExpression(t.identifier('globalThis'), t.identifier('require')),\n t.identifier('entries'),\n false,\n true\n )\n )\n ),\n ])\n ),\n ]);\n }\n\n return {\n visitor: {\n CallExpression(path: NodePath<Babel.types.CallExpression>) {\n if (\n path.node.callee.type === 'Identifier' &&\n (path.node.callee.name === 'has' || path.node.callee.name === 'require') &&\n path.node.arguments[0].type === 'StringLiteral' &&\n path.node.arguments[0].value === 'ember-testing'\n ) {\n path.replaceWith(t.identifier('EmberTestingImpl'));\n }\n },\n ImportDeclaration(path: NodePath<Babel.types.ImportDeclaration>) {\n if (path.node.source.value === 'require') {\n path.replaceWith(\n t.importDeclaration(\n [t.importSpecifier(t.identifier('EmberTestingImpl'), t.identifier('_impl'))],\n t.stringLiteral('@ember/test')\n )\n );\n }\n },\n VariableDeclaration(path: NodePath<Babel.types.VariableDeclaration>) {\n if (\n path.node.declarations[0].id.type === 'Identifier' &&\n path.node.declarations[0].id.name === 'PartialEmber' &&\n path.node.declarations[0].init!.type === 'ObjectExpression'\n ) {\n const declaration = path.node.declarations[0];\n const loader = (declaration.init! as Babel.types.ObjectExpression).properties.find(\n p => (p.type === 'ObjectProperty' && p.key.type === 'Identifier' && p.key.name) === '__loader'\n );\n (loader as Babel.types.ObjectProperty).value = createLoader();\n }\n },\n AssignmentExpression(path: NodePath<Babel.types.AssignmentExpression>) {\n if (\n path.node.left.type === 'MemberExpression' &&\n path.node.left.object.type === 'Identifier' &&\n path.node.left.object.name === 'Ember' &&\n path.node.left.property.type === 'Identifier' &&\n path.node.left.property.name === '__loader'\n ) {\n path.node.right = createLoader();\n }\n },\n },\n };\n });\n\n replaceFile(\n this,\n '@ember/test/adapter.js',\n `import { Adapter } from 'ember-testing';\n export default Adapter;`\n );\n\n replaceFile(\n this,\n '@ember/test/index.js',\n `export let registerAsyncHelper;\nexport let registerHelper;\nexport let registerWaiter;\nexport let unregisterHelper;\nexport let unregisterWaiter;\nexport let _impl;\n\nlet testingNotAvailableMessage = () => {\n throw new Error('Attempted to use test utilities, but \\`ember-testing\\` was not included');\n};\n\nregisterAsyncHelper = testingNotAvailableMessage;\nregisterHelper = testingNotAvailableMessage;\nregisterWaiter = testingNotAvailableMessage;\nunregisterHelper = testingNotAvailableMessage;\nunregisterWaiter = testingNotAvailableMessage;\n\nexport function registerTestImplementaiton(impl) {\n let { Test } = impl;\n registerAsyncHelper = Test.registerAsyncHelper;\n registerHelper = Test.registerHelper;\n registerWaiter = Test.registerWaiter;\n unregisterHelper = Test.unregisterHelper;\n unregisterWaiter = Test.unregisterWaiter;\n _impl = impl;\n}`\n );\n\n replaceFile(\n this,\n 'ember-testing/index.js',\n `export * from './lib/public-api';\nimport * as EmberTesting from './lib/public-api';\nimport { registerTestImplementaiton } from '@ember/test';\n\n\nregisterTestImplementaiton(EmberTesting);`\n );\n\n replaceFile(\n this,\n 'ember-testing/lib/public-api.js',\n `\nexport { default as Test } from './test';\nexport { default as Adapter } from './adapters/adapter';\nexport { default as setupForTesting } from './setup_for_testing';\nexport { default as QUnitAdapter } from './adapters/qunit';\n\nimport './ext/application';\nimport './ext/rsvp'; // setup RSVP + run loop integration\nimport './helpers'; // adds helpers to helpers object in Test\nimport './initializers'; // to setup initializer`\n );\n }\n}\n\nclass FixDeprecateFunction extends Plugin {\n build() {\n let inSource = readFileSync(resolve(this.inputPaths[0], '@ember', 'debug', 'index.js'), 'utf8');\n let outSource = transform(inSource, {\n plugins: [fixDeprecate],\n configFile: false,\n })!.code!;\n outputFileSync(resolve(this.outputPath, '@ember', 'debug', 'index.js'), outSource, 'utf8');\n }\n}\n\nfunction fixDeprecate(babel: typeof Babel) {\n const { types: t } = babel;\n\n return {\n name: 'ast-transform', // not required\n visitor: {\n Program(path: NodePath<Babel.types.Program>) {\n path.node.body.unshift(\n t.functionDeclaration(\n t.identifier('newDeprecate'),\n [t.restElement(t.identifier('rest'))],\n t.blockStatement([\n t.returnStatement(\n t.callExpression(\n t.logicalExpression('??', t.identifier('currentDeprecate'), t.identifier('_deprecate')),\n [t.spreadElement(t.identifier('rest'))]\n )\n ),\n ])\n )\n );\n },\n AssignmentExpression(path: NodePath<Babel.types.AssignmentExpression>) {\n if (path.node.left.type === 'Identifier' && path.node.left.name === 'deprecate') {\n path.node.left.name = 'currentDeprecate';\n }\n },\n\n ReturnStatement(path: NodePath<Babel.types.ReturnStatement>) {\n if (path.node.argument?.type === 'Identifier' && path.node.argument.name === 'deprecate') {\n path.node.argument.name = 'newDeprecate';\n }\n },\n\n CallExpression(path: NodePath<Babel.types.CallExpression>) {\n if (path.node.callee.type === 'Identifier' && path.node.callee.name === 'deprecate') {\n path.node.callee.name = 'newDeprecate';\n }\n if (\n path.node.callee.type === 'Identifier' &&\n path.node.callee.name === 'setDebugFunction' &&\n path.node.arguments[0].type === 'StringLiteral' &&\n path.node.arguments[0].value === 'deprecate'\n ) {\n path.remove();\n }\n },\n ExportSpecifier(path: NodePath<Babel.types.ExportSpecifier>) {\n if (path.node.local.name === 'deprecate') {\n path.node.local = t.identifier('newDeprecate');\n }\n },\n VariableDeclarator(path: NodePath<Babel.types.VariableDeclarator>) {\n if (path.node.id.type === 'Identifier' && path.node.id.name === 'deprecate') {\n path.node.id.name = 'currentDeprecate';\n }\n },\n },\n };\n}\n\nfunction updateFileWithTransform(\n context: Plugin,\n file: string,\n transformFunction: Babel.PluginItem | Babel.PluginItem[]\n) {\n // only update the file if it exists - this helps the codemods to work across many different versions\n if (!existsSync(resolve(context.inputPaths[0], file))) {\n return;\n }\n let inSource = readFileSync(resolve(context.inputPaths[0], file), 'utf8');\n\n let plugins = Array.isArray(transformFunction) ? transformFunction : [transformFunction];\n let outSource = transform(inSource, {\n plugins,\n configFile: false,\n })!.code!;\n outputFileSync(resolve(context.outputPath, file), outSource, 'utf8');\n}\n\nfunction replaceFile(context: Plugin, file: string, content: string) {\n outputFileSync(resolve(context.outputPath, file), content, 'utf8');\n}\n\nclass FixCycleImports extends Plugin {\n build() {\n for (let file of ['@ember/object/observable.js', '@ember/utils/lib/is_empty.js']) {\n updateFileWithTransform(this, file, moveObjectSpecifiersToMetal);\n }\n\n updateFileWithTransform(this, '@ember/array/index.js', [\n moveObjectSpecifiersToMetal,\n function (babel: typeof Babel) {\n const { types: t } = babel;\n return {\n visitor: {\n ExportNamedDeclaration(path: NodePath<Babel.types.ExportNamedDeclaration>) {\n if (path.node.source?.value === './lib/make-array') {\n path.node.source = t.stringLiteral('./make');\n }\n },\n },\n };\n },\n ]);\n\n updateFileWithTransform(this, '@ember/runloop/index.js', function (babel: typeof Babel) {\n const { types: t } = babel;\n\n return {\n visitor: {\n CallExpression(path: NodePath<Babel.types.CallExpression>) {\n if (path.node.callee.type === 'Identifier' && path.node.callee.name === 'flushAsyncObservers') {\n path.node.arguments = [t.identifier('schedule')];\n }\n },\n },\n };\n });\n\n updateFileWithTransform(this, '@ember/object/core.js', function (babel: typeof Babel) {\n const { types: t } = babel;\n\n return {\n visitor: {\n ImportDeclaration(path: NodePath<Babel.types.ImportDeclaration>) {\n if (path.node.source.value === '@ember/array') {\n path.node.source = t.stringLiteral('@ember/array/make');\n path.node.specifiers = [t.importDefaultSpecifier(t.identifier('makeArray'))];\n }\n\n if (path.node.source.value === '@ember/-internals/runtime') {\n path.replaceWith(\n t.importDeclaration(\n [t.importSpecifier(t.identifier('ActionHandler'), t.identifier('default'))],\n t.stringLiteral('@ember/-internals/runtime/lib/mixins/action_handler')\n )\n );\n }\n },\n },\n };\n });\n\n outputFileSync(\n resolve(this.outputPath, '@ember/array/make.js'),\n `export { default } from './lib/make-array';`,\n 'utf8'\n );\n\n updateFileWithTransform(this, '@ember/-internals/metal/index.js', function (babel: typeof Babel) {\n const { types: t } = babel;\n\n return {\n visitor: {\n FunctionDeclaration(path: NodePath<Babel.types.FunctionDeclaration>) {\n if (path.node.id?.name === 'flushAsyncObservers') {\n path.node.params = [t.identifier('_schedule')];\n }\n },\n IfStatement(path: NodePath<Babel.types.IfStatement>) {\n if (path.node.test.type === 'Identifier' && path.node.test.name === 'shouldSchedule') {\n path.node.test.name = '_schedule';\n }\n },\n CallExpression(path: NodePath<Babel.types.CallExpression>) {\n if (path.node.callee.type === 'Identifier' && path.node.callee.name === 'schedule') {\n path.node.callee.name = '_schedule';\n }\n },\n ImportDeclaration(path: NodePath<Babel.types.ImportDeclaration>) {\n if (path.node.source.value === '@ember/runloop') {\n path.remove();\n }\n },\n },\n };\n });\n }\n}\n\nfunction moveObjectSpecifiersToMetal() {\n let done = false;\n\n return {\n visitor: {\n ImportDeclaration(path: NodePath<Babel.types.ImportDeclaration>) {\n if (path.node.source.value === '@ember/-internals/metal') {\n if (done) {\n return;\n }\n\n /**\n * I need to use getAllPRevSiblings and getAllNextSiblings here because I need the siblings\n * to be paths and path.container only holds nodes (for some strange reason).\n */\n const objectimport = [...path.getAllPrevSiblings(), ...path.getAllNextSiblings()].find(\n p => p.node.type === 'ImportDeclaration' && p.node.source.value === '@ember/object'\n ) as NodePath<Babel.types.ImportDeclaration>;\n\n path.node.specifiers.push(...objectimport!.node.specifiers);\n objectimport.remove();\n\n done = true;\n }\n },\n },\n };\n}\n\nfunction fixStringLoc(babel: typeof Babel) {\n let t = babel.types;\n return {\n visitor: {\n Program(path: NodePath<Babel.types.Program>) {\n path.node.body.unshift(\n t.variableDeclaration('const', [t.variableDeclarator(t.identifier('loc'), t.identifier('undefined'))])\n );\n },\n ImportDeclaration: {\n enter(path: NodePath<Babel.types.ImportDeclaration>, state: { inEmberString: boolean }) {\n if (path.node.source.value === '@ember/string') {\n state.inEmberString = true;\n }\n },\n exit(_path: NodePath<Babel.types.ImportDeclaration>, state: { inEmberString: boolean }) {\n state.inEmberString = false;\n },\n },\n ImportSpecifier(path: NodePath<Babel.types.ImportSpecifier>, state: { inEmberString: boolean }) {\n let name = 'value' in path.node.imported ? path.node.imported.value : path.node.imported.name;\n if (state.inEmberString && name === 'loc') {\n path.remove();\n }\n },\n },\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ember-source.js","sourceRoot":"","sources":["../../../src/compat-adapters/ember-source.ts"],"names":[],"mappings":"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","sourcesContent":["import V1Addon from '../v1-addon';\nimport buildFunnel from 'broccoli-funnel';\nimport mergeTrees from 'broccoli-merge-trees';\nimport AddToTree from '../add-to-tree';\nimport { outputFileSync, readFileSync, readdirSync, unlinkSync } from 'fs-extra';\nimport { join, resolve } from 'path';\nimport { Memoize } from 'typescript-memoize';\nimport { satisfies } from 'semver';\nimport { transform } from '@babel/core';\nimport type * as Babel from '@babel/core';\nimport type { NodePath } from '@babel/traverse';\nimport Plugin from 'broccoli-plugin';\nimport type { Node } from 'broccoli-node-api';\nimport { existsSync } from 'fs';\n\nexport default class extends V1Addon {\n get v2Tree() {\n return mergeTrees([super.v2Tree, buildFunnel(this.rootTree, { include: ['dist/ember-template-compiler.js'] })]);\n }\n\n // versions of ember-source prior to\n // https://github.com/emberjs/ember.js/pull/20675 ship dist/packages and\n // dist/dependencies separately and the imports between them are package-name\n // imports. Since many of the dependencies are also true package.json\n // dependencies (in order to get typescript types), and our module-resolver\n // prioritizes true dependencies, it's necessary to detect and remove the\n // package.json dependencies.\n //\n // After the above linked change, ember-source ships only dist/packages and\n // the inter-package imports are all relative. Some of the things in\n // dist/packages are still the rolled-in dependencies, but now that the\n // imports are all relative we need no special handling for them (beyond the\n // normal v2 addon renamed-modules support.\n @Memoize()\n private get includedDependencies() {\n let result: string[] = [];\n let depsDir = resolve(this.root, 'dist', 'dependencies');\n if (!existsSync(depsDir)) {\n return result;\n }\n for (let name of readdirSync(depsDir)) {\n if (name[0] === '@') {\n for (let innerName of readdirSync(resolve(this.root, 'dist', 'dependencies', name))) {\n if (innerName.endsWith('.js')) {\n result.push(name + '/' + innerName.slice(0, -3));\n }\n }\n } else {\n if (name.endsWith('.js')) {\n result.push(name.slice(0, -3));\n }\n }\n }\n return result;\n }\n\n get newPackageJSON() {\n let json = super.newPackageJSON;\n\n for (let name of this.includedDependencies) {\n // weirdly, many of the inlined dependency are still listed as real\n // dependencies too. If we don't delete them here, they will take\n // precedence over the inlined ones, because the embroider module-resolver\n // tries to prioritize real deps.\n delete json.dependencies?.[name];\n }\n\n return json;\n }\n\n customizes(treeName: string) {\n // we are adding custom implementations of these\n return treeName === 'treeForAddon' || treeName === 'treeForVendor' || super.customizes(treeName);\n }\n\n invokeOriginalTreeFor(name: string) {\n if (name === 'addon') {\n return this.customAddonTree();\n }\n if (name === 'vendor') {\n return this.customVendorTree();\n }\n }\n\n // Our addon tree is all of the \"packages\" we share. @embroider/compat already\n // supports that pattern of emitting modules into other package's namespaces.\n private customAddonTree() {\n let packages = buildFunnel(this.rootTree, {\n srcDir: 'dist/packages',\n });\n\n let trees: Node[] = [\n packages,\n buildFunnel(this.rootTree, {\n srcDir: 'dist/dependencies',\n allowEmpty: true,\n }),\n ];\n\n if (satisfies(this.packageJSON.version, '>= 4.0.0-alpha.0 <4.10.0-alpha.0', { includePrerelease: true })) {\n // import { loc } from '@ember/string' was removed in 4.0. but the\n // top-level `ember` package tries to import it until 4.10. A\n // spec-compliant ES modules implementation will treat this as a parse\n // error.\n trees.push(new ReplaceRequire([new FixStringLoc([packages])]));\n } else if (satisfies(this.packageJSON.version, '<5.7.0')) {\n trees.push(new ReplaceRequire([packages]));\n }\n\n if (satisfies(this.packageJSON.version, '<5.12.0')) {\n trees.push(new FixDeprecateFunction([packages]));\n }\n\n if (satisfies(this.packageJSON.version, '<5.11.1')) {\n trees.push(new FixCycleImports([packages]));\n }\n\n return mergeTrees(trees, { overwrite: true });\n }\n\n // We're zeroing out these files in vendor rather than deleting them, because\n // we can't easily intercept the `app.import` that presumably exists for them,\n // so rather than error they will just be empty.\n //\n // The reason we're zeroing these out is that we're going to consume all our\n // modules directly out of treeForAddon instead, as real modules that webpack\n // can see.\n private customVendorTree() {\n return new AddToTree(this.addonInstance._treeFor('vendor'), outputPath => {\n unlinkSync(join(outputPath, 'ember', 'ember.js'));\n outputFileSync(join(outputPath, 'ember', 'ember.js'), '');\n unlinkSync(join(outputPath, 'ember', 'ember-testing.js'));\n outputFileSync(join(outputPath, 'ember', 'ember-testing.js'), '');\n });\n }\n\n get packageMeta() {\n let meta = super.packageMeta;\n\n if (!meta['implicit-modules']) {\n meta['implicit-modules'] = [];\n }\n meta['implicit-modules'].push('./ember/index.js');\n // before 5.6, Ember uses the AMD loader to decide if it's test-only parts\n // are present, so we must ensure they're registered. After that it's\n // enough to evaluate ember-testing, which @embroider/core is hard-coded\n // to do in the backward-compatible tests bundle.\n if (!satisfies(this.packageJSON.version, '>= 5.6.0-alpha.0', { includePrerelease: true })) {\n if (!meta['implicit-test-modules']) {\n meta['implicit-test-modules'] = [];\n }\n meta['implicit-test-modules'].push('./ember-testing/index.js');\n }\n\n return meta;\n }\n}\n\nclass FixStringLoc extends Plugin {\n build() {\n let inSource = readFileSync(resolve(this.inputPaths[0], 'ember', 'index.js'), 'utf8');\n let outSource = transform(inSource, {\n plugins: [fixStringLoc],\n configFile: false,\n })!.code!;\n outputFileSync(resolve(this.outputPath, 'ember', 'index.js'), outSource, 'utf8');\n }\n}\n\nclass ReplaceRequire extends Plugin {\n build() {\n updateFileWithTransform(this, 'ember/index.js', function (babel: typeof Babel) {\n const { types: t } = babel;\n\n function createLoader() {\n return t.objectExpression([\n t.objectMethod(\n 'get',\n t.identifier('require'),\n [],\n t.blockStatement([\n t.returnStatement(t.memberExpression(t.identifier('globalThis'), t.identifier('require'))),\n ])\n ),\n t.objectMethod(\n 'get',\n t.identifier('define'),\n [],\n t.blockStatement([\n t.returnStatement(t.memberExpression(t.identifier('globalThis'), t.identifier('define'))),\n ])\n ),\n t.objectMethod(\n 'get',\n t.identifier('registry'),\n [],\n\n t.blockStatement([\n t.returnStatement(\n t.logicalExpression(\n '??',\n t.optionalMemberExpression(\n t.memberExpression(t.identifier('globalThis'), t.identifier('requirejs')),\n t.identifier('entries'),\n false,\n true\n ),\n t.optionalMemberExpression(\n t.memberExpression(t.identifier('globalThis'), t.identifier('require')),\n t.identifier('entries'),\n false,\n true\n )\n )\n ),\n ])\n ),\n ]);\n }\n\n return {\n visitor: {\n CallExpression(path: NodePath<Babel.types.CallExpression>) {\n if (\n path.node.callee.type === 'Identifier' &&\n (path.node.callee.name === 'has' || path.node.callee.name === 'require') &&\n path.node.arguments[0].type === 'StringLiteral' &&\n path.node.arguments[0].value === 'ember-testing'\n ) {\n path.replaceWith(t.identifier('EmberTestingImpl'));\n }\n },\n ImportDeclaration(path: NodePath<Babel.types.ImportDeclaration>) {\n if (path.node.source.value === 'require') {\n path.replaceWith(\n t.importDeclaration(\n [t.importSpecifier(t.identifier('EmberTestingImpl'), t.identifier('_impl'))],\n t.stringLiteral('@ember/test')\n )\n );\n }\n },\n VariableDeclaration(path: NodePath<Babel.types.VariableDeclaration>) {\n if (\n path.node.declarations[0].id.type === 'Identifier' &&\n path.node.declarations[0].id.name === 'PartialEmber' &&\n path.node.declarations[0].init!.type === 'ObjectExpression'\n ) {\n const declaration = path.node.declarations[0];\n const loader = (declaration.init! as Babel.types.ObjectExpression).properties.find(\n p => (p.type === 'ObjectProperty' && p.key.type === 'Identifier' && p.key.name) === '__loader'\n );\n (loader as Babel.types.ObjectProperty).value = createLoader();\n }\n },\n AssignmentExpression(path: NodePath<Babel.types.AssignmentExpression>) {\n if (\n path.node.left.type === 'MemberExpression' &&\n path.node.left.object.type === 'Identifier' &&\n path.node.left.object.name === 'Ember' &&\n path.node.left.property.type === 'Identifier' &&\n path.node.left.property.name === '__loader'\n ) {\n path.node.right = createLoader();\n }\n },\n },\n };\n });\n\n replaceFile(\n this,\n '@ember/test/adapter.js',\n `import { Adapter } from 'ember-testing';\n export default Adapter;`\n );\n\n replaceFile(\n this,\n '@ember/test/index.js',\n `export let registerAsyncHelper;\nexport let registerHelper;\nexport let registerWaiter;\nexport let unregisterHelper;\nexport let unregisterWaiter;\nexport let _impl;\n\nlet testingNotAvailableMessage = () => {\n throw new Error('Attempted to use test utilities, but \\`ember-testing\\` was not included');\n};\n\nregisterAsyncHelper = testingNotAvailableMessage;\nregisterHelper = testingNotAvailableMessage;\nregisterWaiter = testingNotAvailableMessage;\nunregisterHelper = testingNotAvailableMessage;\nunregisterWaiter = testingNotAvailableMessage;\n\nexport function registerTestImplementaiton(impl) {\n let { Test } = impl;\n registerAsyncHelper = Test.registerAsyncHelper;\n registerHelper = Test.registerHelper;\n registerWaiter = Test.registerWaiter;\n unregisterHelper = Test.unregisterHelper;\n unregisterWaiter = Test.unregisterWaiter;\n _impl = impl;\n}`\n );\n\n replaceFile(\n this,\n 'ember-testing/index.js',\n `export * from './lib/public-api';\nimport * as EmberTesting from './lib/public-api';\nimport { registerTestImplementaiton } from '@ember/test';\n\n\nregisterTestImplementaiton(EmberTesting);`\n );\n\n replaceFile(\n this,\n 'ember-testing/lib/public-api.js',\n `\nexport { default as Test } from './test';\nexport { default as Adapter } from './adapters/adapter';\nexport { default as setupForTesting } from './setup_for_testing';\nexport { default as QUnitAdapter } from './adapters/qunit';\n\nimport './ext/application';\nimport './ext/rsvp'; // setup RSVP + run loop integration\nimport './helpers'; // adds helpers to helpers object in Test\nimport './initializers'; // to setup initializer`\n );\n }\n}\n\nclass FixDeprecateFunction extends Plugin {\n build() {\n let inSource = readFileSync(resolve(this.inputPaths[0], '@ember', 'debug', 'index.js'), 'utf8');\n let outSource = transform(inSource, {\n plugins: [fixDeprecate],\n configFile: false,\n })!.code!;\n outputFileSync(resolve(this.outputPath, '@ember', 'debug', 'index.js'), outSource, 'utf8');\n }\n}\n\nfunction fixDeprecate(babel: typeof Babel) {\n const { types: t } = babel;\n\n return {\n name: 'ast-transform', // not required\n visitor: {\n Program(path: NodePath<Babel.types.Program>) {\n path.node.body.unshift(\n t.functionDeclaration(\n t.identifier('newDeprecate'),\n [t.restElement(t.identifier('rest'))],\n t.blockStatement([\n t.returnStatement(\n t.callExpression(\n t.logicalExpression('??', t.identifier('currentDeprecate'), t.identifier('_deprecate')),\n [t.spreadElement(t.identifier('rest'))]\n )\n ),\n ])\n )\n );\n },\n AssignmentExpression(path: NodePath<Babel.types.AssignmentExpression>) {\n if (path.node.left.type === 'Identifier' && path.node.left.name === 'deprecate') {\n path.node.left.name = 'currentDeprecate';\n }\n },\n\n ReturnStatement(path: NodePath<Babel.types.ReturnStatement>) {\n if (path.node.argument?.type === 'Identifier' && path.node.argument.name === 'deprecate') {\n path.node.argument.name = 'newDeprecate';\n }\n },\n\n CallExpression(path: NodePath<Babel.types.CallExpression>) {\n if (path.node.callee.type === 'Identifier' && path.node.callee.name === 'deprecate') {\n path.node.callee.name = 'newDeprecate';\n }\n if (\n path.node.callee.type === 'Identifier' &&\n path.node.callee.name === 'setDebugFunction' &&\n path.node.arguments[0].type === 'StringLiteral' &&\n path.node.arguments[0].value === 'deprecate'\n ) {\n path.remove();\n }\n },\n ExportSpecifier(path: NodePath<Babel.types.ExportSpecifier>) {\n if (path.node.local.name === 'deprecate') {\n path.node.local = t.identifier('newDeprecate');\n }\n },\n VariableDeclarator(path: NodePath<Babel.types.VariableDeclarator>) {\n if (path.node.id.type === 'Identifier' && path.node.id.name === 'deprecate') {\n path.node.id.name = 'currentDeprecate';\n path.node.init = null; // leave undefined for newDeprecate's (currentDeprecate ?? _deprecated) expression\n }\n },\n },\n };\n}\n\nfunction updateFileWithTransform(\n context: Plugin,\n file: string,\n transformFunction: Babel.PluginItem | Babel.PluginItem[]\n) {\n // only update the file if it exists - this helps the codemods to work across many different versions\n if (!existsSync(resolve(context.inputPaths[0], file))) {\n return;\n }\n let inSource = readFileSync(resolve(context.inputPaths[0], file), 'utf8');\n\n let plugins = Array.isArray(transformFunction) ? transformFunction : [transformFunction];\n let outSource = transform(inSource, {\n plugins,\n configFile: false,\n })!.code!;\n outputFileSync(resolve(context.outputPath, file), outSource, 'utf8');\n}\n\nfunction replaceFile(context: Plugin, file: string, content: string) {\n outputFileSync(resolve(context.outputPath, file), content, 'utf8');\n}\n\nclass FixCycleImports extends Plugin {\n build() {\n for (let file of ['@ember/object/observable.js', '@ember/utils/lib/is_empty.js']) {\n updateFileWithTransform(this, file, moveObjectSpecifiersToMetal);\n }\n\n updateFileWithTransform(this, '@ember/array/index.js', [\n moveObjectSpecifiersToMetal,\n function (babel: typeof Babel) {\n const { types: t } = babel;\n return {\n visitor: {\n ExportNamedDeclaration(path: NodePath<Babel.types.ExportNamedDeclaration>) {\n if (path.node.source?.value === './lib/make-array') {\n path.node.source = t.stringLiteral('./make');\n }\n },\n },\n };\n },\n ]);\n\n updateFileWithTransform(this, '@ember/runloop/index.js', function (babel: typeof Babel) {\n const { types: t } = babel;\n\n return {\n visitor: {\n CallExpression(path: NodePath<Babel.types.CallExpression>) {\n if (path.node.callee.type === 'Identifier' && path.node.callee.name === 'flushAsyncObservers') {\n path.node.arguments = [t.identifier('schedule')];\n }\n },\n },\n };\n });\n\n updateFileWithTransform(this, '@ember/object/core.js', function (babel: typeof Babel) {\n const { types: t } = babel;\n\n return {\n visitor: {\n ImportDeclaration(path: NodePath<Babel.types.ImportDeclaration>) {\n if (path.node.source.value === '@ember/array') {\n path.node.source = t.stringLiteral('@ember/array/make');\n path.node.specifiers = [t.importDefaultSpecifier(t.identifier('makeArray'))];\n }\n\n if (path.node.source.value === '@ember/-internals/runtime') {\n path.replaceWith(\n t.importDeclaration(\n [t.importSpecifier(t.identifier('ActionHandler'), t.identifier('default'))],\n t.stringLiteral('@ember/-internals/runtime/lib/mixins/action_handler')\n )\n );\n }\n },\n },\n };\n });\n\n outputFileSync(\n resolve(this.outputPath, '@ember/array/make.js'),\n `export { default } from './lib/make-array';`,\n 'utf8'\n );\n\n updateFileWithTransform(this, '@ember/-internals/metal/index.js', function (babel: typeof Babel) {\n const { types: t } = babel;\n\n return {\n visitor: {\n FunctionDeclaration(path: NodePath<Babel.types.FunctionDeclaration>) {\n if (path.node.id?.name === 'flushAsyncObservers') {\n path.node.params = [t.identifier('_schedule')];\n }\n },\n IfStatement(path: NodePath<Babel.types.IfStatement>) {\n if (path.node.test.type === 'Identifier' && path.node.test.name === 'shouldSchedule') {\n path.node.test.name = '_schedule';\n }\n },\n CallExpression(path: NodePath<Babel.types.CallExpression>) {\n if (path.node.callee.type === 'Identifier' && path.node.callee.name === 'schedule') {\n path.node.callee.name = '_schedule';\n }\n },\n ImportDeclaration(path: NodePath<Babel.types.ImportDeclaration>) {\n if (path.node.source.value === '@ember/runloop') {\n path.remove();\n }\n },\n },\n };\n });\n }\n}\n\nfunction moveObjectSpecifiersToMetal() {\n let done = false;\n\n return {\n visitor: {\n ImportDeclaration(path: NodePath<Babel.types.ImportDeclaration>) {\n if (path.node.source.value === '@ember/-internals/metal') {\n if (done) {\n return;\n }\n\n /**\n * I need to use getAllPRevSiblings and getAllNextSiblings here because I need the siblings\n * to be paths and path.container only holds nodes (for some strange reason).\n */\n const objectimport = [...path.getAllPrevSiblings(), ...path.getAllNextSiblings()].find(\n p => p.node.type === 'ImportDeclaration' && p.node.source.value === '@ember/object'\n ) as NodePath<Babel.types.ImportDeclaration>;\n\n path.node.specifiers.push(...objectimport!.node.specifiers);\n objectimport.remove();\n\n done = true;\n }\n },\n },\n };\n}\n\nfunction fixStringLoc(babel: typeof Babel) {\n let t = babel.types;\n return {\n visitor: {\n Program(path: NodePath<Babel.types.Program>) {\n path.node.body.unshift(\n t.variableDeclaration('const', [t.variableDeclarator(t.identifier('loc'), t.identifier('undefined'))])\n );\n },\n ImportDeclaration: {\n enter(path: NodePath<Babel.types.ImportDeclaration>, state: { inEmberString: boolean }) {\n if (path.node.source.value === '@ember/string') {\n state.inEmberString = true;\n }\n },\n exit(_path: NodePath<Babel.types.ImportDeclaration>, state: { inEmberString: boolean }) {\n state.inEmberString = false;\n },\n },\n ImportSpecifier(path: NodePath<Babel.types.ImportSpecifier>, state: { inEmberString: boolean }) {\n let name = 'value' in path.node.imported ? path.node.imported.value : path.node.imported.name;\n if (state.inEmberString && name === 'loc') {\n path.remove();\n }\n },\n },\n };\n}\n"]}
|
package/dist/src/compat-app.js
CHANGED
|
@@ -504,6 +504,8 @@ class CompatApp {
|
|
|
504
504
|
// macros in a classic build.
|
|
505
505
|
active: true,
|
|
506
506
|
});
|
|
507
|
+
// Embroider 4.x always requires eager importSync
|
|
508
|
+
this.macrosConfig.importSyncImplementation = 'eager';
|
|
507
509
|
}
|
|
508
510
|
inTrees(prevStageTree) {
|
|
509
511
|
let configTree = this.config;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compat-app.js","sourceRoot":"","sources":["../../src/compat-app.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Node as BroccoliNode } from 'broccoli-node-api';\nimport type { Stage, Package } from '@embroider/core';\nimport { PackageCache, WaitForTrees, RewrittenPackageCache, locateEmbroiderWorkingDir } from '@embroider/core';\nimport type Options from './options';\nimport type { CompatOptionsType } from './options';\nimport { optionsWithDefaults } from './options';\nimport { Memoize } from 'typescript-memoize';\nimport { sync as pkgUpSync } from 'pkg-up';\nimport { join, dirname, isAbsolute, sep } from 'path';\nimport buildFunnel from 'broccoli-funnel';\nimport mergeTrees from 'broccoli-merge-trees';\nimport { WatchedDir } from 'broccoli-source';\nimport resolve from 'resolve';\nimport ContentForConfig from './content-for-config';\nimport { V1Config } from './v1-config';\nimport type { AddonMeta, EmberAppInstance, OutputFileToInputFileMap, PackageInfo } from '@embroider/core';\nimport { writeJSONSync, ensureDirSync, copySync, pathExistsSync, existsSync, writeFileSync } from 'fs-extra';\nimport AddToTree from './add-to-tree';\nimport DummyPackage from './dummy-package';\nimport type { PluginItem, TransformOptions } from '@babel/core';\nimport { isEmbroiderMacrosPlugin, MacrosConfig } from '@embroider/macros/src/node';\nimport resolvePackagePath from 'resolve-package-path';\nimport Concat from 'broccoli-concat';\nimport mapKeys from 'lodash/mapKeys';\nimport { isEmberAutoImportDynamic, isHtmlbarColocation, isInlinePrecompilePlugin } from './detect-babel-plugins';\nimport loadAstPlugins from './prepare-htmlbars-ast-plugins';\nimport { readFileSync } from 'fs';\nimport semver from 'semver';\nimport type { Transform } from 'babel-plugin-ember-template-compilation';\nimport { CompatAppBuilder } from './compat-app-builder';\nimport walkSync from 'walk-sync';\nimport writeFile from 'broccoli-file-creator';\n\ninterface Group {\n outputFiles: OutputFileToInputFileMap;\n implicitKey: '_implicitStyles' | '_implicitScripts';\n vendorOutputPath: 'string';\n}\n\n// This runs at broccoli-pipeline-construction time, whereas the\n// CompatAppBuilder instance only becomes available during tree-building time.\nexport default class CompatApp {\n private annotation = '@embroider/compat/app';\n private active: CompatAppBuilder | undefined;\n readonly options: CompatOptionsType;\n\n private _publicAssets: { [filePath: string]: string } = Object.create(null);\n private _implicitScripts: string[] = [];\n private _implicitStyles: string[] = [];\n\n private get isDummy(): boolean {\n return this.legacyEmberAppInstance.project.pkg.keywords?.includes('ember-addon') ?? false;\n }\n\n get name(): string {\n if (this.isDummy) {\n // here we accept the ember-cli behavior\n return this.legacyEmberAppInstance.name;\n } else {\n // always the name from package.json. Not the one that apps may have weirdly\n // customized.\n return this.legacyEmberAppInstance.project.pkg.name;\n }\n }\n\n get env(): string {\n return this.legacyEmberAppInstance.env;\n }\n\n @Memoize()\n get root(): string {\n if (this.isDummy) {\n // this is the Known Hack for finding the true root of the dummy app.\n return join(this.legacyEmberAppInstance.project.configPath(), '..', '..');\n } else {\n return dirname(pkgUpSync({ cwd: this.legacyEmberAppInstance.project.root })!);\n }\n }\n\n @Memoize()\n private get emberCLILocation() {\n const emberCLIPackage = resolvePackagePath('ember-cli', this.root);\n\n if (emberCLIPackage === null) {\n throw new Error(`Embroider: cannot resolve ember-cli's package.json`);\n }\n\n return dirname(emberCLIPackage);\n }\n\n @Memoize()\n get hasCompiledStyles() {\n return semver.gte(JSON.parse(readFileSync(`${this.emberCLILocation}/package.json`, 'utf8')).version, '3.18.0');\n }\n\n private requireFromEmberCLI(specifier: string) {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n return require(resolve.sync(specifier, { basedir: this.emberCLILocation }));\n }\n\n private get configLoader() {\n return this.requireFromEmberCLI('broccoli-config-loader');\n }\n\n private get appUtils() {\n return this.requireFromEmberCLI('./lib/utilities/ember-app-utils');\n }\n\n @Memoize()\n get addonTreeCache(): Map<string, BroccoliNode> {\n return new Map();\n }\n\n @Memoize()\n get preprocessRegistry() {\n return this.requireFromEmberCLI('ember-cli-preprocess-registry/preprocessors');\n }\n\n get shouldBuildTests(): boolean {\n return this.legacyEmberAppInstance.tests || false;\n }\n\n configPath(): string {\n return this.legacyEmberAppInstance.project.configPath();\n }\n\n private get configTree() {\n return new this.configLoader(dirname(this.configPath()), {\n env: this.legacyEmberAppInstance.env,\n tests: this.legacyEmberAppInstance.tests || false,\n project: this.legacyEmberAppInstance.project,\n });\n }\n\n @Memoize()\n private get config(): V1Config {\n return new V1Config(this.configTree, this.legacyEmberAppInstance.env);\n }\n\n @Memoize()\n get testConfig(): V1Config | undefined {\n if (this.shouldBuildTests) {\n return new V1Config(this.configTree, 'test');\n }\n }\n\n @Memoize()\n private get contentFor(): ContentForConfig {\n const configPaths = [\n { file: '/index.html', path: join('environments', `${this.legacyEmberAppInstance.env}.json`) },\n ];\n if (this.shouldBuildTests) configPaths.push({ file: '/tests/index.html', path: join('environments', `test.json`) });\n return new ContentForConfig(this.configTree, {\n availableContentForTypes: this.options.availableContentForTypes,\n configPaths,\n pattern: this.filteredPatternsByContentFor.contentFor,\n });\n }\n\n get autoRun(): boolean {\n return this.legacyEmberAppInstance.options.autoRun;\n }\n\n private get storeConfigInMeta(): boolean {\n return this.legacyEmberAppInstance.options.storeConfigInMeta;\n }\n\n @Memoize()\n private get configReplacePatterns() {\n return this.appUtils.configReplacePatterns({\n addons: this.legacyEmberAppInstance.project.addons,\n autoRun: this.autoRun,\n storeConfigInMeta: this.storeConfigInMeta,\n });\n }\n\n private get filteredPatternsByContentFor() {\n const filter = '/{{content-for [\\'\"](.+?)[\"\\']}}/g';\n return {\n contentFor: this.configReplacePatterns.find((pattern: any) => filter.includes(pattern.match.toString())),\n others: this.configReplacePatterns.filter((pattern: any) => !filter.includes(pattern.match.toString())),\n };\n }\n\n @Memoize()\n extraBabelPlugins(): PluginItem[] {\n // this finds any custom babel plugins on the app (either because the app\n // author explicitly added some, or because addons have pushed plugins into\n // it).\n let appBabel: TransformOptions = this.legacyEmberAppInstance.options.babel;\n if (appBabel) {\n if (appBabel.plugins) {\n return appBabel.plugins.filter(p => {\n // even if the app was using @embroider/macros, we drop it from the config\n // here in favor of our globally-configured one.\n return (\n !isEmbroiderMacrosPlugin(p) &&\n // similarly, if the app was already using an inline template compiler\n // babel plugin, we remove it here because we have our own\n // always-installed version of that (v2 addons are allowed to assume it\n // will be present in the final app build, the app doesn't get to turn\n // that off or configure it.)\n !isInlinePrecompilePlugin(p) &&\n !isEmberAutoImportDynamic(p) &&\n !isHtmlbarColocation(p)\n );\n });\n }\n }\n return [];\n }\n\n @Memoize()\n babelMajorVersion(): 7 {\n let babelAddon = this.legacyEmberAppInstance.project.addons.find((a: any) => a.name === 'ember-cli-babel');\n if (babelAddon) {\n let babelAddonMajor = Number(babelAddon.pkg.version.split('.')[0]);\n let babelMajor: number | undefined = babelAddonMajor;\n if (babelAddonMajor >= 8) {\n // `ember-cli-babel` v8 breaks lockstep with Babel, because it now\n // defines `@babel/core` as a peer dependency, so we need to check the\n // project's version of `@babel/core`:\n let babelVersion = this.legacyEmberAppInstance.project.pkg.devDependencies?.['@babel/core'];\n if (babelVersion) {\n babelMajor = semver.coerce(babelVersion)?.major;\n } else {\n babelMajor = 7;\n }\n }\n if (babelMajor !== 7) {\n throw new Error('`@embroider/compat` only supports apps and addons that use Babel v7.');\n }\n return babelMajor;\n }\n // if we didn't have our own babel plugin at all, it's safe to parse our\n // code with 7.\n return 7;\n }\n\n @Memoize()\n private transformedNodeFiles(): Map<string, string> {\n // any app.imports from node_modules that need custom transforms will need\n // to get copied into our own synthesized vendor package. app.imports from\n // node_modules that *don't* need custom transforms can just stay where they\n // are.\n let transformed = new Map();\n for (let transformConfig of this.legacyEmberAppInstance._customTransformsMap.values()) {\n for (let filename of transformConfig.files as string[]) {\n let preresolved = this.preresolvedNodeFile(filename);\n if (preresolved) {\n transformed.set(filename, preresolved);\n }\n }\n }\n return transformed;\n }\n\n private preresolvedNodeFile(filename: string) {\n // this regex is an exact copy of how ember-cli does this, so we align.\n let match = filename.match(/^node_modules\\/((@[^/]+\\/)?[^/]+)\\//);\n if (match) {\n // ember-cli has already done its own resolution of\n // `app.import('node_modules/something/...')`, so we go find its answer.\n for (let { name, path } of this.legacyEmberAppInstance._nodeModules.values()) {\n if (match[1] === name) {\n return filename.replace(match[0], path + sep);\n }\n }\n throw new Error(`bug: expected ember-cli to already have a resolved path for asset ${filename}`);\n }\n }\n\n private combinedVendor(addonTrees: BroccoliNode[]): BroccoliNode {\n let trees = addonTrees.map(tree =>\n buildFunnel(tree, {\n allowEmpty: true,\n srcDir: 'vendor',\n destDir: 'vendor',\n })\n );\n\n let emberSource = this.legacyEmberAppInstance.project.addons.find(a => a.name === 'ember-source');\n if (emberSource && (emberSource.pkg['ember-addon']?.['version'] ?? 1) >= 2) {\n // there's stuff in the ecosystem that assumes these files will always be\n // present in the vendor tree. But when ember-source is V2, it cannot put\n // them there, so @embroider/compat will fill in defaults. The bundles are\n // empty because we're just trying to keep the build from blowing up, the\n // actual ember modules get loaded as modules instead.\n //\n // The template compiler is still here so that apps using a V2 ember can\n // still app.import the traditional runtime template compiler.\n trees.push(writeFile('vendor/ember/ember.js', () => ''));\n trees.push(writeFile('vendor/ember/ember-testing.js', () => ''));\n const templateCompilerSrc = readFileSync(join(emberSource.root, 'dist/ember-template-compiler.js'), 'utf8');\n trees.push(writeFile('vendor/ember/ember-template-compiler.js', () => templateCompilerSrc));\n }\n\n if (this.vendorTree) {\n trees.push(\n buildFunnel(this.vendorTree, {\n destDir: 'vendor',\n })\n );\n }\n\n const tree = mergeTrees(trees, { overwrite: true });\n\n const outputGroups: Group[] = [\n // scripts\n {\n outputFiles: this.legacyEmberAppInstance._scriptOutputFiles,\n implicitKey: '_implicitScripts',\n vendorOutputPath: this.legacyEmberAppInstance.options.outputPaths.vendor.js,\n },\n // styles\n {\n outputFiles: this.legacyEmberAppInstance._styleOutputFiles,\n implicitKey: '_implicitStyles',\n vendorOutputPath: this.legacyEmberAppInstance.options.outputPaths.vendor.css,\n },\n ];\n\n const concatentations = [];\n\n // support: app.import / outputFile / using\n for (let entry of outputGroups) {\n const { outputFiles, implicitKey, vendorOutputPath } = entry;\n for (let importPath of Object.keys(outputFiles)) {\n const headerFiles = outputFiles[importPath];\n\n if (importPath === vendorOutputPath) {\n // these are the default ember-cli output files vendor.js or\n // vendor.css. Let embroider handle these.\n this[implicitKey] = headerFiles;\n } else if (headerFiles.length === 0) {\n // something went really wrong, open an issue\n throw new Error('Embroider: EWUT');\n } else if (headerFiles.length === 1) {\n // app.import(x, { outputFile: y }); where only one app.imports had this outputFile\n //\n // No concat needed. Simply serialize the remapping in the addon's\n // manifest, this ensures it is included in the final output with no extra work.\n this._publicAssets[headerFiles[0]] = importPath;\n } else {\n // app.import(x, { outputFile: y }); where multiple app.imports share one outputFile\n // Concat needed. Perform concat, and include the outputFile in the\n // addon's manifest. This ensures it is included in the final output\n this._publicAssets[importPath] = importPath;\n\n concatentations.push(\n new Concat(tree, {\n headerFiles,\n outputFile: importPath,\n annotation: `Package ${importPath}`,\n separator: '\\n;',\n sourceMapConfig: this.legacyEmberAppInstance.options['sourcemaps'],\n })\n );\n }\n }\n }\n\n this.addOtherAssets();\n return mergeTrees([tree, ...concatentations], { overwrite: true });\n }\n\n private addOtherAssets() {\n for (let asset of this.legacyEmberAppInstance.otherAssetPaths) {\n this._publicAssets[`${asset.src}/${asset.file}`] = `${asset.dest}/${asset.file}`;\n }\n }\n\n private addNodeAssets(inputTree: BroccoliNode): BroccoliNode {\n let transformedNodeFiles = this.transformedNodeFiles();\n\n return new AddToTree(inputTree, outputPath => {\n for (let [localDestPath, sourcePath] of transformedNodeFiles) {\n let destPath = join(outputPath, localDestPath);\n ensureDirSync(dirname(destPath));\n copySync(sourcePath, destPath);\n }\n\n if (this.shouldBuildTests) {\n writeFileSync(\n join(outputPath, 'testem.js'),\n `/*\n * This is dummy file that exists for the sole purpose\n * of allowing tests to run directly in the browser as\n * well as by Testem.\n *\n * Testem is configured to run tests directly against\n * the test build of index.html, which requires a\n * snippet to load the testem.js file:\n * <script src=\"/testem.js\"></script>\n * This has to go before the qunit framework and app\n * tests are loaded.\n *\n * Testem internally supplies this file. However, if you\n * run the tests directly in the browser (localhost:8000/tests),\n * this file does not exist.\n *\n * Hence the purpose of this fake file. This file is served\n * directly from the express server to satisify the script load.\n*/`\n );\n this._publicAssets['/testem.js'] = './testem.js';\n }\n\n let remapAsset = this.remapAsset.bind(this);\n\n let addonMeta: AddonMeta = {\n version: 2,\n 'implicit-scripts': this._implicitScripts.map(remapAsset).filter(forbiddenVendorPath),\n 'implicit-styles': this._implicitStyles.map(remapAsset),\n 'implicit-test-scripts': this.legacyEmberAppInstance.legacyTestFilesToAppend.map(remapAsset),\n 'implicit-test-styles': this.legacyEmberAppInstance.vendorTestStaticStyles.map(remapAsset),\n 'public-assets': mapKeys(this._publicAssets, (_, key) => remapAsset(key)),\n };\n let meta: PackageInfo = {\n name: '@embroider/synthesized-vendor',\n version: '0.0.0',\n keywords: ['ember-addon'],\n 'ember-addon': addonMeta,\n };\n writeJSONSync(join(outputPath, 'package.json'), meta, { spaces: 2 });\n });\n }\n\n synthesizeVendorPackage(addonTrees: BroccoliNode[]): BroccoliNode {\n return this.applyCustomTransforms(this.addNodeAssets(this.combinedVendor(addonTrees)));\n }\n\n private combinedStyles(addonTrees: BroccoliNode[]): BroccoliNode {\n let trees: BroccoliNode[] = addonTrees.map(tree =>\n buildFunnel(tree, {\n allowEmpty: true,\n srcDir: '_app_styles_',\n })\n );\n let appStyles = this.legacyEmberAppInstance.trees.styles as BroccoliNode | undefined;\n if (appStyles) {\n // Workaround for https://github.com/ember-cli/ember-cli/issues/9020\n //\n // The default app styles tree is unwatched and relies on side effects\n // elsewhere in ember-cli's build pipeline to actually get rebuilds to\n // work. Here we need it to actually be watched properly if we want to\n // rely on it, particularly when using BROCCOLI_ENABLED_MEMOIZE.\n if ((appStyles as any)._watched === false && (appStyles as any)._directoryPath) {\n appStyles = new WatchedDir((appStyles as any)._directoryPath);\n }\n trees.push(appStyles);\n }\n return mergeTrees(trees, { overwrite: true, annotation: 'embroider-v1-app-combined-styles' });\n }\n\n synthesizeStylesPackage(addonTrees: BroccoliNode[]): BroccoliNode {\n let options = {\n // we're deliberately not allowing this to be customized. It's an\n // internal implementation detail, and respecting outputPaths here is\n // unnecessary complexity. The corresponding code that adjusts the HTML\n // <link> is in updateHTML in app.ts.\n outputPaths: { app: `/@embroider/virtual/app.css` },\n registry: this.legacyEmberAppInstance.registry,\n minifyCSS: this.legacyEmberAppInstance.options.minifyCSS.options,\n };\n\n let nestedInput = buildFunnel(this.combinedStyles(addonTrees), { destDir: 'app/styles' });\n let styles = this.preprocessors.preprocessCss(nestedInput, '/app/styles', '/assets', options);\n\n return new AddToTree(styles, outputPath => {\n let addonMeta: AddonMeta = {\n version: 2,\n 'public-assets': {},\n };\n let assetPath = join(outputPath, '@embroider', 'virtual');\n if (pathExistsSync(assetPath)) {\n for (let file of walkSync(assetPath, { directories: false })) {\n addonMeta['public-assets']![`./@embroider/virtual/${file}`] = `/@embroider/virtual/${file}`;\n }\n }\n let meta: PackageInfo = {\n name: '@embroider/synthesized-styles',\n version: '0.0.0',\n keywords: ['ember-addon'],\n 'ember-addon': addonMeta,\n };\n writeJSONSync(join(outputPath, 'package.json'), meta, { spaces: 2 });\n });\n }\n\n // this is taken nearly verbatim from ember-cli.\n private applyCustomTransforms(externalTree: BroccoliNode) {\n for (let customTransformEntry of this.legacyEmberAppInstance._customTransformsMap) {\n let transformName = customTransformEntry[0];\n let transformConfig = customTransformEntry[1];\n\n let transformTree = buildFunnel(externalTree, {\n files: transformConfig.files,\n annotation: `Funnel (custom transform: ${transformName})`,\n });\n\n externalTree = mergeTrees([externalTree, transformConfig.callback(transformTree, transformConfig.options)], {\n annotation: `TreeMerger (custom transform: ${transformName})`,\n overwrite: true,\n });\n }\n return externalTree;\n }\n\n private remapAsset(asset: string) {\n if (this.transformedNodeFiles().has(asset)) {\n // transformed node assets become local paths, because we have copied\n // those ones into our synthesized vendor package.\n return './' + asset;\n }\n let preresolved = this.preresolvedNodeFile(asset);\n if (preresolved) {\n // non-transformed node assets point directly at their pre-resolved\n // original files (this is an absolute path).\n return preresolved;\n }\n // non node assets are local paths. They need an explicit `/` or `.` at\n // the start.\n if (asset.startsWith('.') || isAbsolute(asset)) {\n return asset;\n }\n return './' + asset;\n }\n\n get htmlbarsPlugins(): Transform[] {\n let plugins = loadAstPlugins(this.legacyEmberAppInstance.registry);\n // even if the app was using @embroider/macros, we drop it from the config\n // here in favor of our globally-configured one.\n plugins = plugins.filter((p: any) => !isEmbroiderMacrosPlugin(p));\n return plugins;\n }\n\n private get vendorTree(): BroccoliNode | undefined {\n return this.ensureTree(this.legacyEmberAppInstance.trees.vendor);\n }\n\n private ensureTree(maybeTree: string | BroccoliNode | undefined): BroccoliNode | undefined {\n if (typeof maybeTree === 'string') {\n // this is deliberately mimicking how ember-cli does it. We don't use\n // `this.root` on purpose, because that can differ from what ember-cli\n // considers the project.root. And we don't use path.resolve even though\n // that seems possibly more correct, because ember-cli always assumes the\n // input is relative.\n let resolvedPath = join(this.legacyEmberAppInstance.project.root, maybeTree);\n if (existsSync(resolvedPath)) {\n return new WatchedDir(maybeTree);\n } else {\n return undefined;\n }\n }\n return maybeTree;\n }\n\n @Memoize()\n private get preprocessors(): Preprocessors {\n return this.requireFromEmberCLI('ember-cli-preprocess-registry/preprocessors');\n }\n\n readonly macrosConfig: MacrosConfig;\n\n constructor(readonly legacyEmberAppInstance: EmberAppInstance, _options?: Options) {\n this.options = optionsWithDefaults(_options);\n\n this.macrosConfig = MacrosConfig.for(legacyEmberAppInstance, this.root);\n if (this.env !== 'production') {\n this.macrosConfig.enablePackageDevelopment(this.root);\n this.macrosConfig.enableRuntimeMode();\n if (this.isDummy) {\n // dummy apps automatically put their owning addon under development too\n this.macrosConfig.enablePackageDevelopment(\n dirname(pkgUpSync({ cwd: this.legacyEmberAppInstance.project.root })!)\n );\n }\n }\n\n // this uses globalConfig because it's a way for packages to ask \"is\n // Embroider doing this build?\". So it's necessarily global, not scoped to\n // any subgraph of dependencies.\n this.macrosConfig.setGlobalConfig(__filename, `@embroider/core`, {\n // this is hard-coded to true because it literally means \"embroider is\n // building this Ember app\". You can see non-true when using the Embroider\n // macros in a classic build.\n active: true,\n });\n }\n\n private inTrees(prevStageTree: BroccoliNode) {\n let configTree = this.config;\n let contentForTree = this.contentFor;\n\n return {\n configTree,\n contentForTree,\n prevStageTree,\n };\n }\n\n @Memoize()\n appPackage(): Package {\n // this is deliberately not RewrittenPackageCache, because it's supposed to\n // be the original copy of the app with all the original dependencies.\n let packageCache = PackageCache.shared('embroider', this.root);\n if (this.isDummy) {\n return new DummyPackage(\n this.root,\n this.legacyEmberAppInstance.project.root,\n packageCache as unknown as PackageCache // TODO: cast won't be needed when refactor is complete\n );\n } else {\n return packageCache.get(this.root);\n }\n }\n\n private async instantiate(\n packageCache: RewrittenPackageCache,\n configTree: V1Config,\n contentForTree: ContentForConfig\n ) {\n let origAppPkg = this.appPackage();\n let movedAppPkg = packageCache.withRewrittenDeps(origAppPkg);\n let workingDir = locateEmbroiderWorkingDir(this.root);\n return new CompatAppBuilder(\n origAppPkg,\n movedAppPkg,\n this.options,\n this,\n configTree,\n contentForTree,\n packageCache.get(join(workingDir, 'rewritten-packages', '@embroider', 'synthesized-vendor')),\n packageCache.get(join(workingDir, 'rewritten-packages', '@embroider', 'synthesized-styles'))\n );\n }\n\n asStage(prevStage: Stage): Stage {\n let resolve: (result: { outputPath: string }) => void;\n let promise: Promise<{ outputPath: string }> = new Promise(r => (resolve = r));\n\n let tree = () => {\n let inTrees = this.inTrees(prevStage.tree);\n return new WaitForTrees(inTrees, this.annotation, async _treePaths => {\n if (!this.active) {\n let { outputPath } = await prevStage.ready();\n let packageCache = RewrittenPackageCache.shared('embroider', this.root);\n this.active = await this.instantiate(packageCache, inTrees.configTree, inTrees.contentForTree);\n resolve({ outputPath });\n }\n await this.active.build();\n });\n };\n\n return {\n get inputPath() {\n return prevStage.inputPath;\n },\n ready: async () => {\n return await promise;\n },\n get tree() {\n return tree();\n },\n };\n }\n}\n\ninterface Preprocessors {\n preprocessJs(tree: BroccoliNode, a: string, b: string, options: object): BroccoliNode;\n preprocessCss(tree: BroccoliNode, a: string, b: string, options: object): BroccoliNode;\n}\n\nfunction forbiddenVendorPath(path: string) {\n // ember-source does not go in vendor under embroider (we always use the\n // separate ES modules)\n return !['./vendor/ember/ember.js'].includes(path);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"compat-app.js","sourceRoot":"","sources":["../../src/compat-app.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Node as BroccoliNode } from 'broccoli-node-api';\nimport type { Stage, Package } from '@embroider/core';\nimport { PackageCache, WaitForTrees, RewrittenPackageCache, locateEmbroiderWorkingDir } from '@embroider/core';\nimport type Options from './options';\nimport type { CompatOptionsType } from './options';\nimport { optionsWithDefaults } from './options';\nimport { Memoize } from 'typescript-memoize';\nimport { sync as pkgUpSync } from 'pkg-up';\nimport { join, dirname, isAbsolute, sep } from 'path';\nimport buildFunnel from 'broccoli-funnel';\nimport mergeTrees from 'broccoli-merge-trees';\nimport { WatchedDir } from 'broccoli-source';\nimport resolve from 'resolve';\nimport ContentForConfig from './content-for-config';\nimport { V1Config } from './v1-config';\nimport type { AddonMeta, EmberAppInstance, OutputFileToInputFileMap, PackageInfo } from '@embroider/core';\nimport { writeJSONSync, ensureDirSync, copySync, pathExistsSync, existsSync, writeFileSync } from 'fs-extra';\nimport AddToTree from './add-to-tree';\nimport DummyPackage from './dummy-package';\nimport type { PluginItem, TransformOptions } from '@babel/core';\nimport { isEmbroiderMacrosPlugin, MacrosConfig } from '@embroider/macros/src/node';\nimport resolvePackagePath from 'resolve-package-path';\nimport Concat from 'broccoli-concat';\nimport mapKeys from 'lodash/mapKeys';\nimport { isEmberAutoImportDynamic, isHtmlbarColocation, isInlinePrecompilePlugin } from './detect-babel-plugins';\nimport loadAstPlugins from './prepare-htmlbars-ast-plugins';\nimport { readFileSync } from 'fs';\nimport semver from 'semver';\nimport type { Transform } from 'babel-plugin-ember-template-compilation';\nimport { CompatAppBuilder } from './compat-app-builder';\nimport walkSync from 'walk-sync';\nimport writeFile from 'broccoli-file-creator';\n\ninterface Group {\n outputFiles: OutputFileToInputFileMap;\n implicitKey: '_implicitStyles' | '_implicitScripts';\n vendorOutputPath: 'string';\n}\n\n// This runs at broccoli-pipeline-construction time, whereas the\n// CompatAppBuilder instance only becomes available during tree-building time.\nexport default class CompatApp {\n private annotation = '@embroider/compat/app';\n private active: CompatAppBuilder | undefined;\n readonly options: CompatOptionsType;\n\n private _publicAssets: { [filePath: string]: string } = Object.create(null);\n private _implicitScripts: string[] = [];\n private _implicitStyles: string[] = [];\n\n private get isDummy(): boolean {\n return this.legacyEmberAppInstance.project.pkg.keywords?.includes('ember-addon') ?? false;\n }\n\n get name(): string {\n if (this.isDummy) {\n // here we accept the ember-cli behavior\n return this.legacyEmberAppInstance.name;\n } else {\n // always the name from package.json. Not the one that apps may have weirdly\n // customized.\n return this.legacyEmberAppInstance.project.pkg.name;\n }\n }\n\n get env(): string {\n return this.legacyEmberAppInstance.env;\n }\n\n @Memoize()\n get root(): string {\n if (this.isDummy) {\n // this is the Known Hack for finding the true root of the dummy app.\n return join(this.legacyEmberAppInstance.project.configPath(), '..', '..');\n } else {\n return dirname(pkgUpSync({ cwd: this.legacyEmberAppInstance.project.root })!);\n }\n }\n\n @Memoize()\n private get emberCLILocation() {\n const emberCLIPackage = resolvePackagePath('ember-cli', this.root);\n\n if (emberCLIPackage === null) {\n throw new Error(`Embroider: cannot resolve ember-cli's package.json`);\n }\n\n return dirname(emberCLIPackage);\n }\n\n @Memoize()\n get hasCompiledStyles() {\n return semver.gte(JSON.parse(readFileSync(`${this.emberCLILocation}/package.json`, 'utf8')).version, '3.18.0');\n }\n\n private requireFromEmberCLI(specifier: string) {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n return require(resolve.sync(specifier, { basedir: this.emberCLILocation }));\n }\n\n private get configLoader() {\n return this.requireFromEmberCLI('broccoli-config-loader');\n }\n\n private get appUtils() {\n return this.requireFromEmberCLI('./lib/utilities/ember-app-utils');\n }\n\n @Memoize()\n get addonTreeCache(): Map<string, BroccoliNode> {\n return new Map();\n }\n\n @Memoize()\n get preprocessRegistry() {\n return this.requireFromEmberCLI('ember-cli-preprocess-registry/preprocessors');\n }\n\n get shouldBuildTests(): boolean {\n return this.legacyEmberAppInstance.tests || false;\n }\n\n configPath(): string {\n return this.legacyEmberAppInstance.project.configPath();\n }\n\n private get configTree() {\n return new this.configLoader(dirname(this.configPath()), {\n env: this.legacyEmberAppInstance.env,\n tests: this.legacyEmberAppInstance.tests || false,\n project: this.legacyEmberAppInstance.project,\n });\n }\n\n @Memoize()\n private get config(): V1Config {\n return new V1Config(this.configTree, this.legacyEmberAppInstance.env);\n }\n\n @Memoize()\n get testConfig(): V1Config | undefined {\n if (this.shouldBuildTests) {\n return new V1Config(this.configTree, 'test');\n }\n }\n\n @Memoize()\n private get contentFor(): ContentForConfig {\n const configPaths = [\n { file: '/index.html', path: join('environments', `${this.legacyEmberAppInstance.env}.json`) },\n ];\n if (this.shouldBuildTests) configPaths.push({ file: '/tests/index.html', path: join('environments', `test.json`) });\n return new ContentForConfig(this.configTree, {\n availableContentForTypes: this.options.availableContentForTypes,\n configPaths,\n pattern: this.filteredPatternsByContentFor.contentFor,\n });\n }\n\n get autoRun(): boolean {\n return this.legacyEmberAppInstance.options.autoRun;\n }\n\n private get storeConfigInMeta(): boolean {\n return this.legacyEmberAppInstance.options.storeConfigInMeta;\n }\n\n @Memoize()\n private get configReplacePatterns() {\n return this.appUtils.configReplacePatterns({\n addons: this.legacyEmberAppInstance.project.addons,\n autoRun: this.autoRun,\n storeConfigInMeta: this.storeConfigInMeta,\n });\n }\n\n private get filteredPatternsByContentFor() {\n const filter = '/{{content-for [\\'\"](.+?)[\"\\']}}/g';\n return {\n contentFor: this.configReplacePatterns.find((pattern: any) => filter.includes(pattern.match.toString())),\n others: this.configReplacePatterns.filter((pattern: any) => !filter.includes(pattern.match.toString())),\n };\n }\n\n @Memoize()\n extraBabelPlugins(): PluginItem[] {\n // this finds any custom babel plugins on the app (either because the app\n // author explicitly added some, or because addons have pushed plugins into\n // it).\n let appBabel: TransformOptions = this.legacyEmberAppInstance.options.babel;\n if (appBabel) {\n if (appBabel.plugins) {\n return appBabel.plugins.filter(p => {\n // even if the app was using @embroider/macros, we drop it from the config\n // here in favor of our globally-configured one.\n return (\n !isEmbroiderMacrosPlugin(p) &&\n // similarly, if the app was already using an inline template compiler\n // babel plugin, we remove it here because we have our own\n // always-installed version of that (v2 addons are allowed to assume it\n // will be present in the final app build, the app doesn't get to turn\n // that off or configure it.)\n !isInlinePrecompilePlugin(p) &&\n !isEmberAutoImportDynamic(p) &&\n !isHtmlbarColocation(p)\n );\n });\n }\n }\n return [];\n }\n\n @Memoize()\n babelMajorVersion(): 7 {\n let babelAddon = this.legacyEmberAppInstance.project.addons.find((a: any) => a.name === 'ember-cli-babel');\n if (babelAddon) {\n let babelAddonMajor = Number(babelAddon.pkg.version.split('.')[0]);\n let babelMajor: number | undefined = babelAddonMajor;\n if (babelAddonMajor >= 8) {\n // `ember-cli-babel` v8 breaks lockstep with Babel, because it now\n // defines `@babel/core` as a peer dependency, so we need to check the\n // project's version of `@babel/core`:\n let babelVersion = this.legacyEmberAppInstance.project.pkg.devDependencies?.['@babel/core'];\n if (babelVersion) {\n babelMajor = semver.coerce(babelVersion)?.major;\n } else {\n babelMajor = 7;\n }\n }\n if (babelMajor !== 7) {\n throw new Error('`@embroider/compat` only supports apps and addons that use Babel v7.');\n }\n return babelMajor;\n }\n // if we didn't have our own babel plugin at all, it's safe to parse our\n // code with 7.\n return 7;\n }\n\n @Memoize()\n private transformedNodeFiles(): Map<string, string> {\n // any app.imports from node_modules that need custom transforms will need\n // to get copied into our own synthesized vendor package. app.imports from\n // node_modules that *don't* need custom transforms can just stay where they\n // are.\n let transformed = new Map();\n for (let transformConfig of this.legacyEmberAppInstance._customTransformsMap.values()) {\n for (let filename of transformConfig.files as string[]) {\n let preresolved = this.preresolvedNodeFile(filename);\n if (preresolved) {\n transformed.set(filename, preresolved);\n }\n }\n }\n return transformed;\n }\n\n private preresolvedNodeFile(filename: string) {\n // this regex is an exact copy of how ember-cli does this, so we align.\n let match = filename.match(/^node_modules\\/((@[^/]+\\/)?[^/]+)\\//);\n if (match) {\n // ember-cli has already done its own resolution of\n // `app.import('node_modules/something/...')`, so we go find its answer.\n for (let { name, path } of this.legacyEmberAppInstance._nodeModules.values()) {\n if (match[1] === name) {\n return filename.replace(match[0], path + sep);\n }\n }\n throw new Error(`bug: expected ember-cli to already have a resolved path for asset ${filename}`);\n }\n }\n\n private combinedVendor(addonTrees: BroccoliNode[]): BroccoliNode {\n let trees = addonTrees.map(tree =>\n buildFunnel(tree, {\n allowEmpty: true,\n srcDir: 'vendor',\n destDir: 'vendor',\n })\n );\n\n let emberSource = this.legacyEmberAppInstance.project.addons.find(a => a.name === 'ember-source');\n if (emberSource && (emberSource.pkg['ember-addon']?.['version'] ?? 1) >= 2) {\n // there's stuff in the ecosystem that assumes these files will always be\n // present in the vendor tree. But when ember-source is V2, it cannot put\n // them there, so @embroider/compat will fill in defaults. The bundles are\n // empty because we're just trying to keep the build from blowing up, the\n // actual ember modules get loaded as modules instead.\n //\n // The template compiler is still here so that apps using a V2 ember can\n // still app.import the traditional runtime template compiler.\n trees.push(writeFile('vendor/ember/ember.js', () => ''));\n trees.push(writeFile('vendor/ember/ember-testing.js', () => ''));\n const templateCompilerSrc = readFileSync(join(emberSource.root, 'dist/ember-template-compiler.js'), 'utf8');\n trees.push(writeFile('vendor/ember/ember-template-compiler.js', () => templateCompilerSrc));\n }\n\n if (this.vendorTree) {\n trees.push(\n buildFunnel(this.vendorTree, {\n destDir: 'vendor',\n })\n );\n }\n\n const tree = mergeTrees(trees, { overwrite: true });\n\n const outputGroups: Group[] = [\n // scripts\n {\n outputFiles: this.legacyEmberAppInstance._scriptOutputFiles,\n implicitKey: '_implicitScripts',\n vendorOutputPath: this.legacyEmberAppInstance.options.outputPaths.vendor.js,\n },\n // styles\n {\n outputFiles: this.legacyEmberAppInstance._styleOutputFiles,\n implicitKey: '_implicitStyles',\n vendorOutputPath: this.legacyEmberAppInstance.options.outputPaths.vendor.css,\n },\n ];\n\n const concatentations = [];\n\n // support: app.import / outputFile / using\n for (let entry of outputGroups) {\n const { outputFiles, implicitKey, vendorOutputPath } = entry;\n for (let importPath of Object.keys(outputFiles)) {\n const headerFiles = outputFiles[importPath];\n\n if (importPath === vendorOutputPath) {\n // these are the default ember-cli output files vendor.js or\n // vendor.css. Let embroider handle these.\n this[implicitKey] = headerFiles;\n } else if (headerFiles.length === 0) {\n // something went really wrong, open an issue\n throw new Error('Embroider: EWUT');\n } else if (headerFiles.length === 1) {\n // app.import(x, { outputFile: y }); where only one app.imports had this outputFile\n //\n // No concat needed. Simply serialize the remapping in the addon's\n // manifest, this ensures it is included in the final output with no extra work.\n this._publicAssets[headerFiles[0]] = importPath;\n } else {\n // app.import(x, { outputFile: y }); where multiple app.imports share one outputFile\n // Concat needed. Perform concat, and include the outputFile in the\n // addon's manifest. This ensures it is included in the final output\n this._publicAssets[importPath] = importPath;\n\n concatentations.push(\n new Concat(tree, {\n headerFiles,\n outputFile: importPath,\n annotation: `Package ${importPath}`,\n separator: '\\n;',\n sourceMapConfig: this.legacyEmberAppInstance.options['sourcemaps'],\n })\n );\n }\n }\n }\n\n this.addOtherAssets();\n return mergeTrees([tree, ...concatentations], { overwrite: true });\n }\n\n private addOtherAssets() {\n for (let asset of this.legacyEmberAppInstance.otherAssetPaths) {\n this._publicAssets[`${asset.src}/${asset.file}`] = `${asset.dest}/${asset.file}`;\n }\n }\n\n private addNodeAssets(inputTree: BroccoliNode): BroccoliNode {\n let transformedNodeFiles = this.transformedNodeFiles();\n\n return new AddToTree(inputTree, outputPath => {\n for (let [localDestPath, sourcePath] of transformedNodeFiles) {\n let destPath = join(outputPath, localDestPath);\n ensureDirSync(dirname(destPath));\n copySync(sourcePath, destPath);\n }\n\n if (this.shouldBuildTests) {\n writeFileSync(\n join(outputPath, 'testem.js'),\n `/*\n * This is dummy file that exists for the sole purpose\n * of allowing tests to run directly in the browser as\n * well as by Testem.\n *\n * Testem is configured to run tests directly against\n * the test build of index.html, which requires a\n * snippet to load the testem.js file:\n * <script src=\"/testem.js\"></script>\n * This has to go before the qunit framework and app\n * tests are loaded.\n *\n * Testem internally supplies this file. However, if you\n * run the tests directly in the browser (localhost:8000/tests),\n * this file does not exist.\n *\n * Hence the purpose of this fake file. This file is served\n * directly from the express server to satisify the script load.\n*/`\n );\n this._publicAssets['/testem.js'] = './testem.js';\n }\n\n let remapAsset = this.remapAsset.bind(this);\n\n let addonMeta: AddonMeta = {\n version: 2,\n 'implicit-scripts': this._implicitScripts.map(remapAsset).filter(forbiddenVendorPath),\n 'implicit-styles': this._implicitStyles.map(remapAsset),\n 'implicit-test-scripts': this.legacyEmberAppInstance.legacyTestFilesToAppend.map(remapAsset),\n 'implicit-test-styles': this.legacyEmberAppInstance.vendorTestStaticStyles.map(remapAsset),\n 'public-assets': mapKeys(this._publicAssets, (_, key) => remapAsset(key)),\n };\n let meta: PackageInfo = {\n name: '@embroider/synthesized-vendor',\n version: '0.0.0',\n keywords: ['ember-addon'],\n 'ember-addon': addonMeta,\n };\n writeJSONSync(join(outputPath, 'package.json'), meta, { spaces: 2 });\n });\n }\n\n synthesizeVendorPackage(addonTrees: BroccoliNode[]): BroccoliNode {\n return this.applyCustomTransforms(this.addNodeAssets(this.combinedVendor(addonTrees)));\n }\n\n private combinedStyles(addonTrees: BroccoliNode[]): BroccoliNode {\n let trees: BroccoliNode[] = addonTrees.map(tree =>\n buildFunnel(tree, {\n allowEmpty: true,\n srcDir: '_app_styles_',\n })\n );\n let appStyles = this.legacyEmberAppInstance.trees.styles as BroccoliNode | undefined;\n if (appStyles) {\n // Workaround for https://github.com/ember-cli/ember-cli/issues/9020\n //\n // The default app styles tree is unwatched and relies on side effects\n // elsewhere in ember-cli's build pipeline to actually get rebuilds to\n // work. Here we need it to actually be watched properly if we want to\n // rely on it, particularly when using BROCCOLI_ENABLED_MEMOIZE.\n if ((appStyles as any)._watched === false && (appStyles as any)._directoryPath) {\n appStyles = new WatchedDir((appStyles as any)._directoryPath);\n }\n trees.push(appStyles);\n }\n return mergeTrees(trees, { overwrite: true, annotation: 'embroider-v1-app-combined-styles' });\n }\n\n synthesizeStylesPackage(addonTrees: BroccoliNode[]): BroccoliNode {\n let options = {\n // we're deliberately not allowing this to be customized. It's an\n // internal implementation detail, and respecting outputPaths here is\n // unnecessary complexity. The corresponding code that adjusts the HTML\n // <link> is in updateHTML in app.ts.\n outputPaths: { app: `/@embroider/virtual/app.css` },\n registry: this.legacyEmberAppInstance.registry,\n minifyCSS: this.legacyEmberAppInstance.options.minifyCSS.options,\n };\n\n let nestedInput = buildFunnel(this.combinedStyles(addonTrees), { destDir: 'app/styles' });\n let styles = this.preprocessors.preprocessCss(nestedInput, '/app/styles', '/assets', options);\n\n return new AddToTree(styles, outputPath => {\n let addonMeta: AddonMeta = {\n version: 2,\n 'public-assets': {},\n };\n let assetPath = join(outputPath, '@embroider', 'virtual');\n if (pathExistsSync(assetPath)) {\n for (let file of walkSync(assetPath, { directories: false })) {\n addonMeta['public-assets']![`./@embroider/virtual/${file}`] = `/@embroider/virtual/${file}`;\n }\n }\n let meta: PackageInfo = {\n name: '@embroider/synthesized-styles',\n version: '0.0.0',\n keywords: ['ember-addon'],\n 'ember-addon': addonMeta,\n };\n writeJSONSync(join(outputPath, 'package.json'), meta, { spaces: 2 });\n });\n }\n\n // this is taken nearly verbatim from ember-cli.\n private applyCustomTransforms(externalTree: BroccoliNode) {\n for (let customTransformEntry of this.legacyEmberAppInstance._customTransformsMap) {\n let transformName = customTransformEntry[0];\n let transformConfig = customTransformEntry[1];\n\n let transformTree = buildFunnel(externalTree, {\n files: transformConfig.files,\n annotation: `Funnel (custom transform: ${transformName})`,\n });\n\n externalTree = mergeTrees([externalTree, transformConfig.callback(transformTree, transformConfig.options)], {\n annotation: `TreeMerger (custom transform: ${transformName})`,\n overwrite: true,\n });\n }\n return externalTree;\n }\n\n private remapAsset(asset: string) {\n if (this.transformedNodeFiles().has(asset)) {\n // transformed node assets become local paths, because we have copied\n // those ones into our synthesized vendor package.\n return './' + asset;\n }\n let preresolved = this.preresolvedNodeFile(asset);\n if (preresolved) {\n // non-transformed node assets point directly at their pre-resolved\n // original files (this is an absolute path).\n return preresolved;\n }\n // non node assets are local paths. They need an explicit `/` or `.` at\n // the start.\n if (asset.startsWith('.') || isAbsolute(asset)) {\n return asset;\n }\n return './' + asset;\n }\n\n get htmlbarsPlugins(): Transform[] {\n let plugins = loadAstPlugins(this.legacyEmberAppInstance.registry);\n // even if the app was using @embroider/macros, we drop it from the config\n // here in favor of our globally-configured one.\n plugins = plugins.filter((p: any) => !isEmbroiderMacrosPlugin(p));\n return plugins;\n }\n\n private get vendorTree(): BroccoliNode | undefined {\n return this.ensureTree(this.legacyEmberAppInstance.trees.vendor);\n }\n\n private ensureTree(maybeTree: string | BroccoliNode | undefined): BroccoliNode | undefined {\n if (typeof maybeTree === 'string') {\n // this is deliberately mimicking how ember-cli does it. We don't use\n // `this.root` on purpose, because that can differ from what ember-cli\n // considers the project.root. And we don't use path.resolve even though\n // that seems possibly more correct, because ember-cli always assumes the\n // input is relative.\n let resolvedPath = join(this.legacyEmberAppInstance.project.root, maybeTree);\n if (existsSync(resolvedPath)) {\n return new WatchedDir(maybeTree);\n } else {\n return undefined;\n }\n }\n return maybeTree;\n }\n\n @Memoize()\n private get preprocessors(): Preprocessors {\n return this.requireFromEmberCLI('ember-cli-preprocess-registry/preprocessors');\n }\n\n readonly macrosConfig: MacrosConfig;\n\n constructor(readonly legacyEmberAppInstance: EmberAppInstance, _options?: Options) {\n this.options = optionsWithDefaults(_options);\n\n this.macrosConfig = MacrosConfig.for(legacyEmberAppInstance, this.root);\n if (this.env !== 'production') {\n this.macrosConfig.enablePackageDevelopment(this.root);\n this.macrosConfig.enableRuntimeMode();\n if (this.isDummy) {\n // dummy apps automatically put their owning addon under development too\n this.macrosConfig.enablePackageDevelopment(\n dirname(pkgUpSync({ cwd: this.legacyEmberAppInstance.project.root })!)\n );\n }\n }\n\n // this uses globalConfig because it's a way for packages to ask \"is\n // Embroider doing this build?\". So it's necessarily global, not scoped to\n // any subgraph of dependencies.\n this.macrosConfig.setGlobalConfig(__filename, `@embroider/core`, {\n // this is hard-coded to true because it literally means \"embroider is\n // building this Ember app\". You can see non-true when using the Embroider\n // macros in a classic build.\n active: true,\n });\n\n // Embroider 4.x always requires eager importSync\n this.macrosConfig.importSyncImplementation = 'eager';\n }\n\n private inTrees(prevStageTree: BroccoliNode) {\n let configTree = this.config;\n let contentForTree = this.contentFor;\n\n return {\n configTree,\n contentForTree,\n prevStageTree,\n };\n }\n\n @Memoize()\n appPackage(): Package {\n // this is deliberately not RewrittenPackageCache, because it's supposed to\n // be the original copy of the app with all the original dependencies.\n let packageCache = PackageCache.shared('embroider', this.root);\n if (this.isDummy) {\n return new DummyPackage(\n this.root,\n this.legacyEmberAppInstance.project.root,\n packageCache as unknown as PackageCache // TODO: cast won't be needed when refactor is complete\n );\n } else {\n return packageCache.get(this.root);\n }\n }\n\n private async instantiate(\n packageCache: RewrittenPackageCache,\n configTree: V1Config,\n contentForTree: ContentForConfig\n ) {\n let origAppPkg = this.appPackage();\n let movedAppPkg = packageCache.withRewrittenDeps(origAppPkg);\n let workingDir = locateEmbroiderWorkingDir(this.root);\n return new CompatAppBuilder(\n origAppPkg,\n movedAppPkg,\n this.options,\n this,\n configTree,\n contentForTree,\n packageCache.get(join(workingDir, 'rewritten-packages', '@embroider', 'synthesized-vendor')),\n packageCache.get(join(workingDir, 'rewritten-packages', '@embroider', 'synthesized-styles'))\n );\n }\n\n asStage(prevStage: Stage): Stage {\n let resolve: (result: { outputPath: string }) => void;\n let promise: Promise<{ outputPath: string }> = new Promise(r => (resolve = r));\n\n let tree = () => {\n let inTrees = this.inTrees(prevStage.tree);\n return new WaitForTrees(inTrees, this.annotation, async _treePaths => {\n if (!this.active) {\n let { outputPath } = await prevStage.ready();\n let packageCache = RewrittenPackageCache.shared('embroider', this.root);\n this.active = await this.instantiate(packageCache, inTrees.configTree, inTrees.contentForTree);\n resolve({ outputPath });\n }\n await this.active.build();\n });\n };\n\n return {\n get inputPath() {\n return prevStage.inputPath;\n },\n ready: async () => {\n return await promise;\n },\n get tree() {\n return tree();\n },\n };\n }\n}\n\ninterface Preprocessors {\n preprocessJs(tree: BroccoliNode, a: string, b: string, options: object): BroccoliNode;\n preprocessCss(tree: BroccoliNode, a: string, b: string, options: object): BroccoliNode;\n}\n\nfunction forbiddenVendorPath(path: string) {\n // ember-source does not go in vendor under embroider (we always use the\n // separate ES modules)\n return !['./vendor/ember/ember.js'].includes(path);\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@embroider/compat",
|
|
3
|
-
"version": "4.1.
|
|
3
|
+
"version": "4.1.2",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Backward compatibility layer for the Embroider build system.",
|
|
6
6
|
"repository": {
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"@types/babel__code-frame": "^7.0.2",
|
|
34
34
|
"assert-never": "^1.1.0",
|
|
35
35
|
"babel-import-util": "^3.0.1",
|
|
36
|
-
"babel-plugin-debug-macros": "^
|
|
36
|
+
"babel-plugin-debug-macros": "^2.0.0",
|
|
37
37
|
"babel-plugin-ember-template-compilation-2": "npm:babel-plugin-ember-template-compilation@^2.4.0",
|
|
38
38
|
"babel-plugin-ember-template-compilation": "^3.0.0",
|
|
39
39
|
"babel-plugin-syntax-dynamic-import": "^6.18.0",
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
"tree-sync": "^2.1.0",
|
|
65
65
|
"typescript-memoize": "^1.0.1",
|
|
66
66
|
"walk-sync": "^3.0.0",
|
|
67
|
-
"@embroider/macros": "1.18.1
|
|
67
|
+
"@embroider/macros": "1.18.1"
|
|
68
68
|
},
|
|
69
69
|
"devDependencies": {
|
|
70
70
|
"@glimmer/syntax": "^0.94.9",
|
|
@@ -87,12 +87,12 @@
|
|
|
87
87
|
"ember-engines": "^0.8.19",
|
|
88
88
|
"scenario-tester": "^4.0.0",
|
|
89
89
|
"typescript": "^5.4.5",
|
|
90
|
-
"@embroider/core": "^4.1.1-unstable.f6c658d",
|
|
91
90
|
"@embroider/sample-transforms": "0.0.0",
|
|
91
|
+
"@embroider/core": "^4.1.3",
|
|
92
92
|
"@embroider/test-support": "0.36.0"
|
|
93
93
|
},
|
|
94
94
|
"peerDependencies": {
|
|
95
|
-
"@embroider/core": "^4.1.
|
|
95
|
+
"@embroider/core": "^4.1.3"
|
|
96
96
|
},
|
|
97
97
|
"engines": {
|
|
98
98
|
"node": "12.* || 14.* || >= 16"
|