ember-repl 3.0.0-beta.0 → 3.0.0-beta.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.
Files changed (38) hide show
  1. package/README.md +176 -42
  2. package/dist/browser/compile/formats.d.ts +16 -0
  3. package/dist/browser/compile/formats.js +170 -0
  4. package/dist/browser/compile/formats.js.map +1 -0
  5. package/dist/browser/compile/index.d.ts +33 -0
  6. package/dist/browser/compile/index.js +90 -0
  7. package/dist/browser/compile/index.js.map +1 -0
  8. package/dist/browser/compile/markdown-to-ember.d.ts +18 -0
  9. package/dist/browser/compile/markdown-to-ember.js +237 -0
  10. package/dist/browser/compile/markdown-to-ember.js.map +1 -0
  11. package/dist/browser/compile/types.d.ts +7 -0
  12. package/dist/browser/compile/types.js +2 -0
  13. package/dist/browser/compile/types.js.map +1 -0
  14. package/dist/browser/eti/preprocess.js +0 -1
  15. package/dist/browser/eti/preprocess.js.map +1 -1
  16. package/dist/browser/hbs.d.ts +5 -2
  17. package/dist/browser/hbs.js +2 -5
  18. package/dist/browser/hbs.js.map +1 -1
  19. package/dist/browser/index.d.ts +1 -0
  20. package/dist/browser/index.js +1 -0
  21. package/dist/browser/index.js.map +1 -1
  22. package/dist/browser/known-modules.d.ts +0 -2
  23. package/dist/browser/known-modules.js +0 -2
  24. package/dist/browser/known-modules.js.map +1 -1
  25. package/dist/browser/types.d.ts +4 -0
  26. package/dist/test-support/index.d.ts +2 -0
  27. package/dist/test-support/index.js +8 -0
  28. package/dist/test-support/index.js.map +1 -0
  29. package/package.json +37 -13
  30. package/src/browser/compile/formats.ts +170 -0
  31. package/src/browser/compile/index.ts +132 -0
  32. package/src/browser/compile/markdown-to-ember.ts +318 -0
  33. package/src/browser/compile/types.ts +7 -0
  34. package/src/browser/hbs.ts +7 -7
  35. package/src/browser/index.ts +1 -0
  36. package/src/browser/known-modules.ts +0 -2
  37. package/src/browser/types.ts +4 -0
  38. package/src/test-support/index.ts +5 -0
