@ir-kit/k6-gen 0.1.0

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.
Files changed (71) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +46 -0
  3. package/dist/emit/ast-imports.d.ts +20 -0
  4. package/dist/emit/ast-imports.d.ts.map +1 -0
  5. package/dist/emit/ast-imports.js +20 -0
  6. package/dist/emit/ast-imports.js.map +1 -0
  7. package/dist/emit/client-preamble.d.ts +8 -0
  8. package/dist/emit/client-preamble.d.ts.map +1 -0
  9. package/dist/emit/client-preamble.js +271 -0
  10. package/dist/emit/client-preamble.js.map +1 -0
  11. package/dist/emit/client.d.ts +12 -0
  12. package/dist/emit/client.d.ts.map +1 -0
  13. package/dist/emit/client.js +124 -0
  14. package/dist/emit/client.js.map +1 -0
  15. package/dist/emit/data.d.ts +3 -0
  16. package/dist/emit/data.d.ts.map +1 -0
  17. package/dist/emit/data.js +39 -0
  18. package/dist/emit/data.js.map +1 -0
  19. package/dist/emit/index.d.ts +8 -0
  20. package/dist/emit/index.d.ts.map +1 -0
  21. package/dist/emit/index.js +14 -0
  22. package/dist/emit/index.js.map +1 -0
  23. package/dist/emit/loadtest-stub-template.d.ts +10 -0
  24. package/dist/emit/loadtest-stub-template.d.ts.map +1 -0
  25. package/dist/emit/loadtest-stub-template.js +45 -0
  26. package/dist/emit/loadtest-stub-template.js.map +1 -0
  27. package/dist/emit/loadtest-stubs.d.ts +11 -0
  28. package/dist/emit/loadtest-stubs.d.ts.map +1 -0
  29. package/dist/emit/loadtest-stubs.js +73 -0
  30. package/dist/emit/loadtest-stubs.js.map +1 -0
  31. package/dist/emit/operation-expressions.d.ts +35 -0
  32. package/dist/emit/operation-expressions.d.ts.map +1 -0
  33. package/dist/emit/operation-expressions.js +98 -0
  34. package/dist/emit/operation-expressions.js.map +1 -0
  35. package/dist/emit/types.d.ts +3 -0
  36. package/dist/emit/types.d.ts.map +1 -0
  37. package/dist/emit/types.js +11 -0
  38. package/dist/emit/types.js.map +1 -0
  39. package/dist/generate.d.ts +41 -0
  40. package/dist/generate.d.ts.map +1 -0
  41. package/dist/generate.js +48 -0
  42. package/dist/generate.js.map +1 -0
  43. package/dist/index.d.ts +7 -0
  44. package/dist/index.d.ts.map +1 -0
  45. package/dist/index.js +4 -0
  46. package/dist/index.js.map +1 -0
  47. package/dist/ir/identifiers.d.ts +5 -0
  48. package/dist/ir/identifiers.d.ts.map +1 -0
  49. package/dist/ir/identifiers.js +13 -0
  50. package/dist/ir/identifiers.js.map +1 -0
  51. package/dist/ir/index.d.ts +6 -0
  52. package/dist/ir/index.d.ts.map +1 -0
  53. package/dist/ir/index.js +5 -0
  54. package/dist/ir/index.js.map +1 -0
  55. package/dist/ir/schema-to-faker.d.ts +14 -0
  56. package/dist/ir/schema-to-faker.d.ts.map +1 -0
  57. package/dist/ir/schema-to-faker.js +103 -0
  58. package/dist/ir/schema-to-faker.js.map +1 -0
  59. package/dist/ir/schema-to-type.d.ts +12 -0
  60. package/dist/ir/schema-to-type.d.ts.map +1 -0
  61. package/dist/ir/schema-to-type.js +102 -0
  62. package/dist/ir/schema-to-type.js.map +1 -0
  63. package/dist/ir/walk-ops.d.ts +23 -0
  64. package/dist/ir/walk-ops.d.ts.map +1 -0
  65. package/dist/ir/walk-ops.js +52 -0
  66. package/dist/ir/walk-ops.js.map +1 -0
  67. package/dist/print.d.ts +8 -0
  68. package/dist/print.d.ts.map +1 -0
  69. package/dist/print.js +20 -0
  70. package/dist/print.js.map +1 -0
  71. package/package.json +72 -0
