Skip to content

Commit e5e6d25

Browse files
chadhietalakrisselden
authored andcommitted
[CLEANUP] Split template compiler (#13539)
* [CLEANUP] Split template compiler * Fix registerPlugin mutability and removes more deprecated transforms
1 parent 5a66563 commit e5e6d25

File tree

112 files changed

+569
-929
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

112 files changed

+569
-929
lines changed

lib/packages.js

Lines changed: 42 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -3,28 +3,38 @@ var featuresJson = fs.readFileSync('./features.json', { encoding: 'utf8' });
33
var features = JSON.parse(featuresJson).features;
44

55
var packages = {
6-
'container': {trees: null, requirements: []},
7-
'ember-environment': {trees: null, requirements: [], skipTests: true},
8-
'ember-console': {trees: null, requirements: [], skipTests: true},
9-
'ember-metal': {trees: null, requirements: ['ember-environment'], vendorRequirements: ['backburner']},
10-
'ember-debug': {trees: null, requirements: ['ember-metal'], testing: true},
11-
'ember-runtime': {trees: null, vendorRequirements: ['rsvp'], requirements: ['container', 'ember-environment', 'ember-console', 'ember-metal']},
12-
'ember-views': {trees: null, requirements: ['ember-runtime']},
13-
'ember-extension-support': {trees: null, requirements: ['ember-application']},
14-
'ember-testing': {trees: null, requirements: ['ember-application', 'ember-routing'], testing: true},
15-
'ember-template-compiler': {trees: null, requirements: ['ember-metal', 'ember-environment', 'ember-console'], vendorRequirements: ['htmlbars-runtime'], templateCompilerVendor: ['simple-html-tokenizer', 'morph-range', 'htmlbars-runtime', 'htmlbars-util', 'htmlbars-compiler', 'htmlbars-syntax', 'htmlbars-test-helpers', 'backburner']},
6+
'container': { trees: null, requirements: [] },
7+
'ember-environment': { trees: null, requirements: [], skipTests: true },
8+
'ember-console': { trees: null, requirements: [], skipTests: true },
9+
'ember-metal': { trees: null, requirements: ['ember-environment'], vendorRequirements: ['backburner'] },
10+
'ember-debug': { trees: null, requirements: ['ember-metal'], testing: true },
11+
'ember-runtime': { trees: null, vendorRequirements: ['rsvp'], requirements: ['container', 'ember-environment', 'ember-console', 'ember-metal'] },
12+
'ember-views': { trees: null, requirements: ['ember-runtime'] },
13+
'ember-extension-support': { trees: null, requirements: ['ember-application'] },
14+
'ember-testing': { trees: null, requirements: ['ember-application', 'ember-routing'], testing: true },
15+
'ember-template-compiler': {
16+
trees: null,
17+
requirements: ['ember-metal', 'ember-environment', 'ember-console', 'ember-htmlbars-template-compiler'],
18+
templateCompilerVendor: ['simple-html-tokenizer']
19+
},
20+
'ember-htmlbars-template-compiler': {
21+
trees: null,
22+
requirements: [],
23+
vendorRequirements: ['htmlbars-runtime'],
24+
templateCompilerVendor: ['htmlbars-runtime', 'htmlbars-util', 'htmlbars-compiler', 'htmlbars-syntax', 'htmlbars-test-helpers', 'morph-range', 'backburner']
25+
},
1626
'ember-htmlbars': {
1727
trees: null,
1828
vendorRequirements: ['dom-helper', 'morph-range', 'morph-attr', 'htmlbars-util', 'htmlbars-runtime'],
1929
requirements: ['ember-routing', 'ember-metal'],
20-
testingVendorRequirements: [ 'htmlbars-test-helpers'],
30+
testingVendorRequirements: ['htmlbars-test-helpers'],
2131
hasTemplates: true
2232
},
23-
'ember-templates': {trees: null, requirements: ['ember-metal', 'ember-environment']},
24-
'ember-routing': {trees: null, vendorRequirements: ['router', 'route-recognizer'],
25-
requirements: ['ember-runtime', 'ember-views']},
26-
'ember-application': {trees: null, vendorRequirements: ['dag-map'], requirements: ['ember-routing']},
27-
'ember': {trees: null, requirements: ['ember-application']}
33+
'ember-templates': { trees: null, requirements: ['ember-metal', 'ember-environment'] },
34+
'ember-routing': { trees: null, vendorRequirements: ['router', 'route-recognizer'],
35+
requirements: ['ember-runtime', 'ember-views'] },
36+
'ember-application': { trees: null, vendorRequirements: ['dag-map'], requirements: ['ember-routing'] },
37+
'ember': { trees: null, requirements: ['ember-application'] }
2838
};
2939

3040
var glimmerStatus = features['ember-glimmer'];
@@ -40,18 +50,24 @@ if (glimmerStatus === null || glimmerStatus === true) {
4050
'glimmer-util',
4151
'glimmer-wire-format'
4252
],
43-
testingVendorRequirements: [],
44-
hasTemplates: true
53+
testingVendorRequirements: []
54+
};
55+
56+
packages['ember-glimmer-template-compiler'] = {
57+
trees: null,
58+
requirements: [],
59+
templateCompilerVendor: [
60+
'glimmer-wire-format',
61+
'glimmer-syntax',
62+
'glimmer-util',
63+
'glimmer-compiler',
64+
'glimmer-reference',
65+
'glimmer-runtime',
66+
'handlebars'
67+
]
4568
};
4669

