@embroider/core 1.8.3 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (66) hide show
  1. package/package.json +6 -20
  2. package/src/app.d.ts +4 -5
  3. package/src/app.js +44 -53
  4. package/src/app.js.map +1 -1
  5. package/src/babel-plugin-adjust-imports.d.ts +0 -1
  6. package/src/babel-plugin-adjust-imports.js +10 -17
  7. package/src/babel-plugin-adjust-imports.js.map +1 -1
  8. package/src/index.d.ts +0 -4
  9. package/src/index.js +2 -6
  10. package/src/index.js.map +1 -1
  11. package/src/messages.d.ts +3 -1
  12. package/src/messages.js +15 -4
  13. package/src/messages.js.map +1 -1
  14. package/src/packager.d.ts +4 -1
  15. package/src/packager.js +2 -1
  16. package/src/packager.js.map +1 -1
  17. package/src/portable-babel-config.js +1 -1
  18. package/src/portable-babel-config.js.map +1 -1
  19. package/src/atomic-write.d.ts +0 -1
  20. package/src/atomic-write.js +0 -18
  21. package/src/atomic-write.js.map +0 -1
  22. package/src/babel-plugin-inline-hbs-deps-node.d.ts +0 -14
  23. package/src/babel-plugin-inline-hbs-deps-node.js +0 -31
  24. package/src/babel-plugin-inline-hbs-deps-node.js.map +0 -1
  25. package/src/babel-plugin-inline-hbs-deps.d.ts +0 -10
  26. package/src/babel-plugin-inline-hbs-deps.js +0 -134
  27. package/src/babel-plugin-inline-hbs-deps.js.map +0 -1
  28. package/src/babel-plugin-inline-hbs-node.d.ts +0 -7
  29. package/src/babel-plugin-inline-hbs-node.js +0 -15
  30. package/src/babel-plugin-inline-hbs-node.js.map +0 -1
  31. package/src/babel-plugin-inline-hbs.d.ts +0 -24
  32. package/src/babel-plugin-inline-hbs.js +0 -142
  33. package/src/babel-plugin-inline-hbs.js.map +0 -1
  34. package/src/babel-plugin-stage1-inline-hbs-node.d.ts +0 -12
  35. package/src/babel-plugin-stage1-inline-hbs-node.js +0 -9
  36. package/src/babel-plugin-stage1-inline-hbs-node.js.map +0 -1
  37. package/src/babel-plugin-stage1-inline-hbs.d.ts +0 -9
  38. package/src/babel-plugin-stage1-inline-hbs.js +0 -96
  39. package/src/babel-plugin-stage1-inline-hbs.js.map +0 -1
  40. package/src/browser-index.d.ts +0 -1
  41. package/src/browser-index.js +0 -6
  42. package/src/browser-index.js.map +0 -1
  43. package/src/ember-template-compiler-types.d.ts +0 -41
  44. package/src/ember-template-compiler-types.js +0 -3
  45. package/src/ember-template-compiler-types.js.map +0 -1
  46. package/src/load-ember-template-compiler.d.ts +0 -6
  47. package/src/load-ember-template-compiler.js +0 -57
  48. package/src/load-ember-template-compiler.js.map +0 -1
  49. package/src/mini-modules-polyfill.d.ts +0 -12
  50. package/src/mini-modules-polyfill.js +0 -80
  51. package/src/mini-modules-polyfill.js.map +0 -1
  52. package/src/patch-template-compiler.d.ts +0 -1
  53. package/src/patch-template-compiler.js +0 -176
  54. package/src/patch-template-compiler.js.map +0 -1
  55. package/src/resolver.d.ts +0 -14
  56. package/src/resolver.js +0 -3
  57. package/src/resolver.js.map +0 -1
  58. package/src/template-compiler-common.d.ts +0 -70
  59. package/src/template-compiler-common.js +0 -176
  60. package/src/template-compiler-common.js.map +0 -1
  61. package/src/template-compiler-node.d.ts +0 -17
  62. package/src/template-compiler-node.js +0 -32
  63. package/src/template-compiler-node.js.map +0 -1
  64. package/src/write-template-compiler.d.ts +0 -6
  65. package/src/write-template-compiler.js +0 -24
  66. package/src/write-template-compiler.js.map +0 -1
