@kubb/studio 5.2.2 → 5.2.4

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.
@@ -246,6 +246,8 @@ type KubbHooks$1 = {
246
246
  'kubb:generation:end': [ctx: {
247
247
  config: Config;
248
248
  storage: Record<string, string>;
249
+ peerDependencies: Record<string, string>;
250
+ missingDependencies: Array<string>;
249
251
  }];
250
252
  'kubb:generation:summary': [ctx: {
251
253
  duration: number;
@@ -564,4 +566,4 @@ declare function isStudioPingMessage(msg: AgentMessage): msg is StudioPingMessag
564
566
  declare function isDisconnectMessage(msg: AgentMessage): msg is StudioDisconnectMessage;
565
567
  //#endregion
566
568
  export { isCommandMessage as A, StudioConnectMessage as C, StudioPingMessage as D, StudioGenerateMessage as E, isDisconnectMessage as M, isStudioPingMessage as N, StudioSaveMessage as O, PluginView as S, StudioErrorMessage as T, DataMessagePayload as _, AgentPermissions as a, KubbHooks$1 as b, ClientInfo as c, ConfigEditOutcome as d, ConfigFileView as f, DataMessage as g, ConnectMessagePayload as h, AgentMessage as i, isDataMessage as j, commandTypes as k, CommandMessage as l, ConfigView as m, AgentConnectResponse as n, AgentPingMessage as o, ConfigRef as p, AgentDisconnectMessage as r, AgentSaveMessage as s, AgentConnectMessage as t, ConfigEdit as u, JSONKubbConfig as v, StudioDisconnectMessage as w, OptionValue as x, KubbHook as y };
567
- //# sourceMappingURL=index-Y-wkaxbL.d.ts.map
569
+ //# sourceMappingURL=index-V3fjg2mj.d.ts.map
package/dist/index.cjs CHANGED
@@ -569,7 +569,7 @@ async function disconnect({ sessionId, token, studioUrl, slug }) {
569
569
  }
570
570
  //#endregion
571
571
  //#region package.json
572
- var version = "5.2.2";
572
+ var version = "5.2.4";
573
573
  //#endregion
574
574
  //#region src/hooks.ts
575
575
  /**
@@ -675,6 +675,20 @@ function toPluginName(packageName) {
675
675
  return packageName.split("/").pop() ?? packageName;
676
676
  }
677
677
  /**
678
+ * Adds the `@kubb/` scope a plugin's package carries but its `name` does not, the inverse of
679
+ * {@link toPluginName}. A name outside the `plugin-` convention is left alone, so a third-party
680
+ * plugin is not reported as one of Kubb's.
681
+ *
682
+ * @example
683
+ * ```ts
684
+ * toPackageName('plugin-ts') // '@kubb/plugin-ts'
685
+ * toPackageName('@acme/my-plugin') // '@acme/my-plugin'
686
+ * ```
687
+ */
688
+ function toPackageName(name) {
689
+ return name.startsWith("plugin-") ? `@kubb/${name}` : name;
690
+ }
691
+ /**
678
692
  * Derives the conventional named export for a `@kubb/*` plugin package from its package name.
679
693
  *
680
694
  * @example
@@ -1507,6 +1521,29 @@ const CONNECT_TIMEOUT_MS = 5e3;
1507
1521
  * automatically once the socket is collected.
1508
1522
  */
1509
1523
  const eventSeqCounters = /* @__PURE__ */ new WeakMap();
1524
+ const require$1 = (0, node_module.createRequire)(require("url").pathToFileURL(__filename).href);
1525
+ async function resolvePeerDependencies(names) {
1526
+ const uniqueNames = [...new Set(names.map(toPackageName))];
1527
+ const peerDependencies = {};
1528
+ const missingDependencies = [];
1529
+ const versions = await Promise.all(uniqueNames.map(async (name) => {
1530
+ try {
1531
+ const path = require$1.resolve(`${name}/package.json`);
1532
+ return JSON.parse(await (0, node_fs_promises.readFile)(path, "utf8")).version;
1533
+ } catch {
1534
+ return;
1535
+ }
1536
+ }));
1537
+ for (const [index, name] of uniqueNames.entries()) {
1538
+ const version = versions[index];
1539
+ if (version) peerDependencies[name] = version;
1540
+ else missingDependencies.push(name);
1541
+ }
1542
+ return {
1543
+ peerDependencies,
1544
+ missingDependencies
1545
+ };
1546
+ }
1510
1547
  function nextEventSeq(ws$1) {
1511
1548
  const seq = eventSeqCounters.get(ws$1) ?? 0;
1512
1549
  eventSeqCounters.set(ws$1, seq + 1);
@@ -1658,6 +1695,7 @@ function setupEventsStream(ws$5, hooks) {
1658
1695
  });
1659
1696
  });
1660
1697
  on("kubb:generation:end", async ({ config, storage, diagnostics = [], status, hrStart, filesCreated }) => {
1698
+ const { peerDependencies, missingDependencies } = await resolvePeerDependencies(config.plugins.map(({ name }) => name));
1661
1699
  const paths = await storage.readKeys();
1662
1700
  const files = {};
1663
1701
  await inParallel({
@@ -1672,7 +1710,9 @@ function setupEventsStream(ws$5, hooks) {
1672
1710
  type: "kubb:generation:end",
1673
1711
  data: [{
1674
1712
  config,
1675
- storage: files
1713
+ storage: files,
1714
+ peerDependencies,
1715
+ missingDependencies
1676
1716
  }]
1677
1717
  });
1678
1718
  if (!hrStart) return;
@@ -1929,7 +1969,7 @@ var StudioSession = class {
1929
1969
  path: configPath,
1930
1970
  file: await this.#readConfigFileView(),
1931
1971
  plugins: config.plugins.map((plugin) => ({
1932
- name: `@kubb/${plugin.name}`,
1972
+ name: toPackageName(plugin.name),
1933
1973
  options: plugin.options ?? {}
1934
1974
  }))
1935
1975
  },