47-
var templateCompiler = packages['ember-template-compiler'];
48-
templateCompiler.templateCompilerVendor.push('glimmer-wire-format');
49-
templateCompiler.templateCompilerVendor.push('glimmer-syntax');
50-
templateCompiler.templateCompilerVendor.push('glimmer-util');
51-
templateCompiler.templateCompilerVendor.push('glimmer-compiler');
52-
templateCompiler.templateCompilerVendor.push('glimmer-reference');
53-
templateCompiler.templateCompilerVendor.push('glimmer-runtime');
54-
templateCompiler.templateCompilerVendor.push('handlebars');
70+
packages['ember-template-compiler'].requirements.push('ember-glimmer-template-compiler');
5571
}
5672

5773
module.exports = packages;

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
"ember-cli-sauce": "^1.4.2",
3535
"ember-cli-yuidoc": "0.8.3",
3636
"ember-publisher": "0.0.7",
37-
"emberjs-build": "0.9.2",
37+
"emberjs-build": "0.10.0",
3838
"express": "^4.5.0",
3939
"finalhandler": "^0.4.0",
4040
"github": "^0.2.3",

packages/ember-application/tests/system/application_test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import EmberObject from 'ember-runtime/system/object';
1414
import { setSearchDisabled as setNamespaceSearchDisabled } from 'ember-runtime/system/namespace';
1515
import EmberRoute from 'ember-routing/system/route';
1616
import jQuery from 'ember-views/system/jquery';
17-
import compile from 'ember-template-compiler/system/compile';
17+
import { compile } from 'ember-template-compiler/tests/utils/helpers';
1818
import { _loaded } from 'ember-runtime/system/lazy_load';
1919
import { getDebugFunction, setDebugFunction } from 'ember-metal/debug';
2020
import { setTemplates, set as setTemplate } from 'ember-templates/template_registry';

packages/ember-application/tests/system/dependency_injection/custom_resolver_test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import jQuery from 'ember-views/system/jquery';
22
import run from 'ember-metal/run_loop';
33
import Application from 'ember-application/system/application';
44
import DefaultResolver from 'ember-application/system/resolver';
5-
import compile from 'ember-template-compiler/system/compile';
5+
import { compile } from 'ember-template-compiler/tests/utils/helpers';
66

77
var application;
88

packages/ember-application/tests/system/logging_test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import View from 'ember-views/views/view';
77
import Controller from 'ember-runtime/controllers/controller';
88
import Route from 'ember-routing/system/route';
99
import RSVP from 'ember-runtime/ext/rsvp';
10-
import compile from 'ember-template-compiler/system/compile';
10+
import { compile } from 'ember-template-compiler/tests/utils/helpers';
1111

1212
import 'ember-routing';
1313

packages/ember-application/tests/system/visit_test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import Route from 'ember-routing/system/route';
88
import Router from 'ember-routing/system/router';
99
import View from 'ember-views/views/view';
1010
import Component from 'ember-htmlbars/component';
11-
import compile from 'ember-template-compiler/system/compile';
11+
import { compile } from 'ember-template-compiler/tests/utils/helpers';
1212
import jQuery from 'ember-views/system/jquery';
1313

1414
let App = null;
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
export { default as compile } from './system/compile';
2+
export { default as precompile } from './system/precompile';
3+
export { default as template } from './system/template';
4+
export { registerPlugin } from './system/compile-options';
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
import TransformHasBlockSyntax from '../plugins/transform-has-block-syntax';
2+
import TransformActionSyntax from '../plugins/transform-action-syntax';
3+
import assign from 'ember-metal/assign';
4+
5+
export const PLUGINS = [
6+
TransformHasBlockSyntax,
7+
TransformActionSyntax
8+
];
9+
10+
let USER_PLUGINS = [];
11+
12+
export default function compileOptions(options) {
13+
options = options || {};
14+
options = assign({}, options);
15+
if (!options.plugins) {
16+
options.plugins = PLUGINS;
17+
} else {
18+
let potententialPugins = [...USER_PLUGINS, ...PLUGINS];
19+
let pluginsToAdd = potententialPugins.filter((plugin) => {
20+
return options.plugins.ast.indexOf(plugin) === -1;
21+
});
22+
options.plugins.ast = options.plugins.ast.slice().concat(pluginsToAdd);
23+
}
24+
25+
return options;
26+
}
27+
28+
export function registerPlugin(type, PluginClass) {
29+
if (type !== 'ast') {
30+
throw new Error(`Attempting to register ${PluginClass} as "${type}" which is not a valid Glimmer plugin type.`);
31+
}
32+
33+
if (USER_PLUGINS.indexOf(PluginClass) === -1) {
34+
USER_PLUGINS = [PluginClass, ...USER_PLUGINS];
35+
}
36+
}
37+
38+
export function removePlugin(type, PluginClass) {
39+
if (type !== 'ast') {
40+
throw new Error(`Attempting to unregister ${PluginClass} as "${type}" which is not a valid Glimmer plugin type.`);
41+
}
42+
43+
USER_PLUGINS = USER_PLUGINS.filter((plugin) => plugin !== PluginClass);
44+
}

0 commit comments

Comments
 (0)