@@ -0,0 +1,237 @@
1
+ import rehypeRaw from 'rehype-raw';
2
+ import rehypeStringify from 'rehype-stringify';
3
+ import remarkParse from 'remark-parse';
4
+ import remarkRehype from 'remark-rehype';
5
+ import { unified } from 'unified';
6
+ import { visit } from 'unist-util-visit';
7
+ import { nameFor, invocationOf } from '../utils.js';
8
+
9
+ const GLIMDOWN_PREVIEW = Symbol('__GLIMDOWN_PREVIEW__');
10
+ const GLIMDOWN_RENDER = Symbol('__GLIMDOWN_RENDER__');
11
+ const ALLOWED_LANGUAGES = ['gjs', 'hbs'];
12
+ const escapeCurlies = node => {
13
+ if ('value' in node && node.value) {
14
+ node.value = node.value.replace(/{{/g, '\\{{');
15
+ }
16
+ if ('children' in node && node.children) {
17
+ node.children.forEach(child => escapeCurlies(child));
18
+ }
19
+ if (!node.data) {
20
+ return;
21
+ }
22
+ if ('hChildren' in node.data && Array.isArray(node.data['hChildren'])) {
23
+ node.data['hChildren'].forEach(escapeCurlies);
24
+ return;
25
+ }
26
+ };
27
+ function isLive(meta) {
28
+ return meta.includes('live');
29
+ }
30
+ function isPreview(meta) {
31
+ return meta.includes('preview');
32
+ }
33
+ function isBelow(meta) {
34
+ return meta.includes('below');
35
+ }
36
+
37
+ // TODO: extract and publish remark plugin
38
+ function liveCodeExtraction(options = {}) {
39
+ let {
40
+ copyComponent,
41
+ snippets,
42
+ demo
43
+ } = options;
44
+ let {
45
+ classList: snippetClasses
46
+ } = snippets || {};
47
+ let {
48
+ classList: demoClasses
49
+ } = demo || {};
50
+ snippetClasses ??= [];
51
+ demoClasses ??= [];
52
+ function isRelevantCode(node) {
53
+ if (node.type !== 'code') return false;
54
+ let {
55
+ meta,
56
+ lang
57
+ } = node;
58
+ meta = meta?.trim();
59
+ if (!meta || !lang) return false;
60
+ if (!meta.includes('live')) {
61
+ return false;
62
+ }
63
+ if (!ALLOWED_LANGUAGES.includes(lang)) return false;
64
+ return true;
65
+ }
66
+ let copyNode = {
67
+ type: 'html',
68
+ value: copyComponent
69
+ };
70
+ function enhance(code) {
71
+ code.data ??= {};
72
+ code.data['hProperties'] ??= {};
73
+ // This is secret-to-us-only API, so we don't really care about the type
74
+ code.data['hProperties'][GLIMDOWN_PREVIEW] = true;
75
+ return {
76
+ data: {
77
+ hProperties: {
78
+ className: snippetClasses
79
+ }
80
+ },
81
+ type: 'div',
82
+ hProperties: {
83
+ className: snippetClasses
84
+ },
85
+ children: [code, copyNode]
86
+ };
87
+ }
88
+ function flatReplaceAt(array, index, replacement) {
89
+ array.splice(index, 1, ...replacement);
90
+ }
91
+
92
+ // because we mutate the tree as we iterate,
93
+ // we need to make sure we don't loop forever
94
+ const seen = new Set();
95
+ return function transformer(tree, file) {
96
+ visit(tree, ['code'], function (node, index, parent) {
97
+ if (parent === null) return;
98
+ if (index === null) return;
99
+ if (!isRelevantCode(node)) {
100
+ let enhanced = enhance(node);
101
+ parent.children[index] = enhanced;
102
+ return 'skip';
103
+ }
104
+ if (seen.has(node)) return 'skip';
105
+ seen.add(node);
106
+ let {
107
+ meta,
108
+ lang,
109
+ value
110
+ } = node;
111
+ if (!meta) return 'skip';
112
+ if (!lang) return 'skip';
113
+ file.data.liveCode ??= [];
114
+ let code = value.trim();
115
+ let name = nameFor(code);
116
+ let invocation = invocationOf(name);
117
+ let shadow = options.shadowComponent;
118
+ let wrapInShadow = shadow && !meta?.includes('no-shadow');
119
+ if (wrapInShadow) {
120
+ invocation = `<${shadow}>${invocation}</${shadow}>`;
121
+ }
122
+ let invokeNode = {
123
+ type: 'html',
124
+ data: {
125
+ hProperties: {
126
+ [GLIMDOWN_RENDER]: true
127
+ }
128
+ },
129
+ value: `<div class="${demoClasses}">${invocation}</div>`
130
+ };
131
+ let wrapper = enhance(node);
132
+ file.data.liveCode.push({
133
+ lang,
134
+ name,
135
+ code
136
+ });
137
+ let live = isLive(meta);
138
+ let preview = isPreview(meta);
139
+ let below = isBelow(meta);
140
+ if (live && preview && below) {
141
+ flatReplaceAt(parent.children, index, [wrapper, invokeNode]);
142
+ return 'skip';
143
+ }
144
+ if (live && preview) {
145
+ flatReplaceAt(parent.children, index, [invokeNode, wrapper]);
146
+ return 'skip';
147
+ }
148
+ if (live) {
149
+ parent.children[index] = invokeNode;
150
+ return 'skip';
151
+ }
152
+ parent.children[index] = wrapper;
153
+ return;
154
+ });
155
+ };
156
+ }
157
+ function buildCompiler(options) {
158
+ return unified()
159
+ // .use(markdown)
160
+ .use(remarkParse)
161
+ // TODO: we only want to do this when we have pre > code.
162
+ // code can exist inline.
163
+ .use(liveCodeExtraction, {
164
+ snippets: {
165
+ classList: ['glimdown-snippet', 'relative']
166
+ },
167
+ demo: {
168
+ classList: ['glimdown-render']
169
+ },
170
+ copyComponent: options?.CopyComponent,
171
+ shadowComponent: options?.ShadowComponent
172
+ })
173
+ // .use(() => (tree) => visit(tree, (node) => console.log('i', node)))
174
+ // remark rehype is needed to convert markdown to HTML
175
+ // However, it also changes all the nodes, so we need another pass
176
+ // to make sure our Glimmer-aware nodes are in tact
177
+ .use(remarkRehype, {
178
+ allowDangerousHtml: true
179
+ })
180
+ // Convert invocables to raw format, so Glimmer can invoke them
181
+ .use(() => tree => {
182
+ visit(tree, function (node) {
183
+ // We rely on an implicit transformation of data.hProperties => properties
184
+ let properties = node.properties;
185
+ if (properties?.[GLIMDOWN_PREVIEW]) {
186
+ // Have to sanitize anything Glimmer could try to render
187
+ escapeCurlies(node);
188
+ return 'skip';
189
+ }
190
+ if (node.type === 'element' || 'tagName' in node && node.tagName === 'code') {
191
+ if (properties?.[GLIMDOWN_RENDER]) {
192
+ node.type = 'glimmer_raw';
193
+ return;
194
+ }
195
+ escapeCurlies(node);
196
+ return 'skip';
197
+ }
198
+ if (node.type === 'text' || node.type === 'raw') {
199
+ // definitively not the better way, but this is supposed to detect "glimmer" nodes
200
+ if ('value' in node && typeof node.value === 'string' && node.value.match(/<\/?[_A-Z:0-9].*>/g)) {
201
+ node.type = 'glimmer_raw';
202
+ }
203
+ node.type = 'glimmer_raw';
204
+ return 'skip';
205
+ }
206
+ return;
207
+ });
208
+ }).use(rehypeRaw, {
209
+ passThrough: ['glimmer_raw', 'raw']
210
+ }).use(() => tree => {
211
+ visit(tree, 'glimmer_raw', node => {
212
+ node.type = 'raw';
213
+ });
214
+ }).use(rehypeStringify, {
215
+ collapseEmptyAttributes: true,
216
+ closeSelfClosing: true,
217
+ allowParseErrors: true,
218
+ allowDangerousCharacters: true,
219
+ allowDangerousHtml: true
220
+ });
221
+ }
222
+ /**
223
+ * @internal not under semver
224
+ */
225
+ async function parseMarkdown(input, options = {}) {
226
+ let markdownCompiler = buildCompiler(options);
227
+ let processed = await markdownCompiler.process(input);
228
+ let liveCode = processed.data.liveCode || [];
229
+ let templateOnly = processed.toString();
230
+ return {
231
+ templateOnlyGlimdown: templateOnly,
232
+ blocks: liveCode
233
+ };
234
+ }
235
+
236
+ export { parseMarkdown };
237
+ //# sourceMappingURL=markdown-to-ember.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown-to-ember.js","sources":["../../../src/browser/compile/markdown-to-ember.ts"],"sourcesContent":["import rehypeRaw from 'rehype-raw';\nimport rehypeStringify from 'rehype-stringify';\nimport remarkParse from 'remark-parse';\nimport remarkRehype from 'remark-rehype';\nimport { unified } from 'unified';\nimport { visit } from 'unist-util-visit';\n\nimport { invocationOf, nameFor } from '../utils';\n\nimport type { Node } from 'hast';\nimport type { Code, Text } from 'mdast';\nimport type { Parent } from 'unist';\nimport type { VFile } from 'vfile';\n\nexport interface ExtractedCode {\n name: string;\n code: string;\n lang: string;\n}\n\nexport interface LiveCodeExtraction {\n templateOnlyGlimdown: string;\n blocks: ExtractedCode[];\n}\ntype LiveData = {\n liveCode?: ExtractedCode[];\n};\ntype VFileWithMeta = VFile & {\n data: LiveData;\n};\n\ninterface Options {\n snippets?: {\n classList?: string[];\n };\n demo?: {\n classList?: string[];\n };\n copyComponent?: string;\n shadowComponent?: string;\n}\n\nconst GLIMDOWN_PREVIEW = Symbol('__GLIMDOWN_PREVIEW__');\nconst GLIMDOWN_RENDER = Symbol('__GLIMDOWN_RENDER__');\nconst ALLOWED_LANGUAGES = ['gjs', 'hbs'] as const;\n\ntype AllowedLanguage = (typeof ALLOWED_LANGUAGES)[number];\ntype RelevantCode = Omit<Code, 'lang'> & { lang: AllowedLanguage };\n\nconst escapeCurlies = (node: Text | Parent) => {\n if ('value' in node && node.value) {\n node.value = node.value.replace(/{{/g, '\\\\{{');\n }\n\n if ('children' in node && node.children) {\n node.children.forEach((child) => escapeCurlies(child as Parent));\n }\n\n if (!node.data) {\n return;\n }\n\n if ('hChildren' in node.data && Array.isArray(node.data['hChildren'])) {\n node.data['hChildren'].forEach(escapeCurlies);\n\n return;\n }\n};\n\nfunction isLive(meta: string) {\n return meta.includes('live');\n}\n\nfunction isPreview(meta: string) {\n return meta.includes('preview');\n}\n\nfunction isBelow(meta: string) {\n return meta.includes('below');\n}\n\n// TODO: extract and publish remark plugin\nfunction liveCodeExtraction(options: Options = {}) {\n let { copyComponent, snippets, demo } = options;\n let { classList: snippetClasses } = snippets || {};\n let { classList: demoClasses } = demo || {};\n\n snippetClasses ??= [];\n demoClasses ??= [];\n\n function isRelevantCode(node: Code): node is RelevantCode {\n if (node.type !== 'code') return false;\n\n let { meta, lang } = node;\n\n meta = meta?.trim();\n\n if (!meta || !lang) return false;\n\n if (!meta.includes('live')) {\n return false;\n }\n\n if (!(ALLOWED_LANGUAGES as unknown as string[]).includes(lang)) return false;\n\n return true;\n }\n\n let copyNode = {\n type: 'html',\n value: copyComponent,\n };\n\n function enhance(code: Code) {\n code.data ??= {};\n code.data['hProperties'] ??= {};\n // This is secret-to-us-only API, so we don't really care about the type\n (code.data['hProperties'] as any)[GLIMDOWN_PREVIEW] = true;\n\n return {\n data: {\n hProperties: { className: snippetClasses },\n },\n type: 'div',\n hProperties: { className: snippetClasses },\n children: [code, copyNode],\n };\n }\n\n function flatReplaceAt<T>(array: T[], index: number, replacement: T[]) {\n array.splice(index, 1, ...replacement);\n }\n\n // because we mutate the tree as we iterate,\n // we need to make sure we don't loop forever\n const seen = new Set();\n\n return function transformer(tree: Parent, file: VFileWithMeta) {\n visit(tree, ['code'], function (node, index, parent) {\n if (parent === null) return;\n if (index === null) return;\n\n if (!isRelevantCode(node as Code)) {\n let enhanced = enhance(node as Code);\n\n parent.children[index] = enhanced;\n\n return 'skip';\n }\n\n if (seen.has(node)) return 'skip';\n\n seen.add(node);\n\n let { meta, lang, value } = node as Code;\n\n if (!meta) return 'skip';\n if (!lang) return 'skip';\n\n file.data.liveCode ??= [];\n\n let code = value.trim();\n let name = nameFor(code);\n let invocation = invocationOf(name);\n\n let shadow = options.shadowComponent;\n\n let wrapInShadow = shadow && !meta?.includes('no-shadow');\n\n if (wrapInShadow) {\n invocation = `<${shadow}>${invocation}</${shadow}>`;\n }\n\n let invokeNode = {\n type: 'html',\n data: {\n hProperties: { [GLIMDOWN_RENDER]: true },\n },\n value: `<div class=\"${demoClasses}\">${invocation}</div>`,\n };\n\n let wrapper = enhance(node as Code);\n\n file.data.liveCode.push({\n lang,\n name,\n code,\n });\n\n let live = isLive(meta);\n let preview = isPreview(meta);\n let below = isBelow(meta);\n\n if (live && preview && below) {\n flatReplaceAt(parent.children, index, [wrapper, invokeNode]);\n\n return 'skip';\n }\n\n if (live && preview) {\n flatReplaceAt(parent.children, index, [invokeNode, wrapper]);\n\n return 'skip';\n }\n\n if (live) {\n parent.children[index] = invokeNode;\n\n return 'skip';\n }\n\n parent.children[index] = wrapper;\n\n return;\n });\n };\n}\n\nfunction buildCompiler(options: ParseMarkdownOptions) {\n return (\n unified()\n // .use(markdown)\n .use(remarkParse)\n // TODO: we only want to do this when we have pre > code.\n // code can exist inline.\n .use(liveCodeExtraction, {\n snippets: {\n classList: ['glimdown-snippet', 'relative'],\n },\n demo: {\n classList: ['glimdown-render'],\n },\n copyComponent: options?.CopyComponent,\n shadowComponent: options?.ShadowComponent,\n })\n // .use(() => (tree) => visit(tree, (node) => console.log('i', node)))\n // remark rehype is needed to convert markdown to HTML\n // However, it also changes all the nodes, so we need another pass\n // to make sure our Glimmer-aware nodes are in tact\n .use(remarkRehype, { allowDangerousHtml: true })\n // Convert invocables to raw format, so Glimmer can invoke them\n .use(() => (tree: Node) => {\n visit(tree, function (node) {\n // We rely on an implicit transformation of data.hProperties => properties\n let properties = (node as any).properties;\n\n if (properties?.[GLIMDOWN_PREVIEW]) {\n // Have to sanitize anything Glimmer could try to render\n escapeCurlies(node as Parent);\n\n return 'skip';\n }\n\n if (node.type === 'element' || ('tagName' in node && node.tagName === 'code')) {\n if (properties?.[GLIMDOWN_RENDER]) {\n node.type = 'glimmer_raw';\n\n return;\n }\n\n escapeCurlies(node as Parent);\n\n return 'skip';\n }\n\n if (node.type === 'text' || node.type === 'raw') {\n // definitively not the better way, but this is supposed to detect \"glimmer\" nodes\n if (\n 'value' in node &&\n typeof node.value === 'string' &&\n node.value.match(/<\\/?[_A-Z:0-9].*>/g)\n ) {\n node.type = 'glimmer_raw';\n }\n\n node.type = 'glimmer_raw';\n\n return 'skip';\n }\n\n return;\n });\n })\n .use(rehypeRaw, { passThrough: ['glimmer_raw', 'raw'] })\n .use(() => (tree) => {\n visit(tree, 'glimmer_raw', (node: Node) => {\n node.type = 'raw';\n });\n })\n .use(rehypeStringify, {\n collapseEmptyAttributes: true,\n closeSelfClosing: true,\n allowParseErrors: true,\n allowDangerousCharacters: true,\n allowDangerousHtml: true,\n })\n );\n}\n\ninterface ParseMarkdownOptions {\n CopyComponent?: string;\n ShadowComponent?: string;\n}\n\n/**\n * @internal not under semver\n */\nexport async function parseMarkdown(\n input: string,\n options: ParseMarkdownOptions = {}\n): Promise<LiveCodeExtraction> {\n let markdownCompiler = buildCompiler(options);\n let processed = await markdownCompiler.process(input);\n let liveCode = (processed.data as LiveData).liveCode || [];\n let templateOnly = processed.toString();\n\n return { templateOnlyGlimdown: templateOnly, blocks: liveCode };\n}\n"],"names":["GLIMDOWN_PREVIEW","Symbol","GLIMDOWN_RENDER","ALLOWED_LANGUAGES","escapeCurlies","node","value","replace","children","forEach","child","data","Array","isArray","isLive","meta","includes","isPreview","isBelow","liveCodeExtraction","options","copyComponent","snippets","demo","classList","snippetClasses","demoClasses","isRelevantCode","type","lang","trim","copyNode","enhance","code","hProperties","className","flatReplaceAt","array","index","replacement","splice","seen","Set","transformer","tree","file","visit","parent","enhanced","has","add","liveCode","name","nameFor","invocation","invocationOf","shadow","shadowComponent","wrapInShadow","invokeNode","wrapper","push","live","preview","below","buildCompiler","unified","use","remarkParse","CopyComponent","ShadowComponent","remarkRehype","allowDangerousHtml","properties","tagName","match","rehypeRaw","passThrough","rehypeStringify","collapseEmptyAttributes","closeSelfClosing","allowParseErrors","allowDangerousCharacters","parseMarkdown","input","markdownCompiler","processed","process","templateOnly","toString","templateOnlyGlimdown","blocks"],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ interface EvalImportMap {
2
+ [moduleName: string]: ScopeMap;
3
+ }
4
+ interface ScopeMap {
5
+ [localName: string]: unknown;
6
+ }
7
+ export { EvalImportMap, ScopeMap };
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -170,7 +170,6 @@ function findLowerIndexInRangeArray(value, arr) {
170
170
  var lineColumn$1 = /*@__PURE__*/getDefaultExportFromCjs(lineColumn);
171
171
 
172
172
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
173
- // @ts-ignore
174
173
  function getMatchStartAndEnd(match) {
175
174
  return {
176
175
  start: expect(match.index, 'Expected regular expression match to have an index'),
@@ -1 +1 @@
1
- {"version":3,"file":"preprocess.js","sources":["../../../../../../node_modules/.pnpm/isarray@1.0.0/node_modules/isarray/index.js","../../../../../../node_modules/.pnpm/isobject@2.1.0/node_modules/isobject/index.js","../../../../../../node_modules/.pnpm/line-column@1.0.2/node_modules/line-column/lib/line-column.js","../../../src/browser/eti/preprocess.ts"],"sourcesContent":["var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","/*!\n * isobject <https://github.com/jonschlinkert/isobject>\n *\n * Copyright (c) 2014-2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nvar isArray = require('isarray');\n\nmodule.exports = function isObject(val) {\n return val != null && typeof val === 'object' && isArray(val) === false;\n};\n","/**\n * line-column - Convert efficiently index to/from line-column in a string\n * @module lineColumn\n * @license MIT\n */\n\"use strict\";\n\nvar isArray = require(\"isarray\");\nvar isObject = require(\"isobject\");\nvar slice = Array.prototype.slice;\n\nmodule.exports = LineColumnFinder;\n\n/**\n * Finder for index and line-column from given string.\n *\n * You can call this without `new` operator as it returns an instance anyway.\n *\n * @class\n * @param {string} str - A string to be parsed.\n * @param {Object|number} [options] - Options.\n * This can be an index in the string for shorthand of `lineColumn(str, index)`.\n * @param {number} [options.origin=1] - The origin value of line and column.\n */\nfunction LineColumnFinder(str, options) {\n if (!(this instanceof LineColumnFinder)) {\n if (typeof options === \"number\") {\n return (new LineColumnFinder(str)).fromIndex(options);\n }\n return new LineColumnFinder(str, options);\n }\n\n this.str = str || \"\";\n this.lineToIndex = buildLineToIndex(this.str);\n\n options = options || {};\n this.origin = typeof options.origin === \"undefined\" ? 1 : options.origin;\n}\n\n/**\n * Find line and column from index in the string.\n *\n * @param {number} index - Index in the string. (0-origin)\n * @return {Object|null}\n * Found line number and column number in object `{ line: X, col: Y }`.\n * If the given index is out of range, it returns `null`.\n */\nLineColumnFinder.prototype.fromIndex = function (index) {\n if (index < 0 || index >= this.str.length || isNaN(index)) {\n return null;\n }\n\n var line = findLowerIndexInRangeArray(index, this.lineToIndex);\n return {\n line: line + this.origin,\n col: index - this.lineToIndex[line] + this.origin\n };\n}\n\n/**\n * Find index from line and column in the string.\n *\n * @param {number|Object|Array} line - Line number in the string.\n * This can be an Object of `{ line: X, col: Y }`, or\n * an Array of `[line, col]`.\n * @param {number} [column] - Column number in the string.\n * This must be omitted or undefined when Object or Array is given\n * to the first argument.\n * @return {number}\n * Found index in the string. (always 0-origin)\n * If the given line or column is out of range, it returns `-1`.\n */\nLineColumnFinder.prototype.toIndex = function (line, column) {\n if (typeof column === \"undefined\") {\n if (isArray(line) && line.length >= 2) {\n return this.toIndex(line[0], line[1]);\n }\n if (isObject(line) && \"line\" in line && (\"col\" in line || \"column\" in line)) {\n return this.toIndex(line.line, (\"col\" in line ? line.col : line.column));\n }\n return -1;\n }\n if (isNaN(line) || isNaN(column)) {\n return -1;\n }\n\n line -= this.origin;\n column -= this.origin;\n\n if (line >= 0 && column >= 0 && line < this.lineToIndex.length) {\n var lineIndex = this.lineToIndex[line];\n var nextIndex = (\n line === this.lineToIndex.length - 1\n ? this.str.length\n : this.lineToIndex[line + 1]\n );\n\n if (column < nextIndex - lineIndex) {\n return lineIndex + column;\n }\n }\n return -1;\n}\n\n/**\n * Build an array of indexes of each line from a string.\n *\n * @private\n * @param str {string} An input string.\n * @return {number[]} Built array of indexes. The key is line number.\n */\nfunction buildLineToIndex(str) {\n var lines = str.split(\"\\n\"),\n lineToIndex = new Array(lines.length),\n index = 0;\n\n for (var i = 0, l = lines.length; i < l; i++) {\n lineToIndex[i] = index;\n index += lines[i].length + /* \"\\n\".length */ 1;\n }\n return lineToIndex;\n}\n\n/**\n * Find a lower-bound index of a value in a sorted array of ranges.\n *\n * Assume `arr = [0, 5, 10, 15, 20]` and\n * this returns `1` for `value = 7` (5 <= value < 10),\n * and returns `3` for `value = 18` (15 <= value < 20).\n *\n * @private\n * @param arr {number[]} An array of values representing ranges.\n * @param value {number} A value to be searched.\n * @return {number} Found index. If not found `-1`.\n */\nfunction findLowerIndexInRangeArray(value, arr) {\n if (value >= arr[arr.length - 1]) {\n return arr.length - 1;\n }\n\n var min = 0, max = arr.length - 2, mid;\n while (min < max) {\n mid = min + ((max - min) >> 1);\n\n if (value < arr[mid]) {\n max = mid - 1;\n } else if (value >= arr[mid + 1]) {\n min = mid + 1;\n } else { // value >= arr[mid] && value < arr[mid + 1]\n min = mid;\n break;\n }\n }\n return min;\n}\n","// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { getTemplateLocals } from '@glimmer/syntax';\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport lineColumn from 'line-column';\nimport MagicString from 'magic-string';\n\nimport { expect } from './debug';\nimport { parseTemplates } from './parse-templates';\n\nimport type { ParseTemplatesOptions, TemplateMatch } from './parse-templates';\n\ninterface PreprocessOptionsEager {\n importIdentifier?: string;\n importPath?: string;\n templateTag?: string;\n templateTagReplacement?: string;\n\n relativePath: string;\n includeSourceMaps: boolean;\n includeTemplateTokens: boolean;\n}\n\ninterface PreprocessOptionsLazy {\n importIdentifier?: string;\n importPath?: string;\n templateTag?: string;\n templateTagReplacement?: string;\n\n relativePath: string;\n includeSourceMaps: boolean;\n includeTemplateTokens: boolean;\n}\n\ntype PreprocessOptions = PreprocessOptionsLazy | PreprocessOptionsEager;\n\ninterface PreprocessedOutput {\n output: string;\n replacements: Replacement[];\n}\n\ninterface Replacement {\n type: 'start' | 'end';\n index: number;\n oldLength: number;\n newLength: number;\n originalLine: number;\n originalCol: number;\n}\n\nfunction getMatchStartAndEnd(match: RegExpMatchArray) {\n return {\n start: expect(match.index, 'Expected regular expression match to have an index'),\n end:\n expect(match.index, 'Expected regular expression match to have an index') + match[0].length,\n };\n}\n\nfunction replacementFrom(\n template: string,\n index: number,\n oldLength: number,\n newLength: number,\n type: 'start' | 'end'\n): Replacement {\n const loc = expect(\n lineColumn(template).fromIndex(index),\n 'BUG: expected to find a line/column based on index'\n );\n\n return {\n type,\n index,\n oldLength,\n newLength,\n originalCol: loc.col,\n originalLine: loc.line,\n };\n}\n\nfunction replaceMatch(\n s: MagicString,\n match: TemplateMatch,\n startReplacement: string,\n endReplacement: string,\n template: string,\n includeTemplateTokens: boolean\n): Replacement[] {\n const { start: openStart, end: openEnd } = getMatchStartAndEnd(match.start);\n const { start: closeStart, end: closeEnd } = getMatchStartAndEnd(match.end);\n\n let options = '';\n\n if (includeTemplateTokens) {\n const tokensString = getTemplateLocals(template.slice(openEnd, closeStart))\n .filter((local: string) => local.match(/^[$A-Z_][0-9A-Z_$]*$/i))\n .join(',');\n\n if (tokensString.length > 0) {\n options = `, scope: () => ({${tokensString}})`;\n }\n }\n\n const newStart = `${startReplacement}\\``;\n const newEnd = `\\`, { strictMode: true${options} }${endReplacement}`;\n\n s.overwrite(openStart, openEnd, newStart);\n s.overwrite(closeStart, closeEnd, newEnd);\n ensureBackticksEscaped(s, openEnd + 1, closeStart - 1);\n\n return [\n replacementFrom(template, openStart, openEnd - openStart, newStart.length, 'start'),\n replacementFrom(template, closeStart, closeEnd - closeStart, newEnd.length, 'end'),\n ];\n}\n\n/**\n * Preprocesses all embedded templates within a JavaScript or TypeScript file.\n * This function replaces all embedded templates that match our template syntax\n * with valid, parseable JS. Optionally, it can also include a source map, and\n * it can also include all possible values used within the template.\n *\n * Input:\n *\n * <template><MyComponent/><template>\n *\n * Output:\n *\n * [GLIMMER_TEMPLATE(`<MyComponent/>`, { scope() { return {MyComponent}; } })];\n *\n * It can also be used with template literals to provide the in scope values:\n *\n * Input:\n *\n * hbs`<MyComponent/>`;\n *\n * Output\n *\n * hbs(`<MyComponent/>`, { scope() { return {MyComponent}; } });\n */\nexport function preprocessEmbeddedTemplates(\n template: string,\n options: PreprocessOptions\n): PreprocessedOutput {\n const { templateTag, templateTagReplacement, includeTemplateTokens, relativePath } = options;\n\n const parseTemplatesOptions: ParseTemplatesOptions = {\n templateTag,\n };\n\n const matches = parseTemplates(template, relativePath, parseTemplatesOptions);\n const replacements: Replacement[] = [];\n const s = new MagicString(template);\n\n for (const match of matches) {\n if (match.type === 'template-tag') {\n replacements.push(\n ...replaceMatch(\n s,\n match,\n `[${templateTagReplacement}(`,\n ')]',\n template,\n includeTemplateTokens\n )\n );\n }\n }\n\n let output = s.toString();\n\n return {\n output,\n replacements,\n };\n}\n\nfunction ensureBackticksEscaped(s: MagicString, start: number, end: number) {\n if (start >= end) return;\n\n let content = s.slice(start, end);\n\n content = content.replace(/(?<!\\\\)`/g, '\\\\`');\n s.overwrite(start, end, content, false);\n}\n"],"names":["toString","module","Array","isArray","arr","call","require","isObject","val","LineColumnFinder","str","options","fromIndex","lineToIndex","buildLineToIndex","origin","prototype","index","length","isNaN","line","findLowerIndexInRangeArray","col","toIndex","column","lineIndex","nextIndex","lines","split","i","l","value","min","max","mid","getMatchStartAndEnd","match","start","expect","end","replacementFrom","template","oldLength","newLength","type","loc","lineColumn","originalCol","originalLine","replaceMatch","s","startReplacement","endReplacement","includeTemplateTokens","openStart","openEnd","closeStart","closeEnd","tokensString","getTemplateLocals","slice","filter","local","join","newStart","newEnd","overwrite","ensureBackticksEscaped","preprocessEmbeddedTemplates","templateTag","templateTagReplacement","relativePath","parseTemplatesOptions","matches","parseTemplates","replacements","MagicString","push","output","content","replace"],"mappings":"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","x_google_ignoreList":[0,1,2]}
1
+ {"version":3,"file":"preprocess.js","sources":["../../../../../../node_modules/.pnpm/isarray@1.0.0/node_modules/isarray/index.js","../../../../../../node_modules/.pnpm/isobject@2.1.0/node_modules/isobject/index.js","../../../../../../node_modules/.pnpm/line-column@1.0.2/node_modules/line-column/lib/line-column.js","../../../src/browser/eti/preprocess.ts"],"sourcesContent":["var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","/*!\n * isobject <https://github.com/jonschlinkert/isobject>\n *\n * Copyright (c) 2014-2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nvar isArray = require('isarray');\n\nmodule.exports = function isObject(val) {\n return val != null && typeof val === 'object' && isArray(val) === false;\n};\n","/**\n * line-column - Convert efficiently index to/from line-column in a string\n * @module lineColumn\n * @license MIT\n */\n\"use strict\";\n\nvar isArray = require(\"isarray\");\nvar isObject = require(\"isobject\");\nvar slice = Array.prototype.slice;\n\nmodule.exports = LineColumnFinder;\n\n/**\n * Finder for index and line-column from given string.\n *\n * You can call this without `new` operator as it returns an instance anyway.\n *\n * @class\n * @param {string} str - A string to be parsed.\n * @param {Object|number} [options] - Options.\n * This can be an index in the string for shorthand of `lineColumn(str, index)`.\n * @param {number} [options.origin=1] - The origin value of line and column.\n */\nfunction LineColumnFinder(str, options) {\n if (!(this instanceof LineColumnFinder)) {\n if (typeof options === \"number\") {\n return (new LineColumnFinder(str)).fromIndex(options);\n }\n return new LineColumnFinder(str, options);\n }\n\n this.str = str || \"\";\n this.lineToIndex = buildLineToIndex(this.str);\n\n options = options || {};\n this.origin = typeof options.origin === \"undefined\" ? 1 : options.origin;\n}\n\n/**\n * Find line and column from index in the string.\n *\n * @param {number} index - Index in the string. (0-origin)\n * @return {Object|null}\n * Found line number and column number in object `{ line: X, col: Y }`.\n * If the given index is out of range, it returns `null`.\n */\nLineColumnFinder.prototype.fromIndex = function (index) {\n if (index < 0 || index >= this.str.length || isNaN(index)) {\n return null;\n }\n\n var line = findLowerIndexInRangeArray(index, this.lineToIndex);\n return {\n line: line + this.origin,\n col: index - this.lineToIndex[line] + this.origin\n };\n}\n\n/**\n * Find index from line and column in the string.\n *\n * @param {number|Object|Array} line - Line number in the string.\n * This can be an Object of `{ line: X, col: Y }`, or\n * an Array of `[line, col]`.\n * @param {number} [column] - Column number in the string.\n * This must be omitted or undefined when Object or Array is given\n * to the first argument.\n * @return {number}\n * Found index in the string. (always 0-origin)\n * If the given line or column is out of range, it returns `-1`.\n */\nLineColumnFinder.prototype.toIndex = function (line, column) {\n if (typeof column === \"undefined\") {\n if (isArray(line) && line.length >= 2) {\n return this.toIndex(line[0], line[1]);\n }\n if (isObject(line) && \"line\" in line && (\"col\" in line || \"column\" in line)) {\n return this.toIndex(line.line, (\"col\" in line ? line.col : line.column));\n }\n return -1;\n }\n if (isNaN(line) || isNaN(column)) {\n return -1;\n }\n\n line -= this.origin;\n column -= this.origin;\n\n if (line >= 0 && column >= 0 && line < this.lineToIndex.length) {\n var lineIndex = this.lineToIndex[line];\n var nextIndex = (\n line === this.lineToIndex.length - 1\n ? this.str.length\n : this.lineToIndex[line + 1]\n );\n\n if (column < nextIndex - lineIndex) {\n return lineIndex + column;\n }\n }\n return -1;\n}\n\n/**\n * Build an array of indexes of each line from a string.\n *\n * @private\n * @param str {string} An input string.\n * @return {number[]} Built array of indexes. The key is line number.\n */\nfunction buildLineToIndex(str) {\n var lines = str.split(\"\\n\"),\n lineToIndex = new Array(lines.length),\n index = 0;\n\n for (var i = 0, l = lines.length; i < l; i++) {\n lineToIndex[i] = index;\n index += lines[i].length + /* \"\\n\".length */ 1;\n }\n return lineToIndex;\n}\n\n/**\n * Find a lower-bound index of a value in a sorted array of ranges.\n *\n * Assume `arr = [0, 5, 10, 15, 20]` and\n * this returns `1` for `value = 7` (5 <= value < 10),\n * and returns `3` for `value = 18` (15 <= value < 20).\n *\n * @private\n * @param arr {number[]} An array of values representing ranges.\n * @param value {number} A value to be searched.\n * @return {number} Found index. If not found `-1`.\n */\nfunction findLowerIndexInRangeArray(value, arr) {\n if (value >= arr[arr.length - 1]) {\n return arr.length - 1;\n }\n\n var min = 0, max = arr.length - 2, mid;\n while (min < max) {\n mid = min + ((max - min) >> 1);\n\n if (value < arr[mid]) {\n max = mid - 1;\n } else if (value >= arr[mid + 1]) {\n min = mid + 1;\n } else { // value >= arr[mid] && value < arr[mid + 1]\n min = mid;\n break;\n }\n }\n return min;\n}\n","// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { getTemplateLocals } from '@glimmer/syntax';\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport lineColumn from 'line-column';\nimport MagicString from 'magic-string';\n\nimport { expect } from './debug';\nimport { parseTemplates } from './parse-templates';\n\nimport type { ParseTemplatesOptions, TemplateMatch } from './parse-templates';\n\ninterface PreprocessOptionsEager {\n importIdentifier?: string;\n importPath?: string;\n templateTag?: string;\n templateTagReplacement?: string;\n\n relativePath: string;\n includeSourceMaps: boolean;\n includeTemplateTokens: boolean;\n}\n\ninterface PreprocessOptionsLazy {\n importIdentifier?: string;\n importPath?: string;\n templateTag?: string;\n templateTagReplacement?: string;\n\n relativePath: string;\n includeSourceMaps: boolean;\n includeTemplateTokens: boolean;\n}\n\ntype PreprocessOptions = PreprocessOptionsLazy | PreprocessOptionsEager;\n\ninterface PreprocessedOutput {\n output: string;\n replacements: Replacement[];\n}\n\ninterface Replacement {\n type: 'start' | 'end';\n index: number;\n oldLength: number;\n newLength: number;\n originalLine: number;\n originalCol: number;\n}\n\nfunction getMatchStartAndEnd(match: RegExpMatchArray) {\n return {\n start: expect(match.index, 'Expected regular expression match to have an index'),\n end:\n expect(match.index, 'Expected regular expression match to have an index') + match[0].length,\n };\n}\n\nfunction replacementFrom(\n template: string,\n index: number,\n oldLength: number,\n newLength: number,\n type: 'start' | 'end'\n): Replacement {\n const loc = expect(\n lineColumn(template).fromIndex(index),\n 'BUG: expected to find a line/column based on index'\n );\n\n return {\n type,\n index,\n oldLength,\n newLength,\n originalCol: loc.col,\n originalLine: loc.line,\n };\n}\n\nfunction replaceMatch(\n s: MagicString,\n match: TemplateMatch,\n startReplacement: string,\n endReplacement: string,\n template: string,\n includeTemplateTokens: boolean\n): Replacement[] {\n const { start: openStart, end: openEnd } = getMatchStartAndEnd(match.start);\n const { start: closeStart, end: closeEnd } = getMatchStartAndEnd(match.end);\n\n let options = '';\n\n if (includeTemplateTokens) {\n const tokensString = getTemplateLocals(template.slice(openEnd, closeStart))\n .filter((local: string) => local.match(/^[$A-Z_][0-9A-Z_$]*$/i))\n .join(',');\n\n if (tokensString.length > 0) {\n options = `, scope: () => ({${tokensString}})`;\n }\n }\n\n const newStart = `${startReplacement}\\``;\n const newEnd = `\\`, { strictMode: true${options} }${endReplacement}`;\n\n s.overwrite(openStart, openEnd, newStart);\n s.overwrite(closeStart, closeEnd, newEnd);\n ensureBackticksEscaped(s, openEnd + 1, closeStart - 1);\n\n return [\n replacementFrom(template, openStart, openEnd - openStart, newStart.length, 'start'),\n replacementFrom(template, closeStart, closeEnd - closeStart, newEnd.length, 'end'),\n ];\n}\n\n/**\n * Preprocesses all embedded templates within a JavaScript or TypeScript file.\n * This function replaces all embedded templates that match our template syntax\n * with valid, parseable JS. Optionally, it can also include a source map, and\n * it can also include all possible values used within the template.\n *\n * Input:\n *\n * <template><MyComponent/><template>\n *\n * Output:\n *\n * [GLIMMER_TEMPLATE(`<MyComponent/>`, { scope() { return {MyComponent}; } })];\n *\n * It can also be used with template literals to provide the in scope values:\n *\n * Input:\n *\n * hbs`<MyComponent/>`;\n *\n * Output\n *\n * hbs(`<MyComponent/>`, { scope() { return {MyComponent}; } });\n */\nexport function preprocessEmbeddedTemplates(\n template: string,\n options: PreprocessOptions\n): PreprocessedOutput {\n const { templateTag, templateTagReplacement, includeTemplateTokens, relativePath } = options;\n\n const parseTemplatesOptions: ParseTemplatesOptions = {\n templateTag,\n };\n\n const matches = parseTemplates(template, relativePath, parseTemplatesOptions);\n const replacements: Replacement[] = [];\n const s = new MagicString(template);\n\n for (const match of matches) {\n if (match.type === 'template-tag') {\n replacements.push(\n ...replaceMatch(\n s,\n match,\n `[${templateTagReplacement}(`,\n ')]',\n template,\n includeTemplateTokens\n )\n );\n }\n }\n\n let output = s.toString();\n\n return {\n output,\n replacements,\n };\n}\n\nfunction ensureBackticksEscaped(s: MagicString, start: number, end: number) {\n if (start >= end) return;\n\n let content = s.slice(start, end);\n\n content = content.replace(/(?<!\\\\)`/g, '\\\\`');\n s.overwrite(start, end, content, false);\n}\n"],"names":["toString","module","Array","isArray","arr","call","require","isObject","val","LineColumnFinder","str","options","fromIndex","lineToIndex","buildLineToIndex","origin","prototype","index","length","isNaN","line","findLowerIndexInRangeArray","col","toIndex","column","lineIndex","nextIndex","lines","split","i","l","value","min","max","mid","getMatchStartAndEnd","match","start","expect","end","replacementFrom","template","oldLength","newLength","type","loc","lineColumn","originalCol","originalLine","replaceMatch","s","startReplacement","endReplacement","includeTemplateTokens","openStart","openEnd","closeStart","closeEnd","tokensString","getTemplateLocals","slice","filter","local","join","newStart","newEnd","overwrite","ensureBackticksEscaped","preprocessEmbeddedTemplates","templateTag","templateTagReplacement","relativePath","parseTemplatesOptions","matches","parseTemplates","replacements","MagicString","push","output","content","replace"],"mappings":"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","x_google_ignoreList":[0,1,2]}
@@ -5,9 +5,12 @@ import { CompileResult } from "./types.js";
5
5
  *
6
6
  * (templates alone do not have a way to import / define complex structures)
7
7
  */
8
- declare function compileHBS(template: string, options?: Omit<CompileTemplateOptions, 'moduleName'>): CompileResult;
8
+ declare function compileHBS(template: string, options?: CompileTemplateOptions): CompileResult;
9
9
  interface CompileTemplateOptions {
10
- moduleName: string;
10
+ /**
11
+ * Used for debug viewing
12
+ */
13
+ moduleName?: string;
11
14
  scope?: Record<string, unknown>;
12
15
  }
13
16
  export { compileHBS };
@@ -7,9 +7,6 @@ import { importSync } from '@embroider/macros';
7
7
  import { nameFor } from './utils.js';
8
8
 
9
9
  /* eslint-disable @typescript-eslint/no-explicit-any */
10
- // import { precompileJSON } from '@glimmer/compiler';
11
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
12
- // @ts-ignore
13
10
  // These things are pre-bundled in the old system.
14
11
  // ember-template-compiler defines them in AMD/requirejs
15
12
  const {
@@ -31,9 +28,9 @@ function compileHBS(template, options = {}) {
31
28
  let error;
32
29
  try {
33
30
  component = setComponentTemplate(compileTemplate(template, {
34
- moduleName: name,
31
+ moduleName: options.moduleName || name,
35
32
  ...options
36
- }), _TO(name));
33
+ }), _TO(options.moduleName || name));
37
34
  } catch (e) {
38
35
  error = e;
39
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"hbs.js","sources":["../../src/browser/hbs.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n// import { precompileJSON } from '@glimmer/compiler';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { setComponentTemplate } from '@ember/component';\nimport templateOnlyComponent from '@ember/component/template-only';\nimport { array, concat, fn, get, hash } from '@ember/helper';\nimport { on } from '@ember/modifier';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { createTemplateFactory } from '@ember/template-factory';\nimport { importSync } from '@embroider/macros';\n\nimport { nameFor } from './utils';\n\nimport type { CompileResult } from './types';\nimport type { ComponentLike } from '@glint/template';\n\n// These things are pre-bundled in the old system.\n// ember-template-compiler defines them in AMD/requirejs\nconst { precompileJSON } = importSync('@glimmer/compiler') as any;\nconst { getTemplateLocals } = importSync('@glimmer/syntax') as any;\n\n/**\n * compile a template with an empty scope\n * to use components, helpers, etc, you will need to compile with JS\n *\n * (templates alone do not have a way to import / define complex structures)\n */\nexport function compileHBS(\n template: string,\n options: Omit<CompileTemplateOptions, 'moduleName'> = {}\n): CompileResult {\n let name = nameFor(template);\n let component: undefined | ComponentLike;\n let error: undefined | Error;\n\n try {\n component = setComponentTemplate(\n compileTemplate(template, { moduleName: name, ...options }),\n templateOnlyComponent(name)\n ) as ComponentLike;\n } catch (e) {\n error = e as Error | undefined;\n }\n\n return { name, component, error };\n}\n\ninterface CompileTemplateOptions {\n moduleName: string;\n scope?: Record<string, unknown>;\n}\n\n/**\n * The reason why we can't use precompile directly is because of this:\n * https://github.com/glimmerjs/glimmer-vm/blob/master/packages/%40glimmer/compiler/lib/compiler.ts#L132\n *\n * Support for dynamically compiling templates in strict mode doesn't seem to be fully their yet.\n * That JSON.stringify (and the lines after) prevent us from easily setting the scope function,\n * which means that *everything* is undefined.\n */\nfunction compileTemplate(source: string, { moduleName, scope = {} }: CompileTemplateOptions) {\n let localScope = { array, concat, fn, get, hash, on, ...scope } as any;\n let locals = getTemplateLocals(source);\n\n let options = {\n strictMode: true,\n moduleName,\n locals,\n isProduction: false,\n meta: { moduleName },\n };\n\n // Copied from @glimmer/compiler/lib/compiler#precompile\n let [block, usedLocals] = precompileJSON(source, options);\n\n let usedScope = usedLocals.map((key: string) => localScope[key]);\n\n let blockJSON = JSON.stringify(block);\n let templateJSONObject = {\n id: moduleName,\n block: blockJSON,\n moduleName: moduleName ?? '(unknown template module)',\n scope: () => usedScope,\n isStrictMode: true,\n };\n\n let factory = createTemplateFactory(templateJSONObject);\n\n return factory;\n}\n"],"names":["precompileJSON","importSync","getTemplateLocals","compileHBS","template","options","name","nameFor","component","error","setComponentTemplate","compileTemplate","moduleName","templateOnlyComponent","e","source","scope","localScope","array","concat","fn","get","hash","on","locals","strictMode","isProduction","meta","block","usedLocals","usedScope","map","key","blockJSON","JSON","stringify","templateJSONObject","id","isStrictMode","factory","createTemplateFactory"],"mappings":";;;;;;;;AAAA;AACA;AACA;AACA;AAeA;AACA;AACA,MAAM;AAAEA,EAAAA,cAAAA;AAAe,CAAC,GAAGC,UAAU,CAAC,mBAAmB,CAAQ,CAAA;AACjE,MAAM;AAAEC,EAAAA,iBAAAA;AAAkB,CAAC,GAAGD,UAAU,CAAC,iBAAiB,CAAQ,CAAA;;AAElE;AACA;AACA;AACA;AACA;AACA;AACO,SAASE,UAAUA,CACxBC,QAAgB,EAChBC,OAAmD,GAAG,EAAE,EACzC;AACf,EAAA,IAAIC,IAAI,GAAGC,OAAO,CAACH,QAAQ,CAAC,CAAA;AAC5B,EAAA,IAAII,SAAoC,CAAA;AACxC,EAAA,IAAIC,KAAwB,CAAA;EAE5B,IAAI;AACFD,IAAAA,SAAS,GAAGE,oBAAoB,CAC9BC,eAAe,CAACP,QAAQ,EAAE;AAAEQ,MAAAA,UAAU,EAAEN,IAAI;MAAE,GAAGD,OAAAA;AAAQ,KAAC,CAAC,EAC3DQ,GAAqB,CAACP,IAAI,CAC5B,CAAkB,CAAA;GACnB,CAAC,OAAOQ,CAAC,EAAE;AACVL,IAAAA,KAAK,GAAGK,CAAsB,CAAA;AAChC,GAAA;EAEA,OAAO;IAAER,IAAI;IAAEE,SAAS;AAAEC,IAAAA,KAAAA;GAAO,CAAA;AACnC,CAAA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASE,eAAeA,CAACI,MAAc,EAAE;EAAEH,UAAU;AAAEI,EAAAA,KAAK,GAAG,EAAC;AAA0B,CAAC,EAAE;AAC3F,EAAA,IAAIC,UAAU,GAAG;IAAEC,KAAK;IAAEC,MAAM;IAAEC,EAAE;IAAEC,GAAG;IAAEC,IAAI;IAAEC,EAAE;IAAE,GAAGP,KAAAA;GAAc,CAAA;AACtE,EAAA,IAAIQ,MAAM,GAAGtB,iBAAiB,CAACa,MAAM,CAAC,CAAA;AAEtC,EAAA,IAAIV,OAAO,GAAG;AACZoB,IAAAA,UAAU,EAAE,IAAI;IAChBb,UAAU;IACVY,MAAM;AACNE,IAAAA,YAAY,EAAE,KAAK;AACnBC,IAAAA,IAAI,EAAE;AAAEf,MAAAA,UAAAA;AAAW,KAAA;GACpB,CAAA;;AAED;EACA,IAAI,CAACgB,KAAK,EAAEC,UAAU,CAAC,GAAG7B,cAAc,CAACe,MAAM,EAAEV,OAAO,CAAC,CAAA;AAEzD,EAAA,IAAIyB,SAAS,GAAGD,UAAU,CAACE,GAAG,CAAEC,GAAW,IAAKf,UAAU,CAACe,GAAG,CAAC,CAAC,CAAA;AAEhE,EAAA,IAAIC,SAAS,GAAGC,IAAI,CAACC,SAAS,CAACP,KAAK,CAAC,CAAA;AACrC,EAAA,IAAIQ,kBAAkB,GAAG;AACvBC,IAAAA,EAAE,EAAEzB,UAAU;AACdgB,IAAAA,KAAK,EAAEK,SAAS;IAChBrB,UAAU,EAAEA,UAAU,IAAI,2BAA2B;IACrDI,KAAK,EAAEA,MAAMc,SAAS;AACtBQ,IAAAA,YAAY,EAAE,IAAA;GACf,CAAA;AAED,EAAA,IAAIC,OAAO,GAAGC,qBAAqB,CAACJ,kBAAkB,CAAC,CAAA;AAEvD,EAAA,OAAOG,OAAO,CAAA;AAChB;;;;"}
1
+ {"version":3,"file":"hbs.js","sources":["../../src/browser/hbs.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n// import { precompileJSON } from '@glimmer/compiler';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { setComponentTemplate } from '@ember/component';\nimport templateOnlyComponent from '@ember/component/template-only';\nimport { array, concat, fn, get, hash } from '@ember/helper';\nimport { on } from '@ember/modifier';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { createTemplateFactory } from '@ember/template-factory';\nimport { importSync } from '@embroider/macros';\n\nimport { nameFor } from './utils';\n\nimport type { CompileResult } from './types';\nimport type { ComponentLike } from '@glint/template';\n\n// These things are pre-bundled in the old system.\n// ember-template-compiler defines them in AMD/requirejs\nconst { precompileJSON } = importSync('@glimmer/compiler') as any;\nconst { getTemplateLocals } = importSync('@glimmer/syntax') as any;\n\n/**\n * compile a template with an empty scope\n * to use components, helpers, etc, you will need to compile with JS\n *\n * (templates alone do not have a way to import / define complex structures)\n */\nexport function compileHBS(template: string, options: CompileTemplateOptions = {}): CompileResult {\n let name = nameFor(template);\n let component: undefined | ComponentLike;\n let error: undefined | Error;\n\n try {\n component = setComponentTemplate(\n compileTemplate(template, { moduleName: options.moduleName || name, ...options }),\n templateOnlyComponent(options.moduleName || name)\n ) as ComponentLike;\n } catch (e) {\n error = e as Error | undefined;\n }\n\n return { name, component, error };\n}\n\ninterface CompileTemplateOptions {\n /**\n * Used for debug viewing\n */\n moduleName?: string;\n scope?: Record<string, unknown>;\n}\n\n/**\n * The reason why we can't use precompile directly is because of this:\n * https://github.com/glimmerjs/glimmer-vm/blob/master/packages/%40glimmer/compiler/lib/compiler.ts#L132\n *\n * Support for dynamically compiling templates in strict mode doesn't seem to be fully their yet.\n * That JSON.stringify (and the lines after) prevent us from easily setting the scope function,\n * which means that *everything* is undefined.\n */\nfunction compileTemplate(source: string, { moduleName, scope = {} }: CompileTemplateOptions) {\n let localScope = { array, concat, fn, get, hash, on, ...scope } as any;\n let locals = getTemplateLocals(source);\n\n let options = {\n strictMode: true,\n moduleName,\n locals,\n isProduction: false,\n meta: { moduleName },\n };\n\n // Copied from @glimmer/compiler/lib/compiler#precompile\n let [block, usedLocals] = precompileJSON(source, options);\n\n let usedScope = usedLocals.map((key: string) => localScope[key]);\n\n let blockJSON = JSON.stringify(block);\n let templateJSONObject = {\n id: moduleName,\n block: blockJSON,\n moduleName: moduleName ?? '(unknown template module)',\n scope: () => usedScope,\n isStrictMode: true,\n };\n\n let factory = createTemplateFactory(templateJSONObject);\n\n return factory;\n}\n"],"names":["precompileJSON","importSync","getTemplateLocals","compileHBS","template","options","name","nameFor","component","error","setComponentTemplate","compileTemplate","moduleName","templateOnlyComponent","e","source","scope","localScope","array","concat","fn","get","hash","on","locals","strictMode","isProduction","meta","block","usedLocals","usedScope","map","key","blockJSON","JSON","stringify","templateJSONObject","id","isStrictMode","factory","createTemplateFactory"],"mappings":";;;;;;;;AAAA;AAkBA;AACA;AACA,MAAM;AAAEA,EAAAA,cAAAA;AAAe,CAAC,GAAGC,UAAU,CAAC,mBAAmB,CAAQ,CAAA;AACjE,MAAM;AAAEC,EAAAA,iBAAAA;AAAkB,CAAC,GAAGD,UAAU,CAAC,iBAAiB,CAAQ,CAAA;;AAElE;AACA;AACA;AACA;AACA;AACA;AACO,SAASE,UAAUA,CAACC,QAAgB,EAAEC,OAA+B,GAAG,EAAE,EAAiB;AAChG,EAAA,IAAIC,IAAI,GAAGC,OAAO,CAACH,QAAQ,CAAC,CAAA;AAC5B,EAAA,IAAII,SAAoC,CAAA;AACxC,EAAA,IAAIC,KAAwB,CAAA;EAE5B,IAAI;AACFD,IAAAA,SAAS,GAAGE,oBAAoB,CAC9BC,eAAe,CAACP,QAAQ,EAAE;AAAEQ,MAAAA,UAAU,EAAEP,OAAO,CAACO,UAAU,IAAIN,IAAI;MAAE,GAAGD,OAAAA;KAAS,CAAC,EACjFQ,GAAqB,CAACR,OAAO,CAACO,UAAU,IAAIN,IAAI,CAClD,CAAkB,CAAA;GACnB,CAAC,OAAOQ,CAAC,EAAE;AACVL,IAAAA,KAAK,GAAGK,CAAsB,CAAA;AAChC,GAAA;EAEA,OAAO;IAAER,IAAI;IAAEE,SAAS;AAAEC,IAAAA,KAAAA;GAAO,CAAA;AACnC,CAAA;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASE,eAAeA,CAACI,MAAc,EAAE;EAAEH,UAAU;AAAEI,EAAAA,KAAK,GAAG,EAAC;AAA0B,CAAC,EAAE;AAC3F,EAAA,IAAIC,UAAU,GAAG;IAAEC,KAAK;IAAEC,MAAM;IAAEC,EAAE;IAAEC,GAAG;IAAEC,IAAI;IAAEC,EAAE;IAAE,GAAGP,KAAAA;GAAc,CAAA;AACtE,EAAA,IAAIQ,MAAM,GAAGtB,iBAAiB,CAACa,MAAM,CAAC,CAAA;AAEtC,EAAA,IAAIV,OAAO,GAAG;AACZoB,IAAAA,UAAU,EAAE,IAAI;IAChBb,UAAU;IACVY,MAAM;AACNE,IAAAA,YAAY,EAAE,KAAK;AACnBC,IAAAA,IAAI,EAAE;AAAEf,MAAAA,UAAAA;AAAW,KAAA;GACpB,CAAA;;AAED;EACA,IAAI,CAACgB,KAAK,EAAEC,UAAU,CAAC,GAAG7B,cAAc,CAACe,MAAM,EAAEV,OAAO,CAAC,CAAA;AAEzD,EAAA,IAAIyB,SAAS,GAAGD,UAAU,CAACE,GAAG,CAAEC,GAAW,IAAKf,UAAU,CAACe,GAAG,CAAC,CAAC,CAAA;AAEhE,EAAA,IAAIC,SAAS,GAAGC,IAAI,CAACC,SAAS,CAACP,KAAK,CAAC,CAAA;AACrC,EAAA,IAAIQ,kBAAkB,GAAG;AACvBC,IAAAA,EAAE,EAAEzB,UAAU;AACdgB,IAAAA,KAAK,EAAEK,SAAS;IAChBrB,UAAU,EAAEA,UAAU,IAAI,2BAA2B;IACrDI,KAAK,EAAEA,MAAMc,SAAS;AACtBQ,IAAAA,YAAY,EAAE,IAAA;GACf,CAAA;AAED,EAAA,IAAIC,OAAO,GAAGC,qBAAqB,CAACJ,kBAAkB,CAAC,CAAA;AAEvD,EAAA,OAAOG,OAAO,CAAA;AAChB;;;;"}
@@ -1,3 +1,4 @@
1
+ export { compile, Compiled } from "./compile/index.js";
1
2
  export { compileHBS } from "./hbs.js";
2
3
  export { compileJS } from "./js.js";
3
4
  export { modules as frameworkModules } from "./known-modules.js";
@@ -1,3 +1,4 @@
1
+ export { Compiled, compile } from './compile/index.js';
1
2
  export { compileHBS } from './hbs.js';
2
3
  export { compileJS } from './js.js';
3
4
  export { modules as frameworkModules } from './known-modules.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -15,7 +15,6 @@ import * as _modifier from '@ember/modifier';
15
15
  import * as _object from '@ember/object';
16
16
  import * as _runloop from '@ember/runloop';
17
17
  import * as _service from '@ember/service';
18
- import * as _string from '@ember/string';
19
18
  import * as _utils from '@ember/utils';
20
19
  declare const modules: {
21
20
  '@ember/application': typeof _application;
@@ -29,7 +28,6 @@ declare const modules: {
29
28
  '@ember/object': typeof _object;
30
29
  '@ember/runloop': typeof _runloop;
31
30
  '@ember/service': typeof _service;
32
- '@ember/string': typeof _string;
33
31
  '@ember/template-factory': {
34
32
  createTemplateFactory: any;
35
33
  };
@@ -11,7 +11,6 @@ import * as _modifier from '@ember/modifier';
11
11
  import * as _object from '@ember/object';
12
12
  import * as _runloop from '@ember/runloop';
13
13
  import * as _service from '@ember/service';
14
- import * as _string from '@ember/string';
15
14
  import { createTemplateFactory } from '@ember/template-factory';
16
15
  import * as _utils from '@ember/utils';
17
16
 
@@ -33,7 +32,6 @@ const modules = {
33
32
  '@ember/object': _object,
34
33
  '@ember/runloop': _runloop,
35
34
  '@ember/service': _service,
36
- '@ember/string': _string,
37
35
  '@ember/template-factory': {
38
36
  createTemplateFactory
39
37
  },
@@ -1 +1 @@
1
- {"version":3,"file":"known-modules.js","sources":["../../src/browser/known-modules.ts"],"sourcesContent":["/**\n * We need to import and hang on to these references so that they\n * don't get optimized away during deploy\n */\nimport _GlimmerComponent from '@glimmer/component';\nimport * as _tracking from '@glimmer/tracking';\nimport * as _application from '@ember/application';\nimport * as _array from '@ember/array';\nimport * as _EmberComponent from '@ember/component';\nimport _TO from '@ember/component/template-only';\nimport * as _debug from '@ember/debug';\nimport * as _destroyable from '@ember/destroyable';\nimport * as _helpers from '@ember/helper';\nimport * as _modifier from '@ember/modifier';\nimport * as _object from '@ember/object';\nimport * as _runloop from '@ember/runloop';\nimport * as _service from '@ember/service';\nimport * as _string from '@ember/string';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { createTemplateFactory } from '@ember/template-factory';\nimport * as _utils from '@ember/utils';\n// import * as _owner from '@ember/owner';\n\nexport const modules = {\n '@ember/application': _application,\n '@ember/array': _array,\n '@ember/component': _EmberComponent,\n '@ember/component/template-only': _TO,\n '@ember/debug': _debug,\n '@ember/destroyable': _destroyable,\n '@ember/helper': _helpers,\n '@ember/modifier': _modifier,\n '@ember/object': _object,\n '@ember/runloop': _runloop,\n '@ember/service': _service,\n '@ember/string': _string,\n '@ember/template-factory': { createTemplateFactory },\n '@ember/utils': _utils,\n // '@ember/owner': _owner,\n\n '@glimmer/component': _GlimmerComponent,\n '@glimmer/tracking': _tracking,\n};\n"],"names":["modules","_application","_array","_EmberComponent","_TO","_debug","_destroyable","_helpers","_modifier","_object","_runloop","_service","_string","createTemplateFactory","_utils","_GlimmerComponent","_tracking"],"mappings":";;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AAmBA;;AAEO,MAAMA,OAAO,GAAG;AACrB,EAAA,oBAAoB,EAAEC,YAAY;AAClC,EAAA,cAAc,EAAEC,MAAM;AACtB,EAAA,kBAAkB,EAAEC,eAAe;AACnC,EAAA,gCAAgC,EAAEC,GAAG;AACrC,EAAA,cAAc,EAAEC,MAAM;AACtB,EAAA,oBAAoB,EAAEC,YAAY;AAClC,EAAA,eAAe,EAAEC,QAAQ;AACzB,EAAA,iBAAiB,EAAEC,SAAS;AAC5B,EAAA,eAAe,EAAEC,OAAO;AACxB,EAAA,gBAAgB,EAAEC,QAAQ;AAC1B,EAAA,gBAAgB,EAAEC,QAAQ;AAC1B,EAAA,eAAe,EAAEC,OAAO;AACxB,EAAA,yBAAyB,EAAE;AAAEC,IAAAA,qBAAAA;GAAuB;AACpD,EAAA,cAAc,EAAEC,MAAM;AACtB;;AAEA,EAAA,oBAAoB,EAAEC,iBAAiB;AACvC,EAAA,mBAAmB,EAAEC,SAAAA;AACvB;;;;"}
1
+ {"version":3,"file":"known-modules.js","sources":["../../src/browser/known-modules.ts"],"sourcesContent":["/**\n * We need to import and hang on to these references so that they\n * don't get optimized away during deploy\n */\nimport _GlimmerComponent from '@glimmer/component';\nimport * as _tracking from '@glimmer/tracking';\nimport * as _application from '@ember/application';\nimport * as _array from '@ember/array';\nimport * as _EmberComponent from '@ember/component';\nimport _TO from '@ember/component/template-only';\nimport * as _debug from '@ember/debug';\nimport * as _destroyable from '@ember/destroyable';\nimport * as _helpers from '@ember/helper';\nimport * as _modifier from '@ember/modifier';\nimport * as _object from '@ember/object';\nimport * as _runloop from '@ember/runloop';\nimport * as _service from '@ember/service';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { createTemplateFactory } from '@ember/template-factory';\nimport * as _utils from '@ember/utils';\n// import * as _owner from '@ember/owner';\n\nexport const modules = {\n '@ember/application': _application,\n '@ember/array': _array,\n '@ember/component': _EmberComponent,\n '@ember/component/template-only': _TO,\n '@ember/debug': _debug,\n '@ember/destroyable': _destroyable,\n '@ember/helper': _helpers,\n '@ember/modifier': _modifier,\n '@ember/object': _object,\n '@ember/runloop': _runloop,\n '@ember/service': _service,\n '@ember/template-factory': { createTemplateFactory },\n '@ember/utils': _utils,\n // '@ember/owner': _owner,\n\n '@glimmer/component': _GlimmerComponent,\n '@glimmer/tracking': _tracking,\n};\n"],"names":["modules","_application","_array","_EmberComponent","_TO","_debug","_destroyable","_helpers","_modifier","_object","_runloop","_service","createTemplateFactory","_utils","_GlimmerComponent","_tracking"],"mappings":";;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AAkBA;;AAEO,MAAMA,OAAO,GAAG;AACrB,EAAA,oBAAoB,EAAEC,YAAY;AAClC,EAAA,cAAc,EAAEC,MAAM;AACtB,EAAA,kBAAkB,EAAEC,eAAe;AACnC,EAAA,gCAAgC,EAAEC,GAAG;AACrC,EAAA,cAAc,EAAEC,MAAM;AACtB,EAAA,oBAAoB,EAAEC,YAAY;AAClC,EAAA,eAAe,EAAEC,QAAQ;AACzB,EAAA,iBAAiB,EAAEC,SAAS;AAC5B,EAAA,eAAe,EAAEC,OAAO;AACxB,EAAA,gBAAgB,EAAEC,QAAQ;AAC1B,EAAA,gBAAgB,EAAEC,QAAQ;AAC1B,EAAA,yBAAyB,EAAE;AAAEC,IAAAA,qBAAAA;GAAuB;AACpD,EAAA,cAAc,EAAEC,MAAM;AACtB;;AAEA,EAAA,oBAAoB,EAAEC,iBAAiB;AACvC,EAAA,mBAAmB,EAAEC,SAAAA;AACvB;;;;"}
@@ -11,6 +11,10 @@ interface Babel {
11
11
  transform: typeof transform;
12
12
  }
13
13
  type Options = {
14
+ /**
15
+ * @internal
16
+ * @deprecated do not use - not under semver
17
+ */
14
18
  skypack?: boolean;
15
19
  };
16
20
  type ExtraModules = Record<string, unknown>;
@@ -0,0 +1,2 @@
1
+ declare function clearCompileCache(): void;
2
+ export { clearCompileCache };
@@ -0,0 +1,8 @@
1
+ import { CACHE } from '../browser/compile/index.js';
2
+
3
+ function clearCompileCache() {
4
+ CACHE.clear();
5
+ }
6
+
7
+ export { clearCompileCache };
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../src/test-support/index.ts"],"sourcesContent":["import { CACHE } from '../browser/compile/index';\n\nexport function clearCompileCache() {\n CACHE.clear();\n}\n"],"names":["clearCompileCache","CACHE","clear"],"mappings":";;AAEO,SAASA,iBAAiBA,GAAG;EAClCC,KAAK,CAACC,KAAK,EAAE,CAAA;AACf;;;;"}