@symbo.ls/create 2.32.6 → 2.32.8

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.
@@ -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
- let url = `https://pkg.symbo.ls/${dependency}/${version}.js${random}`;
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 initRequire = async (ctx2) => async (key) => {
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 = `https://pkg.symbo.ls/${key}/${version}.js${random}`;
141
- await ctx2.utils.loadRemoteScript(url, {
142
- window: windowOpts2,
143
- document: documentOpts
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 = `https://pkg.symbo.ls/${key}${random}`;
147
- await ctx2.utils.loadRemoteScript(url, {
148
- window: windowOpts2,
149
- document: documentOpts
150
- });
151
- windowOpts2.packages[key] = "loadedOnDemand";
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);
@@ -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
- let url = `https://pkg.symbo.ls/${dependency}/${version}.js${random}`;
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 initRequire = async (ctx2) => async (key) => {
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 = `https://pkg.symbo.ls/${key}/${version}.js${random}`;
117
- await ctx2.utils.loadRemoteScript(url, {
118
- window: windowOpts2,
119
- document: documentOpts
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 = `https://pkg.symbo.ls/${key}${random}`;
123
- await ctx2.utils.loadRemoteScript(url, {
124
- window: windowOpts2,
125
- document: documentOpts
126
- });
127
- windowOpts2.packages[key] = "loadedOnDemand";
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.6",
3
+ "version": "2.32.8",
4
4
  "license": "MIT",
5
- "gitHead": "8bffb49783c4aa5bd7d18933ccee296b92810f7e",
5
+ "gitHead": "f7531cb41b391a1357d31a03fbdd33ad93e0a29d",
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.6",
33
- "@domql/event": "^2.32.6",
34
- "@domql/report": "^2.32.6",
35
- "@domql/router": "^2.32.6",
36
- "@symbo.ls/fetch": "^2.32.6",
37
- "@symbo.ls/init": "^2.32.6",
38
- "@symbo.ls/scratch": "^2.32.6",
39
- "@symbo.ls/sync": "^2.32.6",
40
- "@symbo.ls/uikit": "^2.32.6",
41
- "@symbo.ls/utils": "^2.32.6",
42
- "domql": "^2.32.6"
32
+ "@domql/emotion": "^2.32.8",
33
+ "@domql/event": "^2.32.8",
34
+ "@domql/report": "^2.32.8",
35
+ "@domql/router": "^2.32.8",
36
+ "@symbo.ls/fetch": "^2.32.8",
37
+ "@symbo.ls/init": "^2.32.8",
38
+ "@symbo.ls/scratch": "^2.32.8",
39
+ "@symbo.ls/sync": "^2.32.8",
40
+ "@symbo.ls/uikit": "^2.32.8",
41
+ "@symbo.ls/utils": "^2.32.8",
42
+ "domql": "^2.32.8"
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
- let url = `https://pkg.symbo.ls/${dependency}/${version}.js${random}`
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 (ctx) => async (key) => {
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 (ctx) => async (key) => {
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 = `https://pkg.symbo.ls/${key}/${version}.js${random}`
127
- await ctx.utils.loadRemoteScript(url, {
128
- window: windowOpts,
129
- document: documentOpts
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 = `https://pkg.symbo.ls/${key}${random}`
133
- await ctx.utils.loadRemoteScript(url, {
134
- window: windowOpts,
135
- document: documentOpts
136
- })
137
- windowOpts.packages[key] = 'loadedOnDemand'
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) {