@kubb/ast 5.0.0-beta.14 → 5.0.0-beta.16

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.cjs CHANGED
@@ -1286,14 +1286,23 @@ function resolveRefName(node) {
1286
1286
  * }
1287
1287
  * ```
1288
1288
  */
1289
- function collectReferencedSchemaNames(node, out = /* @__PURE__ */ new Set()) {
1290
- if (!node) return out;
1289
+ const schemaRefCache = /* @__PURE__ */ new WeakMap();
1290
+ function collectSchemaRefs(node) {
1291
+ const cached = schemaRefCache.get(node);
1292
+ if (cached) return cached;
1293
+ const refs = /* @__PURE__ */ new Set();
1291
1294
  collect(node, { schema(child) {
1292
1295
  if (child.type === "ref") {
1293
1296
  const name = resolveRefName(child);
1294
- if (name) out.add(name);
1297
+ if (name) refs.add(name);
1295
1298
  }
1296
1299
  } });
1300
+ schemaRefCache.set(node, refs);
1301
+ return refs;
1302
+ }
1303
+ function collectReferencedSchemaNames(node, out = /* @__PURE__ */ new Set()) {
1304
+ if (!node) return out;
1305
+ for (const name of collectSchemaRefs(node)) out.add(name);
1297
1306
  return out;
1298
1307
  }
1299
1308
  /**
@@ -1432,6 +1441,22 @@ function createInput(overrides = {}) {
1432
1441
  };
1433
1442
  }
1434
1443
  /**
1444
+ * Creates an `InputStreamNode` from pre-built `AsyncIterable` sources.
1445
+ *
1446
+ * @example
1447
+ * ```ts
1448
+ * const node = createStreamInput(schemasIterable, operationsIterable, { title: 'My API' })
1449
+ * ```
1450
+ */
1451
+ function createStreamInput(schemas, operations, meta) {
1452
+ return {
1453
+ kind: "Input",
1454
+ schemas,
1455
+ operations,
1456
+ meta
1457
+ };
1458
+ }
1459
+ /**
1435
1460
  * Creates an `OutputNode` with a stable default for `files`.
1436
1461
  *
1437
1462
  * @example
@@ -2164,23 +2189,27 @@ function setDiscriminatorEnum({ node, propertyName, values, enumName }) {
2164
2189
  * ])
2165
2190
  * ```
2166
2191
  */
2167
- function mergeAdjacentObjects(members) {
2168
- return members.reduce((acc, member) => {
2192
+ function* mergeAdjacentObjectsLazy(members) {
2193
+ let acc;
2194
+ for (const member of members) {
2169
2195
  const objectMember = narrowSchema(member, "object");
2170
- if (objectMember && !objectMember.name) {
2171
- const previous = acc.at(-1);
2172
- const previousObject = previous ? narrowSchema(previous, "object") : void 0;
2173
- if (previousObject && !previousObject.name) {
2174
- acc[acc.length - 1] = createSchema({
2175
- ...previousObject,
2176
- properties: [...previousObject.properties ?? [], ...objectMember.properties ?? []]
2196
+ if (objectMember && !objectMember.name && acc !== void 0) {
2197
+ const accObject = narrowSchema(acc, "object");
2198
+ if (accObject && !accObject.name) {
2199
+ acc = createSchema({
2200
+ ...accObject,
2201
+ properties: [...accObject.properties ?? [], ...objectMember.properties ?? []]
2177
2202
  });
2178
- return acc;
2203
+ continue;
2179
2204
  }
2180
2205
  }
2181
- acc.push(member);
2182
- return acc;
2183
- }, []);
2206
+ if (acc !== void 0) yield acc;
2207
+ acc = member;
2208
+ }
2209
+ if (acc !== void 0) yield acc;
2210
+ }
2211
+ function mergeAdjacentObjects(members) {
2212
+ return [...mergeAdjacentObjectsLazy(members)];
2184
2213
  }
2185
2214
  /**
2186
2215
  * Removes enum members that are covered by broader scalar primitives in the same union.
@@ -2252,6 +2281,7 @@ exports.createProperty = createProperty;
2252
2281
  exports.createResponse = createResponse;
2253
2282
  exports.createSchema = createSchema;
2254
2283
  exports.createSource = createSource;
2284
+ exports.createStreamInput = createStreamInput;
2255
2285
  exports.createText = createText;
2256
2286
  exports.createType = createType;
2257
2287
  exports.definePrinter = definePrinter;
@@ -2269,6 +2299,7 @@ exports.isSchemaNode = isSchemaNode;
2269
2299
  exports.isStringType = isStringType;
2270
2300
  exports.mediaTypes = mediaTypes;
2271
2301
  exports.mergeAdjacentObjects = mergeAdjacentObjects;
2302
+ exports.mergeAdjacentObjectsLazy = mergeAdjacentObjectsLazy;
2272
2303
  exports.narrowSchema = narrowSchema;
2273
2304
  exports.nodeKinds = nodeKinds;
2274
2305
  exports.resolveRefName = resolveRefName;