@embroider/core 0.29.0 → 0.33.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/package.json +10 -6
  2. package/src/app-files.d.ts +3 -2
  3. package/src/app-files.js +37 -5
  4. package/src/app-files.js.map +1 -1
  5. package/src/app.d.ts +7 -7
  6. package/src/app.js +117 -60
  7. package/src/app.js.map +1 -1
  8. package/src/babel-plugin-adjust-imports.js +30 -20
  9. package/src/babel-plugin-adjust-imports.js.map +1 -1
  10. package/src/babel-plugin-inline-hbs.d.ts +17 -0
  11. package/src/babel-plugin-inline-hbs.js +1 -1
  12. package/src/babel-plugin-inline-hbs.js.map +1 -1
  13. package/src/build-stage.d.ts +2 -2
  14. package/src/index.d.ts +1 -1
  15. package/src/index.js +3 -2
  16. package/src/index.js.map +1 -1
  17. package/src/options.d.ts +5 -0
  18. package/src/options.js +2 -0
  19. package/src/options.js.map +1 -1
  20. package/src/package-cache.d.ts +1 -1
  21. package/src/package-cache.js.map +1 -1
  22. package/src/package.js +2 -2
  23. package/src/package.js.map +1 -1
  24. package/src/portable-babel-config.d.ts +5 -8
  25. package/src/portable-babel-config.js +68 -19
  26. package/src/portable-babel-config.js.map +1 -1
  27. package/src/portable-babel-launcher.d.ts +6 -0
  28. package/src/portable-babel-launcher.js +75 -0
  29. package/src/portable-babel-launcher.js.map +1 -0
  30. package/src/portable.d.ts +23 -0
  31. package/src/{portable-plugin-config.js → portable.js} +93 -65
  32. package/src/portable.js.map +1 -0
  33. package/src/resolver.d.ts +3 -2
  34. package/src/stage.d.ts +2 -2
  35. package/src/template-compiler.d.ts +11 -18
  36. package/src/template-compiler.js +26 -89
  37. package/src/template-compiler.js.map +1 -1
  38. package/src/wait-for-trees.d.ts +5 -4
  39. package/src/wait-for-trees.js +2 -2
  40. package/src/wait-for-trees.js.map +1 -1
  41. package/src/portable-plugin-config.d.ts +0 -15
  42. package/src/portable-plugin-config.js.map +0 -1
@@ -3,11 +3,17 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const portable_plugin_config_1 = require("./portable-plugin-config");
6
+ exports.makePortable = void 0;
7
+ const path_1 = require("path");
7
8
  const resolve_1 = __importDefault(require("resolve"));
