@marko/translator-default 5.32.4 → 5.32.6
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.
- package/dist/index.js +6 -7
- package/dist/util/add-dependencies.js +149 -125
- package/index.d.ts +1 -0
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.analyze = void 0;exports.getRuntimeEntryFiles = getRuntimeEntryFiles;exports.translate = exports.taglibs = void 0;var _path = require("path");
|
|
1
|
+
"use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.analyze = void 0;exports.getRuntimeEntryFiles = getRuntimeEntryFiles;exports.translate = exports.taglibs = exports.internalEntryBuilder = void 0;var _path = require("path");
|
|
2
2
|
var _babelUtils = require("@marko/babel-utils");
|
|
3
3
|
|
|
4
4
|
|
|
@@ -25,12 +25,13 @@ var _placeholder = _interopRequireDefault(require("./placeholder"));
|
|
|
25
25
|
var _scriptlet = _interopRequireDefault(require("./scriptlet"));
|
|
26
26
|
var _tag = _interopRequireDefault(require("./tag"));
|
|
27
27
|
var _text = _interopRequireDefault(require("./text"));
|
|
28
|
-
var _addDependencies =
|
|
28
|
+
var _addDependencies = _interopRequireWildcard(require("./util/add-dependencies"));exports.internalEntryBuilder = _addDependencies.entryBuilder;
|
|
29
29
|
var _getComponentFiles = _interopRequireDefault(require("./util/get-component-files"));
|
|
30
30
|
var _optimizeHtmlWrites = require("./util/optimize-html-writes");
|
|
31
31
|
var _optimizeVdomCreate = require("./util/optimize-vdom-create");
|
|
32
32
|
|
|
33
|
-
var _taglib = _interopRequireDefault(require("./taglib"));exports.taglibs = _taglib.default;
|
|
33
|
+
var _taglib = _interopRequireDefault(require("./taglib"));exports.taglibs = _taglib.default;function _getRequireWildcardCache(e) {if ("function" != typeof WeakMap) return null;var r = new WeakMap(),t = new WeakMap();return (_getRequireWildcardCache = function (e) {return e ? t : r;})(e);}function _interopRequireWildcard(e, r) {if (!r && e && e.__esModule) return e;if (null === e || "object" != typeof e && "function" != typeof e) return { default: e };var t = _getRequireWildcardCache(r);if (t && t.has(e)) return t.get(e);var n = { __proto__: null },a = Object.defineProperty && Object.getOwnPropertyDescriptor;for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) {var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u];}return n.default = e, t && t.set(e, n), n;}
|
|
34
|
+
|
|
34
35
|
|
|
35
36
|
const analyze = exports.analyze = {
|
|
36
37
|
Program: {
|
|
@@ -494,15 +495,13 @@ function getRuntimeEntryFiles(output, optimize) {
|
|
|
494
495
|
`${base}core-tags/components/preferred-script-location-tag.js`,
|
|
495
496
|
`${base}core-tags/core/__flush_here_and_after__.js`,
|
|
496
497
|
`${base}core-tags/core/await/renderer.js`,
|
|
497
|
-
`${base}core-tags/core/await/reorderer-renderer.js
|
|
498
|
-
`${base}runtime/helpers/tags-compat/html${optimize ? "" : "-debug"}.mjs`] :
|
|
498
|
+
`${base}core-tags/core/await/reorderer-renderer.js`] :
|
|
499
499
|
|
|
500
500
|
[
|
|
501
501
|
`${base}runtime/vdom/index.js`,
|
|
502
502
|
`${base}runtime/vdom/hot-reload.js`,
|
|
503
503
|
`${base}runtime/vdom/helpers/attrs.js`,
|
|
504
|
-
`${base}runtime/vdom/helpers/const-element.js
|
|
505
|
-
`${base}runtime/helpers/tags-compat/dom${optimize ? "" : "-debug"}.mjs`])];
|
|
504
|
+
`${base}runtime/vdom/helpers/const-element.js`])];
|
|
506
505
|
|
|
507
506
|
|
|
508
507
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.default = void 0;var _path = _interopRequireDefault(require("path"));
|
|
1
|
+
"use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.entryBuilder = exports.default = void 0;var _path = _interopRequireDefault(require("path"));
|
|
2
2
|
var _babelUtils = require("@marko/babel-utils");
|
|
3
3
|
|
|
4
4
|
|
|
@@ -6,121 +6,148 @@ var _babelUtils = require("@marko/babel-utils");
|
|
|
6
6
|
|
|
7
7
|
var _compiler = require("@marko/compiler");
|
|
8
8
|
var _magicString = _interopRequireDefault(require("magic-string"));
|
|
9
|
-
var _resolveFrom = _interopRequireDefault(require("resolve-from"));
|
|
9
|
+
var _resolveFrom = _interopRequireDefault(require("resolve-from"));
|
|
10
|
+
const kEntryState = Symbol();var _default =
|
|
10
11
|
|
|
11
12
|
(entryFile, isHydrate) => {
|
|
12
|
-
const { resolveVirtualDependency, hydrateIncludeImports, hydrateInit } =
|
|
13
|
-
entryFile.markoOpts;
|
|
14
13
|
const program = entryFile.path;
|
|
15
|
-
const
|
|
16
|
-
const resolvedDeps = new Set();
|
|
17
|
-
const body = [];
|
|
14
|
+
const programNode = program.node;
|
|
18
15
|
|
|
19
16
|
if (!isHydrate) {
|
|
20
|
-
|
|
17
|
+
const imports = new Set();
|
|
18
|
+
const body = [];
|
|
19
|
+
addBrowserImports(imports, body, entryFile, entryFile);
|
|
21
20
|
if (body.length) {
|
|
22
|
-
|
|
21
|
+
programNode.body = body.concat(programNode.body);
|
|
23
22
|
}
|
|
24
23
|
return;
|
|
25
24
|
}
|
|
26
25
|
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
resolvePath(entryFile, "marko/src/runtime/components/index.js")
|
|
38
|
-
);
|
|
39
|
-
if (splitComponentIndex) {
|
|
40
|
-
markoComponentsImport.specifiers.push(
|
|
41
|
-
_compiler.types.importSpecifier(_compiler.types.identifier("register"), _compiler.types.identifier("register"))
|
|
42
|
-
);
|
|
26
|
+
const visitedFiles = new Set([
|
|
27
|
+
(0, _babelUtils.resolveRelativePath)(entryFile, entryFile.opts.filename)]
|
|
28
|
+
);
|
|
29
|
+
entryBuilder.visit(entryFile, entryFile, function visitChild(resolved) {
|
|
30
|
+
if (!visitedFiles.has(resolved)) {
|
|
31
|
+
visitedFiles.add(resolved);
|
|
32
|
+
const file = (0, _babelUtils.loadFileForImport)(entryFile, resolved);
|
|
33
|
+
if (file) {
|
|
34
|
+
entryBuilder.visit(file, entryFile, visitChild);
|
|
35
|
+
}
|
|
43
36
|
}
|
|
37
|
+
});
|
|
44
38
|
|
|
45
|
-
|
|
39
|
+
programNode.body = entryBuilder.build(entryFile);
|
|
40
|
+
program.skip();
|
|
41
|
+
};exports.default = _default;
|
|
46
42
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
entryFile.markoOpts.runtimeId ?
|
|
54
|
-
[_compiler.types.stringLiteral(entryFile.markoOpts.runtimeId)] :
|
|
55
|
-
[]
|
|
56
|
-
)
|
|
57
|
-
)
|
|
43
|
+
const entryBuilder = exports.entryBuilder = {
|
|
44
|
+
build(entryFile) {
|
|
45
|
+
const state = entryFile[kEntryState];
|
|
46
|
+
if (!state) {
|
|
47
|
+
throw entryFile.path.buildCodeFrameError(
|
|
48
|
+
"Unable to build hydrate code, no files were visited before finalizing the build"
|
|
58
49
|
);
|
|
59
50
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
51
|
+
const { markoOpts } = entryFile;
|
|
52
|
+
const entryMarkoMeta = entryFile.metadata.marko;
|
|
53
|
+
const { body } = state;
|
|
54
|
+
entryMarkoMeta.watchFiles = Array.from(state.watchFiles);
|
|
55
|
+
|
|
56
|
+
if (state.hasComponents) {
|
|
57
|
+
const initId = _compiler.types.identifier("init");
|
|
58
|
+
const markoComponentsImport = importPath(
|
|
59
|
+
(0, _babelUtils.resolveRelativePath)(entryFile, "marko/src/runtime/components/index.js")
|
|
60
|
+
);
|
|
61
|
+
if (state.splitComponentIndex) {
|
|
62
|
+
markoComponentsImport.specifiers.push(
|
|
63
|
+
_compiler.types.importSpecifier(_compiler.types.identifier("register"), _compiler.types.identifier("register"))
|
|
64
|
+
);
|
|
65
|
+
}
|
|
72
66
|
|
|
73
|
-
|
|
74
|
-
|
|
67
|
+
body.unshift(markoComponentsImport);
|
|
68
|
+
|
|
69
|
+
if (markoOpts.hydrateInit) {
|
|
70
|
+
markoComponentsImport.specifiers.push(
|
|
71
|
+
_compiler.types.importSpecifier(initId, initId)
|
|
72
|
+
);
|
|
73
|
+
body.push(
|
|
74
|
+
_compiler.types.expressionStatement(
|
|
75
|
+
_compiler.types.callExpression(
|
|
76
|
+
initId,
|
|
77
|
+
markoOpts.runtimeId ? [_compiler.types.stringLiteral(markoOpts.runtimeId)] : []
|
|
78
|
+
)
|
|
79
|
+
)
|
|
80
|
+
);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
75
83
|
|
|
76
|
-
|
|
84
|
+
return body;
|
|
85
|
+
},
|
|
86
|
+
visit(file, entryFile, visitChild) {
|
|
87
|
+
const fileMeta = file.metadata.marko;
|
|
88
|
+
const fileName = file.opts.filename;
|
|
89
|
+
const state = entryFile[kEntryState] ||= {
|
|
90
|
+
shouldIncludeImport: toTestFn(file.markoOpts.hydrateIncludeImports),
|
|
91
|
+
watchFiles: new Set(),
|
|
92
|
+
imports: new Set(),
|
|
93
|
+
hasComponents: false,
|
|
94
|
+
splitComponentIndex: 0,
|
|
95
|
+
body: []
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
const { watchFiles, imports, body } = state;
|
|
99
|
+
|
|
100
|
+
if (fileMeta.component) {
|
|
101
|
+
state.hasComponents = true;
|
|
102
|
+
|
|
103
|
+
if (_path.default.basename(fileMeta.component) === _path.default.basename(fileName)) {
|
|
77
104
|
// Stateful component.
|
|
78
|
-
|
|
105
|
+
addImport(imports, body, (0, _babelUtils.resolveRelativePath)(entryFile, fileName));
|
|
79
106
|
return;
|
|
80
107
|
}
|
|
81
108
|
}
|
|
82
109
|
|
|
83
|
-
watchFiles.add(
|
|
110
|
+
watchFiles.add(fileName);
|
|
84
111
|
|
|
85
|
-
for (const watchFile of
|
|
112
|
+
for (const watchFile of fileMeta.watchFiles) {
|
|
86
113
|
watchFiles.add(watchFile);
|
|
87
114
|
}
|
|
88
115
|
|
|
89
|
-
|
|
116
|
+
addBrowserImports(imports, body, file, entryFile);
|
|
90
117
|
|
|
91
118
|
for (const child of file.path.node.body) {
|
|
92
119
|
if (_compiler.types.isImportDeclaration(child)) {
|
|
93
120
|
const { value } = child.source;
|
|
94
|
-
if (shouldIncludeImport(value)) {
|
|
95
|
-
|
|
121
|
+
if (state.shouldIncludeImport(value)) {
|
|
122
|
+
addImport(
|
|
123
|
+
imports,
|
|
124
|
+
body,
|
|
125
|
+
resolveRelativeToEntry(entryFile, file, value)
|
|
126
|
+
);
|
|
96
127
|
}
|
|
97
128
|
}
|
|
98
129
|
}
|
|
99
130
|
|
|
100
|
-
for (const tag of
|
|
131
|
+
for (const tag of fileMeta.tags) {
|
|
101
132
|
if (tag.endsWith(".marko")) {
|
|
102
|
-
|
|
103
|
-
scanHydrateDeps((0, _babelUtils.loadFileForImport)(file, tag));
|
|
104
|
-
}
|
|
133
|
+
visitChild(tag);
|
|
105
134
|
} else {
|
|
106
135
|
const importedTemplates = tryGetTemplateImports(file, tag);
|
|
107
136
|
if (importedTemplates) {
|
|
108
137
|
for (const templateFile of importedTemplates) {
|
|
109
|
-
|
|
110
|
-
scanHydrateDeps((0, _babelUtils.loadFileForImport)(file, templateFile));
|
|
111
|
-
}
|
|
138
|
+
visitChild(templateFile);
|
|
112
139
|
}
|
|
113
140
|
}
|
|
114
141
|
}
|
|
115
142
|
}
|
|
116
143
|
|
|
117
|
-
if (
|
|
144
|
+
if (fileMeta.component) {
|
|
118
145
|
// Split component
|
|
119
146
|
const splitComponentId = _compiler.types.identifier(
|
|
120
|
-
`component_${splitComponentIndex++}`
|
|
147
|
+
`component_${state.splitComponentIndex++}`
|
|
121
148
|
);
|
|
122
149
|
const splitComponentImport = importPath(
|
|
123
|
-
|
|
150
|
+
resolveRelativeToEntry(entryFile, file, fileMeta.component)
|
|
124
151
|
);
|
|
125
152
|
splitComponentImport.specifiers.push(
|
|
126
153
|
_compiler.types.importDefaultSpecifier(splitComponentId)
|
|
@@ -129,78 +156,75 @@ var _resolveFrom = _interopRequireDefault(require("resolve-from"));var _default
|
|
|
129
156
|
splitComponentImport,
|
|
130
157
|
_compiler.types.expressionStatement(
|
|
131
158
|
_compiler.types.callExpression(_compiler.types.identifier("register"), [
|
|
132
|
-
_compiler.types.stringLiteral(
|
|
159
|
+
_compiler.types.stringLiteral(fileMeta.id),
|
|
133
160
|
splitComponentId]
|
|
134
161
|
)
|
|
135
162
|
)
|
|
136
163
|
);
|
|
137
164
|
}
|
|
138
165
|
}
|
|
166
|
+
};
|
|
167
|
+
|
|
168
|
+
function addBrowserImports(seenImports, body, file, entryFile) {
|
|
169
|
+
const { filename, sourceMaps } = file.opts;
|
|
170
|
+
let s;
|
|
171
|
+
|
|
172
|
+
for (let dep of file.metadata.marko.deps) {
|
|
173
|
+
if (typeof dep !== "string") {
|
|
174
|
+
const { virtualPath } = dep;
|
|
175
|
+
let { code } = dep;
|
|
176
|
+
let map;
|
|
177
|
+
|
|
178
|
+
if (sourceMaps && dep.startPos !== undefined) {
|
|
179
|
+
s = s || new _magicString.default(file.code, { source: filename });
|
|
180
|
+
map = s.snip(dep.startPos, dep.endPos).generateMap({
|
|
181
|
+
source: filename,
|
|
182
|
+
includeContent: true
|
|
183
|
+
});
|
|
139
184
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
let { code } = dep;
|
|
148
|
-
let map;
|
|
149
|
-
|
|
150
|
-
if (sourceMaps && dep.startPos !== undefined) {
|
|
151
|
-
s = s || new _magicString.default(file.code, { source: filename });
|
|
152
|
-
map = s.snip(dep.startPos, dep.endPos).generateMap({
|
|
153
|
-
source: filename,
|
|
154
|
-
includeContent: true
|
|
155
|
-
});
|
|
156
|
-
|
|
157
|
-
if (sourceMaps === "inline" || sourceMaps === "both") {
|
|
158
|
-
code += dep.style ?
|
|
159
|
-
`\n/*# sourceMappingURL=${map.toUrl()}*/` :
|
|
160
|
-
`\n//# sourceMappingURL=${map.toUrl()}`;
|
|
161
|
-
|
|
162
|
-
if (sourceMaps === "inline") {
|
|
163
|
-
map = undefined;
|
|
164
|
-
}
|
|
185
|
+
if (sourceMaps === "inline" || sourceMaps === "both") {
|
|
186
|
+
code += dep.style ?
|
|
187
|
+
`\n/*# sourceMappingURL=${map.toUrl()}*/` :
|
|
188
|
+
`\n//# sourceMappingURL=${map.toUrl()}`;
|
|
189
|
+
|
|
190
|
+
if (sourceMaps === "inline") {
|
|
191
|
+
map = undefined;
|
|
165
192
|
}
|
|
166
193
|
}
|
|
194
|
+
}
|
|
167
195
|
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
196
|
+
dep = file.markoOpts.resolveVirtualDependency(filename, {
|
|
197
|
+
map,
|
|
198
|
+
code,
|
|
199
|
+
virtualPath
|
|
200
|
+
});
|
|
173
201
|
|
|
174
|
-
|
|
175
|
-
continue;
|
|
176
|
-
}
|
|
177
|
-
} else if (dep.startsWith("package:")) {
|
|
202
|
+
if (!dep) {
|
|
178
203
|
continue;
|
|
179
204
|
}
|
|
180
|
-
|
|
181
|
-
|
|
205
|
+
} else if (dep.startsWith("package:")) {
|
|
206
|
+
continue;
|
|
182
207
|
}
|
|
183
|
-
}
|
|
184
208
|
|
|
185
|
-
|
|
186
|
-
if (resolvedDeps.has(resolved)) return;
|
|
187
|
-
resolvedDeps.add(resolved);
|
|
188
|
-
body.push(importPath(resolved));
|
|
209
|
+
addImport(seenImports, body, resolveRelativeToEntry(entryFile, file, dep));
|
|
189
210
|
}
|
|
211
|
+
}
|
|
190
212
|
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
_path.default.join(file.opts.filename, "..", req)
|
|
197
|
-
);
|
|
198
|
-
}
|
|
213
|
+
function addImport(seenImports, body, resolved) {
|
|
214
|
+
if (seenImports.has(resolved)) return;
|
|
215
|
+
seenImports.add(resolved);
|
|
216
|
+
body.push(importPath(resolved));
|
|
217
|
+
}
|
|
199
218
|
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
219
|
+
function resolveRelativeToEntry(entryFile, file, req) {
|
|
220
|
+
return file === entryFile ?
|
|
221
|
+
(0, _babelUtils.resolveRelativePath)(file, req) :
|
|
222
|
+
(0, _babelUtils.resolveRelativePath)(entryFile, _path.default.join(file.opts.filename, "..", req));
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
function importPath(path) {
|
|
226
|
+
return _compiler.types.importDeclaration([], _compiler.types.stringLiteral(path));
|
|
227
|
+
}
|
|
204
228
|
|
|
205
229
|
function tryGetTemplateImports(file, rendererRelativePath) {
|
|
206
230
|
const resolvedRendererPath = _path.default.join(
|
|
@@ -216,7 +240,7 @@ function tryGetTemplateImports(file, rendererRelativePath) {
|
|
|
216
240
|
file.markoOpts.fileSystem.readFileSync(resolvedRendererPath, "utf-8")
|
|
217
241
|
)) {
|
|
218
242
|
if (statement.type === "ImportDeclaration") {
|
|
219
|
-
|
|
243
|
+
addTemplateImport(statement.source.value);
|
|
220
244
|
} else {
|
|
221
245
|
_compiler.types.traverseFast(statement, (node) => {
|
|
222
246
|
if (
|
|
@@ -230,7 +254,7 @@ function tryGetTemplateImports(file, rendererRelativePath) {
|
|
|
230
254
|
node.arguments.length === 1 &&
|
|
231
255
|
node.arguments[0].type === "StringLiteral")
|
|
232
256
|
{
|
|
233
|
-
|
|
257
|
+
addTemplateImport(node.arguments[0].value);
|
|
234
258
|
}
|
|
235
259
|
});
|
|
236
260
|
}
|
|
@@ -241,7 +265,7 @@ function tryGetTemplateImports(file, rendererRelativePath) {
|
|
|
241
265
|
}
|
|
242
266
|
return templateImports;
|
|
243
267
|
|
|
244
|
-
function
|
|
268
|
+
function addTemplateImport(request) {
|
|
245
269
|
if (request.endsWith(".marko")) {
|
|
246
270
|
const resolvedTemplatePath =
|
|
247
271
|
request[0] === "." ?
|
package/index.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@marko/translator-default",
|
|
3
|
-
"version": "5.32.
|
|
3
|
+
"version": "5.32.6",
|
|
4
4
|
"description": "Translates Marko templates to the default Marko runtime.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"babel",
|
|
@@ -29,12 +29,12 @@
|
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
31
|
"@babel/runtime": "^7.24.0",
|
|
32
|
-
"@marko/babel-utils": "^6.4.
|
|
32
|
+
"@marko/babel-utils": "^6.4.2",
|
|
33
33
|
"magic-string": "^0.30.8",
|
|
34
34
|
"self-closing-tags": "^1.0.1"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
|
-
"@marko/compiler": "^5.35.
|
|
37
|
+
"@marko/compiler": "^5.35.5",
|
|
38
38
|
"marko": "^5.33.6"
|
|
39
39
|
},
|
|
40
40
|
"peerDependencies": {
|