repl-sdk 1.0.0 → 1.0.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.
@@ -1,110 +0,0 @@
1
- import { completionKeymap } from "@codemirror/autocomplete";
2
- import { indentWithTab } from "@codemirror/commands";
3
- import { markdownKeymap } from "@codemirror/lang-markdown";
4
- import { Compartment, EditorState, EditorSelection } from "@codemirror/state";
5
- import { keymap } from "@codemirror/view";
6
- import { EditorView, basicSetup } from "codemirror";
7
- import { foldByIndent } from "codemirror-lang-mermaid";
8
- async function buildCodemirror({
9
- element,
10
- text,
11
- format,
12
- extensions,
13
- handleUpdate,
14
- getLang,
15
- getSupport
16
- }) {
17
- const languageConf = new Compartment();
18
- const supportConf = new Compartment();
19
- const tabSize = new Compartment();
20
- const updateListener = EditorView.updateListener.of(({ state, docChanged }) => {
21
- if (docChanged) {
22
- handleUpdate(state.doc.toString());
23
- }
24
- });
25
- async function languageForFormat(format2) {
26
- switch (format2) {
27
- case "glimdown":
28
- case "gdm":
29
- case "gmd":
30
- return getLang("gmd");
31
- case "jsx":
32
- case "jsx|react":
33
- return getLang("jsx|react");
34
- default:
35
- return getLang(format2);
36
- }
37
- }
38
- async function supportForFormat(format2) {
39
- const support2 = await getSupport(format2);
40
- if (!support2) {
41
- return [];
42
- }
43
- return Array.isArray(support2) ? support2 : [support2];
44
- }
45
- const [language, support] = await Promise.all([
46
- languageForFormat(format),
47
- supportForFormat(format)
48
- ]);
49
- const editorExtensions = [
50
- // features
51
- basicSetup,
52
- foldByIndent(),
53
- // Language
54
- languageConf.of(language),
55
- supportConf.of(support),
56
- updateListener,
57
- EditorView.lineWrapping,
58
- keymap.of([indentWithTab, ...completionKeymap, ...markdownKeymap]),
59
- // TODO: lsp,
60
- ...extensions ?? []
61
- ].filter(Boolean);
62
- const view = new EditorView({
63
- parent: element,
64
- state: EditorState.create({
65
- extensions: editorExtensions
66
- })
67
- });
68
- const setText = async (text2, format2) => {
69
- const [language2, support2] = await Promise.all([
70
- languageForFormat(format2),
71
- supportForFormat(format2)
72
- ]);
73
- console.debug(`Codemirror changing to ${format2}: ${language2 ? "ok" : "not ok"}`);
74
- view.dispatch({
75
- changes: {
76
- from: 0,
77
- to: view.state.doc.length,
78
- insert: text2
79
- },
80
- effects: [languageConf.reconfigure(language2), supportConf.reconfigure(support2)]
81
- });
82
- };
83
- const setFormat = async (format2) => {
84
- const [language2, support2] = await Promise.all([
85
- languageForFormat(format2),
86
- supportForFormat(format2)
87
- ]);
88
- console.debug(`Codemirror changing to ${format2}: ${language2 ? "ok" : "not ok"}`);
89
- view.dispatch({
90
- effects: [languageConf.reconfigure(language2), supportConf.reconfigure(support2)]
91
- });
92
- };
93
- view.dispatch(
94
- view.state.changeByRange((range) => ({
95
- changes: [{ from: range.from, insert: text }],
96
- range: EditorSelection.range(range.from, range.to)
97
- }))
98
- );
99
- view.dispatch({
100
- effects: [
101
- tabSize.reconfigure(EditorState.tabSize.of(2))
102
- // languageConf.reconfigure(languageForFormat(format)),
103
- ]
104
- });
105
- return { view, setText, setFormat };
106
- }
107
- export {
108
- buildCodemirror
109
- };
110
- //# sourceMappingURL=codemirror-D4aIVflZ.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"codemirror-D4aIVflZ.js","sources":["../src/codemirror.js"],"sourcesContent":["import { completionKeymap } from '@codemirror/autocomplete';\nimport { indentWithTab } from '@codemirror/commands';\nimport { markdownKeymap } from '@codemirror/lang-markdown';\nimport { Compartment, EditorSelection, EditorState } from '@codemirror/state';\nimport { keymap } from '@codemirror/view';\nimport { basicSetup, EditorView } from 'codemirror';\n// @ts-ignore\nimport { foldByIndent } from 'codemirror-lang-mermaid';\n\n/**\n * Builds and creates a codemirror instance for the given element\n *\n * @typedef {any} Extension\n *\n * @typedef {object} CodemirrorOptions\n * @property {HTMLElement} element\n * @property {string} text\n * @property {string} format\n * @property {Extension[]} [ extensions ]\n * @property {(text: string) => void} handleUpdate\n * @property {(format: string) => Promise<Extension>} getLang\n * @property {(format: string) => Promise<Extension>} getSupport\n *\n * @param {CodemirrorOptions} options\n */\nexport async function buildCodemirror({\n element,\n text,\n format,\n extensions,\n handleUpdate,\n getLang,\n getSupport,\n}) {\n const languageConf = new Compartment();\n const supportConf = new Compartment();\n const tabSize = new Compartment();\n\n const updateListener = EditorView.updateListener.of(({ state, docChanged }) => {\n if (docChanged) {\n handleUpdate(state.doc.toString());\n }\n });\n\n /**\n * @param {string} format\n */\n async function languageForFormat(format) {\n switch (format) {\n case 'glimdown':\n case 'gdm':\n case 'gmd':\n return getLang('gmd');\n case 'jsx':\n case 'jsx|react':\n return getLang('jsx|react');\n default:\n return getLang(format);\n }\n }\n\n /**\n * @param {string} format\n */\n async function supportForFormat(format) {\n const support = await getSupport(format);\n\n if (!support) {\n return [];\n }\n\n return Array.isArray(support) ? support : [support];\n }\n\n const [language, support] = await Promise.all([\n languageForFormat(format),\n supportForFormat(format),\n ]);\n\n const editorExtensions = [\n // features\n basicSetup,\n foldByIndent(),\n // Language\n languageConf.of(language),\n supportConf.of(support),\n\n updateListener,\n EditorView.lineWrapping,\n keymap.of([indentWithTab, ...completionKeymap, ...markdownKeymap]),\n\n // TODO: lsp,\n\n ...(extensions ?? []),\n ].filter(Boolean);\n\n const view = new EditorView({\n parent: element,\n state: EditorState.create({\n extensions: editorExtensions,\n }),\n });\n\n /**\n * Called from the host app to update the editor.\n *\n * @param {string} text\n * @param {string} format\n */\n const setText = async (text, format) => {\n const [language, support] = await Promise.all([\n languageForFormat(format),\n supportForFormat(format),\n ]);\n\n console.debug(`Codemirror changing to ${format}: ${language ? 'ok' : 'not ok'}`);\n\n view.dispatch({\n changes: {\n from: 0,\n to: view.state.doc.length,\n insert: text,\n },\n effects: [languageConf.reconfigure(language), supportConf.reconfigure(support)],\n });\n };\n\n /**\n * Changes just the format of the editor.\n *\n * @param {string} format\n */\n const setFormat = async (format) => {\n const [language, support] = await Promise.all([\n languageForFormat(format),\n supportForFormat(format),\n ]);\n\n console.debug(`Codemirror changing to ${format}: ${language ? 'ok' : 'not ok'}`);\n\n view.dispatch({\n effects: [languageConf.reconfigure(language), supportConf.reconfigure(support)],\n });\n };\n\n view.dispatch(\n view.state.changeByRange((range) => ({\n changes: [{ from: range.from, insert: text }],\n range: EditorSelection.range(range.from, range.to),\n }))\n );\n\n view.dispatch({\n effects: [\n tabSize.reconfigure(EditorState.tabSize.of(2)),\n // languageConf.reconfigure(languageForFormat(format)),\n ],\n });\n\n return { view, setText, setFormat };\n}\n"],"names":["format","support","text","language"],"mappings":"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"}
@@ -1,173 +0,0 @@
1
- import "./index-CUWCqMoD.js";
2
- import { r as renderApp } from "./render-app-island-B-i8rvGi.js";
3
- let elementId = 0;
4
- const buildDependencies = [
5
- /**
6
- * The only version of babel that is easily runnable in the browser
7
- * This includes way too much stuff.
8
- */
9
- "@babel/standalone",
10
- /**
11
- * We will be using this decorator transform
12
- * instead of the babel one.
13
- * The babel transform does way too much transforming.
14
- */
15
- "decorator-transforms",
16
- /**
17
- * Babel plugin that understands all the different ways
18
- * which templates have been authored and what they need to
19
- * compile to over the years.
20
- */
21
- "babel-plugin-ember-template-compilation",
22
- /**
23
- * The actual template-compiler is ember-sounce-dependent,
24
- * because the underlying format / bytecodes / etc is private,
25
- * and can change between versions of ember-source.
26
- */
27
- "ember-source/dist/ember-template-compiler.js",
28
- /**
29
- * Converts gjs/gts to standard js/ts
30
- */
31
- "content-tag",
32
- /**
33
- * Older-style build macros
34
- * (before import.meta.env was even a thing)
35
- *
36
- * These remove `@glimmer/env` and DEBUG usages
37
- */
38
- "babel-plugin-debug-macros"
39
- /**
40
- * build macros, because the ecosystem isn't standardized on imprt.meta.env?.X
41
- * Also, @embroider/macros does dead-code-elimination, which is handy.
42
- */
43
- // '@embroider/macros/babel',
44
- ];
45
- async function compiler(config, api) {
46
- const [
47
- _babel,
48
- _decoratorTransforms,
49
- _emberTemplateCompilation,
50
- compiler2,
51
- contentTag,
52
- { default: DebugMacros }
53
- // embroiderMacros,
54
- ] = await api.tryResolveAll(buildDependencies);
55
- const decoratorTransforms = "default" in _decoratorTransforms ? _decoratorTransforms.default : _decoratorTransforms;
56
- const emberTemplateCompilation = "default" in _emberTemplateCompilation ? _emberTemplateCompilation.default : _emberTemplateCompilation;
57
- const babel = "availablePlugins" in _babel ? _babel : _babel.default;
58
- async function transform(text) {
59
- return babel.transform(text, {
60
- filename: `dynamic-repl.js`,
61
- plugins: [
62
- [
63
- emberTemplateCompilation,
64
- {
65
- compiler: compiler2,
66
- transforms: [
67
- // ...macros.templateMacros
68
- ],
69
- targetFormat: "wire"
70
- }
71
- ],
72
- [
73
- // @ts-ignore - we don't care about types here..
74
- decoratorTransforms,
75
- {
76
- runtime: {
77
- import: "decorator-transforms/runtime"
78
- }
79
- }
80
- ],
81
- // ...macros.babelMacros,
82
- [
83
- DebugMacros,
84
- {
85
- flags: [
86
- {
87
- source: "@glimmer/env",
88
- flags: {
89
- DEBUG: true,
90
- CI: false
91
- }
92
- }
93
- ],
94
- debugTools: {
95
- isDebug: true,
96
- source: "@ember/debug",
97
- assertPredicateIndex: 1
98
- },
99
- externalizeHelpers: {
100
- module: "@ember/debug"
101
- }
102
- },
103
- "@ember/debug stripping"
104
- ],
105
- [
106
- DebugMacros,
107
- {
108
- externalizeHelpers: {
109
- module: "@ember/application/deprecations"
110
- },
111
- debugTools: {
112
- isDebug: true,
113
- source: "@ember/application/deprecations",
114
- assertPredicateIndex: 1
115
- }
116
- },
117
- "@ember/application/deprecations stripping"
118
- ]
119
- ],
120
- presets: []
121
- });
122
- }
123
- const preprocessor = new contentTag.Preprocessor();
124
- const gjsCompiler = {
125
- compile: async (text, options) => {
126
- const { code: preprocessed } = preprocessor.process(text, { filename: "dynamic-repl.js" });
127
- const transformed = await transform(preprocessed);
128
- const code = transformed.code;
129
- return code;
130
- },
131
- render: async (element, compiled, extra, compiler3) => {
132
- const attribute = `data-repl-sdk-ember-gjs-${elementId++}`;
133
- element.setAttribute(attribute, "");
134
- const [application, destroyable, resolver, router, route, testWaiters, runloop] = await compiler3.tryResolveAll([
135
- "@ember/application",
136
- "@ember/destroyable",
137
- "ember-resolver",
138
- "@ember/routing/router",
139
- "@ember/routing/route",
140
- "@ember/test-waiters",
141
- "@ember/runloop"
142
- ]);
143
- return renderApp({
144
- element,
145
- selector: `[${attribute}]`,
146
- component: compiled,
147
- log: compiler3.announce,
148
- modules: {
149
- application,
150
- destroyable,
151
- resolver,
152
- router,
153
- route,
154
- testWaiters,
155
- runloop
156
- }
157
- });
158
- },
159
- handlers: {
160
- js: async (text) => {
161
- return gjsCompiler.compile(text, {});
162
- },
163
- mjs: async (text) => {
164
- return gjsCompiler.compile(text, {});
165
- }
166
- }
167
- };
168
- return gjsCompiler;
169
- }
170
- export {
171
- compiler
172
- };
173
- //# sourceMappingURL=gjs-CzFzkEFv.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gjs-CzFzkEFv.js","sources":["../src/compilers/ember/gjs.js"],"sourcesContent":["import { cache } from '../../cache.js';\nimport { renderApp } from './render-app-island.js';\n\nlet elementId = 0;\n\nconst buildDependencies = [\n /**\n * The only version of babel that is easily runnable in the browser\n * This includes way too much stuff.\n */\n '@babel/standalone',\n /**\n * We will be using this decorator transform\n * instead of the babel one.\n * The babel transform does way too much transforming.\n */\n 'decorator-transforms',\n\n /**\n * Babel plugin that understands all the different ways\n * which templates have been authored and what they need to\n * compile to over the years.\n */\n 'babel-plugin-ember-template-compilation',\n /**\n * The actual template-compiler is ember-sounce-dependent,\n * because the underlying format / bytecodes / etc is private,\n * and can change between versions of ember-source.\n */\n 'ember-source/dist/ember-template-compiler.js',\n /**\n * Converts gjs/gts to standard js/ts\n */\n 'content-tag',\n /**\n * Older-style build macros\n * (before import.meta.env was even a thing)\n *\n * These remove `@glimmer/env` and DEBUG usages\n */\n 'babel-plugin-debug-macros',\n\n /**\n * build macros, because the ecosystem isn't standardized on imprt.meta.env?.X\n * Also, @embroider/macros does dead-code-elimination, which is handy.\n */\n // '@embroider/macros/babel',\n];\n\n/**\n * @type {import('../../types.ts').CompilerConfig['compiler']}\n */\nexport async function compiler(config, api) {\n const [\n _babel,\n _decoratorTransforms,\n _emberTemplateCompilation,\n compiler,\n contentTag,\n { default: DebugMacros },\n // embroiderMacros,\n ] = await api.tryResolveAll(buildDependencies);\n\n // These libraries are compiled incorrectly for cjs<->ESM compat\n const decoratorTransforms =\n 'default' in _decoratorTransforms ? _decoratorTransforms.default : _decoratorTransforms;\n\n const emberTemplateCompilation =\n 'default' in _emberTemplateCompilation\n ? _emberTemplateCompilation.default\n : _emberTemplateCompilation;\n\n const babel = 'availablePlugins' in _babel ? _babel : _babel.default;\n\n // let macros = embroiderMacros.buildMacros();\n\n /**\n * @param {string} text\n */\n async function transform(text) {\n return babel.transform(text, {\n filename: `dynamic-repl.js`,\n plugins: [\n [\n emberTemplateCompilation,\n {\n compiler,\n transforms: [\n // ...macros.templateMacros\n ],\n targetFormat: 'wire',\n },\n ],\n [\n // @ts-ignore - we don't care about types here..\n decoratorTransforms,\n {\n runtime: {\n import: 'decorator-transforms/runtime',\n },\n },\n ],\n // ...macros.babelMacros,\n [\n DebugMacros,\n {\n flags: [\n {\n source: '@glimmer/env',\n flags: {\n DEBUG: true,\n CI: false,\n },\n },\n ],\n debugTools: {\n isDebug: true,\n source: '@ember/debug',\n assertPredicateIndex: 1,\n },\n externalizeHelpers: {\n module: '@ember/debug',\n },\n },\n '@ember/debug stripping',\n ],\n [\n DebugMacros,\n {\n externalizeHelpers: {\n module: '@ember/application/deprecations',\n },\n debugTools: {\n isDebug: true,\n source: '@ember/application/deprecations',\n assertPredicateIndex: 1,\n },\n },\n '@ember/application/deprecations stripping',\n ],\n ],\n presets: [],\n });\n }\n\n const preprocessor = new contentTag.Preprocessor();\n\n /**\n * @type {import('../../types.ts').Compiler}\n */\n const gjsCompiler = {\n compile: async (text, options) => {\n const { code: preprocessed } = preprocessor.process(text, { filename: 'dynamic-repl.js' });\n const transformed = await transform(preprocessed);\n\n const code = transformed.code;\n\n return code;\n },\n render: async (element, compiled, extra, compiler) => {\n /**\n *\n * TODO: These will make things easier:\n * https://github.com/emberjs/rfcs/pull/1099\n * https://github.com/ember-cli/ember-addon-blueprint/blob/main/files/tests/test-helper.js\n */\n const attribute = `data-repl-sdk-ember-gjs-${elementId++}`;\n\n element.setAttribute(attribute, '');\n\n const [application, destroyable, resolver, router, route, testWaiters, runloop] =\n await compiler.tryResolveAll([\n '@ember/application',\n '@ember/destroyable',\n 'ember-resolver',\n '@ember/routing/router',\n '@ember/routing/route',\n '@ember/test-waiters',\n '@ember/runloop',\n ]);\n\n // We don't want to await here, because we need to early\n // return the element so that the app can render in to it.\n // (Ember will only render in to an element if it's present in the DOM)\n return renderApp({\n element,\n selector: `[${attribute}]`,\n component: compiled,\n log: compiler.announce,\n modules: {\n application,\n destroyable,\n resolver,\n router,\n route,\n testWaiters,\n runloop,\n },\n });\n },\n handlers: {\n js: async (text) => {\n return gjsCompiler.compile(text, {});\n },\n mjs: async (text) => {\n return gjsCompiler.compile(text, {});\n },\n },\n };\n\n return gjsCompiler;\n}\n"],"names":["compiler"],"mappings":"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"}
@@ -1,166 +0,0 @@
1
- import { b as buildCodeFenceMetaUtils, i as isRecord, a as assert } from "./index-CUWCqMoD.js";
2
- import { r as renderApp } from "./render-app-island-B-i8rvGi.js";
3
- let elementId = 0;
4
- function filterOptions(options) {
5
- if (!isRecord(options)) {
6
- return {
7
- scope: {},
8
- remarkPlugins: [],
9
- rehypePlugins: [],
10
- ShadowComponent: void 0,
11
- CopyComponent: void 0
12
- };
13
- }
14
- return {
15
- scope: (
16
- /** @type {Record<string, unknown>}*/
17
- options?.scope || {}
18
- ),
19
- remarkPlugins: (
20
- /** @type {Plugin[]}*/
21
- options?.remarkPlugins || []
22
- ),
23
- rehypePlugins: (
24
- /** @type {Plugin[]}*/
25
- options?.rehypePlugins || []
26
- ),
27
- ShadowComponent: (
28
- /** @type {string}*/
29
- options?.ShadowComponent
30
- ),
31
- CopyComponent: (
32
- /** @type {string}*/
33
- options?.CopyComponent
34
- )
35
- };
36
- }
37
- async function compiler(config, api) {
38
- const userOptions = filterOptions(
39
- /** @type {Record<string, unknown>} */
40
- config.userOptions?.gmd || config
41
- );
42
- const { isLive, isPreview, needsLive, allowedFormats, getFlavorFromMeta, isBelow } = buildCodeFenceMetaUtils(api);
43
- const { parseMarkdown } = await import(
44
- /* @vite-ignore */
45
- "./parse-aBKk9rfS.js"
46
- );
47
- const gmdCompiler = {
48
- compile: async (text, options) => {
49
- const compileOptions = filterOptions(options);
50
- const result = await parseMarkdown(text, {
51
- remarkPlugins: [...userOptions.remarkPlugins, ...compileOptions.remarkPlugins],
52
- rehypePlugins: [...userOptions.rehypePlugins, ...compileOptions.rehypePlugins],
53
- isLive,
54
- isPreview,
55
- isBelow,
56
- needsLive,
57
- ALLOWED_FORMATS: allowedFormats,
58
- getFlavorFromMeta
59
- });
60
- const { template } = await api.tryResolve("@ember/template-compiler/runtime");
61
- const scope = {
62
- ...filterOptions(userOptions).scope,
63
- ...filterOptions(options).scope
64
- };
65
- const component = template(result.text, {
66
- scope: () => ({
67
- ...scope
68
- // TODO: compile all the components from "result" and add them to scope here
69
- // would this be better than the markdown style multiple islands
70
- })
71
- });
72
- return { compiled: component, ...result, scope };
73
- },
74
- render: async (element, compiled, extra, compiler2) => {
75
- const attribute = `data-repl-sdk-ember-gmd-${elementId++}`;
76
- element.setAttribute(attribute, "");
77
- const [application, destroyable, resolver, router, route, testWaiters, runloop] = await compiler2.tryResolveAll([
78
- "@ember/application",
79
- "@ember/destroyable",
80
- "ember-resolver",
81
- "@ember/routing/router",
82
- "@ember/routing/route",
83
- "@ember/test-waiters",
84
- "@ember/runloop"
85
- ]);
86
- const destroy = await renderApp({
87
- element,
88
- selector: `[${attribute}]`,
89
- component: compiled,
90
- log: compiler2.announce,
91
- modules: {
92
- application,
93
- destroyable,
94
- resolver,
95
- router,
96
- route,
97
- testWaiters,
98
- runloop
99
- }
100
- });
101
- const destroyables = [];
102
- await Promise.all(
103
- /** @type {unknown[]} */
104
- extra.codeBlocks.map(async (info) => {
105
- const infoObj = (
106
- /** @type {Record<string, unknown>} */
107
- info
108
- );
109
- if (!api.canCompile(
110
- /** @type {string} */
111
- infoObj.format,
112
- /** @type {string} */
113
- infoObj.flavor
114
- )) {
115
- return;
116
- }
117
- const flavor = (
118
- /** @type {string} */
119
- infoObj.flavor
120
- );
121
- const hasScope = flavor === "ember" || infoObj.format === "gjs" || infoObj.format === "hbs";
122
- const subRender = await compiler2.compile(
123
- /** @type {string} */
124
- infoObj.format,
125
- /** @type {string} */
126
- infoObj.code,
127
- {
128
- ...compiler2.optionsFor(
129
- /** @type {string} */
130
- infoObj.format,
131
- flavor
132
- ),
133
- flavor,
134
- // @ts-ignore
135
- ...hasScope ? {
136
- scope: extra.scope
137
- } : {}
138
- }
139
- );
140
- const selector = `#${/** @type {string} */
141
- infoObj.placeholderId}`;
142
- const target = element.querySelector(selector);
143
- assert(
144
- `Could not find placeholder / target element (using selector: \`${selector}\`). Could not render ${/** @type {string} */
145
- infoObj.format} block.`,
146
- target
147
- );
148
- destroyables.push(subRender.destroy);
149
- target.appendChild(subRender.element);
150
- })
151
- );
152
- return () => {
153
- for (const subDestroy of destroyables) {
154
- subDestroy();
155
- }
156
- destroy();
157
- };
158
- }
159
- };
160
- return gmdCompiler;
161
- }
162
- export {
163
- compiler,
164
- filterOptions
165
- };
166
- //# sourceMappingURL=gmd-D9OXs2v3.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gmd-D9OXs2v3.js","sources":["../src/compilers/ember/gmd.js"],"sourcesContent":["/**\n * @typedef {import('unified').Plugin} Plugin\n */\nimport { assert, isRecord } from '../../utils.js';\nimport { buildCodeFenceMetaUtils } from '../markdown/utils.js';\nimport { renderApp } from './render-app-island.js';\n\nlet elementId = 0;\n\n/**\n * @param {unknown} [ options ]\n * @returns {{\n * scope: Record<string, unknown>,\n * remarkPlugins: Plugin[],\n * rehypePlugins: Plugin[],\n * ShadowComponent: string | undefined,\n * CopyComponent: string | undefined\n * }}\n */\nexport function filterOptions(options) {\n if (!isRecord(options)) {\n return {\n scope: {},\n remarkPlugins: [],\n rehypePlugins: [],\n ShadowComponent: undefined,\n CopyComponent: undefined,\n };\n }\n\n return {\n scope: /** @type {Record<string, unknown>}*/ (options?.scope || {}),\n remarkPlugins: /** @type {Plugin[]}*/ (options?.remarkPlugins || []),\n rehypePlugins: /** @type {Plugin[]}*/ (options?.rehypePlugins || []),\n ShadowComponent: /** @type {string}*/ (options?.ShadowComponent),\n CopyComponent: /** @type {string}*/ (options?.CopyComponent),\n };\n}\n\n/**\n * @type {import('../../types.ts').CompilerConfig['compiler']}\n */\nexport async function compiler(config, api) {\n const userOptions = filterOptions(\n /** @type {Record<string, unknown>} */ (config.userOptions)?.gmd || config\n );\n\n const { isLive, isPreview, needsLive, allowedFormats, getFlavorFromMeta, isBelow } =\n buildCodeFenceMetaUtils(api);\n\n const { parseMarkdown } = await import(/* @vite-ignore */ '../markdown/parse.js');\n\n /**\n * @type {import('../../types.ts').Compiler}\n */\n const gmdCompiler = {\n compile: async (text, options) => {\n const compileOptions = filterOptions(options);\n const result = await parseMarkdown(text, {\n remarkPlugins: [...userOptions.remarkPlugins, ...compileOptions.remarkPlugins],\n rehypePlugins: [...userOptions.rehypePlugins, ...compileOptions.rehypePlugins],\n isLive,\n isPreview,\n isBelow,\n needsLive,\n ALLOWED_FORMATS: allowedFormats,\n getFlavorFromMeta,\n });\n\n const { template } = await api.tryResolve('@ember/template-compiler/runtime');\n\n const scope = {\n ...filterOptions(userOptions).scope,\n ...filterOptions(options).scope,\n };\n\n const component = template(result.text, {\n scope: () => ({\n ...scope,\n // TODO: compile all the components from \"result\" and add them to scope here\n // would this be better than the markdown style multiple islands\n }),\n });\n\n return { compiled: component, ...result, scope };\n },\n render: async (element, compiled, extra, compiler) => {\n /**\n *\n * TODO: These will make things easier:\n * https://github.com/emberjs/rfcs/pull/1099\n * https://github.com/ember-cli/ember-addon-blueprint/blob/main/files/tests/test-helper.js\n */\n const attribute = `data-repl-sdk-ember-gmd-${elementId++}`;\n\n element.setAttribute(attribute, '');\n\n const [application, destroyable, resolver, router, route, testWaiters, runloop] =\n await compiler.tryResolveAll([\n '@ember/application',\n '@ember/destroyable',\n 'ember-resolver',\n '@ember/routing/router',\n '@ember/routing/route',\n '@ember/test-waiters',\n '@ember/runloop',\n ]);\n\n // We don't want to await here, because we need to early\n // return the element so that the app can render in to it.\n // (Ember will only render in to an element if it's present in the DOM)\n const destroy = await renderApp({\n element,\n selector: `[${attribute}]`,\n component: compiled,\n log: compiler.announce,\n modules: {\n application,\n destroyable,\n resolver,\n router,\n route,\n testWaiters,\n runloop,\n },\n });\n\n /**\n * @type {(() => void)[]}\n */\n const destroyables = [];\n\n await Promise.all(\n /** @type {unknown[]} */ (extra.codeBlocks).map(async (/** @type {unknown} */ info) => {\n /** @type {Record<string, unknown>} */\n const infoObj = /** @type {Record<string, unknown>} */ (info);\n\n if (\n !api.canCompile(\n /** @type {string} */ (infoObj.format),\n /** @type {string} */ (infoObj.flavor)\n )\n ) {\n return;\n }\n\n const flavor = /** @type {string} */ (infoObj.flavor);\n const hasScope =\n flavor === 'ember' || infoObj.format === 'gjs' || infoObj.format === 'hbs';\n const subRender = await compiler.compile(\n /** @type {string} */ (infoObj.format),\n /** @type {string} */ (infoObj.code),\n {\n ...compiler.optionsFor(/** @type {string} */ (infoObj.format), flavor),\n flavor: flavor,\n // @ts-ignore\n ...(hasScope\n ? {\n scope: extra.scope,\n }\n : {}),\n }\n );\n\n const selector = `#${/** @type {string} */ (infoObj.placeholderId)}`;\n const target = element.querySelector(selector);\n\n assert(\n `Could not find placeholder / target element (using selector: \\`${selector}\\`). ` +\n `Could not render ${/** @type {string} */ (infoObj.format)} block.`,\n target\n );\n\n destroyables.push(subRender.destroy);\n target.appendChild(subRender.element);\n })\n );\n\n return () => {\n for (const subDestroy of destroyables) {\n subDestroy();\n }\n\n destroy();\n };\n },\n };\n\n return gmdCompiler;\n}\n"],"names":["compiler"],"mappings":"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"}
@@ -1,62 +0,0 @@
1
- import { i as isRecord } from "./index-CUWCqMoD.js";
2
- import { r as renderApp } from "./render-app-island-B-i8rvGi.js";
3
- let elementId = 0;
4
- function filterOptions(options) {
5
- if (!isRecord(options)) {
6
- return { scope: {} };
7
- }
8
- return {
9
- scope: (
10
- /** @type {Record<string, unknown>}*/
11
- options?.scope || {}
12
- )
13
- };
14
- }
15
- async function compiler(config, api) {
16
- const hbsCompiler = {
17
- compile: async (text, options) => {
18
- const { template } = await api.tryResolve("@ember/template-compiler/runtime");
19
- const component = template(text, {
20
- scope: () => ({
21
- ...filterOptions(config).scope,
22
- ...filterOptions(options).scope
23
- })
24
- });
25
- await new Promise(requestAnimationFrame);
26
- return component;
27
- },
28
- render: async (element, compiled, extra, compiler2) => {
29
- const attribute = `data-repl-sdk-ember-hbs-${elementId++}`;
30
- element.setAttribute(attribute, "");
31
- const [application, destroyable, resolver, router, route, testWaiters, runloop] = await compiler2.tryResolveAll([
32
- "@ember/application",
33
- "@ember/destroyable",
34
- "ember-resolver",
35
- "@ember/routing/router",
36
- "@ember/routing/route",
37
- "@ember/test-waiters",
38
- "@ember/runloop"
39
- ]);
40
- return renderApp({
41
- element,
42
- selector: `[${attribute}]`,
43
- component: compiled,
44
- log: compiler2.announce,
45
- modules: {
46
- application,
47
- destroyable,
48
- resolver,
49
- router,
50
- route,
51
- testWaiters,
52
- runloop
53
- }
54
- });
55
- }
56
- };
57
- return hbsCompiler;
58
- }
59
- export {
60
- compiler
61
- };
62
- //# sourceMappingURL=hbs-CuhWjffM.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hbs-CuhWjffM.js","sources":["../src/compilers/ember/hbs.js"],"sourcesContent":["import { isRecord } from '../../utils.js';\nimport { renderApp } from './render-app-island.js';\n\nlet elementId = 0;\n\n/**\n * @param {unknown} [ options ]\n * @returns {{ scope: Record<string, unknown> }}\n */\nfunction filterOptions(options) {\n if (!isRecord(options)) {\n return { scope: {} };\n }\n\n return {\n scope: /** @type {Record<string, unknown>}*/ (options?.scope || {}),\n };\n}\n\n/**\n * @type {import('../../types.ts').CompilerConfig['compiler']}\n */\nexport async function compiler(config, api) {\n /**\n * @type {import('../../types.ts').Compiler}\n */\n const hbsCompiler = {\n compile: async (text, options) => {\n const { template } = await api.tryResolve('@ember/template-compiler/runtime');\n\n const component = template(text, {\n scope: () => ({\n ...filterOptions(config).scope,\n ...filterOptions(options).scope,\n }),\n });\n\n /**\n * Some versions of ember implement the runtime template compiler incorrectly (albeit, correct enough for the constraints at the time).\n * So we need to wait longer than a microtask queue request could take.\n *\n * To make sure that the template is compiled, and \"component\"\n * has a value.\n *\n * See:\n * - https://github.com/emberjs/ember.js/issues/20913\n * - https://github.com/emberjs/ember.js/issues/20914\n */\n await new Promise(requestAnimationFrame);\n\n /**\n * Is this allowed here? or do I just return text,\n * and do the above in 'render'\n */\n return component;\n },\n render: async (element, compiled, extra, compiler) => {\n /**\n *\n * TODO: These will make things easier:\n * https://github.com/emberjs/rfcs/pull/1099\n * https://github.com/ember-cli/ember-addon-blueprint/blob/main/files/tests/test-helper.js\n */\n const attribute = `data-repl-sdk-ember-hbs-${elementId++}`;\n\n element.setAttribute(attribute, '');\n\n const [application, destroyable, resolver, router, route, testWaiters, runloop] =\n await compiler.tryResolveAll([\n '@ember/application',\n '@ember/destroyable',\n 'ember-resolver',\n '@ember/routing/router',\n '@ember/routing/route',\n '@ember/test-waiters',\n '@ember/runloop',\n ]);\n\n return renderApp({\n element,\n selector: `[${attribute}]`,\n component: compiled,\n log: compiler.announce,\n modules: {\n application,\n destroyable,\n resolver,\n router,\n route,\n testWaiters,\n runloop,\n },\n });\n },\n };\n\n return hbsCompiler;\n}\n"],"names":["compiler"],"mappings":";;AAGA,IAAI,YAAY;AAMhB,SAAS,cAAc,SAAS;AAC9B,MAAI,CAAC,SAAS,OAAO,GAAG;AACtB,WAAO,EAAE,OAAO,GAAE;AAAA,EACpB;AAEA,SAAO;AAAA,IACL;AAAA;AAAA,MAA8C,SAAS,SAAS;;EACpE;AACA;AAKO,eAAe,SAAS,QAAQ,KAAK;AAI1C,QAAM,cAAc;AAAA,IAClB,SAAS,OAAO,MAAM,YAAY;AAChC,YAAM,EAAE,SAAQ,IAAK,MAAM,IAAI,WAAW,kCAAkC;AAE5E,YAAM,YAAY,SAAS,MAAM;AAAA,QAC/B,OAAO,OAAO;AAAA,UACZ,GAAG,cAAc,MAAM,EAAE;AAAA,UACzB,GAAG,cAAc,OAAO,EAAE;AAAA,QACpC;AAAA,MACA,CAAO;AAaD,YAAM,IAAI,QAAQ,qBAAqB;AAMvC,aAAO;AAAA,IACT;AAAA,IACA,QAAQ,OAAO,SAAS,UAAU,OAAOA,cAAa;AAOpD,YAAM,YAAY,2BAA2B,WAAW;AAExD,cAAQ,aAAa,WAAW,EAAE;AAElC,YAAM,CAAC,aAAa,aAAa,UAAU,QAAQ,OAAO,aAAa,OAAO,IAC5E,MAAMA,UAAS,cAAc;AAAA,QAC3B;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACV,CAAS;AAEH,aAAO,UAAU;AAAA,QACf;AAAA,QACA,UAAU,IAAI,SAAS;AAAA,QACvB,WAAW;AAAA,QACX,KAAKA,UAAS;AAAA,QACd,SAAS;AAAA,UACP;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACV;AAAA,MACA,CAAO;AAAA,IACH;AAAA,EACJ;AAEE,SAAO;AACT;"}