@@ -0,0 +1,103 @@
1
+ import { $ } from "@hey-api/openapi-ts";
2
+ import { safeIdent } from "@ir-kit/codegen-core";
3
+ import { getEnumLiterals } from "@ir-kit/openapi-tools";
4
+ import { DATE_METHODS, DEFAULT_FORMAT_MAPPING, resolveFakerCall, } from "@ir-kit/openapi-ts-faker/core";
5
+ import { refToTypeName } from "./identifiers.js";
6
+ /**
7
+ * Build a faker-backed expression that, when called, returns a value
8
+ * matching the schema. Refs resolve to `data.<Type>()` so cycles stay
9
+ * lazy. Format / field-name heuristics come from
10
+ * `@ir-kit/openapi-ts-faker/core` so the source-of-truth stays
11
+ * shared with the faker plugin.
12
+ */
13
+ export function schemaToFakerExpr(schema, propName) {
14
+ if (schema.$ref)
15
+ return dataCall(refToTypeName(schema.$ref));
16
+ if (schema.symbolRef)
17
+ return dataCall(safeIdent(schema.symbolRef.name));
18
+ if (schema.const !== undefined)
19
+ return literalExpr(schema.const);
20
+ if (schema.items && schema.items.length) {
21
+ if (schema.type === "array") {
22
+ return $.array(schemaToFakerExpr(schema.items[0], propName));
23
+ }
24
+ if (schema.type === "tuple") {
25
+ return $.array(...schema.items.map((item, i) => schemaToFakerExpr(item, `${propName ?? ""}_${i}`)));
26
+ }
27
+ return schemaToFakerExpr(schema.items[0], propName);
28
+ }
29
+ if (schema.type === "enum")
30
+ return enumFaker(schema);
31
+ if (schema.type === "object")
32
+ return objectFaker(schema);
33
+ if (schema.type === "null")
34
+ return $.literal(null);
35
+ if (schema.type === "array")
36
+ return $.array();
37
+ const spec = resolveFakerCall(schemaToPropertyInfo(schema, propName), {
38
+ formatHints: DEFAULT_FORMAT_MAPPING,
39
+ respectConstraints: false,
40
+ });
41
+ return fakerCallSpecToExpr(spec);
42
+ }
43
+ function dataCall(typeName) {
44
+ return $("data").attr(typeName).call();
45
+ }
46
+ function literalExpr(value) {
47
+ if (typeof value === "string" ||
48
+ typeof value === "number" ||
49
+ typeof value === "boolean" ||
50
+ value === null) {
51
+ return $.literal(value);
52
+ }
53
+ return $.literal(null);
54
+ }
55
+ function fakerCallSpecToExpr(spec) {
56
+ if (spec.method === "__null__")
57
+ return $.literal(null);
58
+ const [mod, fn] = spec.method.split(".");
59
+ const args = [];
60
+ if (spec.args && Object.keys(spec.args).length > 0) {
61
+ let obj = $.object();
62
+ for (const [k, v] of Object.entries(spec.args)) {
63
+ obj = obj.prop(k, $.literal(v));
64
+ }
65
+ args.push(obj);
66
+ }
67
+ const call = $("faker")
68
+ .attr(mod)
69
+ .attr(fn)
70
+ .call(...args);
71
+ // Date faker methods return Date objects; we want ISO strings.
72
+ return DATE_METHODS.has(spec.method) ? call.attr("toISOString").call() : call;
73
+ }
74
+ function schemaToPropertyInfo(schema, propName) {
75
+ return {
76
+ type: schema.type ?? "string",
77
+ format: typeof schema.format === "string" ? schema.format : undefined,
78
+ name: propName ?? "",
79
+ minimum: schema.minimum,
80
+ maximum: schema.maximum,
81
+ minLength: schema.minLength,
82
+ maxLength: schema.maxLength,
83
+ minItems: schema.minItems,
84
+ maxItems: schema.maxItems,
85
+ };
86
+ }
87
+ function enumFaker(schema) {
88
+ const literals = getEnumLiterals(schema);
89
+ if (!literals.length)
90
+ return $.literal("");
91
+ return $("faker")
92
+ .attr("helpers")
93
+ .attr("arrayElement")
94
+ .call($.array(...literals.map((v) => literalExpr(v))));
95
+ }
96
+ function objectFaker(schema) {
97
+ let obj = $.object();
98
+ for (const [name, propSchema] of Object.entries(schema.properties ?? {})) {
99
+ obj = obj.prop(name, schemaToFakerExpr(propSchema, name));
100
+ }
101
+ return obj;
102
+ }
103
+ //# sourceMappingURL=schema-to-faker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-to-faker.js","sourceRoot":"","sources":["../../src/ir/schema-to-faker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAc,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EACL,YAAY,EACZ,sBAAsB,EAGtB,gBAAgB,GACjB,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAIjD;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAC/B,MAAuB,EACvB,QAAiB;IAEjB,IAAI,MAAM,CAAC,IAAI;QAAE,OAAO,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7D,IAAI,MAAM,CAAC,SAAS;QAAE,OAAO,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAExE,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;QAAE,OAAO,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAEjE,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QACxC,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC5B,OAAO,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC5B,OAAO,CAAC,CAAC,KAAK,CACZ,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAC9B,iBAAiB,CAAC,IAAI,EAAE,GAAG,QAAQ,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAClD,CACF,CAAC;QACJ,CAAC;QACD,OAAO,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IACtD,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC;IACrD,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;IACzD,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;IAE9C,MAAM,IAAI,GAAG,gBAAgB,CAAC,oBAAoB,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE;QACpE,WAAW,EAAE,sBAAsB;QACnC,kBAAkB,EAAE,KAAK;KAC1B,CAAC,CAAC;IACH,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,QAAQ,CAAC,QAAgB;IAChC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;AACzC,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,IACE,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,KAAK,KAAK,SAAS;QAC1B,KAAK,KAAK,IAAI,EACd,CAAC;QACD,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAmB;IAC9C,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU;QAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvD,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,IAAI,GAAW,EAAE,CAAC;IACxB,IAAI,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnD,IAAI,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;QACrB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/C,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAW,CAAC,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjB,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC;SACpB,IAAI,CAAC,GAAI,CAAC;SACV,IAAI,CAAC,EAAG,CAAC;SACT,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IACjB,+DAA+D;IAC/D,OAAO,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAChF,CAAC;AAED,SAAS,oBAAoB,CAC3B,MAAuB,EACvB,QAAiB;IAEjB,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,QAAQ;QAC7B,MAAM,EAAE,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;QACrE,IAAI,EAAE,QAAQ,IAAI,EAAE;QACpB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;KAC1B,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,MAAuB;IACxC,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACzC,IAAI,CAAC,QAAQ,CAAC,MAAM;QAAE,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,CAAC,OAAO,CAAC;SACd,IAAI,CAAC,SAAS,CAAC;SACf,IAAI,CAAC,cAAc,CAAC;SACpB,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,WAAW,CAAC,MAAuB;IAC1C,IAAI,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;IACrB,KAAK,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,CAAC;QACzE,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,iBAAiB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { type TsDsl } from "@hey-api/openapi-ts";
2
+ import type { IR } from "@hey-api/shared";
3
+ import ts from "typescript";
4
+ type TypeExpr = TsDsl<ts.TypeNode>;
5
+ export interface SchemaToTypeOpts {
6
+ /** Namespace prefix for named refs (e.g. "T" → `T.Pet`). Default none. */
7
+ typeNamespace?: string;
8
+ }
9
+ export declare function schemaToTypeNode(schema: IR.SchemaObject, opts?: SchemaToTypeOpts): TypeExpr;
10
+ export declare function objectToTypeLiteral(schema: IR.SchemaObject, opts?: SchemaToTypeOpts): TypeExpr;
11
+ export {};
12
+ //# sourceMappingURL=schema-to-type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-to-type.d.ts","sourceRoot":"","sources":["../../src/ir/schema-to-type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAK,KAAK,KAAK,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAO1C,OAAO,EAAE,MAAM,YAAY,CAAC;AAI5B,KAAK,QAAQ,GAAG,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;AAEnC,MAAM,WAAW,gBAAgB;IAC/B,0EAA0E;IAC1E,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAMD,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,EAAE,CAAC,YAAY,EACvB,IAAI,GAAE,gBAAqB,GAC1B,QAAQ,CAuCV;AAkDD,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,EAAE,CAAC,YAAY,EACvB,IAAI,GAAE,gBAAqB,GAC1B,QAAQ,CA2BV"}
@@ -0,0 +1,102 @@
1
+ import { $ } from "@hey-api/openapi-ts";
2
+ import { safeIdent } from "@ir-kit/codegen-core";
3
+ import { getEnumLiterals, isEnumSchema, isUnionSchema, } from "@ir-kit/openapi-tools";
4
+ import ts from "typescript";
5
+ import { refToTypeName } from "./identifiers.js";
6
+ // Dispatch order: `.const` and `type === "enum"` MUST come before the
7
+ // items branch. Enum schemas carry both `type: "enum"` and items, and
8
+ // falling through to union collapses each item to its base type
9
+ // (`string | string | string`).
10
+ export function schemaToTypeNode(schema, opts = {}) {
11
+ if (schema.$ref)
12
+ return $.type(qualify(refToTypeName(schema.$ref), opts));
13
+ if (schema.symbolRef) {
14
+ return $.type(qualify(safeIdent(schema.symbolRef.name), opts));
15
+ }
16
+ if (schema.const !== undefined) {
17
+ return $.type.literal(schema.const);
18
+ }
19
+ if (isEnumSchema(schema))
20
+ return enumToUnion(schema);
21
+ if (isUnionSchema(schema)) {
22
+ const operator = schema.logicalOperator ?? "or";
23
+ return combine(schema.items.map((s) => schemaToTypeNode(s, opts)), operator);
24
+ }
25
+ if (schema.items && schema.items.length) {
26
+ if (schema.type === "array") {
27
+ const inner = schema.items.length === 1
28
+ ? schemaToTypeNode(schema.items[0], opts)
29
+ : combine(schema.items.map((s) => schemaToTypeNode(s, opts)), schema.logicalOperator ?? "or");
30
+ return arrayOf(inner);
31
+ }
32
+ if (schema.type === "tuple") {
33
+ return $.type.tuple(...schema.items.map((s) => schemaToTypeNode(s, opts)));
34
+ }
35
+ }
36
+ return primitiveToTypeNode(schema, opts);
37
+ }
38
+ function qualify(name, opts) {
39
+ return opts.typeNamespace ? `${opts.typeNamespace}.${name}` : name;
40
+ }
41
+ function primitiveToTypeNode(schema, opts) {
42
+ switch (schema.type) {
43
+ case "string":
44
+ return $.type("string");
45
+ case "integer":
46
+ case "number":
47
+ return $.type("number");
48
+ case "boolean":
49
+ return $.type("boolean");
50
+ case "null":
51
+ return $.type.literal(null);
52
+ case "array":
53
+ return arrayOf($.type("unknown"));
54
+ case "object":
55
+ return objectToTypeLiteral(schema, opts);
56
+ case "void":
57
+ case "never":
58
+ case "undefined":
59
+ return $.type("undefined");
60
+ default:
61
+ return $.type("unknown");
62
+ }
63
+ }
64
+ function arrayOf(inner) {
65
+ // `Array<T>` renders identically to `T[]` after the printer's normalize pass.
66
+ return $.type("Array").generic(inner);
67
+ }
68
+ function combine(types, operator) {
69
+ if (types.length === 1)
70
+ return types[0];
71
+ return operator === "and" ? $.type.and(...types) : $.type.or(...types);
72
+ }
73
+ function enumToUnion(schema) {
74
+ const literals = getEnumLiterals(schema);
75
+ if (!literals.length)
76
+ return $.type("string");
77
+ const nodes = literals.map((v) => $.type.literal(v));
78
+ return nodes.length === 1 ? nodes[0] : $.type.or(...nodes);
79
+ }
80
+ export function objectToTypeLiteral(schema, opts = {}) {
81
+ const required = new Set(schema.required ?? []);
82
+ const propEntries = Object.entries(schema.properties ?? {});
83
+ const additional = schema.additionalProperties;
84
+ if (!propEntries.length && additional !== false) {
85
+ return $.type("Record")
86
+ .generic($.type("string"))
87
+ .generic($.type("unknown"));
88
+ }
89
+ let obj = $.type.object();
90
+ for (const [name, propSchema] of propEntries) {
91
+ const propType = schemaToTypeNode(propSchema, opts);
92
+ obj = obj.prop(name, (p) => {
93
+ const out = p.type(propType);
94
+ return required.has(name) ? out : out.optional();
95
+ });
96
+ }
97
+ if (additional && typeof additional === "object") {
98
+ obj = obj.idxSig("key", (s) => void s.key($.type("string")).type(schemaToTypeNode(additional, opts)));
99
+ }
100
+ return obj;
101
+ }
102
+ //# sourceMappingURL=schema-to-type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-to-type.js","sourceRoot":"","sources":["../../src/ir/schema-to-type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAc,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EACL,eAAe,EACf,YAAY,EACZ,aAAa,GACd,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AASjD,sEAAsE;AACtE,sEAAsE;AACtE,gEAAgE;AAChE,gCAAgC;AAChC,MAAM,UAAU,gBAAgB,CAC9B,MAAuB,EACvB,OAAyB,EAAE;IAE3B,IAAI,MAAM,CAAC,IAAI;QAAE,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IAC1E,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IACjE,CAAC;IAED,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAyC,CAAC,CAAC;IAC1E,CAAC;IAED,IAAI,YAAY,CAAC,MAAM,CAAC;QAAE,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;IAErD,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,MAAM,CAAC,eAAe,IAAI,IAAI,CAAC;QAChD,OAAO,OAAO,CACZ,MAAM,CAAC,KAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EACnD,QAAQ,CACT,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QACxC,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC5B,MAAM,KAAK,GACT,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;gBACvB,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;gBACzC,CAAC,CAAC,OAAO,CACL,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAClD,MAAM,CAAC,eAAe,IAAI,IAAI,CAC/B,CAAC;YACR,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC5B,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CACjB,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CACtD,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,OAAO,CAAC,IAAY,EAAE,IAAsB;IACnD,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACrE,CAAC;AAED,SAAS,mBAAmB,CAC1B,MAAuB,EACvB,IAAsB;IAEtB,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,QAAQ;YACX,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1B,KAAK,SAAS,CAAC;QACf,KAAK,QAAQ;YACX,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1B,KAAK,SAAS;YACZ,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3B,KAAK,MAAM;YACT,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC9B,KAAK,OAAO;YACV,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QACpC,KAAK,QAAQ;YACX,OAAO,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC3C,KAAK,MAAM,CAAC;QACZ,KAAK,OAAO,CAAC;QACb,KAAK,WAAW;YACd,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7B;YACE,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC;AAED,SAAS,OAAO,CAAC,KAAe;IAC9B,8EAA8E;IAC9E,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,OAAO,CAAC,KAAiB,EAAE,QAAsB;IACxD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;IACxC,OAAO,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,WAAW,CAAC,MAAuB;IAC1C,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACzC,IAAI,CAAC,QAAQ,CAAC,MAAM;QAAE,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,MAAuB,EACvB,OAAyB,EAAE;IAE3B,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IAChD,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;IAC5D,MAAM,UAAU,GAAG,MAAM,CAAC,oBAAoB,CAAC;IAE/C,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,UAAU,KAAK,KAAK,EAAE,CAAC;QAChD,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;aACpB,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aACzB,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAChC,CAAC;IAED,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;IAC1B,KAAK,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,WAAW,EAAE,CAAC;QAC7C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACpD,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE;YACzB,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7B,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QACnD,CAAC,CAAC,CAAC;IACL,CAAC;IACD,IAAI,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;QACjD,GAAG,GAAG,GAAG,CAAC,MAAM,CACd,KAAK,EACL,CAAC,CAAC,EAAE,EAAE,CACJ,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CACxE,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,23 @@
1
+ import type { IR } from "@hey-api/shared";
2
+ import { type HttpMethod } from "@ir-kit/openapi-core";
3
+ export interface WalkedOperation {
4
+ id: string;
5
+ method: HttpMethod;
6
+ path: string;
7
+ summary?: string;
8
+ description?: string;
9
+ tags: ReadonlyArray<string>;
10
+ pathParams: ReadonlyArray<IR.ParameterObject>;
11
+ queryParams: ReadonlyArray<IR.ParameterObject>;
12
+ headerParams: ReadonlyArray<IR.ParameterObject>;
13
+ body?: IR.BodyObject;
14
+ successSchema?: IR.SchemaObject;
15
+ successStatus?: number;
16
+ }
17
+ /**
18
+ * Walk paths × methods in spec order. Operations missing an `id` are
19
+ * skipped — they can't be referenced from user code. Method `trace` is
20
+ * dropped because k6's `http` namespace doesn't expose it.
21
+ */
22
+ export declare function walkOperations(paths: IR.PathsObject | undefined): Iterable<WalkedOperation>;
23
+ //# sourceMappingURL=walk-ops.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"walk-ops.d.ts","sourceRoot":"","sources":["../../src/ir/walk-ops.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAErE,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC5B,UAAU,EAAE,aAAa,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC;IAC9C,WAAW,EAAE,aAAa,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC;IAC/C,YAAY,EAAE,aAAa,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC;IAChD,IAAI,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC;IACrB,aAAa,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;GAIG;AACH,wBAAiB,cAAc,CAC7B,KAAK,EAAE,EAAE,CAAC,WAAW,GAAG,SAAS,GAChC,QAAQ,CAAC,eAAe,CAAC,CA2B3B"}
@@ -0,0 +1,52 @@
1
+ import { HTTP_METHODS } from "@ir-kit/openapi-core";
2
+ /**
3
+ * Walk paths × methods in spec order. Operations missing an `id` are
4
+ * skipped — they can't be referenced from user code. Method `trace` is
5
+ * dropped because k6's `http` namespace doesn't expose it.
6
+ */
7
+ export function* walkOperations(paths) {
8
+ for (const [pathStr, pathItem] of Object.entries(paths ?? {})) {
9
+ if (!pathItem)
10
+ continue;
11
+ for (const method of HTTP_METHODS) {
12
+ if (method === "trace")
13
+ continue;
14
+ const op = pathItem[method];
15
+ if (!op || !op.id)
16
+ continue;
17
+ const params = op.parameters ?? {};
18
+ const success = pickSuccessResponse(op.responses);
19
+ yield {
20
+ id: op.id,
21
+ method: method,
22
+ path: pathStr,
23
+ summary: op.summary,
24
+ description: op.description,
25
+ tags: op.tags ?? [],
26
+ pathParams: Object.values(params.path ?? {}),
27
+ queryParams: Object.values(params.query ?? {}),
28
+ headerParams: Object.values(params.header ?? {}),
29
+ body: op.body,
30
+ successSchema: success?.response.schema,
31
+ successStatus: success?.status,
32
+ };
33
+ }
34
+ }
35
+ }
36
+ function pickSuccessResponse(responses) {
37
+ if (!responses)
38
+ return undefined;
39
+ // Prefer the lowest 2xx with a JSON-ish body.
40
+ const codes = Object.keys(responses)
41
+ .filter((k) => /^2\d\d$/.test(k))
42
+ .map((k) => Number(k))
43
+ .sort((a, b) => a - b);
44
+ for (const status of codes) {
45
+ const r = responses[String(status)];
46
+ if (r)
47
+ return { status, response: r };
48
+ }
49
+ const def = responses.default;
50
+ return def ? { status: 200, response: def } : undefined;
51
+ }
52
+ //# sourceMappingURL=walk-ops.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"walk-ops.js","sourceRoot":"","sources":["../../src/ir/walk-ops.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAmB,MAAM,sBAAsB,CAAC;AAiBrE;;;;GAIG;AACH,MAAM,SAAS,CAAC,CAAC,cAAc,CAC7B,KAAiC;IAEjC,KAAK,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;QAC9D,IAAI,CAAC,QAAQ;YAAE,SAAS;QACxB,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;YAClC,IAAI,MAAM,KAAK,OAAO;gBAAE,SAAS;YACjC,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAmC,CAAC;YAC9D,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE;gBAAE,SAAS;YAE5B,MAAM,MAAM,GAAG,EAAE,CAAC,UAAU,IAAI,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,mBAAmB,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;YAElD,MAAM;gBACJ,EAAE,EAAE,EAAE,CAAC,EAAE;gBACT,MAAM,EAAE,MAAoB;gBAC5B,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,EAAE,CAAC,OAAO;gBACnB,WAAW,EAAE,EAAE,CAAC,WAAW;gBAC3B,IAAI,EAAG,EAAuC,CAAC,IAAI,IAAI,EAAE;gBACzD,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;gBAC5C,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC9C,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;gBAChD,IAAI,EAAE,EAAE,CAAC,IAAI;gBACb,aAAa,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM;gBACvC,aAAa,EAAE,OAAO,EAAE,MAAM;aAC/B,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAC1B,SAAyC;IAEzC,IAAI,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IACjC,8CAA8C;IAC9C,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;SACjC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SAChC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SACrB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,KAAK,MAAM,MAAM,IAAI,KAAK,EAAE,CAAC;QAC3B,MAAM,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QACpC,IAAI,CAAC;YAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IACxC,CAAC;IACD,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC;IAC9B,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1D,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { TsDsl } from "@hey-api/openapi-ts";
2
+ import ts from "typescript";
3
+ /** Render a set of TS AST statements into a source-file string. */
4
+ export declare function printStatements(statements: ReadonlyArray<ts.Statement>, header?: string): string;
5
+ /** Render DSL nodes by unwrapping each to its TS AST then printing. */
6
+ export declare function printDslNodes(nodes: ReadonlyArray<TsDsl<ts.Node>>, header?: string): string;
7
+ export declare const GENERATED_HEADER = "// AUTO-GENERATED by @ir-kit/k6-gen \u2014 do not edit by hand.";
8
+ //# sourceMappingURL=print.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"print.d.ts","sourceRoot":"","sources":["../src/print.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,MAAM,YAAY,CAAC;AAO5B,mEAAmE;AACnE,wBAAgB,eAAe,CAC7B,UAAU,EAAE,aAAa,CAAC,EAAE,CAAC,SAAS,CAAC,EACvC,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,CAYR;AAED,uEAAuE;AACvE,wBAAgB,aAAa,CAC3B,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EACpC,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,CAKR;AAED,eAAO,MAAM,gBAAgB,oEACiC,CAAC"}
package/dist/print.js ADDED
@@ -0,0 +1,20 @@
1
+ import ts from "typescript";
2
+ const printer = ts.createPrinter({
3
+ newLine: ts.NewLineKind.LineFeed,
4
+ removeComments: false,
5
+ });
6
+ /** Render a set of TS AST statements into a source-file string. */
7
+ export function printStatements(statements, header) {
8
+ const source = ts.createSourceFile("out.ts", "", ts.ScriptTarget.ES2022,
9
+ /* setParentNodes */ false, ts.ScriptKind.TS);
10
+ const body = statements
11
+ .map((stmt) => printer.printNode(ts.EmitHint.Unspecified, stmt, source))
12
+ .join("\n\n");
13
+ return header ? `${header}\n\n${body}\n` : `${body}\n`;
14
+ }
15
+ /** Render DSL nodes by unwrapping each to its TS AST then printing. */
16
+ export function printDslNodes(nodes, header) {
17
+ return printStatements(nodes.map((n) => n.toAst()), header);
18
+ }
19
+ export const GENERATED_HEADER = "// AUTO-GENERATED by @ir-kit/k6-gen — do not edit by hand.";
20
+ //# sourceMappingURL=print.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"print.js","sourceRoot":"","sources":["../src/print.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,MAAM,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC;IAC/B,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC,QAAQ;IAChC,cAAc,EAAE,KAAK;CACtB,CAAC,CAAC;AAEH,mEAAmE;AACnE,MAAM,UAAU,eAAe,CAC7B,UAAuC,EACvC,MAAe;IAEf,MAAM,MAAM,GAAG,EAAE,CAAC,gBAAgB,CAChC,QAAQ,EACR,EAAE,EACF,EAAE,CAAC,YAAY,CAAC,MAAM;IACtB,oBAAoB,CAAC,KAAK,EAC1B,EAAE,CAAC,UAAU,CAAC,EAAE,CACjB,CAAC;IACF,MAAM,IAAI,GAAG,UAAU;SACpB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;SACvE,IAAI,CAAC,MAAM,CAAC,CAAC;IAChB,OAAO,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC;AACzD,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,aAAa,CAC3B,KAAoC,EACpC,MAAe;IAEf,OAAO,eAAe,CACpB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAkB,CAAC,EAC3C,MAAM,CACP,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAC3B,4DAA4D,CAAC"}
package/package.json ADDED
@@ -0,0 +1,72 @@
1
+ {
2
+ "name": "@ir-kit/k6-gen",
3
+ "version": "0.1.0",
4
+ "description": "Programmatic generator: OpenAPI spec → typed k6 client (one function per operation), TS types, and faker-backed data builders. No hey-api plugin required.",
5
+ "keywords": [
6
+ "k6",
7
+ "openapi",
8
+ "codegen",
9
+ "load-testing",
10
+ "typescript"
11
+ ],
12
+ "homepage": "https://github.com/ir-kit/ir-kit/tree/main/packages/k6/codegen",
13
+ "bugs": {
14
+ "url": "https://github.com/ir-kit/ir-kit/issues"
15
+ },
16
+ "license": "MIT",
17
+ "author": {
18
+ "name": "Ahmed Rowaihi",
19
+ "email": "ahmedrowaihi@gmail.com"
20
+ },
21
+ "repository": {
22
+ "type": "git",
23
+ "url": "git+https://github.com/ir-kit/ir-kit.git",
24
+ "directory": "packages/k6/codegen"
25
+ },
26
+ "type": "module",
27
+ "sideEffects": false,
28
+ "main": "./dist/index.js",
29
+ "types": "./dist/index.d.ts",
30
+ "exports": {
31
+ ".": {
32
+ "types": "./dist/index.d.ts",
33
+ "import": "./dist/index.js"
34
+ },
35
+ "./package.json": "./package.json"
36
+ },
37
+ "files": [
38
+ "dist",
39
+ "README.md",
40
+ "LICENSE.md"
41
+ ],
42
+ "publishConfig": {
43
+ "access": "public",
44
+ "provenance": true
45
+ },
46
+ "dependencies": {
47
+ "@hey-api/openapi-ts": "^0.97.0",
48
+ "@hey-api/shared": "^0.4.2",
49
+ "@ir-kit/codegen-core": "0.1.0",
50
+ "@ir-kit/openapi-core": "0.1.0",
51
+ "@ir-kit/openapi-tools": "0.1.0",
52
+ "@ir-kit/openapi-ts-faker": "0.1.0"
53
+ },
54
+ "peerDependencies": {
55
+ "typescript": ">=5.0.0"
56
+ },
57
+ "devDependencies": {
58
+ "@types/node": "^22",
59
+ "typescript": "5.9.3",
60
+ "vitest": "^4.0.0",
61
+ "@ir-kit/tsconfig": "0.0.0"
62
+ },
63
+ "engines": {
64
+ "node": ">=20.19.0"
65
+ },
66
+ "scripts": {
67
+ "build": "tsc -p tsconfig.build.json",
68
+ "dev": "tsc -p tsconfig.build.json --watch",
69
+ "typecheck": "tsc --noEmit",
70
+ "test": "vitest run --passWithNoTests"
71
+ }
72
+ }