@daouy/loader-core 1.0.141
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/LICENSE +21 -0
- package/README.md +3 -0
- package/dist/index.d.ts +131 -0
- package/dist/index.esm.js +266 -0
- package/dist/index.esm.js.map +7 -0
- package/dist/index.js +287 -0
- package/dist/index.js.map +7 -0
- package/package.json +49 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2021 Chung Wu
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { Api } from '@daouy/loader-fetcher';
|
|
2
|
+
import { AssetModule } from '@daouy/loader-fetcher';
|
|
3
|
+
import { CodeModule } from '@daouy/loader-fetcher';
|
|
4
|
+
import { ComponentMeta } from '@daouy/loader-fetcher';
|
|
5
|
+
import { DaouyModulesFetcher } from '@daouy/loader-fetcher';
|
|
6
|
+
import { ExperimentSlice } from '@daouy/loader-fetcher';
|
|
7
|
+
import { FontMeta } from '@daouy/loader-fetcher';
|
|
8
|
+
import { GlobalGroupMeta } from '@daouy/loader-fetcher';
|
|
9
|
+
import { LoaderBundleCache } from '@daouy/loader-fetcher';
|
|
10
|
+
import { LoaderBundleOutput } from '@daouy/loader-fetcher';
|
|
11
|
+
import { LoaderHtmlOutput } from '@daouy/loader-fetcher';
|
|
12
|
+
import { PageMeta } from '@daouy/loader-fetcher';
|
|
13
|
+
import { PageMetadata } from '@daouy/loader-fetcher';
|
|
14
|
+
import { ProjectMeta } from '@daouy/loader-fetcher';
|
|
15
|
+
import { SegmentSlice } from '@daouy/loader-fetcher';
|
|
16
|
+
import { Split } from '@daouy/loader-fetcher';
|
|
17
|
+
|
|
18
|
+
export { Api }
|
|
19
|
+
|
|
20
|
+
export { AssetModule }
|
|
21
|
+
|
|
22
|
+
export { CodeModule }
|
|
23
|
+
|
|
24
|
+
export { ComponentMeta }
|
|
25
|
+
|
|
26
|
+
export { DaouyModulesFetcher }
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* @deprecated Built-in tracking is disabled. This class remains only for
|
|
30
|
+
* compatibility and will be removed in a future release.
|
|
31
|
+
*
|
|
32
|
+
* All methods are strict no-ops.
|
|
33
|
+
*/
|
|
34
|
+
export declare class DaouyTracker {
|
|
35
|
+
constructor(_opts: TrackerOptions);
|
|
36
|
+
/**
|
|
37
|
+
* @deprecated No-op.
|
|
38
|
+
*/
|
|
39
|
+
trackRender(_opts?: TrackRenderOptions): void;
|
|
40
|
+
/**
|
|
41
|
+
* @deprecated No-op.
|
|
42
|
+
*/
|
|
43
|
+
trackFetch(): void;
|
|
44
|
+
/**
|
|
45
|
+
* @deprecated No-op.
|
|
46
|
+
*/
|
|
47
|
+
trackConversion(_value?: number): void;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export { ExperimentSlice }
|
|
51
|
+
|
|
52
|
+
export { FontMeta }
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Get sub-bundle including only modules that are reachable from `names`.
|
|
56
|
+
* @param opts.target by default, will target the browser modules. Can request
|
|
57
|
+
* the server modules instead.
|
|
58
|
+
*/
|
|
59
|
+
export declare function getBundleSubset(bundle: LoaderBundleOutput, names: string[], opts?: {
|
|
60
|
+
target?: "browser" | "server";
|
|
61
|
+
}): LoaderBundleOutput;
|
|
62
|
+
|
|
63
|
+
export { GlobalGroupMeta }
|
|
64
|
+
|
|
65
|
+
export { LoaderBundleCache }
|
|
66
|
+
|
|
67
|
+
export { LoaderBundleOutput }
|
|
68
|
+
|
|
69
|
+
export { LoaderHtmlOutput }
|
|
70
|
+
|
|
71
|
+
export { PageMeta }
|
|
72
|
+
|
|
73
|
+
export { PageMetadata }
|
|
74
|
+
|
|
75
|
+
export { ProjectMeta }
|
|
76
|
+
|
|
77
|
+
export declare class Registry {
|
|
78
|
+
private loadedModules;
|
|
79
|
+
private registeredModules;
|
|
80
|
+
private modules;
|
|
81
|
+
constructor();
|
|
82
|
+
register(name: string, module: any): void;
|
|
83
|
+
isEmpty(): boolean;
|
|
84
|
+
clear(): void;
|
|
85
|
+
getRegisteredModule(name: string): any;
|
|
86
|
+
hasModule(name: string, opts?: {
|
|
87
|
+
forceOriginal?: boolean;
|
|
88
|
+
}): boolean;
|
|
89
|
+
load(name: string, opts?: {
|
|
90
|
+
forceOriginal?: boolean;
|
|
91
|
+
}): any;
|
|
92
|
+
updateModules(bundle: LoaderBundleOutput): void;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
export { SegmentSlice }
|
|
96
|
+
|
|
97
|
+
export { Split }
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* @deprecated Built-in tracking is disabled. This type remains only for
|
|
101
|
+
* compatibility and will be removed in a future release.
|
|
102
|
+
*/
|
|
103
|
+
declare interface TrackerOptions {
|
|
104
|
+
projectIds: string[];
|
|
105
|
+
platform?: string;
|
|
106
|
+
preview?: boolean;
|
|
107
|
+
nativeFetch?: boolean;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* @deprecated Built-in tracking is disabled. This type remains only for
|
|
112
|
+
* compatibility and will be removed in a future release.
|
|
113
|
+
*/
|
|
114
|
+
declare interface TrackerRenderProperties {
|
|
115
|
+
rootProjectId?: string;
|
|
116
|
+
rootComponentId?: string;
|
|
117
|
+
rootComponentName?: string;
|
|
118
|
+
teamIds: string[];
|
|
119
|
+
projectIds: string[];
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* @deprecated Built-in tracking is disabled. This type remains only for
|
|
124
|
+
* compatibility and will be removed in a future release.
|
|
125
|
+
*/
|
|
126
|
+
export declare interface TrackRenderOptions {
|
|
127
|
+
renderCtx?: TrackerRenderProperties;
|
|
128
|
+
variation?: Record<string, string>;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
export { }
|
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
// src/index.ts
|
|
2
|
+
import { Api, DaouyModulesFetcher } from "@daouy/loader-fetcher";
|
|
3
|
+
|
|
4
|
+
// src/deps-graph.ts
|
|
5
|
+
var DepsGraph = class {
|
|
6
|
+
constructor(bundle, browserBuild) {
|
|
7
|
+
this.bundle = bundle;
|
|
8
|
+
this.browserBuild = browserBuild;
|
|
9
|
+
this.dependsOn = {};
|
|
10
|
+
this.dependedBy = {};
|
|
11
|
+
this.rebuildGraph();
|
|
12
|
+
}
|
|
13
|
+
getTransitiveDependers(name2) {
|
|
14
|
+
return this.transitiveCrawl(name2, this.dependedBy);
|
|
15
|
+
}
|
|
16
|
+
getTransitiveDeps(name2) {
|
|
17
|
+
if (!(name2 in this.dependsOn)) {
|
|
18
|
+
return [];
|
|
19
|
+
}
|
|
20
|
+
return this.transitiveCrawl(name2, this.dependsOn);
|
|
21
|
+
}
|
|
22
|
+
transitiveCrawl(name2, edges) {
|
|
23
|
+
const deps = /* @__PURE__ */ new Set();
|
|
24
|
+
const crawl = (dep2) => {
|
|
25
|
+
var _a;
|
|
26
|
+
if (deps.has(dep2)) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
deps.add(dep2);
|
|
30
|
+
for (const subdep of (_a = edges[dep2]) != null ? _a : []) {
|
|
31
|
+
crawl(subdep);
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
for (const dep2 of edges[name2]) {
|
|
35
|
+
crawl(dep2);
|
|
36
|
+
}
|
|
37
|
+
return Array.from(deps);
|
|
38
|
+
}
|
|
39
|
+
rebuildGraph() {
|
|
40
|
+
this.dependedBy = {};
|
|
41
|
+
this.dependsOn = {};
|
|
42
|
+
for (const mod of this.browserBuild ? this.bundle.modules.browser : this.bundle.modules.server) {
|
|
43
|
+
if (mod.type === "code") {
|
|
44
|
+
for (const imported of mod.imports) {
|
|
45
|
+
if (!(mod.fileName in this.dependsOn)) {
|
|
46
|
+
this.dependsOn[mod.fileName] = [imported];
|
|
47
|
+
} else {
|
|
48
|
+
this.dependsOn[mod.fileName].push(imported);
|
|
49
|
+
}
|
|
50
|
+
if (!(imported in this.dependedBy)) {
|
|
51
|
+
this.dependedBy[imported] = [mod.fileName];
|
|
52
|
+
} else {
|
|
53
|
+
this.dependedBy[imported].push(mod.fileName);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
// src/bundles.ts
|
|
62
|
+
function getBundleSubset(bundle, names, opts2) {
|
|
63
|
+
var _a, _b;
|
|
64
|
+
const namesSet = new Set(names);
|
|
65
|
+
const target = (_a = opts2 == null ? void 0 : opts2.target) != null ? _a : "browser";
|
|
66
|
+
const forBrowser = target === "browser";
|
|
67
|
+
const graph = new DepsGraph(bundle, forBrowser);
|
|
68
|
+
const deps = new Set(names.flatMap((name2) => graph.getTransitiveDeps(name2)));
|
|
69
|
+
const isSubModule = (fileName) => deps.has(fileName) || namesSet.has(fileName);
|
|
70
|
+
const modules = bundle.modules[target];
|
|
71
|
+
const filteredModules = modules.filter((mod) => isSubModule(mod.fileName));
|
|
72
|
+
const filteredComponents = bundle.components.filter(
|
|
73
|
+
(c) => isSubModule(c.entry)
|
|
74
|
+
);
|
|
75
|
+
const filteredComponentsIds = new Set(filteredComponents.map((c) => c.id));
|
|
76
|
+
const filteredIds = Object.fromEntries(
|
|
77
|
+
Object.entries(bundle.filteredIds).map(([k, v]) => [k, [...v]])
|
|
78
|
+
);
|
|
79
|
+
bundle.components.filter((c) => !filteredComponentsIds.has(c.id)).forEach((component) => {
|
|
80
|
+
var _a2;
|
|
81
|
+
filteredIds[component.projectId] = (_a2 = filteredIds[component.projectId]) != null ? _a2 : [];
|
|
82
|
+
if (!filteredIds[component.projectId].includes(component.id)) {
|
|
83
|
+
filteredIds[component.projectId].push(component.id);
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
return {
|
|
87
|
+
modules: {
|
|
88
|
+
browser: forBrowser ? filteredModules : [],
|
|
89
|
+
server: forBrowser ? [] : filteredModules
|
|
90
|
+
},
|
|
91
|
+
components: filteredComponents,
|
|
92
|
+
globalGroups: bundle.globalGroups,
|
|
93
|
+
projects: bundle.projects,
|
|
94
|
+
activeSplits: bundle.activeSplits,
|
|
95
|
+
bundleKey: (_b = bundle.bundleKey) != null ? _b : null,
|
|
96
|
+
deferChunksByDefault: bundle.deferChunksByDefault,
|
|
97
|
+
disableRootLoadingBoundaryByDefault: bundle.disableRootLoadingBoundaryByDefault,
|
|
98
|
+
filteredIds
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// src/registry.ts
|
|
103
|
+
var isBrowser = typeof window !== "undefined" && window != null && typeof window.document !== "undefined";
|
|
104
|
+
function isModuleBundlePromiseSet(name2) {
|
|
105
|
+
return globalThis.__DaouyBundlePromises && !!globalThis.__DaouyBundlePromises[name2] && !!globalThis.__DaouyBundlePromises[name2].then;
|
|
106
|
+
}
|
|
107
|
+
var Registry = class {
|
|
108
|
+
constructor() {
|
|
109
|
+
this.loadedModules = {};
|
|
110
|
+
this.registeredModules = {};
|
|
111
|
+
this.modules = {};
|
|
112
|
+
}
|
|
113
|
+
register(name2, module) {
|
|
114
|
+
this.registeredModules[name2] = module;
|
|
115
|
+
}
|
|
116
|
+
isEmpty() {
|
|
117
|
+
return Object.keys(this.loadedModules).length === 0;
|
|
118
|
+
}
|
|
119
|
+
clear() {
|
|
120
|
+
this.loadedModules = {};
|
|
121
|
+
}
|
|
122
|
+
getRegisteredModule(name2) {
|
|
123
|
+
return this.registeredModules[name2];
|
|
124
|
+
}
|
|
125
|
+
hasModule(name2, opts2 = {}) {
|
|
126
|
+
if (name2 in this.registeredModules && !opts2.forceOriginal) {
|
|
127
|
+
return true;
|
|
128
|
+
}
|
|
129
|
+
if (name2 in this.modules) {
|
|
130
|
+
return true;
|
|
131
|
+
}
|
|
132
|
+
if (globalThis.__DAOUY_CHUNKS && !!globalThis.__DAOUY_CHUNKS[name2]) {
|
|
133
|
+
return true;
|
|
134
|
+
}
|
|
135
|
+
if (isModuleBundlePromiseSet(name2)) {
|
|
136
|
+
return true;
|
|
137
|
+
}
|
|
138
|
+
return false;
|
|
139
|
+
}
|
|
140
|
+
load(name, opts = {}) {
|
|
141
|
+
if (name in this.registeredModules && !opts.forceOriginal) {
|
|
142
|
+
return this.registeredModules[name];
|
|
143
|
+
}
|
|
144
|
+
if (name in this.loadedModules) {
|
|
145
|
+
return this.loadedModules[name];
|
|
146
|
+
}
|
|
147
|
+
if (!this.modules[name] && globalThis.__DAOUY_CHUNKS && !!globalThis.__DAOUY_CHUNKS[name]) {
|
|
148
|
+
this.modules[name] = globalThis.__DAOUY_CHUNKS[name];
|
|
149
|
+
}
|
|
150
|
+
if (!this.modules[name] && isModuleBundlePromiseSet(name)) {
|
|
151
|
+
throw globalThis.__DaouyBundlePromises[name];
|
|
152
|
+
}
|
|
153
|
+
if (!(name in this.modules)) {
|
|
154
|
+
throw new Error(`Unknown module ${name}`);
|
|
155
|
+
}
|
|
156
|
+
const code = this.modules[name];
|
|
157
|
+
const requireFn = isBrowser ? (dep2) => {
|
|
158
|
+
const normalizedDep = resolvePath(dep2, name);
|
|
159
|
+
return this.load(normalizedDep);
|
|
160
|
+
} : (dep) => {
|
|
161
|
+
try {
|
|
162
|
+
const normalizedDep = resolvePath(dep, name);
|
|
163
|
+
return this.load(normalizedDep);
|
|
164
|
+
} catch (err) {
|
|
165
|
+
try {
|
|
166
|
+
return eval("require")(dep);
|
|
167
|
+
} catch (e) {
|
|
168
|
+
throw err;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
};
|
|
172
|
+
let func;
|
|
173
|
+
try {
|
|
174
|
+
func = new Function("require", "exports", code);
|
|
175
|
+
} catch (err2) {
|
|
176
|
+
throw new Error(`DAOUY: Failed to create function for ${name}: ${err2}`);
|
|
177
|
+
}
|
|
178
|
+
const exports = {};
|
|
179
|
+
this.loadedModules[name] = exports;
|
|
180
|
+
try {
|
|
181
|
+
func(requireFn, exports);
|
|
182
|
+
} catch (err2) {
|
|
183
|
+
delete this.loadedModules[name];
|
|
184
|
+
if (!(err2 instanceof Error) && !!err2 && !!err2.then) {
|
|
185
|
+
throw err2;
|
|
186
|
+
}
|
|
187
|
+
throw new Error(`DAOUY: Failed to load ${name}: ${err2}`);
|
|
188
|
+
}
|
|
189
|
+
return exports;
|
|
190
|
+
}
|
|
191
|
+
updateModules(bundle) {
|
|
192
|
+
let updated = false;
|
|
193
|
+
for (const mod of isBrowser ? bundle.modules.browser : bundle.modules.server) {
|
|
194
|
+
if (mod.type === "code" && !!mod.code && mod.code !== this.modules[mod.fileName]) {
|
|
195
|
+
this.modules[mod.fileName] = mod.code;
|
|
196
|
+
if (!globalThis.__DAOUY_CHUNKS) {
|
|
197
|
+
globalThis.__DAOUY_CHUNKS = {};
|
|
198
|
+
}
|
|
199
|
+
globalThis.__DAOUY_CHUNKS[mod.fileName] = mod.code;
|
|
200
|
+
updated = true;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
if (updated) {
|
|
204
|
+
this.clear();
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
};
|
|
208
|
+
function resolvePath(path, from) {
|
|
209
|
+
const fromParts = from.split("/");
|
|
210
|
+
const pathParts = path.split("/");
|
|
211
|
+
if (pathParts.length === 0) {
|
|
212
|
+
return path;
|
|
213
|
+
}
|
|
214
|
+
if (pathParts[0] === ".") {
|
|
215
|
+
return [
|
|
216
|
+
...fromParts.slice(0, fromParts.length - 1),
|
|
217
|
+
...pathParts.slice(1)
|
|
218
|
+
].join("/");
|
|
219
|
+
} else if (pathParts[0] === "..") {
|
|
220
|
+
let count = 0;
|
|
221
|
+
for (const part of pathParts) {
|
|
222
|
+
if (part === "..") {
|
|
223
|
+
count += 1;
|
|
224
|
+
} else {
|
|
225
|
+
break;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
return [
|
|
229
|
+
...fromParts.slice(0, fromParts.length - count - 1),
|
|
230
|
+
...pathParts.slice(count)
|
|
231
|
+
].join("/");
|
|
232
|
+
} else {
|
|
233
|
+
return path;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
// src/tracker/index.ts
|
|
238
|
+
var DaouyTracker = class {
|
|
239
|
+
// Preserve constructor signature for compatibility, but do not retain
|
|
240
|
+
// instance state to avoid unused-property diagnostics.
|
|
241
|
+
constructor(_opts) {
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* @deprecated No-op.
|
|
245
|
+
*/
|
|
246
|
+
trackRender(_opts) {
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* @deprecated No-op.
|
|
250
|
+
*/
|
|
251
|
+
trackFetch() {
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* @deprecated No-op.
|
|
255
|
+
*/
|
|
256
|
+
trackConversion(_value = 0) {
|
|
257
|
+
}
|
|
258
|
+
};
|
|
259
|
+
export {
|
|
260
|
+
Api,
|
|
261
|
+
DaouyModulesFetcher,
|
|
262
|
+
DaouyTracker,
|
|
263
|
+
Registry,
|
|
264
|
+
getBundleSubset
|
|
265
|
+
};
|
|
266
|
+
//# sourceMappingURL=index.esm.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/index.ts", "../src/deps-graph.ts", "../src/bundles.ts", "../src/registry.ts", "../src/tracker/index.ts"],
|
|
4
|
+
"sourcesContent": ["export { Api, DaouyModulesFetcher } from \"@daouy/loader-fetcher\";\nexport type {\n AssetModule,\n CodeModule,\n ComponentMeta,\n ExperimentSlice,\n FontMeta,\n GlobalGroupMeta,\n LoaderBundleCache,\n LoaderBundleOutput,\n LoaderHtmlOutput,\n PageMeta,\n PageMetadata,\n ProjectMeta,\n SegmentSlice,\n Split,\n} from \"@daouy/loader-fetcher\";\nexport { getBundleSubset } from \"./bundles\";\nexport { Registry } from \"./registry\";\nexport { DaouyTracker } from \"./tracker\";\nexport type { TrackRenderOptions } from \"./tracker\";\n", "import { LoaderBundleOutput } from '@daouy/loader-fetcher';\n\nexport class DepsGraph {\n private dependsOn: Record<string, string[]> = {};\n private dependedBy: Record<string, string[]> = {};\n constructor(\n private bundle: LoaderBundleOutput,\n private browserBuild: boolean\n ) {\n this.rebuildGraph();\n }\n\n getTransitiveDependers(name: string) {\n return this.transitiveCrawl(name, this.dependedBy);\n }\n\n getTransitiveDeps(name: string) {\n if (!(name in this.dependsOn)) {\n return [];\n }\n\n return this.transitiveCrawl(name, this.dependsOn);\n }\n\n private transitiveCrawl(name: string, edges: Record<string, string[]>) {\n const deps = new Set<string>();\n\n const crawl = (dep: string) => {\n if (deps.has(dep)) {\n return;\n }\n deps.add(dep);\n for (const subdep of edges[dep] ?? []) {\n crawl(subdep);\n }\n };\n\n for (const dep of edges[name]) {\n crawl(dep);\n }\n return Array.from(deps);\n }\n\n private rebuildGraph() {\n this.dependedBy = {};\n this.dependsOn = {};\n for (const mod of this.browserBuild\n ? this.bundle.modules.browser\n : this.bundle.modules.server) {\n if (mod.type === 'code') {\n for (const imported of mod.imports) {\n if (!(mod.fileName in this.dependsOn)) {\n this.dependsOn[mod.fileName] = [imported];\n } else {\n this.dependsOn[mod.fileName].push(imported);\n }\n\n if (!(imported in this.dependedBy)) {\n this.dependedBy[imported] = [mod.fileName];\n } else {\n this.dependedBy[imported].push(mod.fileName);\n }\n }\n }\n }\n }\n}\n", "import { LoaderBundleOutput } from \"@daouy/loader-fetcher\";\nimport { DepsGraph } from \"./deps-graph\";\n\n/**\n * Get sub-bundle including only modules that are reachable from `names`.\n * @param opts.target by default, will target the browser modules. Can request\n * the server modules instead.\n */\nexport function getBundleSubset(\n bundle: LoaderBundleOutput,\n names: string[],\n opts?: {\n target?: \"browser\" | \"server\";\n }\n): LoaderBundleOutput {\n const namesSet = new Set(names);\n const target = opts?.target ?? \"browser\";\n\n const forBrowser = target === \"browser\";\n const graph = new DepsGraph(bundle, forBrowser);\n const deps = new Set(names.flatMap((name) => graph.getTransitiveDeps(name)));\n const isSubModule = (fileName: string) =>\n deps.has(fileName) || namesSet.has(fileName);\n const modules = bundle.modules[target];\n const filteredModules = modules.filter((mod) => isSubModule(mod.fileName));\n const filteredComponents = bundle.components.filter((c) =>\n isSubModule(c.entry)\n );\n\n const filteredComponentsIds = new Set(filteredComponents.map((c) => c.id));\n\n // Make deep copy of filteredIds to avoid mutating original bundle\n const filteredIds = Object.fromEntries(\n Object.entries(bundle.filteredIds).map(([k, v]) => [k, [...v]])\n );\n bundle.components\n .filter((c) => !filteredComponentsIds.has(c.id))\n .forEach((component) => {\n filteredIds[component.projectId] = filteredIds[component.projectId] ?? [];\n if (!filteredIds[component.projectId].includes(component.id)) {\n filteredIds[component.projectId].push(component.id);\n }\n });\n\n return {\n modules: {\n browser: forBrowser ? filteredModules : [],\n server: forBrowser ? [] : filteredModules,\n },\n components: filteredComponents,\n globalGroups: bundle.globalGroups,\n projects: bundle.projects,\n activeSplits: bundle.activeSplits,\n bundleKey: bundle.bundleKey ?? null,\n deferChunksByDefault: bundle.deferChunksByDefault,\n disableRootLoadingBoundaryByDefault:\n bundle.disableRootLoadingBoundaryByDefault,\n filteredIds,\n };\n}\n", "import { LoaderBundleOutput } from \"@daouy/loader-fetcher\";\n\nconst isBrowser =\n typeof window !== \"undefined\" &&\n window != null &&\n typeof window.document !== \"undefined\";\n\nfunction isModuleBundlePromiseSet(name: string) {\n return (\n (globalThis as any).__DaouyBundlePromises &&\n !!(globalThis as any).__DaouyBundlePromises[name] &&\n !!(globalThis as any).__DaouyBundlePromises[name].then\n );\n}\n\nexport class Registry {\n private loadedModules: Record<string, any> = {};\n private registeredModules: Record<string, any> = {};\n private modules: Record<string, string> = {};\n\n constructor() {}\n\n register(name: string, module: any) {\n this.registeredModules[name] = module;\n }\n\n isEmpty() {\n return Object.keys(this.loadedModules).length === 0;\n }\n\n clear() {\n this.loadedModules = {};\n }\n\n getRegisteredModule(name: string) {\n return this.registeredModules[name];\n }\n\n hasModule(name: string, opts: { forceOriginal?: boolean } = {}) {\n if (name in this.registeredModules && !opts.forceOriginal) {\n return true;\n }\n\n if (name in this.modules) {\n return true;\n }\n\n if (\n (globalThis as any).__DAOUY_CHUNKS &&\n !!(globalThis as any).__DAOUY_CHUNKS[name]\n ) {\n return true;\n }\n\n if (isModuleBundlePromiseSet(name)) {\n return true;\n }\n\n return false;\n }\n\n load(name: string, opts: { forceOriginal?: boolean } = {}) {\n if (name in this.registeredModules && !opts.forceOriginal) {\n return this.registeredModules[name];\n }\n\n if (name in this.loadedModules) {\n return this.loadedModules[name];\n }\n\n if (\n !this.modules[name] &&\n (globalThis as any).__DAOUY_CHUNKS &&\n !!(globalThis as any).__DAOUY_CHUNKS[name]\n ) {\n this.modules[name] = (globalThis as any).__DAOUY_CHUNKS[name];\n }\n\n if (!this.modules[name] && isModuleBundlePromiseSet(name)) {\n throw (globalThis as any).__DaouyBundlePromises[name];\n }\n\n if (!(name in this.modules)) {\n throw new Error(`Unknown module ${name}`);\n }\n\n const code = this.modules[name];\n\n const requireFn = isBrowser\n ? (dep: string) => {\n const normalizedDep = resolvePath(dep, name);\n return this.load(normalizedDep);\n }\n : (dep: string) => {\n try {\n const normalizedDep = resolvePath(dep, name);\n return this.load(normalizedDep);\n } catch (err) {\n try {\n // Might be a nodeJs module such as tty\n return eval(\"require\")(dep);\n } catch {\n throw err;\n }\n }\n };\n\n let func;\n try {\n func = new Function(\"require\", \"exports\", code);\n } catch (err) {\n throw new Error(`DAOUY: Failed to create function for ${name}: ${err}`);\n }\n const exports = {};\n this.loadedModules[name] = exports;\n try {\n func(requireFn, exports);\n } catch (err: any) {\n // Delete exports from loadedModules, so subsequent uses don't incorrectly\n // believe that this module has been loaded.\n delete this.loadedModules[name];\n if (!(err instanceof Error) && !!err && !!err.then) {\n // Re-throw the Promise\n throw err;\n }\n throw new Error(`DAOUY: Failed to load ${name}: ${err}`);\n }\n return exports;\n }\n\n updateModules(bundle: LoaderBundleOutput) {\n let updated = false;\n for (const mod of isBrowser\n ? bundle.modules.browser\n : bundle.modules.server) {\n if (\n mod.type === \"code\" &&\n !!mod.code &&\n mod.code !== this.modules[mod.fileName]\n ) {\n this.modules[mod.fileName] = mod.code;\n if (!(globalThis as any).__DAOUY_CHUNKS) {\n (globalThis as any).__DAOUY_CHUNKS = {};\n }\n (globalThis as any).__DAOUY_CHUNKS[mod.fileName] = mod.code;\n updated = true;\n }\n }\n\n if (updated) {\n // TODO: do something more efficient than tearing everything down?\n this.clear();\n }\n }\n}\n\nfunction resolvePath(path: string, from: string) {\n const fromParts = from.split(\"/\");\n const pathParts = path.split(\"/\");\n if (pathParts.length === 0) {\n return path;\n }\n\n if (pathParts[0] === \".\") {\n return [\n ...fromParts.slice(0, fromParts.length - 1),\n ...pathParts.slice(1),\n ].join(\"/\");\n } else if (pathParts[0] === \"..\") {\n let count = 0;\n for (const part of pathParts) {\n if (part === \"..\") {\n count += 1;\n } else {\n break;\n }\n }\n return [\n ...fromParts.slice(0, fromParts.length - count - 1),\n ...pathParts.slice(count),\n ].join(\"/\");\n } else {\n return path;\n }\n}\n", "// Intentionally no imports \u2013 this module is now a strict no-op while\n// preserving the public API surface.\n\n/**\n * @deprecated Built-in tracking is disabled. This type remains only for\n * compatibility and will be removed in a future release.\n */\nexport interface TrackerOptions {\n projectIds: string[];\n platform?: string;\n preview?: boolean;\n nativeFetch?: boolean;\n}\n\n// Internal event types removed along with implementation details.\n\n/**\n * @deprecated Built-in tracking is disabled. This type remains only for\n * compatibility and will be removed in a future release.\n */\nexport interface TrackerRenderProperties {\n rootProjectId?: string;\n rootComponentId?: string;\n rootComponentName?: string;\n teamIds: string[];\n projectIds: string[];\n}\n\n/**\n * @deprecated Built-in tracking is disabled. This type remains only for\n * compatibility and will be removed in a future release.\n */\nexport interface TrackRenderOptions {\n renderCtx?: TrackerRenderProperties;\n variation?: Record<string, string>;\n}\n\n/**\n * @deprecated Built-in tracking is disabled. This class remains only for\n * compatibility and will be removed in a future release.\n *\n * All methods are strict no-ops.\n */\nexport class DaouyTracker {\n // Preserve constructor signature for compatibility, but do not retain\n // instance state to avoid unused-property diagnostics.\n constructor(_opts: TrackerOptions) {}\n\n /**\n * @deprecated No-op.\n */\n public trackRender(_opts?: TrackRenderOptions): void {}\n\n /**\n * @deprecated No-op.\n */\n public trackFetch(): void {}\n\n /**\n * @deprecated No-op.\n */\n public trackConversion(_value: number = 0): void {}\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["name", "dep", "opts", "name", "_a", "name", "opts", "dep", "err"]
|
|
7
|
+
}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name2 in all)
|
|
8
|
+
__defProp(target, name2, { get: all[name2], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/index.ts
|
|
21
|
+
var src_exports = {};
|
|
22
|
+
__export(src_exports, {
|
|
23
|
+
Api: () => import_loader_fetcher.Api,
|
|
24
|
+
DaouyModulesFetcher: () => import_loader_fetcher.DaouyModulesFetcher,
|
|
25
|
+
DaouyTracker: () => DaouyTracker,
|
|
26
|
+
Registry: () => Registry,
|
|
27
|
+
getBundleSubset: () => getBundleSubset
|
|
28
|
+
});
|
|
29
|
+
module.exports = __toCommonJS(src_exports);
|
|
30
|
+
var import_loader_fetcher = require("@daouy/loader-fetcher");
|
|
31
|
+
|
|
32
|
+
// src/deps-graph.ts
|
|
33
|
+
var DepsGraph = class {
|
|
34
|
+
constructor(bundle, browserBuild) {
|
|
35
|
+
this.bundle = bundle;
|
|
36
|
+
this.browserBuild = browserBuild;
|
|
37
|
+
this.dependsOn = {};
|
|
38
|
+
this.dependedBy = {};
|
|
39
|
+
this.rebuildGraph();
|
|
40
|
+
}
|
|
41
|
+
getTransitiveDependers(name2) {
|
|
42
|
+
return this.transitiveCrawl(name2, this.dependedBy);
|
|
43
|
+
}
|
|
44
|
+
getTransitiveDeps(name2) {
|
|
45
|
+
if (!(name2 in this.dependsOn)) {
|
|
46
|
+
return [];
|
|
47
|
+
}
|
|
48
|
+
return this.transitiveCrawl(name2, this.dependsOn);
|
|
49
|
+
}
|
|
50
|
+
transitiveCrawl(name2, edges) {
|
|
51
|
+
const deps = /* @__PURE__ */ new Set();
|
|
52
|
+
const crawl = (dep2) => {
|
|
53
|
+
var _a;
|
|
54
|
+
if (deps.has(dep2)) {
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
deps.add(dep2);
|
|
58
|
+
for (const subdep of (_a = edges[dep2]) != null ? _a : []) {
|
|
59
|
+
crawl(subdep);
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
for (const dep2 of edges[name2]) {
|
|
63
|
+
crawl(dep2);
|
|
64
|
+
}
|
|
65
|
+
return Array.from(deps);
|
|
66
|
+
}
|
|
67
|
+
rebuildGraph() {
|
|
68
|
+
this.dependedBy = {};
|
|
69
|
+
this.dependsOn = {};
|
|
70
|
+
for (const mod of this.browserBuild ? this.bundle.modules.browser : this.bundle.modules.server) {
|
|
71
|
+
if (mod.type === "code") {
|
|
72
|
+
for (const imported of mod.imports) {
|
|
73
|
+
if (!(mod.fileName in this.dependsOn)) {
|
|
74
|
+
this.dependsOn[mod.fileName] = [imported];
|
|
75
|
+
} else {
|
|
76
|
+
this.dependsOn[mod.fileName].push(imported);
|
|
77
|
+
}
|
|
78
|
+
if (!(imported in this.dependedBy)) {
|
|
79
|
+
this.dependedBy[imported] = [mod.fileName];
|
|
80
|
+
} else {
|
|
81
|
+
this.dependedBy[imported].push(mod.fileName);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
// src/bundles.ts
|
|
90
|
+
function getBundleSubset(bundle, names, opts2) {
|
|
91
|
+
var _a, _b;
|
|
92
|
+
const namesSet = new Set(names);
|
|
93
|
+
const target = (_a = opts2 == null ? void 0 : opts2.target) != null ? _a : "browser";
|
|
94
|
+
const forBrowser = target === "browser";
|
|
95
|
+
const graph = new DepsGraph(bundle, forBrowser);
|
|
96
|
+
const deps = new Set(names.flatMap((name2) => graph.getTransitiveDeps(name2)));
|
|
97
|
+
const isSubModule = (fileName) => deps.has(fileName) || namesSet.has(fileName);
|
|
98
|
+
const modules = bundle.modules[target];
|
|
99
|
+
const filteredModules = modules.filter((mod) => isSubModule(mod.fileName));
|
|
100
|
+
const filteredComponents = bundle.components.filter(
|
|
101
|
+
(c) => isSubModule(c.entry)
|
|
102
|
+
);
|
|
103
|
+
const filteredComponentsIds = new Set(filteredComponents.map((c) => c.id));
|
|
104
|
+
const filteredIds = Object.fromEntries(
|
|
105
|
+
Object.entries(bundle.filteredIds).map(([k, v]) => [k, [...v]])
|
|
106
|
+
);
|
|
107
|
+
bundle.components.filter((c) => !filteredComponentsIds.has(c.id)).forEach((component) => {
|
|
108
|
+
var _a2;
|
|
109
|
+
filteredIds[component.projectId] = (_a2 = filteredIds[component.projectId]) != null ? _a2 : [];
|
|
110
|
+
if (!filteredIds[component.projectId].includes(component.id)) {
|
|
111
|
+
filteredIds[component.projectId].push(component.id);
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
return {
|
|
115
|
+
modules: {
|
|
116
|
+
browser: forBrowser ? filteredModules : [],
|
|
117
|
+
server: forBrowser ? [] : filteredModules
|
|
118
|
+
},
|
|
119
|
+
components: filteredComponents,
|
|
120
|
+
globalGroups: bundle.globalGroups,
|
|
121
|
+
projects: bundle.projects,
|
|
122
|
+
activeSplits: bundle.activeSplits,
|
|
123
|
+
bundleKey: (_b = bundle.bundleKey) != null ? _b : null,
|
|
124
|
+
deferChunksByDefault: bundle.deferChunksByDefault,
|
|
125
|
+
disableRootLoadingBoundaryByDefault: bundle.disableRootLoadingBoundaryByDefault,
|
|
126
|
+
filteredIds
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
// src/registry.ts
|
|
131
|
+
var isBrowser = typeof window !== "undefined" && window != null && typeof window.document !== "undefined";
|
|
132
|
+
function isModuleBundlePromiseSet(name2) {
|
|
133
|
+
return globalThis.__DaouyBundlePromises && !!globalThis.__DaouyBundlePromises[name2] && !!globalThis.__DaouyBundlePromises[name2].then;
|
|
134
|
+
}
|
|
135
|
+
var Registry = class {
|
|
136
|
+
constructor() {
|
|
137
|
+
this.loadedModules = {};
|
|
138
|
+
this.registeredModules = {};
|
|
139
|
+
this.modules = {};
|
|
140
|
+
}
|
|
141
|
+
register(name2, module2) {
|
|
142
|
+
this.registeredModules[name2] = module2;
|
|
143
|
+
}
|
|
144
|
+
isEmpty() {
|
|
145
|
+
return Object.keys(this.loadedModules).length === 0;
|
|
146
|
+
}
|
|
147
|
+
clear() {
|
|
148
|
+
this.loadedModules = {};
|
|
149
|
+
}
|
|
150
|
+
getRegisteredModule(name2) {
|
|
151
|
+
return this.registeredModules[name2];
|
|
152
|
+
}
|
|
153
|
+
hasModule(name2, opts2 = {}) {
|
|
154
|
+
if (name2 in this.registeredModules && !opts2.forceOriginal) {
|
|
155
|
+
return true;
|
|
156
|
+
}
|
|
157
|
+
if (name2 in this.modules) {
|
|
158
|
+
return true;
|
|
159
|
+
}
|
|
160
|
+
if (globalThis.__DAOUY_CHUNKS && !!globalThis.__DAOUY_CHUNKS[name2]) {
|
|
161
|
+
return true;
|
|
162
|
+
}
|
|
163
|
+
if (isModuleBundlePromiseSet(name2)) {
|
|
164
|
+
return true;
|
|
165
|
+
}
|
|
166
|
+
return false;
|
|
167
|
+
}
|
|
168
|
+
load(name, opts = {}) {
|
|
169
|
+
if (name in this.registeredModules && !opts.forceOriginal) {
|
|
170
|
+
return this.registeredModules[name];
|
|
171
|
+
}
|
|
172
|
+
if (name in this.loadedModules) {
|
|
173
|
+
return this.loadedModules[name];
|
|
174
|
+
}
|
|
175
|
+
if (!this.modules[name] && globalThis.__DAOUY_CHUNKS && !!globalThis.__DAOUY_CHUNKS[name]) {
|
|
176
|
+
this.modules[name] = globalThis.__DAOUY_CHUNKS[name];
|
|
177
|
+
}
|
|
178
|
+
if (!this.modules[name] && isModuleBundlePromiseSet(name)) {
|
|
179
|
+
throw globalThis.__DaouyBundlePromises[name];
|
|
180
|
+
}
|
|
181
|
+
if (!(name in this.modules)) {
|
|
182
|
+
throw new Error(`Unknown module ${name}`);
|
|
183
|
+
}
|
|
184
|
+
const code = this.modules[name];
|
|
185
|
+
const requireFn = isBrowser ? (dep2) => {
|
|
186
|
+
const normalizedDep = resolvePath(dep2, name);
|
|
187
|
+
return this.load(normalizedDep);
|
|
188
|
+
} : (dep) => {
|
|
189
|
+
try {
|
|
190
|
+
const normalizedDep = resolvePath(dep, name);
|
|
191
|
+
return this.load(normalizedDep);
|
|
192
|
+
} catch (err) {
|
|
193
|
+
try {
|
|
194
|
+
return eval("require")(dep);
|
|
195
|
+
} catch (e) {
|
|
196
|
+
throw err;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
};
|
|
200
|
+
let func;
|
|
201
|
+
try {
|
|
202
|
+
func = new Function("require", "exports", code);
|
|
203
|
+
} catch (err2) {
|
|
204
|
+
throw new Error(`DAOUY: Failed to create function for ${name}: ${err2}`);
|
|
205
|
+
}
|
|
206
|
+
const exports = {};
|
|
207
|
+
this.loadedModules[name] = exports;
|
|
208
|
+
try {
|
|
209
|
+
func(requireFn, exports);
|
|
210
|
+
} catch (err2) {
|
|
211
|
+
delete this.loadedModules[name];
|
|
212
|
+
if (!(err2 instanceof Error) && !!err2 && !!err2.then) {
|
|
213
|
+
throw err2;
|
|
214
|
+
}
|
|
215
|
+
throw new Error(`DAOUY: Failed to load ${name}: ${err2}`);
|
|
216
|
+
}
|
|
217
|
+
return exports;
|
|
218
|
+
}
|
|
219
|
+
updateModules(bundle) {
|
|
220
|
+
let updated = false;
|
|
221
|
+
for (const mod of isBrowser ? bundle.modules.browser : bundle.modules.server) {
|
|
222
|
+
if (mod.type === "code" && !!mod.code && mod.code !== this.modules[mod.fileName]) {
|
|
223
|
+
this.modules[mod.fileName] = mod.code;
|
|
224
|
+
if (!globalThis.__DAOUY_CHUNKS) {
|
|
225
|
+
globalThis.__DAOUY_CHUNKS = {};
|
|
226
|
+
}
|
|
227
|
+
globalThis.__DAOUY_CHUNKS[mod.fileName] = mod.code;
|
|
228
|
+
updated = true;
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
if (updated) {
|
|
232
|
+
this.clear();
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
};
|
|
236
|
+
function resolvePath(path, from) {
|
|
237
|
+
const fromParts = from.split("/");
|
|
238
|
+
const pathParts = path.split("/");
|
|
239
|
+
if (pathParts.length === 0) {
|
|
240
|
+
return path;
|
|
241
|
+
}
|
|
242
|
+
if (pathParts[0] === ".") {
|
|
243
|
+
return [
|
|
244
|
+
...fromParts.slice(0, fromParts.length - 1),
|
|
245
|
+
...pathParts.slice(1)
|
|
246
|
+
].join("/");
|
|
247
|
+
} else if (pathParts[0] === "..") {
|
|
248
|
+
let count = 0;
|
|
249
|
+
for (const part of pathParts) {
|
|
250
|
+
if (part === "..") {
|
|
251
|
+
count += 1;
|
|
252
|
+
} else {
|
|
253
|
+
break;
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
return [
|
|
257
|
+
...fromParts.slice(0, fromParts.length - count - 1),
|
|
258
|
+
...pathParts.slice(count)
|
|
259
|
+
].join("/");
|
|
260
|
+
} else {
|
|
261
|
+
return path;
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
// src/tracker/index.ts
|
|
266
|
+
var DaouyTracker = class {
|
|
267
|
+
// Preserve constructor signature for compatibility, but do not retain
|
|
268
|
+
// instance state to avoid unused-property diagnostics.
|
|
269
|
+
constructor(_opts) {
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* @deprecated No-op.
|
|
273
|
+
*/
|
|
274
|
+
trackRender(_opts) {
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* @deprecated No-op.
|
|
278
|
+
*/
|
|
279
|
+
trackFetch() {
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* @deprecated No-op.
|
|
283
|
+
*/
|
|
284
|
+
trackConversion(_value = 0) {
|
|
285
|
+
}
|
|
286
|
+
};
|
|
287
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/index.ts", "../src/deps-graph.ts", "../src/bundles.ts", "../src/registry.ts", "../src/tracker/index.ts"],
|
|
4
|
+
"sourcesContent": ["export { Api, DaouyModulesFetcher } from \"@daouy/loader-fetcher\";\nexport type {\n AssetModule,\n CodeModule,\n ComponentMeta,\n ExperimentSlice,\n FontMeta,\n GlobalGroupMeta,\n LoaderBundleCache,\n LoaderBundleOutput,\n LoaderHtmlOutput,\n PageMeta,\n PageMetadata,\n ProjectMeta,\n SegmentSlice,\n Split,\n} from \"@daouy/loader-fetcher\";\nexport { getBundleSubset } from \"./bundles\";\nexport { Registry } from \"./registry\";\nexport { DaouyTracker } from \"./tracker\";\nexport type { TrackRenderOptions } from \"./tracker\";\n", "import { LoaderBundleOutput } from '@daouy/loader-fetcher';\n\nexport class DepsGraph {\n private dependsOn: Record<string, string[]> = {};\n private dependedBy: Record<string, string[]> = {};\n constructor(\n private bundle: LoaderBundleOutput,\n private browserBuild: boolean\n ) {\n this.rebuildGraph();\n }\n\n getTransitiveDependers(name: string) {\n return this.transitiveCrawl(name, this.dependedBy);\n }\n\n getTransitiveDeps(name: string) {\n if (!(name in this.dependsOn)) {\n return [];\n }\n\n return this.transitiveCrawl(name, this.dependsOn);\n }\n\n private transitiveCrawl(name: string, edges: Record<string, string[]>) {\n const deps = new Set<string>();\n\n const crawl = (dep: string) => {\n if (deps.has(dep)) {\n return;\n }\n deps.add(dep);\n for (const subdep of edges[dep] ?? []) {\n crawl(subdep);\n }\n };\n\n for (const dep of edges[name]) {\n crawl(dep);\n }\n return Array.from(deps);\n }\n\n private rebuildGraph() {\n this.dependedBy = {};\n this.dependsOn = {};\n for (const mod of this.browserBuild\n ? this.bundle.modules.browser\n : this.bundle.modules.server) {\n if (mod.type === 'code') {\n for (const imported of mod.imports) {\n if (!(mod.fileName in this.dependsOn)) {\n this.dependsOn[mod.fileName] = [imported];\n } else {\n this.dependsOn[mod.fileName].push(imported);\n }\n\n if (!(imported in this.dependedBy)) {\n this.dependedBy[imported] = [mod.fileName];\n } else {\n this.dependedBy[imported].push(mod.fileName);\n }\n }\n }\n }\n }\n}\n", "import { LoaderBundleOutput } from \"@daouy/loader-fetcher\";\nimport { DepsGraph } from \"./deps-graph\";\n\n/**\n * Get sub-bundle including only modules that are reachable from `names`.\n * @param opts.target by default, will target the browser modules. Can request\n * the server modules instead.\n */\nexport function getBundleSubset(\n bundle: LoaderBundleOutput,\n names: string[],\n opts?: {\n target?: \"browser\" | \"server\";\n }\n): LoaderBundleOutput {\n const namesSet = new Set(names);\n const target = opts?.target ?? \"browser\";\n\n const forBrowser = target === \"browser\";\n const graph = new DepsGraph(bundle, forBrowser);\n const deps = new Set(names.flatMap((name) => graph.getTransitiveDeps(name)));\n const isSubModule = (fileName: string) =>\n deps.has(fileName) || namesSet.has(fileName);\n const modules = bundle.modules[target];\n const filteredModules = modules.filter((mod) => isSubModule(mod.fileName));\n const filteredComponents = bundle.components.filter((c) =>\n isSubModule(c.entry)\n );\n\n const filteredComponentsIds = new Set(filteredComponents.map((c) => c.id));\n\n // Make deep copy of filteredIds to avoid mutating original bundle\n const filteredIds = Object.fromEntries(\n Object.entries(bundle.filteredIds).map(([k, v]) => [k, [...v]])\n );\n bundle.components\n .filter((c) => !filteredComponentsIds.has(c.id))\n .forEach((component) => {\n filteredIds[component.projectId] = filteredIds[component.projectId] ?? [];\n if (!filteredIds[component.projectId].includes(component.id)) {\n filteredIds[component.projectId].push(component.id);\n }\n });\n\n return {\n modules: {\n browser: forBrowser ? filteredModules : [],\n server: forBrowser ? [] : filteredModules,\n },\n components: filteredComponents,\n globalGroups: bundle.globalGroups,\n projects: bundle.projects,\n activeSplits: bundle.activeSplits,\n bundleKey: bundle.bundleKey ?? null,\n deferChunksByDefault: bundle.deferChunksByDefault,\n disableRootLoadingBoundaryByDefault:\n bundle.disableRootLoadingBoundaryByDefault,\n filteredIds,\n };\n}\n", "import { LoaderBundleOutput } from \"@daouy/loader-fetcher\";\n\nconst isBrowser =\n typeof window !== \"undefined\" &&\n window != null &&\n typeof window.document !== \"undefined\";\n\nfunction isModuleBundlePromiseSet(name: string) {\n return (\n (globalThis as any).__DaouyBundlePromises &&\n !!(globalThis as any).__DaouyBundlePromises[name] &&\n !!(globalThis as any).__DaouyBundlePromises[name].then\n );\n}\n\nexport class Registry {\n private loadedModules: Record<string, any> = {};\n private registeredModules: Record<string, any> = {};\n private modules: Record<string, string> = {};\n\n constructor() {}\n\n register(name: string, module: any) {\n this.registeredModules[name] = module;\n }\n\n isEmpty() {\n return Object.keys(this.loadedModules).length === 0;\n }\n\n clear() {\n this.loadedModules = {};\n }\n\n getRegisteredModule(name: string) {\n return this.registeredModules[name];\n }\n\n hasModule(name: string, opts: { forceOriginal?: boolean } = {}) {\n if (name in this.registeredModules && !opts.forceOriginal) {\n return true;\n }\n\n if (name in this.modules) {\n return true;\n }\n\n if (\n (globalThis as any).__DAOUY_CHUNKS &&\n !!(globalThis as any).__DAOUY_CHUNKS[name]\n ) {\n return true;\n }\n\n if (isModuleBundlePromiseSet(name)) {\n return true;\n }\n\n return false;\n }\n\n load(name: string, opts: { forceOriginal?: boolean } = {}) {\n if (name in this.registeredModules && !opts.forceOriginal) {\n return this.registeredModules[name];\n }\n\n if (name in this.loadedModules) {\n return this.loadedModules[name];\n }\n\n if (\n !this.modules[name] &&\n (globalThis as any).__DAOUY_CHUNKS &&\n !!(globalThis as any).__DAOUY_CHUNKS[name]\n ) {\n this.modules[name] = (globalThis as any).__DAOUY_CHUNKS[name];\n }\n\n if (!this.modules[name] && isModuleBundlePromiseSet(name)) {\n throw (globalThis as any).__DaouyBundlePromises[name];\n }\n\n if (!(name in this.modules)) {\n throw new Error(`Unknown module ${name}`);\n }\n\n const code = this.modules[name];\n\n const requireFn = isBrowser\n ? (dep: string) => {\n const normalizedDep = resolvePath(dep, name);\n return this.load(normalizedDep);\n }\n : (dep: string) => {\n try {\n const normalizedDep = resolvePath(dep, name);\n return this.load(normalizedDep);\n } catch (err) {\n try {\n // Might be a nodeJs module such as tty\n return eval(\"require\")(dep);\n } catch {\n throw err;\n }\n }\n };\n\n let func;\n try {\n func = new Function(\"require\", \"exports\", code);\n } catch (err) {\n throw new Error(`DAOUY: Failed to create function for ${name}: ${err}`);\n }\n const exports = {};\n this.loadedModules[name] = exports;\n try {\n func(requireFn, exports);\n } catch (err: any) {\n // Delete exports from loadedModules, so subsequent uses don't incorrectly\n // believe that this module has been loaded.\n delete this.loadedModules[name];\n if (!(err instanceof Error) && !!err && !!err.then) {\n // Re-throw the Promise\n throw err;\n }\n throw new Error(`DAOUY: Failed to load ${name}: ${err}`);\n }\n return exports;\n }\n\n updateModules(bundle: LoaderBundleOutput) {\n let updated = false;\n for (const mod of isBrowser\n ? bundle.modules.browser\n : bundle.modules.server) {\n if (\n mod.type === \"code\" &&\n !!mod.code &&\n mod.code !== this.modules[mod.fileName]\n ) {\n this.modules[mod.fileName] = mod.code;\n if (!(globalThis as any).__DAOUY_CHUNKS) {\n (globalThis as any).__DAOUY_CHUNKS = {};\n }\n (globalThis as any).__DAOUY_CHUNKS[mod.fileName] = mod.code;\n updated = true;\n }\n }\n\n if (updated) {\n // TODO: do something more efficient than tearing everything down?\n this.clear();\n }\n }\n}\n\nfunction resolvePath(path: string, from: string) {\n const fromParts = from.split(\"/\");\n const pathParts = path.split(\"/\");\n if (pathParts.length === 0) {\n return path;\n }\n\n if (pathParts[0] === \".\") {\n return [\n ...fromParts.slice(0, fromParts.length - 1),\n ...pathParts.slice(1),\n ].join(\"/\");\n } else if (pathParts[0] === \"..\") {\n let count = 0;\n for (const part of pathParts) {\n if (part === \"..\") {\n count += 1;\n } else {\n break;\n }\n }\n return [\n ...fromParts.slice(0, fromParts.length - count - 1),\n ...pathParts.slice(count),\n ].join(\"/\");\n } else {\n return path;\n }\n}\n", "// Intentionally no imports \u2013 this module is now a strict no-op while\n// preserving the public API surface.\n\n/**\n * @deprecated Built-in tracking is disabled. This type remains only for\n * compatibility and will be removed in a future release.\n */\nexport interface TrackerOptions {\n projectIds: string[];\n platform?: string;\n preview?: boolean;\n nativeFetch?: boolean;\n}\n\n// Internal event types removed along with implementation details.\n\n/**\n * @deprecated Built-in tracking is disabled. This type remains only for\n * compatibility and will be removed in a future release.\n */\nexport interface TrackerRenderProperties {\n rootProjectId?: string;\n rootComponentId?: string;\n rootComponentName?: string;\n teamIds: string[];\n projectIds: string[];\n}\n\n/**\n * @deprecated Built-in tracking is disabled. This type remains only for\n * compatibility and will be removed in a future release.\n */\nexport interface TrackRenderOptions {\n renderCtx?: TrackerRenderProperties;\n variation?: Record<string, string>;\n}\n\n/**\n * @deprecated Built-in tracking is disabled. This class remains only for\n * compatibility and will be removed in a future release.\n *\n * All methods are strict no-ops.\n */\nexport class DaouyTracker {\n // Preserve constructor signature for compatibility, but do not retain\n // instance state to avoid unused-property diagnostics.\n constructor(_opts: TrackerOptions) {}\n\n /**\n * @deprecated No-op.\n */\n public trackRender(_opts?: TrackRenderOptions): void {}\n\n /**\n * @deprecated No-op.\n */\n public trackFetch(): void {}\n\n /**\n * @deprecated No-op.\n */\n public trackConversion(_value: number = 0): void {}\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["name", "dep", "opts", "name", "_a", "name", "module", "opts", "dep", "err"]
|
|
7
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "1.0.141",
|
|
3
|
+
"license": "MIT",
|
|
4
|
+
"types": "./dist/index.d.ts",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"module": "./dist/index.esm.js",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"import": "./dist/index.esm.js",
|
|
11
|
+
"require": "./dist/index.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist"
|
|
16
|
+
],
|
|
17
|
+
"engines": {
|
|
18
|
+
"node": ">=10"
|
|
19
|
+
},
|
|
20
|
+
"scripts": {
|
|
21
|
+
"build": "yarn build:types && yarn build:index",
|
|
22
|
+
"build:types": "yarn tsc",
|
|
23
|
+
"build:index": "node ../../build.mjs ./src/index.ts",
|
|
24
|
+
"yalcp": "yalc publish --push",
|
|
25
|
+
"test": "TEST_CWD=`pwd` yarn --cwd=../.. test",
|
|
26
|
+
"lint": "eslint",
|
|
27
|
+
"prepublishOnly": "npm run build",
|
|
28
|
+
"postpublish": "bash ../../scripts/publish-api-doc-model.sh",
|
|
29
|
+
"size": "size-limit",
|
|
30
|
+
"analyze": "size-limit --why"
|
|
31
|
+
},
|
|
32
|
+
"name": "@daouy/loader-core",
|
|
33
|
+
"author": "Chung Wu",
|
|
34
|
+
"size-limit": [
|
|
35
|
+
{
|
|
36
|
+
"path": "dist/index.js",
|
|
37
|
+
"limit": "10 KB"
|
|
38
|
+
}
|
|
39
|
+
],
|
|
40
|
+
"devDependencies": {
|
|
41
|
+
"@types/node": "^20.8.9",
|
|
42
|
+
"typescript": "^5.9.3"
|
|
43
|
+
},
|
|
44
|
+
"dependencies": {
|
|
45
|
+
"@daouy/isomorphic-unfetch": "^1.0.3",
|
|
46
|
+
"@daouy/loader-fetcher": "workspace:*"
|
|
47
|
+
},
|
|
48
|
+
"gitHead": "fa53f7d79f0e26d8b061102fda0c06788da6f8a7"
|
|
49
|
+
}
|