diff --git a/package.json b/package.json index f0b5244e8c..fb64458a76 100644 --- a/package.json +++ b/package.json @@ -91,7 +91,6 @@ "commander": "8", "core-js": "^3.6.5", "ember-template-recast": "^6.1.4", - "ember-template-tag": "^2.3.16", "emoji-regex": "^10.2.1", "eslint": "7 || 8", "fast-glob": "^3.2.7", @@ -175,6 +174,7 @@ "author": "Seth Bertalotto ", "dependencies": { "@swc/helpers": "^0.5.1", + "content-tag": "^2.0.1", "jest-cli": "^29.5.0", "jest-junit": "^16.0.0", "magic-string": "^0.30.0" diff --git a/packages/cli-lib/BUILD b/packages/cli-lib/BUILD index 5e5d4d5b90..501d674237 100644 --- a/packages/cli-lib/BUILD +++ b/packages/cli-lib/BUILD @@ -40,7 +40,7 @@ GLIMMER_HBS_DEPS = [ "//:node_modules/@glimmer/reference", "//:node_modules/@glimmer/syntax", "//:node_modules/@glimmer/validator", - "//:node_modules/ember-template-tag", + "//:node_modules/content-tag", "//:node_modules/ember-template-recast", ":node_modules/@babel/parser", ] diff --git a/packages/cli-lib/package.json b/packages/cli-lib/package.json index cdab1be1b6..2932876a6f 100644 --- a/packages/cli-lib/package.json +++ b/packages/cli-lib/package.json @@ -31,9 +31,9 @@ "url": "https://github.com/formatjs/formatjs/issues" }, "dependencies": { + "@babel/parser": "^7.22.10", "@formatjs/icu-messageformat-parser": "workspace:*", "@formatjs/ts-transformer": "workspace:*", - "@babel/parser": "^7.22.10", "@glimmer/env": "^0.1.7", "@glimmer/reference": "^0.89.0", "@glimmer/syntax": "^0.89.0", @@ -45,7 +45,6 @@ "chalk": "^4.0.0", "commander": "8", "ember-template-recast": "^6.1.4", - "ember-template-tag": "^2.3.16", "fast-glob": "^3.2.7", "fs-extra": "10", "json-stable-stringify": "^1.0.1", diff --git a/packages/cli-lib/src/gts_extractor.ts b/packages/cli-lib/src/gts_extractor.ts index 8f6e368eba..6a39f823e5 100644 --- a/packages/cli-lib/src/gts_extractor.ts +++ b/packages/cli-lib/src/gts_extractor.ts @@ -1,19 +1,26 @@ -// @ts-ignore -import {transform, parseTemplates} from 'ember-template-tag' -import {parseFile as parseHbsFile} from './hbs_extractor' -import {parseScript} from './parse_script' +import { parseFile as parseHbsFile } from './hbs_extractor' +import { parseScript } from './parse_script' +// We can't use an import here because the gts_extractor.ts file +// is FAKE TS -- in that it's actually CJS. +// +// So we have to use require because content-tag is a real type=module package +// and we need TypeScript to recognize that it has to choose the node/require +// condition of package.json#exports +// https://github.com/embroider-build/content-tag/blob/main/package.json#L18 +let { Preprocessor } = require('content-tag'); +let p = new Preprocessor(); export function parseFile(source: string, fileName: string, options: any) { const scriptParseFn = parseScript(options, fileName) - const {output: transformedSource} = transform({ - input: source, - relativePath: '', - }) + const transformedSource = p.process(source, { filename: fileName }) scriptParseFn(transformedSource) // extract template from transformed source to then run through hbs processor - const [templateSource] = parseTemplates(source, '') + const parseResult = p.parse(source, { filename: fileName }); + + for (let parsed of parseResult) { + parseHbsFile(parsed.contents, fileName, options) + } - parseHbsFile(templateSource.contents, fileName, options) } diff --git a/packages/cli-lib/tests/unit/__snapshots__/gts_extractor.test.ts.snap b/packages/cli-lib/tests/unit/__snapshots__/gts_extractor.test.ts.snap index f6ec09340d..5c0897dce7 100644 --- a/packages/cli-lib/tests/unit/__snapshots__/gts_extractor.test.ts.snap +++ b/packages/cli-lib/tests/unit/__snapshots__/gts_extractor.test.ts.snap @@ -6,6 +6,11 @@ exports[`gts_extractor 1`] = ` "defaultMessage": "in gjs file", "id": "YCDlzq", }, + { + "defaultMessage": "hello", + "description": undefined, + "id": "m3HSJL", + }, { "defaultMessage": "in template", "description": "in template desc", diff --git a/packages/cli-lib/tests/unit/fixtures/comp.gts b/packages/cli-lib/tests/unit/fixtures/comp.gts index 9ad95399f9..04f205f7dd 100644 --- a/packages/cli-lib/tests/unit/fixtures/comp.gts +++ b/packages/cli-lib/tests/unit/fixtures/comp.gts @@ -3,6 +3,10 @@ import or from 'ember-truth-helpers/helpers/or'; import Component from '@glimmer/component'; import {service} from '@ember/service'; +const Header = ; + export default class Comp extends Component { @service intl; @@ -13,6 +17,7 @@ export default class Comp extends Component { }