@@ -1,176 +0,0 @@
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
- };
8
- var __importDefault = (this && this.__importDefault) || function (mod) {
9
- return (mod && mod.__esModule) ? mod : { "default": mod };
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.TemplateCompiler = void 0;
13
- const strip_bom_1 = __importDefault(require("strip-bom"));
14
- const path_1 = require("path");
15
- const typescript_memoize_1 = require("typescript-memoize");
16
- const wrap_legacy_hbs_plugin_if_needed_1 = __importDefault(require("wrap-legacy-hbs-plugin-if-needed"));
17
- class TemplateCompiler {
18
- constructor(params) {
19
- this.loadEmberTemplateCompiler = params.loadEmberTemplateCompiler;
20
- this.resolver = params.resolver;
21
- this.EmberENV = params.EmberENV;
22
- this.plugins = params.plugins;
23
- }
24
- get syntax() {
25
- return this.setup().syntax;
26
- }
27
- get cacheKey() {
28
- return this.setup().cacheKey;
29
- }
30
- setup() {
31
- let { theExports, cacheKey } = this.loadEmberTemplateCompiler();
32
- let syntax = loadGlimmerSyntax(theExports);
33
- initializeEmberENV(syntax, this.EmberENV);
34
- // todo: get resolver reflected in cacheKey
35
- return { syntax, cacheKey };
36
- }
37
- getReversedASTPlugins(ast) {
38
- return ast.slice().reverse();
39
- }
40
- // Compiles to the wire format plus dependency list.
41
- precompile(templateSource, options) {
42
- var _a, _b;
43
- let dependencies;
44
- let runtimeName;
45
- let filename = options.filename;
46
- if (this.resolver) {
47
- runtimeName = this.resolver.absPathToRuntimePath(filename);
48
- }
49
- else {
50
- runtimeName = filename;
51
- }
52
- let opts = this.syntax.defaultOptions({ contents: templateSource, moduleName: filename });
53
- let plugins = {
54
- ...opts === null || opts === void 0 ? void 0 : opts.plugins,
55
- ast: [
56
- ...this.getReversedASTPlugins(this.plugins.ast),
57
- this.resolver && this.resolver.astTransformer(this),
58
- // Ember 3.27+ uses _buildCompileOptions will not add AST plugins to its result
59
- ...((_b = (_a = opts === null || opts === void 0 ? void 0 : opts.plugins) === null || _a === void 0 ? void 0 : _a.ast) !== null && _b !== void 0 ? _b : []),
60
- ].filter(Boolean),
61
- };
62
- let compiled = this.syntax.precompile((0, strip_bom_1.default)(templateSource), {
63
- contents: templateSource,
64
- moduleName: runtimeName,
65
- plugins,
66
- ...options,
67
- });
68
- if (this.resolver) {
69
- dependencies = this.resolver.dependenciesOf(filename);
70
- }
71
- else {
72
- dependencies = [];
73
- }
74
- return { compiled, dependencies };
75
- }
76
- // Applies all custom AST transforms and emits the results still as
77
- // handlebars.
78
- applyTransforms(moduleName, contents) {
79
- let opts = this.syntax.defaultOptions({ contents, moduleName });
80
- // the user-provided plugins come first in the list, and those are the
81
- // only ones we want to run. The built-in plugins don't need to run here
82
- // in stage1, it's better that they run in stage3 when the appropriate
83
- // ember version is in charge.
84
- //
85
- // rather than slicing them off, we could choose instead to not call
86
- // syntax.defaultOptions, but then we lose some of the compatibility
87
- // normalization that it does on the user-provided plugins.
88
- opts.plugins = opts.plugins || {}; // Ember 3.27+ won't add opts.plugins
89
- opts.plugins.ast = this.getReversedASTPlugins(this.plugins.ast).map(plugin => {
90
- // Although the precompile API does, this direct glimmer syntax api
91
- // does not support these legacy plugins, so we must wrap them.
92
- return (0, wrap_legacy_hbs_plugin_if_needed_1.default)(plugin);
93
- });
94
- // instructs glimmer-vm to preserve entity encodings (e.g. don't parse &nbsp; -> ' ')
95
- opts.mode = 'codemod';
96
- opts.filename = moduleName;
97
- opts.moduleName = this.resolver ? this.resolver.absPathToRuntimePath(moduleName) || moduleName : moduleName;
98
- let ast = this.syntax.preprocess(contents, opts);
99
- return this.syntax.print(ast, { entityEncoding: 'raw' });
100
- }
101
- parse(moduleName, contents) {
102
- // this is just a parse, so we deliberately don't run any plugins.
103
- let opts = { contents, moduleName, plugins: {} };
104
- return this.syntax.preprocess(contents, opts);
105
- }
106
- baseDir() {
107
- return (0, path_1.join)(__dirname, '..');
108
- }
109
- }
110
- __decorate([
111
- (0, typescript_memoize_1.Memoize)()
112
- ], TemplateCompiler.prototype, "setup", null);
113
- __decorate([
114
- (0, typescript_memoize_1.Memoize)()
115
- ], TemplateCompiler.prototype, "getReversedASTPlugins", null);
116
- exports.TemplateCompiler = TemplateCompiler;
117
- // this matches the setup done by ember-cli-htmlbars: https://git.io/JtbN6
118
- function initializeEmberENV(syntax, EmberENV) {
119
- if (!EmberENV) {
120
- return;
121
- }
122
- let props;
123
- if (EmberENV.FEATURES) {
124
- props = Object.keys(EmberENV.FEATURES);
125
- props.forEach(prop => {
126
- syntax._Ember.FEATURES[prop] = EmberENV.FEATURES[prop];
127
- });
128
- }
129
- if (EmberENV) {
130
- props = Object.keys(EmberENV);
131
- props.forEach(prop => {
132
- if (prop === 'FEATURES') {
133
- return;
134
- }
135
- syntax._Ember.ENV[prop] = EmberENV[prop];
136
- });
137
- }
138
- }
139
- // we could directly depend on @glimmer/syntax and have nice types and
140
- // everything. But the problem is, we really want to use the exact version that
141
- // the app itself is using, and its copy is bundled away inside
142
- // ember-template-compiler.js.
143
- function loadGlimmerSyntax(emberTemplateCompilerExports) {
144
- var _a, _b;
145
- // detect if we are using an Ember version with the exports we need
146
- // (from https://github.com/emberjs/ember.js/pull/19426)
147
- if (emberTemplateCompilerExports._preprocess !== undefined) {
148
- return {
149
- print: emberTemplateCompilerExports._print,
150
- preprocess: emberTemplateCompilerExports._preprocess,
151
- defaultOptions: emberTemplateCompilerExports._buildCompileOptions,
152
- precompile: emberTemplateCompilerExports.precompile,
153
- _Ember: emberTemplateCompilerExports._Ember,
154
- };
155
- }
156
- else {
157
- // Older Ember versions (prior to 3.27) do not expose a public way to to source 2 source compilation of templates.
158
- // because of this, we must resort to some hackery.
159
- //
160
- // We use the following API's (that we grab from Ember.__loader):
161
- //
162
- // * glimmer/syntax's preprocess
163
- // * glimmer/syntax's print
164
- // * ember-template-compiler/lib/system/compile-options's defaultOptions
165
- let syntax = ((_a = emberTemplateCompilerExports.Ember) !== null && _a !== void 0 ? _a : emberTemplateCompilerExports._Ember).__loader.require('@glimmer/syntax');
166
- let compilerOptions = ((_b = emberTemplateCompilerExports.Ember) !== null && _b !== void 0 ? _b : emberTemplateCompilerExports._Ember).__loader.require('ember-template-compiler/lib/system/compile-options');
167
- return {
168
- print: syntax.print,
169
- preprocess: syntax.preprocess,
170
- defaultOptions: compilerOptions.default,
171
- precompile: emberTemplateCompilerExports.precompile,
172
- _Ember: emberTemplateCompilerExports._Ember,
173
- };
174
- }
175
- }
176
- //# sourceMappingURL=template-compiler-common.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"template-compiler-common.js","sourceRoot":"","sources":["template-compiler-common.ts"],"names":[],"mappings":"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","sourcesContent":["import stripBom from 'strip-bom';\nimport { Resolver, ResolvedDep } from './resolver';\nimport { join } from 'path';\nimport { Memoize } from 'typescript-memoize';\nimport wrapLegacyHbsPluginIfNeeded from 'wrap-legacy-hbs-plugin-if-needed';\n\nexport interface Plugins {\n ast?: unknown[];\n}\n\nexport interface AST {\n _deliberatelyOpaque: 'AST';\n}\n\nexport interface PreprocessOptions {\n contents: string;\n moduleName: string;\n plugins?: Plugins;\n filename?: string;\n\n parseOptions?: {\n srcName?: string;\n ignoreStandalone?: boolean;\n };\n\n // added in Ember 3.17 (@glimmer/syntax@0.40.2)\n mode?: 'codemod' | 'precompile';\n\n // added in Ember 3.25\n strictMode?: boolean;\n locals?: string[];\n}\n\nexport interface PrinterOptions {\n entityEncoding?: 'transformed' | 'raw';\n}\n\n// This just reflects the API we're extracting from ember-template-compiler.js,\n// plus a cache key that lets us know when the underlying source has remained\n// stable.\nexport interface GlimmerSyntax {\n preprocess(html: string, options?: PreprocessOptions): AST;\n print(ast: AST, options?: PrinterOptions): string;\n defaultOptions(options: PreprocessOptions): PreprocessOptions;\n precompile(\n templateContents: string,\n options: {\n contents: string;\n moduleName: string;\n filename: string;\n plugins?: any;\n parseOptions?: {\n srcName?: string;\n };\n }\n ): string;\n _Ember: { FEATURES: any; ENV: any };\n}\n\nexport interface TemplateCompilerParams {\n // this should be the exports object from ember-template-compiler.js. It's\n // \"unknown\" here because it changes shape in different ember versions, we\n // will do our best to consume it.\n loadEmberTemplateCompiler: () => { theExports: unknown; cacheKey: string };\n resolver?: Resolver;\n EmberENV: unknown;\n plugins: Plugins;\n}\n\nexport class TemplateCompiler {\n private loadEmberTemplateCompiler: () => { theExports: unknown; cacheKey: string };\n private resolver?: Resolver;\n private EmberENV: unknown;\n private plugins: Plugins;\n\n constructor(params: TemplateCompilerParams) {\n this.loadEmberTemplateCompiler = params.loadEmberTemplateCompiler;\n this.resolver = params.resolver;\n this.EmberENV = params.EmberENV;\n this.plugins = params.plugins;\n }\n\n private get syntax(): GlimmerSyntax {\n return this.setup().syntax;\n }\n\n get cacheKey(): string {\n return this.setup().cacheKey;\n }\n\n @Memoize()\n private setup() {\n let { theExports, cacheKey } = this.loadEmberTemplateCompiler();\n let syntax = loadGlimmerSyntax(theExports);\n initializeEmberENV(syntax, this.EmberENV);\n // todo: get resolver reflected in cacheKey\n return { syntax, cacheKey };\n }\n\n @Memoize()\n private getReversedASTPlugins(ast: unknown[]): unknown[] {\n return ast.slice().reverse();\n }\n\n // Compiles to the wire format plus dependency list.\n precompile(\n templateSource: string,\n options: Record<string, unknown> & { filename: string }\n ): { compiled: string; dependencies: ResolvedDep[] } {\n let dependencies: ResolvedDep[];\n let runtimeName: string;\n let filename: string = options.filename;\n\n if (this.resolver) {\n runtimeName = this.resolver.absPathToRuntimePath(filename);\n } else {\n runtimeName = filename;\n }\n\n let opts = this.syntax.defaultOptions({ contents: templateSource, moduleName: filename });\n let plugins: Plugins = {\n ...opts?.plugins,\n\n ast: [\n ...this.getReversedASTPlugins(this.plugins.ast!),\n this.resolver && this.resolver.astTransformer(this),\n\n // Ember 3.27+ uses _buildCompileOptions will not add AST plugins to its result\n ...(opts?.plugins?.ast ?? []),\n ].filter(Boolean),\n };\n\n let compiled = this.syntax.precompile(stripBom(templateSource), {\n contents: templateSource,\n moduleName: runtimeName,\n plugins,\n ...options,\n });\n\n if (this.resolver) {\n dependencies = this.resolver.dependenciesOf(filename);\n } else {\n dependencies = [];\n }\n\n return { compiled, dependencies };\n }\n\n // Applies all custom AST transforms and emits the results still as\n // handlebars.\n applyTransforms(moduleName: string, contents: string): string {\n let opts = this.syntax.defaultOptions({ contents, moduleName });\n\n // the user-provided plugins come first in the list, and those are the\n // only ones we want to run. The built-in plugins don't need to run here\n // in stage1, it's better that they run in stage3 when the appropriate\n // ember version is in charge.\n //\n // rather than slicing them off, we could choose instead to not call\n // syntax.defaultOptions, but then we lose some of the compatibility\n // normalization that it does on the user-provided plugins.\n opts.plugins = opts.plugins || {}; // Ember 3.27+ won't add opts.plugins\n opts.plugins.ast = this.getReversedASTPlugins(this.plugins.ast!).map(plugin => {\n // Although the precompile API does, this direct glimmer syntax api\n // does not support these legacy plugins, so we must wrap them.\n return wrapLegacyHbsPluginIfNeeded(plugin as any);\n });\n\n // instructs glimmer-vm to preserve entity encodings (e.g. don't parse &nbsp; -> ' ')\n opts.mode = 'codemod';\n\n opts.filename = moduleName;\n opts.moduleName = this.resolver ? this.resolver.absPathToRuntimePath(moduleName) || moduleName : moduleName;\n let ast = this.syntax.preprocess(contents, opts);\n\n return this.syntax.print(ast, { entityEncoding: 'raw' });\n }\n\n parse(moduleName: string, contents: string): AST {\n // this is just a parse, so we deliberately don't run any plugins.\n let opts = { contents, moduleName, plugins: {} };\n return this.syntax.preprocess(contents, opts);\n }\n\n baseDir() {\n return join(__dirname, '..');\n }\n}\n\n// this matches the setup done by ember-cli-htmlbars: https://git.io/JtbN6\nfunction initializeEmberENV(syntax: GlimmerSyntax, EmberENV: any) {\n if (!EmberENV) {\n return;\n }\n\n let props;\n\n if (EmberENV.FEATURES) {\n props = Object.keys(EmberENV.FEATURES);\n props.forEach(prop => {\n syntax._Ember.FEATURES[prop] = EmberENV.FEATURES[prop];\n });\n }\n\n if (EmberENV) {\n props = Object.keys(EmberENV);\n props.forEach(prop => {\n if (prop === 'FEATURES') {\n return;\n }\n syntax._Ember.ENV[prop] = EmberENV[prop];\n });\n }\n}\n\n// we could directly depend on @glimmer/syntax and have nice types and\n// everything. But the problem is, we really want to use the exact version that\n// the app itself is using, and its copy is bundled away inside\n// ember-template-compiler.js.\nfunction loadGlimmerSyntax(emberTemplateCompilerExports: any): GlimmerSyntax {\n // detect if we are using an Ember version with the exports we need\n // (from https://github.com/emberjs/ember.js/pull/19426)\n if (emberTemplateCompilerExports._preprocess !== undefined) {\n return {\n print: emberTemplateCompilerExports._print,\n preprocess: emberTemplateCompilerExports._preprocess,\n defaultOptions: emberTemplateCompilerExports._buildCompileOptions,\n precompile: emberTemplateCompilerExports.precompile,\n _Ember: emberTemplateCompilerExports._Ember,\n };\n } else {\n // Older Ember versions (prior to 3.27) do not expose a public way to to source 2 source compilation of templates.\n // because of this, we must resort to some hackery.\n //\n // We use the following API's (that we grab from Ember.__loader):\n //\n // * glimmer/syntax's preprocess\n // * glimmer/syntax's print\n // * ember-template-compiler/lib/system/compile-options's defaultOptions\n let syntax = (emberTemplateCompilerExports.Ember ?? emberTemplateCompilerExports._Ember).__loader.require(\n '@glimmer/syntax'\n );\n let compilerOptions = (emberTemplateCompilerExports.Ember ?? emberTemplateCompilerExports._Ember).__loader.require(\n 'ember-template-compiler/lib/system/compile-options'\n );\n\n return {\n print: syntax.print,\n preprocess: syntax.preprocess,\n defaultOptions: compilerOptions.default,\n precompile: emberTemplateCompilerExports.precompile,\n _Ember: emberTemplateCompilerExports._Ember,\n };\n }\n}\n"]}
@@ -1,17 +0,0 @@
1
- import { Resolver } from './resolver';
2
- import { PluginItem } from '@babel/core';
3
- import { Plugins } from './ember-template-compiler-types';
4
- import { TemplateCompiler } from './template-compiler-common';
5
- export interface NodeTemplateCompilerParams {
6
- compilerPath: string;
7
- compilerChecksum: string;
8
- resolver?: Resolver;
9
- EmberENV: unknown;
10
- plugins: Plugins;
11
- }
12
- export declare class NodeTemplateCompiler extends TemplateCompiler {
13
- params: NodeTemplateCompilerParams;
14
- constructor(params: NodeTemplateCompilerParams);
15
- inlineTransformsBabelPlugin(): PluginItem;
16
- baseDir(): string;
17
- }
@@ -1,32 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NodeTemplateCompiler = void 0;
4
- const path_1 = require("path");
5
- const load_ember_template_compiler_1 = require("./load-ember-template-compiler");
6
- const template_compiler_common_1 = require("./template-compiler-common");
7
- class NodeTemplateCompiler extends template_compiler_common_1.TemplateCompiler {
8
- constructor(params) {
9
- super({
10
- loadEmberTemplateCompiler: () => (0, load_ember_template_compiler_1.getEmberExports)(params.compilerPath),
11
- resolver: params.resolver,
12
- EmberENV: params.EmberENV,
13
- plugins: params.plugins,
14
- });
15
- this.params = params;
16
- }
17
- // Use applyTransforms on the contents of inline hbs template strings inside
18
- // Javascript.
19
- inlineTransformsBabelPlugin() {
20
- return [
21
- (0, path_1.join)(__dirname, 'babel-plugin-stage1-inline-hbs-node.js'),
22
- {
23
- templateCompiler: this.params,
24
- },
25
- ];
26
- }
27
- baseDir() {
28
- return (0, path_1.join)(__dirname, '..');
29
- }
30
- }
31
- exports.NodeTemplateCompiler = NodeTemplateCompiler;
32
- //# sourceMappingURL=template-compiler-node.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"template-compiler-node.js","sourceRoot":"","sources":["template-compiler-node.ts"],"names":[],"mappings":";;;AACA,+BAA4B;AAI5B,iFAAiE;AACjE,yEAA8D;AAU9D,MAAa,oBAAqB,SAAQ,2CAAgB;IACxD,YAAmB,MAAkC;QACnD,KAAK,CAAC;YACJ,yBAAyB,EAAE,GAAG,EAAE,CAAC,IAAA,8CAAe,EAAC,MAAM,CAAC,YAAY,CAAC;YACrE,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC,CAAC;QANc,WAAM,GAAN,MAAM,CAA4B;IAOrD,CAAC;IAED,4EAA4E;IAC5E,cAAc;IACd,2BAA2B;QACzB,OAAO;YACL,IAAA,WAAI,EAAC,SAAS,EAAE,wCAAwC,CAAC;YACzD;gBACE,gBAAgB,EAAE,IAAI,CAAC,MAAM;aACT;SACvB,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,IAAA,WAAI,EAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC/B,CAAC;CACF;AAxBD,oDAwBC","sourcesContent":["import { Resolver } from './resolver';\nimport { join } from 'path';\nimport { PluginItem } from '@babel/core';\nimport type { Params as InlineBabelParams } from './babel-plugin-stage1-inline-hbs-node';\nimport { Plugins } from './ember-template-compiler-types';\nimport { getEmberExports } from './load-ember-template-compiler';\nimport { TemplateCompiler } from './template-compiler-common';\n\nexport interface NodeTemplateCompilerParams {\n compilerPath: string;\n compilerChecksum: string;\n resolver?: Resolver;\n EmberENV: unknown;\n plugins: Plugins;\n}\n\nexport class NodeTemplateCompiler extends TemplateCompiler {\n constructor(public params: NodeTemplateCompilerParams) {\n super({\n loadEmberTemplateCompiler: () => getEmberExports(params.compilerPath),\n resolver: params.resolver,\n EmberENV: params.EmberENV,\n plugins: params.plugins,\n });\n }\n\n // Use applyTransforms on the contents of inline hbs template strings inside\n // Javascript.\n inlineTransformsBabelPlugin(): PluginItem {\n return [\n join(__dirname, 'babel-plugin-stage1-inline-hbs-node.js'),\n {\n templateCompiler: this.params,\n } as InlineBabelParams,\n ];\n }\n\n baseDir() {\n return join(__dirname, '..');\n }\n}\n"]}
@@ -1,6 +0,0 @@
1
- import { PortableHint } from './portable';
2
- import type { NodeTemplateCompilerParams } from './template-compiler-node';
3
- export declare function templateCompilerModule(params: NodeTemplateCompilerParams, hints: PortableHint[]): {
4
- src: string;
5
- isParallelSafe: boolean;
6
- };
@@ -1,24 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.templateCompilerModule = void 0;
7
- const path_1 = require("path");
8
- const portable_1 = require("./portable");
9
- const js_string_escape_1 = __importDefault(require("js-string-escape"));
10
- function templateCompilerModule(params, hints) {
11
- let p = new portable_1.Portable({ hints });
12
- let result = p.dehydrate(params);
13
- return {
14
- src: [
15
- `const { NodeTemplateCompiler } = require("${(0, js_string_escape_1.default)((0, path_1.resolve)(__dirname, './template-compiler-node.js'))}");`,
16
- `const { Portable } = require("${(0, js_string_escape_1.default)((0, path_1.resolve)(__dirname, './portable.js'))}");`,
17
- `let p = new Portable({ hints: ${JSON.stringify(hints, null, 2)} });`,
18
- `module.exports = new NodeTemplateCompiler(p.hydrate(${JSON.stringify(result.value, null, 2)}))`,
19
- ].join('\n'),
20
- isParallelSafe: result.isParallelSafe,
21
- };
22
- }
23
- exports.templateCompilerModule = templateCompilerModule;
24
- //# sourceMappingURL=write-template-compiler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"write-template-compiler.js","sourceRoot":"","sources":["write-template-compiler.ts"],"names":[],"mappings":";;;;;;AAAA,+BAA+B;AAC/B,yCAAoD;AAEpD,wEAA8C;AAE9C,SAAgB,sBAAsB,CAAC,MAAkC,EAAE,KAAqB;IAC9F,IAAI,CAAC,GAAG,IAAI,mBAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAChC,IAAI,MAAM,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACjC,OAAO;QACL,GAAG,EAAE;YACH,6CAA6C,IAAA,0BAAc,EACzD,IAAA,cAAO,EAAC,SAAS,EAAE,6BAA6B,CAAC,CAClD,KAAK;YACN,iCAAiC,IAAA,0BAAc,EAAC,IAAA,cAAO,EAAC,SAAS,EAAE,eAAe,CAAC,CAAC,KAAK;YACzF,iCAAiC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM;YACrE,uDAAuD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI;SACjG,CAAC,IAAI,CAAC,IAAI,CAAC;QACZ,cAAc,EAAE,MAAM,CAAC,cAAc;KACtC,CAAC;AACJ,CAAC;AAdD,wDAcC","sourcesContent":["import { resolve } from 'path';\nimport { Portable, PortableHint } from './portable';\nimport type { NodeTemplateCompilerParams } from './template-compiler-node';\nimport jsStringEscape from 'js-string-escape';\n\nexport function templateCompilerModule(params: NodeTemplateCompilerParams, hints: PortableHint[]) {\n let p = new Portable({ hints });\n let result = p.dehydrate(params);\n return {\n src: [\n `const { NodeTemplateCompiler } = require(\"${jsStringEscape(\n resolve(__dirname, './template-compiler-node.js')\n )}\");`,\n `const { Portable } = require(\"${jsStringEscape(resolve(__dirname, './portable.js'))}\");`,\n `let p = new Portable({ hints: ${JSON.stringify(hints, null, 2)} });`,\n `module.exports = new NodeTemplateCompiler(p.hydrate(${JSON.stringify(result.value, null, 2)}))`,\n ].join('\\n'),\n isParallelSafe: result.isParallelSafe,\n };\n}\n"]}