8
- class PortableBabelConfig extends portable_plugin_config_1.PortablePluginConfig {
9
- constructor(config, resolveOptions) {
10
- super(config);
9
+ const portable_1 = require("./portable");
10
+ function makePortable(config, resolveOptions, hints) {
11
+ return new PortableBabelConfig(resolveOptions, hints).convert(config);
12
+ }
13
+ exports.makePortable = makePortable;
14
+ class PortableBabelConfig {
15
+ constructor(resolveOptions, hints) {
16
+ this.hints = hints;
11
17
  if ('resolve' in resolveOptions) {
12
18
  this.resolve = resolveOptions.resolve;
13
19
  }
@@ -16,23 +22,67 @@ class PortableBabelConfig extends portable_plugin_config_1.PortablePluginConfig
16
22
  this.resolve = (name) => resolve_1.default.sync(name, { basedir: resolveOptions.basedir });
17
23
  }
18
24
  }
19
- makePortable(value, accessPath = []) {
20
- if (accessPath.length === 2 && (accessPath[0] === 'plugins' || accessPath[0] === 'presets')) {
21
- if (typeof value === 'string') {
22
- return this.resolveBabelPlugin(value);
23
- }
24
- if (Array.isArray(value) && typeof value[0] === 'string') {
25
- let result = [this.resolveBabelPlugin(value[0])];
26
- if (value.length > 1) {
27
- result.push(this.makePortable(value[1], accessPath.concat('1')));
25
+ convert(config) {
26
+ let portable = new portable_1.Portable({
27
+ hints: this.hints,
28
+ dehydrate: (value, accessPath) => {
29
+ // this custom dehydrate hook handles babel plugins & presets. If we're
30
+ // not looking at plugins or presets, continue with stock Portable
31
+ // behavior
32
+ if (accessPath.length !== 2 || (accessPath[0] !== 'plugins' && accessPath[0] !== 'presets')) {
33
+ return undefined;
28
34
  }
29
- if (value.length > 2) {
30
- result.push(value[2]);
35
+ // standardize to always handle an array
36
+ if (!Array.isArray(value)) {
37
+ value = [value];
31
38
  }
32
- return result;
33
- }
39
+ let [plugin, argument, asName] = value;
40
+ // string plugins need to get resolved correctly into absolute paths,
41
+ // so they will really be portable
42
+ if (typeof plugin === 'string') {
43
+ plugin = this.resolveBabelPlugin(plugin);
44
+ }
45
+ // next we deal with serializability. Our Portable system already
46
+ // understands the protocol used by ember-cli-babel to identify plugin
47
+ // classes and get back to their serializable forms, so this will
48
+ // handle that case.
49
+ let dehydrated = portable.dehydrate([plugin, argument, asName], accessPath.concat('_internal'));
50
+ if (dehydrated.needsHydrate) {
51
+ // we can eliminate the need for rehydration by going through our own
52
+ // portable babel launcher
53
+ return {
54
+ value: [
55
+ path_1.join(__dirname, 'portable-babel-launcher.js'),
56
+ { module: dehydrated.value[0], arg: dehydrated.value[1], hints: this.hints },
57
+ dehydrated.value[2] || `portable-babel-launcher-${accessPath[1]}`,
58
+ ],
59
+ needsHydrate: false,
60
+ isParallelSafe: dehydrated.isParallelSafe,
61
+ };
62
+ }
63
+ else {
64
+ // trim back down our array, because trailing undefined will get
65
+ // converted into null via json.stringify, and babel will complain
66
+ // about that.
67
+ while (dehydrated.value[dehydrated.value.length - 1] == null) {
68
+ dehydrated.value.pop();
69
+ }
70
+ if (dehydrated.value.length === 1) {
71
+ dehydrated.value = dehydrated.value[0];
72
+ }
73
+ return {
74
+ value: dehydrated.value,
75
+ needsHydrate: dehydrated.needsHydrate,
76
+ isParallelSafe: dehydrated.isParallelSafe,
77
+ };
78
+ }
79
+ },
80
+ });
81
+ let result = portable.dehydrate(config);
82
+ if (result.needsHydrate) {
83
+ throw new Error(`bug: portable babel configs aren't supposed to need hydration`);
34
84
  }
35
- return super.makePortable(value, accessPath);
85
+ return { config: result.value, isParallelSafe: result.isParallelSafe };
36
86
  }
37
87
  // babel lets you use relative paths, absolute paths, package names, and
38
88
  // package name shorthands.
@@ -80,5 +130,4 @@ class PortableBabelConfig extends portable_plugin_config_1.PortablePluginConfig
80
130
  }
81
131
  }
82
132
  }
83
- exports.default = PortableBabelConfig;
84
133
  //# sourceMappingURL=portable-babel-config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"portable-babel-config.js","sourceRoot":"","sources":["portable-babel-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"portable-babel-config.js","sourceRoot":"","sources":["portable-babel-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { PortableHint } from './portable';
2
+ export default function babelLauncher(this: any, babel: any, launch: {
3
+ module: any;
4
+ arg: any;
5
+ hints: PortableHint[];
6
+ }, key: string): any;
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const portable_1 = require("./portable");
4
+ function babelLauncher(babel, launch, key) {
5
+ let p = new portable_1.Portable({ hints: launch.hints });
6
+ let hydrated = p.hydrate(launch);
7
+ let module;
8
+ if (typeof hydrated.module === 'string') {
9
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
10
+ module = require(hydrated.module);
11
+ if (module.__esModule) {
12
+ module = module.default;
13
+ }
14
+ }
15
+ else {
16
+ module = hydrated.module;
17
+ }
18
+ let plugin = module.call(this, babel, hydrated.arg, key);
19
+ let innerStates = new WeakMap();
20
+ function convertState(state) {
21
+ let innerState = innerStates.get(state);
22
+ if (!innerState) {
23
+ innerState = Object.assign({}, state, { opts: hydrated.arg });
24
+ innerStates.set(state, innerState);
25
+ }
26
+ return innerState;
27
+ }
28
+ function wrap1(original) {
29
+ if (typeof original === 'function') {
30
+ return function (state) {
31
+ return original.call(this, convertState(state));
32
+ };
33
+ }
34
+ }
35
+ function wrap2(original) {
36
+ return function (path, state) {
37
+ return original.call(this, path, convertState(state));
38
+ };
39
+ }
40
+ let visitorProxy = {
41
+ get(target, prop) {
42
+ let original = target[prop];
43
+ if (typeof original === 'function') {
44
+ return wrap2(original);
45
+ }
46
+ if (original && typeof original === 'object') {
47
+ let wrapped = {};
48
+ if (typeof original.exit === 'function') {
49
+ wrapped.exit = wrap2(original.exit);
50
+ }
51
+ if (typeof original.enter === 'function') {
52
+ wrapped.enter = wrap2(original.enter);
53
+ }
54
+ return wrapped;
55
+ }
56
+ return original;
57
+ },
58
+ };
59
+ return new Proxy(plugin, {
60
+ get(target, prop) {
61
+ let original = target[prop];
62
+ switch (prop) {
63
+ case 'pre':
64
+ case 'post':
65
+ return wrap1(original);
66
+ case 'visitor':
67
+ return new Proxy(original, visitorProxy);
68
+ default:
69
+ return original;
70
+ }
71
+ },
72
+ });
73
+ }
74
+ exports.default = babelLauncher;
75
+ //# sourceMappingURL=portable-babel-launcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portable-babel-launcher.js","sourceRoot":"","sources":["portable-babel-launcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ export declare const protocol = "__embroider_portable_values__";
2
+ export interface PortableResult {
3
+ value: any;
4
+ isParallelSafe: boolean;
5
+ needsHydrate: boolean;
6
+ }
7
+ export interface PortableHint {
8
+ requireFile: string;
9
+ useMethod?: string;
10
+ }
11
+ export declare class Portable {
12
+ private opts;
13
+ constructor(opts?: {
14
+ dehydrate?: (value: any, accessPath: string[]) => PortableResult | undefined;
15
+ hydrate?: (value: any, accessPath: string[]) => {
16
+ value: any;
17
+ } | undefined;
18
+ hints?: PortableHint[];
19
+ });
20
+ dehydrate(value: any, accessPath?: string[]): PortableResult;
21
+ hydrate(input: any, accessPath?: string[]): any;
22
+ get foundHints(): Map<any, PortableHint>;
23
+ }
@@ -1,96 +1,93 @@
1
1
  "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
2
8
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
9
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
10
  };
5
11
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.PortablePluginConfig = exports.protocol = void 0;
7
- const js_handlebars_1 = require("./js-handlebars");
12
+ exports.Portable = exports.protocol = void 0;
8
13
  const mapValues_1 = __importDefault(require("lodash/mapValues"));
9
14
  const assert_never_1 = __importDefault(require("assert-never"));
10
- exports.protocol = '__embroider_portable_plugin_values__';
15
+ const typescript_memoize_1 = require("typescript-memoize");
16
+ exports.protocol = '__embroider_portable_values__';
11
17
  const { globalValues, nonce } = setupGlobals();
12
- const template = js_handlebars_1.compile(`
13
- const { PortablePluginConfig } = require('{{{js-string-escape here}}}');
14
- module.exports = PortablePluginConfig.load({{{json-stringify portable 2}}});
15
- `);
16
- class PortablePluginConfig {
17
- constructor(config) {
18
- // these properties defined this way because we want getters that are
19
- // enumerable own properties, such that they will run even when people do
20
- // things like Object.assign us onto another object or json stringify us.
21
- this.config = config;
22
- this.here = __filename;
23
- this.parallelSafeFlag = true;
24
- this.portable = {}; // this just makes typescript happy, we overwrite it with the defineProperty below
25
- Object.defineProperty(this, 'portable', {
26
- enumerable: true,
27
- get() {
28
- return this.ensurePortable().portable;
29
- },
30
- });
31
- this.isParallelSafe = true; // this just makes typescript happy, we overwrite it with the defineProperty below
32
- Object.defineProperty(this, 'isParallelSafe', {
33
- enumerable: true,
34
- get() {
35
- return this.ensurePortable().isParallelSafe;
36
- },
37
- });
18
+ class Portable {
19
+ constructor(opts = {}) {
20
+ this.opts = opts;
38
21
  }
39
- ensurePortable() {
40
- if (!this.cachedPortable) {
41
- this.cachedPortable = this.makePortable(this.config);
22
+ dehydrate(value, accessPath = []) {
23
+ if (this.opts.dehydrate) {
24
+ let result = this.opts.dehydrate.call(this, value, accessPath);
25
+ if (result) {
26
+ return result;
27
+ }
42
28
  }
43
- return { portable: this.cachedPortable, isParallelSafe: this.parallelSafeFlag };
44
- }
45
- serialize() {
46
- // this call to ensurePortable is not strictly needed, but it's cheap
47
- // because of the cache and it keeps typescript happy since typescript can't
48
- // see into our defineProperties.
49
- this.ensurePortable();
50
- return template({ portable: this.portable, here: this.here });
51
- }
52
- makePortable(value, accessPath = []) {
53
29
  if (value === null) {
54
- return value;
30
+ return { value, isParallelSafe: true, needsHydrate: false };
55
31
  }
56
32
  let broccoli = maybeBroccoli(value);
57
33
  if (broccoli) {
58
- return broccoli;
34
+ return { value: broccoli, isParallelSafe: true, needsHydrate: true };
59
35
  }
60
36
  let htmlbars = maybeHTMLBars(value);
61
37
  if (htmlbars) {
62
- return htmlbars;
38
+ return { value: htmlbars, isParallelSafe: true, needsHydrate: true };
63
39
  }
64
40
  if (Array.isArray(value)) {
65
- return value.map((element, index) => this.makePortable(element, accessPath.concat(String(index))));
41
+ let results = value.map((element, index) => this.dehydrate(element, accessPath.concat(String(index))));
42
+ return {
43
+ value: results.map(r => r.value),
44
+ isParallelSafe: results.every(r => r.isParallelSafe),
45
+ needsHydrate: results.some(r => r.needsHydrate),
46
+ };
66
47
  }
67
48
  switch (typeof value) {
68
49
  case 'string':
69
50
  case 'number':
70
51
  case 'boolean':
71
52
  case 'undefined':
72
- return value;
53
+ return { value, isParallelSafe: true, needsHydrate: false };
73
54
  case 'object':
74
55
  if (Object.getPrototypeOf(value) === Object.prototype) {
75
- return mapValues_1.default(value, (propertyValue, key) => this.makePortable(propertyValue, accessPath.concat(key)));
56
+ let isParallelSafe = true;
57
+ let needsHydrate = false;
58
+ let result = mapValues_1.default(value, (propertyValue, key) => {
59
+ let result = this.dehydrate(propertyValue, accessPath.concat(key));
60
+ isParallelSafe = isParallelSafe && result.isParallelSafe;
61
+ needsHydrate = needsHydrate || result.needsHydrate;
62
+ return result.value;
63
+ });
64
+ return { value: result, isParallelSafe, needsHydrate };
76
65
  }
77
66
  }
78
- return this.globalPlaceholder(value);
79
- }
80
- globalPlaceholder(value) {
81
- let index = globalValues.length;
82
- globalValues.push(value);
83
- this.parallelSafeFlag = false;
84
- return {
85
- embroiderPlaceholder: true,
86
- type: 'global',
87
- nonce,
88
- index,
89
- };
67
+ let found = this.foundHints.get(value);
68
+ if (found) {
69
+ return {
70
+ value: {
71
+ embroiderPlaceholder: true,
72
+ type: 'broccoli-parallel',
73
+ requireFile: found.requireFile,
74
+ useMethod: found.useMethod,
75
+ },
76
+ isParallelSafe: true,
77
+ needsHydrate: true,
78
+ };
79
+ }
80
+ return globalPlaceholder(value);
90
81
  }
91
- static load(input) {
82
+ hydrate(input, accessPath = []) {
83
+ if (this.opts.hydrate) {
84
+ let result = this.opts.hydrate.call(this, input, accessPath);
85
+ if (result) {
86
+ return result;
87
+ }
88
+ }
92
89
  if (Array.isArray(input)) {
93
- return input.map(element => this.load(element));
90
+ return input.map((element, index) => this.hydrate(element, accessPath.concat(String(index))));
94
91
  }
95
92
  if (input && typeof input === 'object') {
96
93
  if (input.embroiderPlaceholder) {
@@ -110,13 +107,30 @@ class PortablePluginConfig {
110
107
  }
111
108
  }
112
109
  else {
113
- return mapValues_1.default(input, value => this.load(value));
110
+ return mapValues_1.default(input, (value, key) => this.hydrate(value, accessPath.concat(key)));
114
111
  }
115
112
  }
116
113
  return input;
117
114
  }
115
+ get foundHints() {
116
+ let found = new Map();
117
+ if (this.opts.hints) {
118
+ for (let hint of this.opts.hints) {
119
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
120
+ let mod = require(hint.requireFile);
121
+ if (hint.useMethod) {
122
+ mod = mod[hint.useMethod];
123
+ }
124
+ found.set(mod, hint);
125
+ }
126
+ }
127
+ return found;
128
+ }
118
129
  }
119
- exports.PortablePluginConfig = PortablePluginConfig;
130
+ __decorate([
131
+ typescript_memoize_1.Memoize()
132
+ ], Portable.prototype, "foundHints", null);
133
+ exports.Portable = Portable;
120
134
  function setupGlobals() {
121
135
  let G = global;
122
136
  if (!G[exports.protocol]) {
@@ -184,4 +198,18 @@ function buildHTMLBars(parallelApiInfo) {
184
198
  }
185
199
  return requiredStuff[parallelApiInfo.buildUsing](parallelApiInfo.params);
186
200
  }
187
- //# sourceMappingURL=portable-plugin-config.js.map
201
+ function globalPlaceholder(value) {
202
+ let index = globalValues.length;
203
+ globalValues.push(value);
204
+ return {
205
+ value: {
206
+ embroiderPlaceholder: true,
207
+ type: 'global',
208
+ nonce,
209
+ index,
210
+ },
211
+ isParallelSafe: false,
212
+ needsHydrate: true,
213
+ };
214
+ }
215
+ //# sourceMappingURL=portable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portable.js","sourceRoot":"","sources":["portable.ts"],"names":[],"mappings":"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"}
package/src/resolver.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import TemplateCompiler from './template-compiler';
1
+ import { TemplateCompiler } from './template-compiler';
2
2
  export interface ResolvedDep {
3
3
  runtimeName: string;
4
4
  path: string;
@@ -7,5 +7,6 @@ export interface ResolvedDep {
7
7
  export interface Resolver {
8
8
  astTransformer(templateCompiler: TemplateCompiler): unknown;
9
9
  dependenciesOf(moduleName: string): ResolvedDep[];
10
- absPathToRuntimeName(absPath: string): string | undefined;
10
+ absPathToRuntimePath(absPath: string): string;
11
+ absPathToRuntimeName(absPath: string): string;
11
12
  }
package/src/stage.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- import { Tree } from 'broccoli-plugin';
1
+ import { Node } from 'broccoli-node-api';
2
2
  import PackageCache from './package-cache';
3
3
  export default interface Stage {
4
- readonly tree: Tree;
4
+ readonly tree: Node;
5
5
  readonly inputPath: string;
6
6
  ready(): Promise<{
7
7
  readonly outputPath: string;
@@ -1,33 +1,26 @@
1
1
  import { Resolver, ResolvedDep } from './resolver';
2
- import { Tree } from 'broccoli-plugin';
2
+ import { Node } from 'broccoli-node-api';
3
3
  import { PluginItem } from '@babel/core';
4
+ import { PortableHint } from './portable';
4
5
  export interface Plugins {
5
6
  ast?: unknown[];
6
7
  }
7
8
  interface AST {
8
9
  _deliberatelyOpaque: 'AST';
9
10
  }
10
- interface SetupCompilerParams {
11
+ export declare function templateCompilerModule(params: TemplateCompilerParams, hints: PortableHint[]): {
12
+ src: string;
13
+ isParallelSafe: boolean;
14
+ };
15
+ export interface TemplateCompilerParams {
11
16
  compilerPath: string;
12
17
  resolver?: Resolver;
13
18
  EmberENV: unknown;
14
19
  plugins: Plugins;
15
20
  }
16
- export declare function rehydrate(state: unknown): TemplateCompiler;
17
- export default class TemplateCompiler {
18
- private portableParams;
19
- private params;
20
- isParallelSafe: boolean;
21
- constructor(params: SetupCompilerParams);
22
- private get portableConfig();
23
- get _parallelBabel(): {
24
- requireFile: string;
25
- buildUsing: string;
26
- params: {
27
- portableParams: object;
28
- };
29
- } | undefined;
30
- serialize(): string;
21
+ export declare class TemplateCompiler {
22
+ params: TemplateCompilerParams;
23
+ constructor(params: TemplateCompilerParams);
31
24
  private get syntax();
32
25
  get cacheKey(): string;
33
26
  private setup;
@@ -39,7 +32,7 @@ export default class TemplateCompiler {
39
32
  compile(moduleName: string, contents: string): string;
40
33
  applyTransforms(moduleName: string, contents: string): string;
41
34
  parse(moduleName: string, contents: string): AST;
42
- applyTransformsToTree(tree: Tree): Tree;
35
+ applyTransformsToTree(tree: Node): Node;
43
36
  inlineTransformsBabelPlugin(): PluginItem;
44
37
  baseDir(): string;
45
38
  static isInlinePrecompilePlugin(item: PluginItem): boolean;