@symbo.ls/create 2.32.6 → 2.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/cjs/prepare.js +71 -21
- package/dist/esm/prepare.js +71 -21
- package/package.json +13 -13
- package/src/prepare.js +76 -22
package/dist/cjs/prepare.js
CHANGED
|
@@ -29,6 +29,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
29
29
|
var prepare_exports = {};
|
|
30
30
|
__export(prepare_exports, {
|
|
31
31
|
UIkitWithPrefix: () => UIkitWithPrefix,
|
|
32
|
+
getCDNUrl: () => getCDNUrl,
|
|
32
33
|
prepareComponents: () => prepareComponents,
|
|
33
34
|
prepareDependencies: () => prepareDependencies,
|
|
34
35
|
prepareDesignSystem: () => prepareDesignSystem,
|
|
@@ -59,6 +60,25 @@ const prepareWindow = (context) => {
|
|
|
59
60
|
function onlyDotsAndNumbers(str) {
|
|
60
61
|
return /^[0-9.]+$/.test(str) && str !== "";
|
|
61
62
|
}
|
|
63
|
+
const CDN_PROVIDERS = {
|
|
64
|
+
skypack: {
|
|
65
|
+
url: "https://cdn.skypack.dev",
|
|
66
|
+
formatUrl: (pkg, version) => `${CDN_PROVIDERS.skypack.url}/${pkg}${version !== "latest" ? `@${version}` : ""}`
|
|
67
|
+
},
|
|
68
|
+
symbols: {
|
|
69
|
+
url: "https://pkg.symbo.ls",
|
|
70
|
+
formatUrl: (pkg, version) => {
|
|
71
|
+
if (pkg.split("/").length > 2 || !onlyDotsAndNumbers(version)) {
|
|
72
|
+
return `${CDN_PROVIDERS.symbols.url}/${pkg}`;
|
|
73
|
+
}
|
|
74
|
+
return `${CDN_PROVIDERS.symbols.url}/${pkg}/${version}.js`;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
const getCDNUrl = (packageName, version = "latest", provider = "skypack") => {
|
|
79
|
+
const cdnConfig = CDN_PROVIDERS[provider] || CDN_PROVIDERS.skypack;
|
|
80
|
+
return cdnConfig.formatUrl(packageName, version);
|
|
81
|
+
};
|
|
62
82
|
const UIkitWithPrefix = () => {
|
|
63
83
|
const newObj = {};
|
|
64
84
|
for (const key in uikit) {
|
|
@@ -97,7 +117,8 @@ const prepareDependencies = async ({
|
|
|
97
117
|
dependencies,
|
|
98
118
|
dependenciesOnDemand,
|
|
99
119
|
document: document2,
|
|
100
|
-
preventCaching = false
|
|
120
|
+
preventCaching = false,
|
|
121
|
+
cdnProvider = "skypack"
|
|
101
122
|
}) => {
|
|
102
123
|
if (!dependencies || Object.keys(dependencies).length === 0) {
|
|
103
124
|
return null;
|
|
@@ -107,29 +128,36 @@ const prepareDependencies = async ({
|
|
|
107
128
|
continue;
|
|
108
129
|
}
|
|
109
130
|
const random = (0, import_utils.isDevelopment)() && preventCaching ? `?${Math.random()}` : "";
|
|
110
|
-
|
|
111
|
-
if (dependency.split("/").length > 1 || !onlyDotsAndNumbers(version)) {
|
|
112
|
-
url = `https://pkg.symbo.ls/${dependency}${random}`;
|
|
113
|
-
}
|
|
131
|
+
const url = getCDNUrl(dependency, version, cdnProvider) + random;
|
|
114
132
|
try {
|
|
115
133
|
if (cachedDeps[dependency]) return;
|
|
116
134
|
cachedDeps[dependency] = true;
|
|
117
|
-
await utils.loadRemoteScript(url, { document: document2 });
|
|
135
|
+
await utils.loadRemoteScript(url, { document: document2, type: "module" });
|
|
118
136
|
} catch (e) {
|
|
119
|
-
console.error(`Failed to load ${dependency}:`, e);
|
|
137
|
+
console.error(`Failed to load ${dependency} from ${cdnProvider}:`, e);
|
|
138
|
+
if (cdnProvider !== "symbols") {
|
|
139
|
+
try {
|
|
140
|
+
const fallbackUrl = getCDNUrl(dependency, version, "symbols") + random;
|
|
141
|
+
await utils.loadRemoteScript(fallbackUrl, { document: document2 });
|
|
142
|
+
console.log(`Successfully loaded ${dependency} from fallback (symbols.ls)`);
|
|
143
|
+
} catch (fallbackError) {
|
|
144
|
+
console.error(`Failed to load ${dependency} from fallback:`, fallbackError);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
120
147
|
}
|
|
121
148
|
}
|
|
122
149
|
return dependencies;
|
|
123
150
|
};
|
|
124
151
|
const prepareRequire = async (packages, ctx) => {
|
|
125
152
|
const windowOpts = ctx.window || window;
|
|
126
|
-
const
|
|
153
|
+
const defaultProvider = ctx.cdnProvider || "skypack";
|
|
154
|
+
const initRequire = async (ctx2) => async (key, provider) => {
|
|
127
155
|
const windowOpts2 = ctx2.window || window;
|
|
128
156
|
const pkg = windowOpts2.packages[key];
|
|
129
157
|
if (typeof pkg === "function") return pkg();
|
|
130
158
|
return pkg;
|
|
131
159
|
};
|
|
132
|
-
const initRequireOnDemand = async (ctx2) => async (key) => {
|
|
160
|
+
const initRequireOnDemand = async (ctx2) => async (key, provider = defaultProvider) => {
|
|
133
161
|
const { dependenciesOnDemand } = ctx2;
|
|
134
162
|
const documentOpts = ctx2.document || document;
|
|
135
163
|
const windowOpts2 = ctx2.window || window;
|
|
@@ -137,21 +165,43 @@ const prepareRequire = async (packages, ctx) => {
|
|
|
137
165
|
const random = (0, import_utils.isDevelopment)() ? `?${Math.random()}` : "";
|
|
138
166
|
if (dependenciesOnDemand && dependenciesOnDemand[key]) {
|
|
139
167
|
const version = dependenciesOnDemand[key];
|
|
140
|
-
const url =
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
168
|
+
const url = getCDNUrl(key, version, provider) + random;
|
|
169
|
+
try {
|
|
170
|
+
await ctx2.utils.loadRemoteScript(url, {
|
|
171
|
+
window: windowOpts2,
|
|
172
|
+
document: documentOpts
|
|
173
|
+
});
|
|
174
|
+
} catch (e) {
|
|
175
|
+
console.error(`Failed to load ${key} from ${provider}:`, e);
|
|
176
|
+
if (provider !== "symbols") {
|
|
177
|
+
const fallbackUrl = getCDNUrl(key, version, "symbols") + random;
|
|
178
|
+
await ctx2.utils.loadRemoteScript(fallbackUrl, {
|
|
179
|
+
window: windowOpts2,
|
|
180
|
+
document: documentOpts
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
}
|
|
145
184
|
} else {
|
|
146
|
-
const url =
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
185
|
+
const url = getCDNUrl(key, "latest", provider) + random;
|
|
186
|
+
try {
|
|
187
|
+
await ctx2.utils.loadRemoteScript(url, {
|
|
188
|
+
window: windowOpts2,
|
|
189
|
+
document: documentOpts
|
|
190
|
+
});
|
|
191
|
+
} catch (e) {
|
|
192
|
+
console.error(`Failed to load ${key} from ${provider}:`, e);
|
|
193
|
+
if (provider !== "symbols") {
|
|
194
|
+
const fallbackUrl = getCDNUrl(key, "latest", "symbols") + random;
|
|
195
|
+
await ctx2.utils.loadRemoteScript(fallbackUrl, {
|
|
196
|
+
window: windowOpts2,
|
|
197
|
+
document: documentOpts
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
windowOpts2.packages[key] = "loadedOnDeman";
|
|
152
202
|
}
|
|
153
203
|
}
|
|
154
|
-
return await windowOpts2.require(key);
|
|
204
|
+
return await windowOpts2.require(key, provider);
|
|
155
205
|
};
|
|
156
206
|
if (windowOpts.packages) {
|
|
157
207
|
windowOpts.packages = (0, import_utils.merge)(windowOpts.packages, packages);
|
package/dist/esm/prepare.js
CHANGED
|
@@ -43,6 +43,25 @@ const prepareWindow = (context) => {
|
|
|
43
43
|
function onlyDotsAndNumbers(str) {
|
|
44
44
|
return /^[0-9.]+$/.test(str) && str !== "";
|
|
45
45
|
}
|
|
46
|
+
const CDN_PROVIDERS = {
|
|
47
|
+
skypack: {
|
|
48
|
+
url: "https://cdn.skypack.dev",
|
|
49
|
+
formatUrl: (pkg, version) => `${CDN_PROVIDERS.skypack.url}/${pkg}${version !== "latest" ? `@${version}` : ""}`
|
|
50
|
+
},
|
|
51
|
+
symbols: {
|
|
52
|
+
url: "https://pkg.symbo.ls",
|
|
53
|
+
formatUrl: (pkg, version) => {
|
|
54
|
+
if (pkg.split("/").length > 2 || !onlyDotsAndNumbers(version)) {
|
|
55
|
+
return `${CDN_PROVIDERS.symbols.url}/${pkg}`;
|
|
56
|
+
}
|
|
57
|
+
return `${CDN_PROVIDERS.symbols.url}/${pkg}/${version}.js`;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
const getCDNUrl = (packageName, version = "latest", provider = "skypack") => {
|
|
62
|
+
const cdnConfig = CDN_PROVIDERS[provider] || CDN_PROVIDERS.skypack;
|
|
63
|
+
return cdnConfig.formatUrl(packageName, version);
|
|
64
|
+
};
|
|
46
65
|
const UIkitWithPrefix = () => {
|
|
47
66
|
const newObj = {};
|
|
48
67
|
for (const key in uikit) {
|
|
@@ -73,7 +92,8 @@ const prepareDependencies = async ({
|
|
|
73
92
|
dependencies,
|
|
74
93
|
dependenciesOnDemand,
|
|
75
94
|
document: document2,
|
|
76
|
-
preventCaching = false
|
|
95
|
+
preventCaching = false,
|
|
96
|
+
cdnProvider = "skypack"
|
|
77
97
|
}) => {
|
|
78
98
|
if (!dependencies || Object.keys(dependencies).length === 0) {
|
|
79
99
|
return null;
|
|
@@ -83,29 +103,36 @@ const prepareDependencies = async ({
|
|
|
83
103
|
continue;
|
|
84
104
|
}
|
|
85
105
|
const random = isDevelopment() && preventCaching ? `?${Math.random()}` : "";
|
|
86
|
-
|
|
87
|
-
if (dependency.split("/").length > 1 || !onlyDotsAndNumbers(version)) {
|
|
88
|
-
url = `https://pkg.symbo.ls/${dependency}${random}`;
|
|
89
|
-
}
|
|
106
|
+
const url = getCDNUrl(dependency, version, cdnProvider) + random;
|
|
90
107
|
try {
|
|
91
108
|
if (cachedDeps[dependency]) return;
|
|
92
109
|
cachedDeps[dependency] = true;
|
|
93
|
-
await utils.loadRemoteScript(url, { document: document2 });
|
|
110
|
+
await utils.loadRemoteScript(url, { document: document2, type: "module" });
|
|
94
111
|
} catch (e) {
|
|
95
|
-
console.error(`Failed to load ${dependency}:`, e);
|
|
112
|
+
console.error(`Failed to load ${dependency} from ${cdnProvider}:`, e);
|
|
113
|
+
if (cdnProvider !== "symbols") {
|
|
114
|
+
try {
|
|
115
|
+
const fallbackUrl = getCDNUrl(dependency, version, "symbols") + random;
|
|
116
|
+
await utils.loadRemoteScript(fallbackUrl, { document: document2 });
|
|
117
|
+
console.log(`Successfully loaded ${dependency} from fallback (symbols.ls)`);
|
|
118
|
+
} catch (fallbackError) {
|
|
119
|
+
console.error(`Failed to load ${dependency} from fallback:`, fallbackError);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
96
122
|
}
|
|
97
123
|
}
|
|
98
124
|
return dependencies;
|
|
99
125
|
};
|
|
100
126
|
const prepareRequire = async (packages, ctx) => {
|
|
101
127
|
const windowOpts = ctx.window || window;
|
|
102
|
-
const
|
|
128
|
+
const defaultProvider = ctx.cdnProvider || "skypack";
|
|
129
|
+
const initRequire = async (ctx2) => async (key, provider) => {
|
|
103
130
|
const windowOpts2 = ctx2.window || window;
|
|
104
131
|
const pkg = windowOpts2.packages[key];
|
|
105
132
|
if (typeof pkg === "function") return pkg();
|
|
106
133
|
return pkg;
|
|
107
134
|
};
|
|
108
|
-
const initRequireOnDemand = async (ctx2) => async (key) => {
|
|
135
|
+
const initRequireOnDemand = async (ctx2) => async (key, provider = defaultProvider) => {
|
|
109
136
|
const { dependenciesOnDemand } = ctx2;
|
|
110
137
|
const documentOpts = ctx2.document || document;
|
|
111
138
|
const windowOpts2 = ctx2.window || window;
|
|
@@ -113,21 +140,43 @@ const prepareRequire = async (packages, ctx) => {
|
|
|
113
140
|
const random = isDevelopment() ? `?${Math.random()}` : "";
|
|
114
141
|
if (dependenciesOnDemand && dependenciesOnDemand[key]) {
|
|
115
142
|
const version = dependenciesOnDemand[key];
|
|
116
|
-
const url =
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
143
|
+
const url = getCDNUrl(key, version, provider) + random;
|
|
144
|
+
try {
|
|
145
|
+
await ctx2.utils.loadRemoteScript(url, {
|
|
146
|
+
window: windowOpts2,
|
|
147
|
+
document: documentOpts
|
|
148
|
+
});
|
|
149
|
+
} catch (e) {
|
|
150
|
+
console.error(`Failed to load ${key} from ${provider}:`, e);
|
|
151
|
+
if (provider !== "symbols") {
|
|
152
|
+
const fallbackUrl = getCDNUrl(key, version, "symbols") + random;
|
|
153
|
+
await ctx2.utils.loadRemoteScript(fallbackUrl, {
|
|
154
|
+
window: windowOpts2,
|
|
155
|
+
document: documentOpts
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
}
|
|
121
159
|
} else {
|
|
122
|
-
const url =
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
160
|
+
const url = getCDNUrl(key, "latest", provider) + random;
|
|
161
|
+
try {
|
|
162
|
+
await ctx2.utils.loadRemoteScript(url, {
|
|
163
|
+
window: windowOpts2,
|
|
164
|
+
document: documentOpts
|
|
165
|
+
});
|
|
166
|
+
} catch (e) {
|
|
167
|
+
console.error(`Failed to load ${key} from ${provider}:`, e);
|
|
168
|
+
if (provider !== "symbols") {
|
|
169
|
+
const fallbackUrl = getCDNUrl(key, "latest", "symbols") + random;
|
|
170
|
+
await ctx2.utils.loadRemoteScript(fallbackUrl, {
|
|
171
|
+
window: windowOpts2,
|
|
172
|
+
document: documentOpts
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
windowOpts2.packages[key] = "loadedOnDeman";
|
|
128
177
|
}
|
|
129
178
|
}
|
|
130
|
-
return await windowOpts2.require(key);
|
|
179
|
+
return await windowOpts2.require(key, provider);
|
|
131
180
|
};
|
|
132
181
|
if (windowOpts.packages) {
|
|
133
182
|
windowOpts.packages = merge(windowOpts.packages, packages);
|
|
@@ -167,6 +216,7 @@ const preparePages = (app, context) => {
|
|
|
167
216
|
};
|
|
168
217
|
export {
|
|
169
218
|
UIkitWithPrefix,
|
|
219
|
+
getCDNUrl,
|
|
170
220
|
prepareComponents,
|
|
171
221
|
prepareDependencies,
|
|
172
222
|
prepareDesignSystem,
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@symbo.ls/create",
|
|
3
|
-
"version": "2.32.
|
|
3
|
+
"version": "2.32.7",
|
|
4
4
|
"license": "MIT",
|
|
5
|
-
"gitHead": "
|
|
5
|
+
"gitHead": "c99355e8e88604af8376bebbf553e559c3f2db76",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"module": "src/index.js",
|
|
8
8
|
"main": "src/index.js",
|
|
@@ -29,17 +29,17 @@
|
|
|
29
29
|
"prepublish": "npm run build; npm run copy:package:cjs"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@domql/emotion": "^2.32.
|
|
33
|
-
"@domql/event": "^2.32.
|
|
34
|
-
"@domql/report": "^2.32.
|
|
35
|
-
"@domql/router": "^2.32.
|
|
36
|
-
"@symbo.ls/fetch": "^2.32.
|
|
37
|
-
"@symbo.ls/init": "^2.32.
|
|
38
|
-
"@symbo.ls/scratch": "^2.32.
|
|
39
|
-
"@symbo.ls/sync": "^2.32.
|
|
40
|
-
"@symbo.ls/uikit": "^2.32.
|
|
41
|
-
"@symbo.ls/utils": "^2.32.
|
|
42
|
-
"domql": "^2.32.
|
|
32
|
+
"@domql/emotion": "^2.32.7",
|
|
33
|
+
"@domql/event": "^2.32.7",
|
|
34
|
+
"@domql/report": "^2.32.7",
|
|
35
|
+
"@domql/router": "^2.32.7",
|
|
36
|
+
"@symbo.ls/fetch": "^2.32.7",
|
|
37
|
+
"@symbo.ls/init": "^2.32.7",
|
|
38
|
+
"@symbo.ls/scratch": "^2.32.7",
|
|
39
|
+
"@symbo.ls/sync": "^2.32.7",
|
|
40
|
+
"@symbo.ls/uikit": "^2.32.7",
|
|
41
|
+
"@symbo.ls/utils": "^2.32.7",
|
|
42
|
+
"domql": "^2.32.7"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
45
|
"@babel/core": "^7.27.1"
|
package/src/prepare.js
CHANGED
|
@@ -31,6 +31,27 @@ function onlyDotsAndNumbers(str) {
|
|
|
31
31
|
return /^[0-9.]+$/.test(str) && str !== ''
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
+
const CDN_PROVIDERS = {
|
|
35
|
+
skypack: {
|
|
36
|
+
url: 'https://cdn.skypack.dev',
|
|
37
|
+
formatUrl: (pkg, version) => `${CDN_PROVIDERS.skypack.url}/${pkg}${version !== 'latest' ? `@${version}` : ''}`
|
|
38
|
+
},
|
|
39
|
+
symbols: {
|
|
40
|
+
url: 'https://pkg.symbo.ls',
|
|
41
|
+
formatUrl: (pkg, version) => {
|
|
42
|
+
if (pkg.split('/').length > 2 || !onlyDotsAndNumbers(version)) {
|
|
43
|
+
return `${CDN_PROVIDERS.symbols.url}/${pkg}`
|
|
44
|
+
}
|
|
45
|
+
return `${CDN_PROVIDERS.symbols.url}/${pkg}/${version}.js`
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export const getCDNUrl = (packageName, version = 'latest', provider = 'skypack') => {
|
|
51
|
+
const cdnConfig = CDN_PROVIDERS[provider] || CDN_PROVIDERS.skypack
|
|
52
|
+
return cdnConfig.formatUrl(packageName, version)
|
|
53
|
+
}
|
|
54
|
+
|
|
34
55
|
export const UIkitWithPrefix = () => {
|
|
35
56
|
const newObj = {}
|
|
36
57
|
for (const key in uikit) {
|
|
@@ -75,7 +96,8 @@ export const prepareDependencies = async ({
|
|
|
75
96
|
dependencies,
|
|
76
97
|
dependenciesOnDemand,
|
|
77
98
|
document,
|
|
78
|
-
preventCaching = false
|
|
99
|
+
preventCaching = false,
|
|
100
|
+
cdnProvider = 'skypack'
|
|
79
101
|
}) => {
|
|
80
102
|
if (!dependencies || Object.keys(dependencies).length === 0) {
|
|
81
103
|
return null
|
|
@@ -87,18 +109,24 @@ export const prepareDependencies = async ({
|
|
|
87
109
|
}
|
|
88
110
|
|
|
89
111
|
const random = isDevelopment() && preventCaching ? `?${Math.random()}` : ''
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
if (dependency.split('/').length > 1 || !onlyDotsAndNumbers(version)) {
|
|
93
|
-
url = `https://pkg.symbo.ls/${dependency}${random}`
|
|
94
|
-
}
|
|
112
|
+
const url = getCDNUrl(dependency, version, cdnProvider) + random
|
|
95
113
|
|
|
96
114
|
try {
|
|
97
115
|
if (cachedDeps[dependency]) return
|
|
98
116
|
cachedDeps[dependency] = true
|
|
99
|
-
await utils.loadRemoteScript(url, { document })
|
|
117
|
+
await utils.loadRemoteScript(url, { document, type: "module" })
|
|
100
118
|
} catch (e) {
|
|
101
|
-
console.error(`Failed to load ${dependency}:`, e)
|
|
119
|
+
console.error(`Failed to load ${dependency} from ${cdnProvider}:`, e)
|
|
120
|
+
|
|
121
|
+
if (cdnProvider !== 'symbols') {
|
|
122
|
+
try {
|
|
123
|
+
const fallbackUrl = getCDNUrl(dependency, version, 'symbols') + random
|
|
124
|
+
await utils.loadRemoteScript(fallbackUrl, { document })
|
|
125
|
+
console.log(`Successfully loaded ${dependency} from fallback (symbols.ls)`)
|
|
126
|
+
} catch (fallbackError) {
|
|
127
|
+
console.error(`Failed to load ${dependency} from fallback:`, fallbackError)
|
|
128
|
+
}
|
|
129
|
+
}
|
|
102
130
|
}
|
|
103
131
|
}
|
|
104
132
|
|
|
@@ -107,15 +135,16 @@ export const prepareDependencies = async ({
|
|
|
107
135
|
|
|
108
136
|
export const prepareRequire = async (packages, ctx) => {
|
|
109
137
|
const windowOpts = ctx.window || window
|
|
138
|
+
const defaultProvider = ctx.cdnProvider || 'skypack'
|
|
110
139
|
|
|
111
|
-
const initRequire = async
|
|
140
|
+
const initRequire = async ctx => async (key, provider) => {
|
|
112
141
|
const windowOpts = ctx.window || window
|
|
113
142
|
const pkg = windowOpts.packages[key]
|
|
114
143
|
if (typeof pkg === 'function') return pkg()
|
|
115
144
|
return pkg
|
|
116
145
|
}
|
|
117
146
|
|
|
118
|
-
const initRequireOnDemand = async
|
|
147
|
+
const initRequireOnDemand = async ctx => async (key, provider = defaultProvider) => {
|
|
119
148
|
const { dependenciesOnDemand } = ctx
|
|
120
149
|
const documentOpts = ctx.document || document
|
|
121
150
|
const windowOpts = ctx.window || window
|
|
@@ -123,21 +152,46 @@ export const prepareRequire = async (packages, ctx) => {
|
|
|
123
152
|
const random = isDevelopment() ? `?${Math.random()}` : ''
|
|
124
153
|
if (dependenciesOnDemand && dependenciesOnDemand[key]) {
|
|
125
154
|
const version = dependenciesOnDemand[key]
|
|
126
|
-
const url =
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
155
|
+
const url = getCDNUrl(key, version, provider) + random
|
|
156
|
+
try {
|
|
157
|
+
await ctx.utils.loadRemoteScript(url, {
|
|
158
|
+
window: windowOpts,
|
|
159
|
+
document: documentOpts,
|
|
160
|
+
|
|
161
|
+
})
|
|
162
|
+
} catch (e) {
|
|
163
|
+
console.error(`Failed to load ${key} from ${provider}:`, e)
|
|
164
|
+
// Fallback to symbo if not already using it
|
|
165
|
+
if (provider !== 'symbols') {
|
|
166
|
+
const fallbackUrl = getCDNUrl(key, version, 'symbols') + random
|
|
167
|
+
await ctx.utils.loadRemoteScript(fallbackUrl, {
|
|
168
|
+
window: windowOpts,
|
|
169
|
+
document: documentOpts
|
|
170
|
+
})
|
|
171
|
+
}
|
|
172
|
+
}
|
|
131
173
|
} else {
|
|
132
|
-
const url =
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
174
|
+
const url = getCDNUrl(key, 'latest', provider) + random
|
|
175
|
+
try {
|
|
176
|
+
await ctx.utils.loadRemoteScript(url, {
|
|
177
|
+
window: windowOpts,
|
|
178
|
+
document: documentOpts,
|
|
179
|
+
})
|
|
180
|
+
} catch (e) {
|
|
181
|
+
console.error(`Failed to load ${key} from ${provider}:`, e)
|
|
182
|
+
// Fallback to symbo if not already using it
|
|
183
|
+
if (provider !== 'symbols') {
|
|
184
|
+
const fallbackUrl = getCDNUrl(key, 'latest', 'symbols') + random
|
|
185
|
+
await ctx.utils.loadRemoteScript(fallbackUrl, {
|
|
186
|
+
window: windowOpts,
|
|
187
|
+
document: documentOpts
|
|
188
|
+
})
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
windowOpts.packages[key] = 'loadedOnDeman'
|
|
138
192
|
}
|
|
139
193
|
}
|
|
140
|
-
return await windowOpts.require(key)
|
|
194
|
+
return await windowOpts.require(key, provider)
|
|
141
195
|
}
|
|
142
196
|
|
|
143
197
|
if (windowOpts.packages) {
|