@marko/translator-default 5.32.5 → 5.32.7
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 +4 -3
- package/dist/util/add-dependencies.js +155 -124
- package/index.d.ts +1 -0
- package/package.json +4 -4
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: {
|
|
@@ -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,155 @@ 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
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
markoComponentsImport.specifiers.push(
|
|
41
|
-
_compiler.types.importSpecifier(_compiler.types.identifier("register"), _compiler.types.identifier("register"))
|
|
42
|
-
);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
body.unshift(markoComponentsImport);
|
|
46
|
-
|
|
47
|
-
if (hydrateInit) {
|
|
48
|
-
markoComponentsImport.specifiers.push(_compiler.types.importSpecifier(initId, initId));
|
|
49
|
-
body.push(
|
|
50
|
-
_compiler.types.expressionStatement(
|
|
51
|
-
_compiler.types.callExpression(
|
|
52
|
-
initId,
|
|
53
|
-
entryFile.markoOpts.runtimeId ?
|
|
54
|
-
[_compiler.types.stringLiteral(entryFile.markoOpts.runtimeId)] :
|
|
55
|
-
[]
|
|
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, (id) =>
|
|
35
|
+
visitChild(
|
|
36
|
+
(0, _babelUtils.resolveRelativePath)(
|
|
37
|
+
entryFile,
|
|
38
|
+
_path.default.join(file.opts.filename, "..", id)
|
|
56
39
|
)
|
|
57
40
|
)
|
|
58
|
-
|
|
41
|
+
);
|
|
42
|
+
}
|
|
59
43
|
}
|
|
60
|
-
}
|
|
44
|
+
});
|
|
61
45
|
|
|
62
|
-
|
|
63
|
-
program.node.body = body;
|
|
46
|
+
programNode.body = entryBuilder.build(entryFile);
|
|
64
47
|
program.skip();
|
|
48
|
+
};exports.default = _default;
|
|
65
49
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
const
|
|
69
|
-
if (
|
|
70
|
-
|
|
71
|
-
|
|
50
|
+
const entryBuilder = exports.entryBuilder = {
|
|
51
|
+
build(entryFile) {
|
|
52
|
+
const state = entryFile[kEntryState];
|
|
53
|
+
if (!state) {
|
|
54
|
+
throw entryFile.path.buildCodeFrameError(
|
|
55
|
+
"Unable to build hydrate code, no files were visited before finalizing the build"
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
const { markoOpts } = entryFile;
|
|
59
|
+
const entryMarkoMeta = entryFile.metadata.marko;
|
|
60
|
+
const { body } = state;
|
|
61
|
+
entryMarkoMeta.watchFiles = Array.from(state.watchFiles);
|
|
62
|
+
|
|
63
|
+
if (state.hasComponents) {
|
|
64
|
+
const initId = _compiler.types.identifier("init");
|
|
65
|
+
const markoComponentsImport = importPath(
|
|
66
|
+
(0, _babelUtils.resolveRelativePath)(entryFile, "marko/src/runtime/components/index.js")
|
|
67
|
+
);
|
|
68
|
+
if (state.splitComponentIndex) {
|
|
69
|
+
markoComponentsImport.specifiers.push(
|
|
70
|
+
_compiler.types.importSpecifier(_compiler.types.identifier("register"), _compiler.types.identifier("register"))
|
|
71
|
+
);
|
|
72
|
+
}
|
|
72
73
|
|
|
73
|
-
|
|
74
|
-
|
|
74
|
+
body.unshift(markoComponentsImport);
|
|
75
|
+
|
|
76
|
+
if (markoOpts.hydrateInit) {
|
|
77
|
+
markoComponentsImport.specifiers.push(
|
|
78
|
+
_compiler.types.importSpecifier(initId, initId)
|
|
79
|
+
);
|
|
80
|
+
body.push(
|
|
81
|
+
_compiler.types.expressionStatement(
|
|
82
|
+
_compiler.types.callExpression(
|
|
83
|
+
initId,
|
|
84
|
+
markoOpts.runtimeId ? [_compiler.types.stringLiteral(markoOpts.runtimeId)] : []
|
|
85
|
+
)
|
|
86
|
+
)
|
|
87
|
+
);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
75
90
|
|
|
76
|
-
|
|
91
|
+
return body;
|
|
92
|
+
},
|
|
93
|
+
visit(file, entryFile, visitChild) {
|
|
94
|
+
const fileMeta = file.metadata.marko;
|
|
95
|
+
const fileName = file.opts.filename;
|
|
96
|
+
const state = entryFile[kEntryState] ||= {
|
|
97
|
+
shouldIncludeImport: toTestFn(file.markoOpts.hydrateIncludeImports),
|
|
98
|
+
watchFiles: new Set(),
|
|
99
|
+
imports: new Set(),
|
|
100
|
+
hasComponents: false,
|
|
101
|
+
splitComponentIndex: 0,
|
|
102
|
+
body: []
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
const { watchFiles, imports, body } = state;
|
|
106
|
+
|
|
107
|
+
if (fileMeta.component) {
|
|
108
|
+
state.hasComponents = true;
|
|
109
|
+
|
|
110
|
+
if (_path.default.basename(fileMeta.component) === _path.default.basename(fileName)) {
|
|
77
111
|
// Stateful component.
|
|
78
|
-
|
|
112
|
+
addImport(imports, body, (0, _babelUtils.resolveRelativePath)(entryFile, fileName));
|
|
79
113
|
return;
|
|
80
114
|
}
|
|
81
115
|
}
|
|
82
116
|
|
|
83
|
-
watchFiles.add(
|
|
117
|
+
watchFiles.add(fileName);
|
|
84
118
|
|
|
85
|
-
for (const watchFile of
|
|
119
|
+
for (const watchFile of fileMeta.watchFiles) {
|
|
86
120
|
watchFiles.add(watchFile);
|
|
87
121
|
}
|
|
88
122
|
|
|
89
|
-
|
|
123
|
+
addBrowserImports(imports, body, file, entryFile);
|
|
90
124
|
|
|
91
125
|
for (const child of file.path.node.body) {
|
|
92
126
|
if (_compiler.types.isImportDeclaration(child)) {
|
|
93
127
|
const { value } = child.source;
|
|
94
|
-
if (shouldIncludeImport(value)) {
|
|
95
|
-
|
|
128
|
+
if (state.shouldIncludeImport(value)) {
|
|
129
|
+
addImport(
|
|
130
|
+
imports,
|
|
131
|
+
body,
|
|
132
|
+
resolveRelativeToEntry(entryFile, file, value)
|
|
133
|
+
);
|
|
96
134
|
}
|
|
97
135
|
}
|
|
98
136
|
}
|
|
99
137
|
|
|
100
|
-
for (const tag of
|
|
138
|
+
for (const tag of fileMeta.tags) {
|
|
101
139
|
if (tag.endsWith(".marko")) {
|
|
102
|
-
|
|
103
|
-
scanHydrateDeps((0, _babelUtils.loadFileForImport)(file, tag));
|
|
104
|
-
}
|
|
140
|
+
visitChild(tag);
|
|
105
141
|
} else {
|
|
106
142
|
const importedTemplates = tryGetTemplateImports(file, tag);
|
|
107
143
|
if (importedTemplates) {
|
|
108
144
|
for (const templateFile of importedTemplates) {
|
|
109
|
-
|
|
110
|
-
scanHydrateDeps((0, _babelUtils.loadFileForImport)(file, templateFile));
|
|
111
|
-
}
|
|
145
|
+
visitChild(templateFile);
|
|
112
146
|
}
|
|
113
147
|
}
|
|
114
148
|
}
|
|
115
149
|
}
|
|
116
150
|
|
|
117
|
-
if (
|
|
151
|
+
if (fileMeta.component) {
|
|
118
152
|
// Split component
|
|
119
153
|
const splitComponentId = _compiler.types.identifier(
|
|
120
|
-
`component_${splitComponentIndex++}`
|
|
154
|
+
`component_${state.splitComponentIndex++}`
|
|
121
155
|
);
|
|
122
156
|
const splitComponentImport = importPath(
|
|
123
|
-
|
|
157
|
+
resolveRelativeToEntry(entryFile, file, fileMeta.component)
|
|
124
158
|
);
|
|
125
159
|
splitComponentImport.specifiers.push(
|
|
126
160
|
_compiler.types.importDefaultSpecifier(splitComponentId)
|
|
@@ -129,78 +163,75 @@ var _resolveFrom = _interopRequireDefault(require("resolve-from"));var _default
|
|
|
129
163
|
splitComponentImport,
|
|
130
164
|
_compiler.types.expressionStatement(
|
|
131
165
|
_compiler.types.callExpression(_compiler.types.identifier("register"), [
|
|
132
|
-
_compiler.types.stringLiteral(
|
|
166
|
+
_compiler.types.stringLiteral(fileMeta.id),
|
|
133
167
|
splitComponentId]
|
|
134
168
|
)
|
|
135
169
|
)
|
|
136
170
|
);
|
|
137
171
|
}
|
|
138
172
|
}
|
|
173
|
+
};
|
|
174
|
+
|
|
175
|
+
function addBrowserImports(seenImports, body, file, entryFile) {
|
|
176
|
+
const { filename, sourceMaps } = file.opts;
|
|
177
|
+
let s;
|
|
178
|
+
|
|
179
|
+
for (let dep of file.metadata.marko.deps) {
|
|
180
|
+
if (typeof dep !== "string") {
|
|
181
|
+
const { virtualPath } = dep;
|
|
182
|
+
let { code } = dep;
|
|
183
|
+
let map;
|
|
184
|
+
|
|
185
|
+
if (sourceMaps && dep.startPos !== undefined) {
|
|
186
|
+
s = s || new _magicString.default(file.code, { source: filename });
|
|
187
|
+
map = s.snip(dep.startPos, dep.endPos).generateMap({
|
|
188
|
+
source: filename,
|
|
189
|
+
includeContent: true
|
|
190
|
+
});
|
|
139
191
|
|
|
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
|
-
}
|
|
192
|
+
if (sourceMaps === "inline" || sourceMaps === "both") {
|
|
193
|
+
code += dep.style ?
|
|
194
|
+
`\n/*# sourceMappingURL=${map.toUrl()}*/` :
|
|
195
|
+
`\n//# sourceMappingURL=${map.toUrl()}`;
|
|
196
|
+
|
|
197
|
+
if (sourceMaps === "inline") {
|
|
198
|
+
map = undefined;
|
|
165
199
|
}
|
|
166
200
|
}
|
|
201
|
+
}
|
|
167
202
|
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
203
|
+
dep = file.markoOpts.resolveVirtualDependency(filename, {
|
|
204
|
+
map,
|
|
205
|
+
code,
|
|
206
|
+
virtualPath
|
|
207
|
+
});
|
|
173
208
|
|
|
174
|
-
|
|
175
|
-
continue;
|
|
176
|
-
}
|
|
177
|
-
} else if (dep.startsWith("package:")) {
|
|
209
|
+
if (!dep) {
|
|
178
210
|
continue;
|
|
179
211
|
}
|
|
180
|
-
|
|
181
|
-
|
|
212
|
+
} else if (dep.startsWith("package:")) {
|
|
213
|
+
continue;
|
|
182
214
|
}
|
|
183
|
-
}
|
|
184
215
|
|
|
185
|
-
|
|
186
|
-
if (resolvedDeps.has(resolved)) return;
|
|
187
|
-
resolvedDeps.add(resolved);
|
|
188
|
-
body.push(importPath(resolved));
|
|
216
|
+
addImport(seenImports, body, resolveRelativeToEntry(entryFile, file, dep));
|
|
189
217
|
}
|
|
218
|
+
}
|
|
190
219
|
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
_path.default.join(file.opts.filename, "..", req)
|
|
197
|
-
);
|
|
198
|
-
}
|
|
220
|
+
function addImport(seenImports, body, resolved) {
|
|
221
|
+
if (seenImports.has(resolved)) return;
|
|
222
|
+
seenImports.add(resolved);
|
|
223
|
+
body.push(importPath(resolved));
|
|
224
|
+
}
|
|
199
225
|
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
226
|
+
function resolveRelativeToEntry(entryFile, file, req) {
|
|
227
|
+
return file === entryFile ?
|
|
228
|
+
(0, _babelUtils.resolveRelativePath)(file, req) :
|
|
229
|
+
(0, _babelUtils.resolveRelativePath)(entryFile, _path.default.join(file.opts.filename, "..", req));
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
function importPath(path) {
|
|
233
|
+
return _compiler.types.importDeclaration([], _compiler.types.stringLiteral(path));
|
|
234
|
+
}
|
|
204
235
|
|
|
205
236
|
function tryGetTemplateImports(file, rendererRelativePath) {
|
|
206
237
|
const resolvedRendererPath = _path.default.join(
|
|
@@ -216,7 +247,7 @@ function tryGetTemplateImports(file, rendererRelativePath) {
|
|
|
216
247
|
file.markoOpts.fileSystem.readFileSync(resolvedRendererPath, "utf-8")
|
|
217
248
|
)) {
|
|
218
249
|
if (statement.type === "ImportDeclaration") {
|
|
219
|
-
|
|
250
|
+
addTemplateImport(statement.source.value);
|
|
220
251
|
} else {
|
|
221
252
|
_compiler.types.traverseFast(statement, (node) => {
|
|
222
253
|
if (
|
|
@@ -230,7 +261,7 @@ function tryGetTemplateImports(file, rendererRelativePath) {
|
|
|
230
261
|
node.arguments.length === 1 &&
|
|
231
262
|
node.arguments[0].type === "StringLiteral")
|
|
232
263
|
{
|
|
233
|
-
|
|
264
|
+
addTemplateImport(node.arguments[0].value);
|
|
234
265
|
}
|
|
235
266
|
});
|
|
236
267
|
}
|
|
@@ -241,7 +272,7 @@ function tryGetTemplateImports(file, rendererRelativePath) {
|
|
|
241
272
|
}
|
|
242
273
|
return templateImports;
|
|
243
274
|
|
|
244
|
-
function
|
|
275
|
+
function addTemplateImport(request) {
|
|
245
276
|
if (request.endsWith(".marko")) {
|
|
246
277
|
const resolvedTemplatePath =
|
|
247
278
|
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.7",
|
|
4
4
|
"description": "Translates Marko templates to the default Marko runtime.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"babel",
|
|
@@ -29,13 +29,13 @@
|
|
|
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.
|
|
38
|
-
"marko": "^5.33.
|
|
37
|
+
"@marko/compiler": "^5.35.6",
|
|
38
|
+
"marko": "^5.33.7"
|
|
39
39
|
},
|
|
40
40
|
"peerDependencies": {
|
|
41
41
|
"@marko/compiler": "^5.16.1",
|