@module-federation/runtime 0.0.0-next-20231225064454 → 0.0.0-next-20231225094207

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.esm.js CHANGED
@@ -1,6 +1,7 @@
1
- import { g as getGlobalHostPlugins, D as DEFAULT_REMOTE_TYPE, a as DEFAULT_SCOPE, b as globalLoading, c as getRemoteEntryExports, d as assert, s as safeToString, G as Global, e as getFMId, i as isObject, f as error, w as warn, h as isPlainObject, j as isRemoteInfoWithEntry, k as isPureRemoteEntry, l as getGlobalShare, m as getInfoWithoutType, n as getPreloaded, o as setPreloaded, p as getGlobalSnapshotInfoByModuleInfo, q as setGlobalSnapshotInfoByModuleInfo, r as getGlobalSnapshot, t as addUniqueItem, u as formatShareConfigs, v as isBrowserEnv, x as getGlobalShareScope, y as getBuilderId, z as setGlobalFederationConstructor, A as getGlobalFederationInstance, B as getGlobalFederationConstructor, C as setGlobalFederationInstance } from './share.esm.js';
1
+ import { g as getGlobalHostPlugins, D as DEFAULT_REMOTE_TYPE, a as DEFAULT_SCOPE, b as globalLoading, c as getRemoteEntryExports, d as assert, s as safeToString, G as Global, e as getFMId, i as isObject, f as error, w as warn, h as isPlainObject, j as isRemoteInfoWithEntry, k as isPureRemoteEntry, l as getRegisteredShare, m as getInfoWithoutType, n as getPreloaded, o as setPreloaded, p as getGlobalSnapshotInfoByModuleInfo, q as setGlobalSnapshotInfoByModuleInfo, r as getGlobalSnapshot, t as getGlobalShareScope, u as addUniqueItem, v as formatShareConfigs, x as isBrowserEnv, y as getBuilderId, z as setGlobalFederationConstructor, A as getGlobalFederationInstance, B as getGlobalFederationConstructor, C as setGlobalFederationInstance } from './share.esm.js';
2
2
  export { E as registerGlobalPlugins } from './share.esm.js';
3
- import { composeKeyWithSeparator, loadScript, createScript, getResourceUrl, isManifestProvider, generateSnapshotFromManifest } from '@module-federation/sdk';
3
+ import { composeKeyWithSeparator, loadScriptNode, loadScript, createScript, getResourceUrl, isManifestProvider, generateSnapshotFromManifest } from '@module-federation/sdk';
4
+ export { loadScript } from '@module-federation/sdk';
4
5
 
5
6
  // Function to match a remote with its name and expose
6
7
  // id: pkgName(@federation/app1) + expose(button) = @federation/app1/button
@@ -118,6 +119,24 @@ async function loadEntryScript({ name, globalName, entry, createScriptHook }) {
118
119
  if (remoteEntryExports) {
119
120
  return remoteEntryExports;
120
121
  }
122
+ if (typeof document === 'undefined') {
123
+ return loadScriptNode(entry, {
124
+ attrs: {
125
+ name,
126
+ globalName
127
+ },
128
+ createScriptHook
129
+ }).then(()=>{
130
+ const { remoteEntryKey, entryExports } = getRemoteEntryExports(name, globalName);
131
+ assert(entryExports, `
132
+ Unable to use the ${name}'s '${entry}' URL with ${remoteEntryKey}'s globalName to get remoteEntry exports.
133
+ Possible reasons could be:\n
134
+ 1. '${entry}' is not the correct URL, or the remoteEntry resource or name is incorrect.\n
135
+ 2. ${remoteEntryKey} cannot be used to get remoteEntry exports in the window object.
136
+ `);
137
+ return entryExports;
138
+ });
139
+ }
121
140
  return loadScript(entry, {
122
141
  attrs: {},
123
142
  createScriptHook
@@ -191,6 +210,10 @@ let Module = class Module {
191
210
  const res = this.loaderHook.lifecycle.createScript.emit({
192
211
  url
193
212
  });
213
+ if (typeof document === 'undefined') {
214
+ //todo: needs real fix
215
+ return res;
216
+ }
194
217
  if (res instanceof HTMLScriptElement) {
195
218
  return res;
196
219
  }
@@ -206,15 +229,16 @@ let Module = class Module {
206
229
  const { loadFactory = true } = options || {
207
230
  loadFactory: true
208
231
  };
232
+ this.hostInfo.name;
209
233
  // Get remoteEntry.js
210
234
  const remoteEntryExports = await this.getEntry();
211
235
  if (!this.inited) {
212
- const globalShareScope = Global.__FEDERATION__.__SHARE__;
236
+ const localShareScopeMap = this.shareScopeMap;
213
237
  const remoteShareScope = this.remoteInfo.shareScope || 'default';
214
- if (!globalShareScope[remoteShareScope]) {
215
- globalShareScope[remoteShareScope] = {};
238
+ if (!localShareScopeMap[remoteShareScope]) {
239
+ localShareScopeMap[remoteShareScope] = {};
216
240
  }
217
- const shareScope = globalShareScope[remoteShareScope];
241
+ const shareScope = localShareScopeMap[remoteShareScope];
218
242
  // TODO: compat logic , it could be moved after providing startup hooks
219
243
  const remoteEntryInitOptions = {
220
244
  version: this.remoteInfo.version || '',
@@ -224,10 +248,18 @@ let Module = class Module {
224
248
  remoteEntryExports.init(shareScope, [], remoteEntryInitOptions);
225
249
  const federationInstance = Global.__FEDERATION__.__INSTANCES__.find((i)=>i.options.id === composeKeyWithSeparator(this.remoteInfo.name, this.remoteInfo.buildVersion));
226
250
  if (federationInstance) {
227
- federationInstance.initOptions(_extends$4({}, remoteEntryInitOptions, {
228
- remotes: [],
229
- name: this.remoteInfo.name
230
- }));
251
+ // means the instance is prev vmok instance
252
+ if (!federationInstance.releaseNumber || Number(federationInstance.releaseNumber) <= 100) {
253
+ // 兼容旧的生产者传参
254
+ federationInstance.initOptions(_extends$4({}, remoteEntryInitOptions, {
255
+ remotes: [],
256
+ name: this.remoteInfo.name
257
+ }));
258
+ if (!__FEDERATION__.__SHARE__['default'] && this.shareScopeMap && this.shareScopeMap['default']) {
259
+ // @ts-ignore compat prev logic , and it will be optimized by supporting startup hook
260
+ __FEDERATION__.__SHARE__['default'] = this.shareScopeMap['default'];
261
+ }
262
+ }
231
263
  }
232
264
  }
233
265
  this.lib = remoteEntryExports;
@@ -242,7 +274,7 @@ let Module = class Module {
242
274
  return exposeContent;
243
275
  }
244
276
  // loading: Record<string, undefined | Promise<RemoteEntryExports | void>> = {};
245
- constructor({ hostInfo, remoteInfo, shared, loaderHook }){
277
+ constructor({ hostInfo, remoteInfo, shared, loaderHook, shareScopeMap }){
246
278
  this.inited = false;
247
279
  this.shared = {};
248
280
  this.lib = undefined;
@@ -250,6 +282,7 @@ let Module = class Module {
250
282
  this.remoteInfo = remoteInfo;
251
283
  this.shared = shared;
252
284
  this.loaderHook = loaderHook;
285
+ this.shareScopeMap = shareScopeMap;
253
286
  }
254
287
  };
255
288
 
@@ -776,9 +809,9 @@ function generatePreloadAssets(origin, preloadOptions, remote, globalSnapshot, r
776
809
  if (!shareInfo) {
777
810
  return;
778
811
  }
779
- const globalShare = getGlobalShare(shared.sharedName, shareInfo);
812
+ const registeredShared = getRegisteredShare(origin.shareScopeMap, shared.sharedName, shareInfo, origin.hooks.lifecycle.resolveShare);
780
813
  // If the global share does not exist, or the lib function does not exist, it means that the shared has not been loaded yet and can be preloaded.
781
- if (globalShare && typeof globalShare.lib === 'function') {
814
+ if (registeredShared && typeof registeredShared.lib === 'function') {
782
815
  shared.assets.js.sync.forEach((asset)=>{
783
816
  loadedSharedJsAssets.add(asset);
784
817
  });
@@ -1105,6 +1138,13 @@ function _object_without_properties_loose(source, excluded) {
1105
1138
  return target;
1106
1139
  }
1107
1140
  class FederationHost {
1141
+ _setGlobalShareScopeMap() {
1142
+ const globalShareScopeMap = getGlobalShareScope();
1143
+ const identifier = this.options.id || this.options.name;
1144
+ if (identifier && !globalShareScopeMap[identifier]) {
1145
+ globalShareScopeMap[identifier] = this.shareScopeMap;
1146
+ }
1147
+ }
1108
1148
  initOptions(userOptions) {
1109
1149
  this.registerPlugins(userOptions.plugins);
1110
1150
  const options = this.formatOptions(this.options, userOptions);
@@ -1119,6 +1159,11 @@ class FederationHost {
1119
1159
  // 2. Searches globally for a matching share, if found, it uses it directly
1120
1160
  // 3. If not found, it retrieves it from the current share and stores the obtained share globally.
1121
1161
  const shareInfo = Object.assign({}, (_this_options_shared = this.options.shared) == null ? void 0 : _this_options_shared[pkgName], customShareInfo);
1162
+ if (shareInfo == null ? void 0 : shareInfo.scope) {
1163
+ shareInfo.scope.forEach((shareScope)=>{
1164
+ this.initializeSharing(shareScope, shareInfo.strategy);
1165
+ });
1166
+ }
1122
1167
  const loadShareRes = await this.hooks.lifecycle.beforeLoadShare.emit({
1123
1168
  pkgName,
1124
1169
  shareInfo,
@@ -1129,30 +1174,42 @@ class FederationHost {
1129
1174
  // Assert that shareInfoRes exists, if not, throw an error
1130
1175
  assert(shareInfoRes, `Cannot find ${pkgName} Share in the ${this.options.name}. Please ensure that the ${pkgName} Share parameters have been injected`);
1131
1176
  // Retrieve from cache
1132
- const globalShare = getGlobalShare(pkgName, shareInfoRes);
1133
- if (globalShare && globalShare.lib) {
1134
- addUniqueItem(globalShare.useIn, this.options.name);
1135
- return globalShare.lib;
1136
- } else if (globalShare && globalShare.loading) {
1137
- const factory = await globalShare.loading;
1138
- addUniqueItem(globalShare.useIn, this.options.name);
1177
+ const registeredShared = getRegisteredShare(this.shareScopeMap, pkgName, shareInfoRes, this.hooks.lifecycle.resolveShare);
1178
+ const addUseIn = (shared)=>{
1179
+ if (!shared.useIn) {
1180
+ shared.useIn = [];
1181
+ }
1182
+ addUniqueItem(shared.useIn, this.options.name);
1183
+ };
1184
+ if (registeredShared && registeredShared.lib) {
1185
+ addUseIn(registeredShared);
1186
+ return registeredShared.lib;
1187
+ } else if (registeredShared && registeredShared.loading && !registeredShared.loaded) {
1188
+ const factory = await registeredShared.loading;
1189
+ registeredShared.loaded = true;
1190
+ if (!registeredShared.lib) {
1191
+ registeredShared.lib = factory;
1192
+ }
1193
+ addUseIn(registeredShared);
1139
1194
  return factory;
1140
- } else if (globalShare) {
1195
+ } else if (registeredShared) {
1141
1196
  const asyncLoadProcess = async ()=>{
1142
- const factory = await globalShare.get();
1197
+ const factory = await registeredShared.get();
1143
1198
  shareInfoRes.lib = factory;
1144
- addUniqueItem(shareInfoRes.useIn, this.options.name);
1145
- const gShared = getGlobalShare(pkgName, shareInfoRes);
1199
+ shareInfoRes.loaded = true;
1200
+ addUseIn(shareInfoRes);
1201
+ const gShared = getRegisteredShare(this.shareScopeMap, pkgName, shareInfoRes, this.hooks.lifecycle.resolveShare);
1146
1202
  if (gShared) {
1147
1203
  gShared.lib = factory;
1204
+ gShared.loaded = true;
1148
1205
  }
1149
1206
  return factory;
1150
1207
  };
1151
1208
  const loading = asyncLoadProcess();
1152
1209
  this.setShared({
1153
1210
  pkgName,
1154
- loaded: true,
1155
- shared: shareInfoRes,
1211
+ loaded: false,
1212
+ shared: registeredShared,
1156
1213
  from: this.options.name,
1157
1214
  lib: null,
1158
1215
  loading
@@ -1165,17 +1222,19 @@ class FederationHost {
1165
1222
  const asyncLoadProcess = async ()=>{
1166
1223
  const factory = await shareInfoRes.get();
1167
1224
  shareInfoRes.lib = factory;
1168
- addUniqueItem(shareInfoRes.useIn, this.options.name);
1169
- const gShared = getGlobalShare(pkgName, shareInfoRes);
1225
+ shareInfoRes.loaded = true;
1226
+ addUseIn(shareInfoRes);
1227
+ const gShared = getRegisteredShare(this.shareScopeMap, pkgName, shareInfoRes, this.hooks.lifecycle.resolveShare);
1170
1228
  if (gShared) {
1171
1229
  gShared.lib = factory;
1230
+ gShared.loaded = true;
1172
1231
  }
1173
1232
  return factory;
1174
1233
  };
1175
1234
  const loading = asyncLoadProcess();
1176
1235
  this.setShared({
1177
1236
  pkgName,
1178
- loaded: true,
1237
+ loaded: false,
1179
1238
  shared: shareInfoRes,
1180
1239
  from: this.options.name,
1181
1240
  lib: null,
@@ -1191,16 +1250,16 @@ class FederationHost {
1191
1250
  loadShareSync(pkgName) {
1192
1251
  var _this_options_shared;
1193
1252
  const shareInfo = (_this_options_shared = this.options.shared) == null ? void 0 : _this_options_shared[pkgName];
1194
- const globalShare = getGlobalShare(pkgName, shareInfo);
1195
- if (globalShare && typeof globalShare.lib === 'function') {
1196
- addUniqueItem(globalShare.useIn, this.options.name);
1197
- if (!globalShare.loaded) {
1198
- globalShare.loaded = true;
1199
- if (globalShare.from === this.options.name) {
1253
+ const registeredShared = getRegisteredShare(this.shareScopeMap, pkgName, shareInfo, this.hooks.lifecycle.resolveShare);
1254
+ if (registeredShared && typeof registeredShared.lib === 'function') {
1255
+ addUniqueItem(registeredShared.useIn, this.options.name);
1256
+ if (!registeredShared.loaded) {
1257
+ registeredShared.loaded = true;
1258
+ if (registeredShared.from === this.options.name) {
1200
1259
  shareInfo.loaded = true;
1201
1260
  }
1202
1261
  }
1203
- return globalShare.lib;
1262
+ return registeredShared.lib;
1204
1263
  }
1205
1264
  if (shareInfo.lib) {
1206
1265
  if (!shareInfo.loaded) {
@@ -1271,7 +1330,8 @@ class FederationHost {
1271
1330
  remoteInfo,
1272
1331
  shared: this.options.shared || {},
1273
1332
  plugins: this.options.plugins,
1274
- loaderHook: this.loaderHook
1333
+ loaderHook: this.loaderHook,
1334
+ shareScopeMap: this.shareScopeMap
1275
1335
  };
1276
1336
  if (!module) {
1277
1337
  module = new Module(moduleOptions);
@@ -1351,14 +1411,9 @@ class FederationHost {
1351
1411
  * It accepts one argument, the name of the share scope.
1352
1412
  * If the share scope does not exist, it creates one.
1353
1413
  */ // eslint-disable-next-line @typescript-eslint/member-ordering
1354
- initializeSharing(shareScopeName = DEFAULT_SCOPE) {
1355
- const shareScopeLoading = Global.__FEDERATION__.__SHARE_SCOPE_LOADING__;
1356
- const shareScope = Global.__FEDERATION__.__SHARE__;
1414
+ initializeSharing(shareScopeName = DEFAULT_SCOPE, strategy) {
1415
+ const shareScope = this.shareScopeMap;
1357
1416
  const hostName = this.options.name;
1358
- // Executes only once
1359
- if (shareScopeLoading[shareScopeName]) {
1360
- return shareScopeLoading[shareScopeName];
1361
- }
1362
1417
  // Creates a new share scope if necessary
1363
1418
  if (!shareScope[shareScopeName]) {
1364
1419
  shareScope[shareScopeName] = {};
@@ -1366,21 +1421,27 @@ class FederationHost {
1366
1421
  // Executes all initialization snippets from all accessible modules
1367
1422
  const scope = shareScope[shareScopeName];
1368
1423
  const register = (name, shared)=>{
1424
+ var _activeVersion_shareConfig;
1369
1425
  const { version, eager } = shared;
1370
1426
  scope[name] = scope[name] || {};
1371
1427
  const versions = scope[name];
1372
1428
  const activeVersion = versions[version];
1373
- const activeVersionEager = Boolean(activeVersion && (activeVersion.eager || activeVersion.shareConfig.eager));
1429
+ const activeVersionEager = Boolean(activeVersion && (activeVersion.eager || ((_activeVersion_shareConfig = activeVersion.shareConfig) == null ? void 0 : _activeVersion_shareConfig.eager)));
1374
1430
  if (!activeVersion || !activeVersion.loaded && (Boolean(!eager) !== !activeVersionEager ? eager : hostName > activeVersion.from)) {
1375
1431
  versions[version] = shared;
1376
1432
  }
1377
1433
  };
1378
1434
  const promises = [];
1435
+ const initFn = (mod)=>mod && mod.init && mod.init(shareScope[shareScopeName]);
1379
1436
  const initRemoteModule = async (key)=>{
1380
1437
  const { module } = await this._getRemoteModuleAndOptions(key);
1381
- const initFn = (mod)=>mod && mod.init && mod.init(shareScope[shareScopeName]);
1382
- const entry = await module.getEntry();
1383
- initFn(entry);
1438
+ if (module.getEntry) {
1439
+ const entry = await module.getEntry();
1440
+ if (!module.inited) {
1441
+ initFn(entry);
1442
+ module.inited = true;
1443
+ }
1444
+ }
1384
1445
  };
1385
1446
  Object.keys(this.options.shared).forEach((shareName)=>{
1386
1447
  const shared = this.options.shared[shareName];
@@ -1388,15 +1449,17 @@ class FederationHost {
1388
1449
  register(shareName, shared);
1389
1450
  }
1390
1451
  });
1391
- this.options.remotes.forEach((remote)=>{
1392
- if (remote.shareScope === shareScopeName) {
1393
- promises.push(initRemoteModule(remote.name));
1394
- }
1395
- });
1396
- if (!promises.length) {
1397
- return shareScopeLoading[shareScopeName] = true;
1452
+ if (strategy === 'version-first') {
1453
+ this.options.remotes.forEach((remote)=>{
1454
+ if (remote.shareScope === shareScopeName) {
1455
+ promises.push(initRemoteModule(remote.name));
1456
+ }
1457
+ });
1398
1458
  }
1399
- return shareScopeLoading[shareScopeName] = Promise.all(promises).then(()=>shareScopeLoading[shareScopeName] = true);
1459
+ return promises;
1460
+ }
1461
+ initShareScopeMap(scopeName, shareScope) {
1462
+ this.shareScopeMap[scopeName] = shareScope;
1400
1463
  }
1401
1464
  formatOptions(globalOptions, userOptions) {
1402
1465
  const formatShareOptions = formatShareConfigs(userOptions.shared || {}, userOptions.name);
@@ -1436,16 +1499,17 @@ class FederationHost {
1436
1499
  }
1437
1500
  return res;
1438
1501
  }, globalOptionsRes.remotes);
1439
- // register shared include lib
1502
+ // register shared in shareScopeMap
1440
1503
  const sharedKeys = Object.keys(formatShareOptions);
1441
1504
  sharedKeys.forEach((sharedKey)=>{
1442
1505
  const sharedVal = formatShareOptions[sharedKey];
1443
- const globalShare = getGlobalShare(sharedKey, sharedVal);
1444
- if (!globalShare && sharedVal && sharedVal.lib) {
1506
+ const registeredShared = getRegisteredShare(this.shareScopeMap, sharedKey, sharedVal, this.hooks.lifecycle.resolveShare);
1507
+ if (!registeredShared && sharedVal && sharedVal.lib) {
1445
1508
  this.setShared({
1446
1509
  pkgName: sharedKey,
1447
1510
  lib: sharedVal.lib,
1448
1511
  get: sharedVal.get,
1512
+ loaded: true,
1449
1513
  shared: sharedVal,
1450
1514
  from: userOptions.name
1451
1515
  });
@@ -1480,7 +1544,6 @@ class FederationHost {
1480
1544
  ]);
1481
1545
  }
1482
1546
  setShared({ pkgName, shared, from, lib, loading, loaded, get }) {
1483
- const target = getGlobalShareScope();
1484
1547
  const { version, scope = 'default' } = shared, shareInfo = _object_without_properties_loose(shared, [
1485
1548
  "version",
1486
1549
  "scope"
@@ -1489,23 +1552,23 @@ class FederationHost {
1489
1552
  scope
1490
1553
  ];
1491
1554
  scopes.forEach((sc)=>{
1492
- if (!target[sc]) {
1493
- target[sc] = {};
1555
+ if (!this.shareScopeMap[sc]) {
1556
+ this.shareScopeMap[sc] = {};
1494
1557
  }
1495
- if (!target[sc][pkgName]) {
1496
- target[sc][pkgName] = {};
1558
+ if (!this.shareScopeMap[sc][pkgName]) {
1559
+ this.shareScopeMap[sc][pkgName] = {};
1497
1560
  }
1498
- if (target[sc][pkgName][version]) {
1561
+ if (this.shareScopeMap[sc][pkgName][version]) {
1499
1562
  warn(// eslint-disable-next-line max-len
1500
1563
  `The share \n ${safeToString({
1501
1564
  scope: sc,
1502
1565
  pkgName,
1503
1566
  version,
1504
- from: target[sc][pkgName][version].from
1567
+ from: this.shareScopeMap[sc][pkgName][version].from
1505
1568
  })} has been registered`);
1506
1569
  return;
1507
1570
  }
1508
- target[sc][pkgName][version] = _extends({
1571
+ this.shareScopeMap[sc][pkgName][version] = _extends({
1509
1572
  version,
1510
1573
  scope: [
1511
1574
  'default'
@@ -1516,7 +1579,7 @@ class FederationHost {
1516
1579
  loading
1517
1580
  });
1518
1581
  if (get) {
1519
- target[sc][pkgName][version].get = get;
1582
+ this.shareScopeMap[sc][pkgName][version].get = get;
1520
1583
  }
1521
1584
  });
1522
1585
  }
@@ -1531,11 +1594,13 @@ class FederationHost {
1531
1594
  errorLoadRemote: new AsyncHook('errorLoadRemote'),
1532
1595
  beforeLoadShare: new AsyncWaterfallHook('beforeLoadShare'),
1533
1596
  loadShare: new AsyncHook(),
1597
+ resolveShare: new SyncWaterfallHook('resolveShare'),
1534
1598
  beforePreloadRemote: new AsyncHook(),
1535
1599
  generatePreloadAssets: new AsyncHook('generatePreloadAssets'),
1536
1600
  afterPreloadRemote: new AsyncHook()
1537
1601
  });
1538
- this.version = '0.0.4';
1602
+ this.releaseNumber = `4`;
1603
+ this.version = `0.0.4`;
1539
1604
  this.moduleCache = new Map();
1540
1605
  this.loaderHook = new PluginSystem({
1541
1606
  // FIXME: may not be suitable
@@ -1543,7 +1608,6 @@ class FederationHost {
1543
1608
  createScript: new SyncHook(),
1544
1609
  fetch: new AsyncHook('fetch')
1545
1610
  });
1546
- this.loadingShare = {};
1547
1611
  // TODO: Validate the details of the options
1548
1612
  // Initialize options with default values
1549
1613
  const defaultOptions = {
@@ -1559,6 +1623,8 @@ class FederationHost {
1559
1623
  };
1560
1624
  this.name = userOptions.name;
1561
1625
  this.options = defaultOptions;
1626
+ this.shareScopeMap = {};
1627
+ this._setGlobalShareScopeMap();
1562
1628
  this.snapshotHandler = new SnapshotHandler(this);
1563
1629
  this.registerPlugins([
1564
1630
  ...defaultOptions.plugins,
package/dist/package.json CHANGED
@@ -39,8 +39,8 @@
39
39
  "helpers": [
40
40
  "./dist/helpers.cjs.d.ts"
41
41
  ],
42
- "type": [
43
- "./dist/type.cjs.d.ts"
42
+ "types": [
43
+ "./dist/types.cjs.d.ts"
44
44
  ]
45
45
  }
46
46
  },