@kubb/core 2.0.0-beta.11 → 2.0.0-beta.13

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 (57) hide show
  1. package/dist/chunk-56YH3VX6.js +239 -0
  2. package/dist/chunk-56YH3VX6.js.map +1 -0
  3. package/dist/chunk-6N4JBFFS.js +79 -0
  4. package/dist/chunk-6N4JBFFS.js.map +1 -0
  5. package/dist/chunk-72O327DC.cjs +247 -0
  6. package/dist/chunk-72O327DC.cjs.map +1 -0
  7. package/dist/chunk-77QZQ377.cjs +155 -0
  8. package/dist/chunk-77QZQ377.cjs.map +1 -0
  9. package/dist/chunk-ABFPJZJL.cjs +131 -0
  10. package/dist/chunk-ABFPJZJL.cjs.map +1 -0
  11. package/dist/chunk-FOQFLMOC.js +2336 -0
  12. package/dist/chunk-FOQFLMOC.js.map +1 -0
  13. package/dist/chunk-I7UUR5MZ.cjs +91 -0
  14. package/dist/chunk-I7UUR5MZ.cjs.map +1 -0
  15. package/dist/chunk-L6F5QUH2.js +129 -0
  16. package/dist/chunk-L6F5QUH2.js.map +1 -0
  17. package/dist/chunk-PY7I7OEN.cjs +92 -0
  18. package/dist/chunk-PY7I7OEN.cjs.map +1 -0
  19. package/dist/chunk-SX2AYX5F.js +18 -0
  20. package/dist/chunk-SX2AYX5F.js.map +1 -0
  21. package/dist/chunk-WFDR7OMY.js +148 -0
  22. package/dist/chunk-WFDR7OMY.js.map +1 -0
  23. package/dist/chunk-Z7XZQBAK.cjs +2339 -0
  24. package/dist/chunk-Z7XZQBAK.cjs.map +1 -0
  25. package/dist/fs.cjs +19 -2372
  26. package/dist/fs.cjs.map +1 -1
  27. package/dist/fs.js +3 -2373
  28. package/dist/fs.js.map +1 -1
  29. package/dist/index.cjs +219 -3118
  30. package/dist/index.cjs.map +1 -1
  31. package/dist/index.d.cts +0 -1
  32. package/dist/index.d.ts +0 -1
  33. package/dist/index.js +55 -3245
  34. package/dist/index.js.map +1 -1
  35. package/dist/logger.cjs +16 -81
  36. package/dist/logger.cjs.map +1 -1
  37. package/dist/logger.d.cts +2 -3
  38. package/dist/logger.d.ts +2 -3
  39. package/dist/logger.js +2 -73
  40. package/dist/logger.js.map +1 -1
  41. package/dist/transformers.cjs +40 -138
  42. package/dist/transformers.cjs.map +1 -1
  43. package/dist/transformers.js +14 -126
  44. package/dist/transformers.js.map +1 -1
  45. package/dist/utils.cjs +29 -461
  46. package/dist/utils.cjs.map +1 -1
  47. package/dist/utils.js +10 -453
  48. package/dist/utils.js.map +1 -1
  49. package/package.json +7 -7
  50. package/src/BarrelManager.ts +3 -3
  51. package/src/FileManager.ts +6 -5
  52. package/src/build.ts +8 -8
  53. package/src/logger.ts +6 -8
  54. package/src/plugin.ts +1 -1
  55. package/src/transformers/casing.ts +3 -3
  56. package/src/utils/FunctionParams.ts +2 -2
  57. package/src/utils/URLPath.ts +5 -5
@@ -0,0 +1,239 @@
1
+ import { createRequire } from 'module';
2
+ import { camelCase } from './chunk-SX2AYX5F.js';
3
+ import { init_esm_shims, __privateAdd, __privateGet, __privateSet, __privateMethod, __privateWrapper } from './chunk-6N4JBFFS.js';
4
+ import crypto from 'crypto';
5
+ import { performance } from 'perf_hooks';
6
+ import { EventEmitter as EventEmitter$1 } from 'events';
7
+
8
+ createRequire(import.meta.url);
9
+
10
+ // src/utils/URLPath.ts
11
+ init_esm_shims();
12
+ var URLPath = class {
13
+ constructor(path) {
14
+ this.path = path;
15
+ return this;
16
+ }
17
+ /**
18
+ * Convert Swagger path to URLPath(syntax of Express)
19
+ * @example /pet/{petId} => /pet/:petId
20
+ */
21
+ get URL() {
22
+ return this.toURLPath();
23
+ }
24
+ get isURL() {
25
+ try {
26
+ const url = new URL(this.path);
27
+ if (url?.href) {
28
+ return true;
29
+ }
30
+ } catch (error) {
31
+ return false;
32
+ }
33
+ return false;
34
+ }
35
+ /**
36
+ * Convert Swagger path to template literals/ template strings(camelcase)
37
+ * @example /pet/{petId} => `/pet/${petId}`
38
+ * @example /account/monetary-accountID => `/account/${monetaryAccountId}`
39
+ * @example /account/userID => `/account/${userId}`
40
+ */
41
+ get template() {
42
+ return this.toTemplateString();
43
+ }
44
+ get object() {
45
+ return this.toObject();
46
+ }
47
+ get params() {
48
+ return this.getParams();
49
+ }
50
+ toObject({ type = "path", replacer, stringify } = {}) {
51
+ const object = {
52
+ url: type === "path" ? this.toURLPath() : this.toTemplateString(replacer),
53
+ params: this.getParams()
54
+ };
55
+ if (stringify) {
56
+ if (type === "template") {
57
+ return JSON.stringify(object).replaceAll("'", "").replaceAll(`"`, "");
58
+ }
59
+ if (object.params) {
60
+ return `{ url: '${object.url}', params: ${JSON.stringify(object.params).replaceAll("'", "").replaceAll(`"`, "")} }`;
61
+ }
62
+ return `{ url: '${object.url}' }`;
63
+ }
64
+ return object;
65
+ }
66
+ /**
67
+ * Convert Swagger path to template literals/ template strings(camelcase)
68
+ * @example /pet/{petId} => `/pet/${petId}`
69
+ * @example /account/monetary-accountID => `/account/${monetaryAccountId}`
70
+ * @example /account/userID => `/account/${userId}`
71
+ */
72
+ toTemplateString(replacer) {
73
+ const regex = /{(\w|-)*}/g;
74
+ const found = this.path.match(regex);
75
+ let newPath = this.path.replaceAll("{", "${");
76
+ if (found) {
77
+ newPath = found.reduce((prev, curr) => {
78
+ const pathParam = replacer ? replacer(camelCase(curr)) : camelCase(curr);
79
+ const replacement = `\${${pathParam}}`;
80
+ return prev.replace(curr, replacement);
81
+ }, this.path);
82
+ }
83
+ return `\`${newPath}\``;
84
+ }
85
+ getParams(replacer) {
86
+ const regex = /{(\w|-)*}/g;
87
+ const found = this.path.match(regex);
88
+ if (!found) {
89
+ return void 0;
90
+ }
91
+ const params = {};
92
+ found.forEach((item) => {
93
+ item = item.replaceAll("{", "").replaceAll("}", "");
94
+ const pathParam = replacer ? replacer(camelCase(item)) : camelCase(item);
95
+ params[pathParam] = pathParam;
96
+ }, this.path);
97
+ return params;
98
+ }
99
+ /**
100
+ * Convert Swagger path to URLPath(syntax of Express)
101
+ * @example /pet/{petId} => /pet/:petId
102
+ */
103
+ toURLPath() {
104
+ return this.path.replaceAll("{", ":").replaceAll("}", "");
105
+ }
106
+ };
107
+
108
+ // src/utils/timeout.ts
109
+ init_esm_shims();
110
+ async function timeout(ms) {
111
+ return new Promise((resolve) => {
112
+ setTimeout(() => {
113
+ resolve(true);
114
+ }, ms);
115
+ });
116
+ }
117
+
118
+ // src/utils/Queue.ts
119
+ init_esm_shims();
120
+
121
+ // src/utils/EventEmitter.ts
122
+ init_esm_shims();
123
+ var _emitter;
124
+ var EventEmitter = class {
125
+ constructor() {
126
+ __privateAdd(this, _emitter, new EventEmitter$1());
127
+ __privateGet(this, _emitter).setMaxListeners(100);
128
+ }
129
+ emit(eventName, ...eventArg) {
130
+ __privateGet(this, _emitter).emit(eventName, ...eventArg);
131
+ }
132
+ on(eventName, handler) {
133
+ __privateGet(this, _emitter).on(eventName, handler);
134
+ }
135
+ off(eventName, handler) {
136
+ __privateGet(this, _emitter).off(eventName, handler);
137
+ }
138
+ removeAll() {
139
+ __privateGet(this, _emitter).removeAllListeners();
140
+ }
141
+ };
142
+ _emitter = new WeakMap();
143
+
144
+ // src/utils/Queue.ts
145
+ var _queue, _workerCount, _maxParallel, _debug, _work, work_fn;
146
+ var Queue = class {
147
+ constructor(maxParallel, debug = false) {
148
+ __privateAdd(this, _work);
149
+ __privateAdd(this, _queue, []);
150
+ this.eventEmitter = new EventEmitter();
151
+ __privateAdd(this, _workerCount, 0);
152
+ __privateAdd(this, _maxParallel, void 0);
153
+ __privateAdd(this, _debug, false);
154
+ __privateSet(this, _maxParallel, maxParallel);
155
+ __privateSet(this, _debug, debug);
156
+ }
157
+ run(job, options = { controller: new AbortController(), name: crypto.randomUUID(), description: "" }) {
158
+ return new Promise((resolve, reject) => {
159
+ const item = { reject, resolve, job, name: options.name, description: options.description || options.name };
160
+ options.controller?.signal.addEventListener("abort", () => {
161
+ __privateSet(this, _queue, __privateGet(this, _queue).filter((queueItem) => queueItem.name === item.name));
162
+ reject("Aborted");
163
+ });
164
+ __privateGet(this, _queue).push(item);
165
+ __privateMethod(this, _work, work_fn).call(this);
166
+ });
167
+ }
168
+ runSync(job, options = { controller: new AbortController(), name: crypto.randomUUID(), description: "" }) {
169
+ new Promise((resolve, reject) => {
170
+ const item = { reject, resolve, job, name: options.name, description: options.description || options.name };
171
+ options.controller?.signal.addEventListener("abort", () => {
172
+ __privateSet(this, _queue, __privateGet(this, _queue).filter((queueItem) => queueItem.name === item.name));
173
+ });
174
+ __privateGet(this, _queue).push(item);
175
+ __privateMethod(this, _work, work_fn).call(this);
176
+ });
177
+ }
178
+ get hasJobs() {
179
+ return __privateGet(this, _workerCount) > 0 || __privateGet(this, _queue).length > 0;
180
+ }
181
+ get count() {
182
+ return __privateGet(this, _workerCount);
183
+ }
184
+ };
185
+ _queue = new WeakMap();
186
+ _workerCount = new WeakMap();
187
+ _maxParallel = new WeakMap();
188
+ _debug = new WeakMap();
189
+ _work = new WeakSet();
190
+ work_fn = function() {
191
+ if (__privateGet(this, _workerCount) >= __privateGet(this, _maxParallel)) {
192
+ return;
193
+ }
194
+ __privateWrapper(this, _workerCount)._++;
195
+ let entry;
196
+ while (entry = __privateGet(this, _queue).shift()) {
197
+ const { reject, resolve, job, name, description } = entry;
198
+ if (__privateGet(this, _debug)) {
199
+ performance.mark(name + "_start");
200
+ }
201
+ job().then((result) => {
202
+ this.eventEmitter.emit("jobDone", result);
203
+ resolve(result);
204
+ if (__privateGet(this, _debug)) {
205
+ performance.mark(name + "_stop");
206
+ performance.measure(description, name + "_start", name + "_stop");
207
+ }
208
+ }).catch((err) => {
209
+ this.eventEmitter.emit("jobFailed", err);
210
+ reject(err);
211
+ });
212
+ }
213
+ __privateWrapper(this, _workerCount)._--;
214
+ };
215
+
216
+ // src/utils/uniqueName.ts
217
+ init_esm_shims();
218
+ function getUniqueName(originalName, data) {
219
+ let used = data[originalName] || 0;
220
+ if (used) {
221
+ data[originalName] = ++used;
222
+ originalName += used;
223
+ }
224
+ data[originalName] = 1;
225
+ return originalName;
226
+ }
227
+ function setUniqueName(originalName, data) {
228
+ let used = data[originalName] || 0;
229
+ if (used) {
230
+ data[originalName] = ++used;
231
+ return originalName;
232
+ }
233
+ data[originalName] = 1;
234
+ return originalName;
235
+ }
236
+
237
+ export { EventEmitter, Queue, URLPath, getUniqueName, setUniqueName, timeout };
238
+ //# sourceMappingURL=out.js.map
239
+ //# sourceMappingURL=chunk-56YH3VX6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/URLPath.ts","../src/utils/timeout.ts","../src/utils/Queue.ts","../src/utils/EventEmitter.ts","../src/utils/uniqueName.ts"],"names":[],"mappings":"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","sourcesContent":["import { camelCase } from '../transformers/casing.ts'\n\nexport type URLObject = {\n url: string\n params?: Record<string, string>\n}\n\ntype ObjectOptions = {\n type?: 'path' | 'template'\n replacer?: (pathParam: string) => string\n stringify?: boolean\n}\n\nexport class URLPath {\n path: string\n\n constructor(path: string) {\n this.path = path\n\n return this\n }\n\n /**\n * Convert Swagger path to URLPath(syntax of Express)\n * @example /pet/{petId} => /pet/:petId\n */\n get URL(): string {\n return this.toURLPath()\n }\n get isURL(): boolean {\n try {\n const url = new URL(this.path)\n if (url?.href) {\n return true\n }\n } catch (error) {\n return false\n }\n return false\n }\n\n /**\n * Convert Swagger path to template literals/ template strings(camelcase)\n * @example /pet/{petId} => `/pet/${petId}`\n * @example /account/monetary-accountID => `/account/${monetaryAccountId}`\n * @example /account/userID => `/account/${userId}`\n */\n get template(): string {\n return this.toTemplateString()\n }\n get object(): URLObject | string {\n return this.toObject()\n }\n get params(): Record<string, string> | undefined {\n return this.getParams()\n }\n\n toObject({ type = 'path', replacer, stringify }: ObjectOptions = {}): URLObject | string {\n const object = {\n url: type === 'path' ? this.toURLPath() : this.toTemplateString(replacer),\n params: this.getParams(),\n }\n\n if (stringify) {\n if (type === 'template') {\n return JSON.stringify(object).replaceAll(\"'\", '').replaceAll(`\"`, '')\n }\n\n if (object.params) {\n return `{ url: '${object.url}', params: ${JSON.stringify(object.params).replaceAll(\"'\", '').replaceAll(`\"`, '')} }`\n }\n\n return `{ url: '${object.url}' }`\n }\n\n return object\n }\n\n /**\n * Convert Swagger path to template literals/ template strings(camelcase)\n * @example /pet/{petId} => `/pet/${petId}`\n * @example /account/monetary-accountID => `/account/${monetaryAccountId}`\n * @example /account/userID => `/account/${userId}`\n */\n toTemplateString(replacer?: (pathParam: string) => string): string {\n const regex = /{(\\w|-)*}/g\n const found = this.path.match(regex)\n let newPath = this.path.replaceAll('{', '${')\n\n if (found) {\n newPath = found.reduce((prev, curr) => {\n const pathParam = replacer\n ? replacer(camelCase(curr))\n : camelCase(curr)\n const replacement = `\\${${pathParam}}`\n\n return prev.replace(curr, replacement)\n }, this.path)\n }\n\n return `\\`${newPath}\\``\n }\n\n getParams(replacer?: (pathParam: string) => string): Record<string, string> | undefined {\n const regex = /{(\\w|-)*}/g\n const found = this.path.match(regex)\n\n if (!found) {\n return undefined\n }\n\n const params: Record<string, string> = {}\n found.forEach((item) => {\n item = item.replaceAll('{', '').replaceAll('}', '')\n\n const pathParam = replacer\n ? replacer(camelCase(item))\n : camelCase(item)\n\n params[pathParam] = pathParam\n }, this.path)\n\n return params\n }\n\n /**\n * Convert Swagger path to URLPath(syntax of Express)\n * @example /pet/{petId} => /pet/:petId\n */\n toURLPath(): string {\n return this.path.replaceAll('{', ':').replaceAll('}', '')\n }\n}\n","export async function timeout(ms: number): Promise<unknown> {\n return new Promise((resolve) => {\n setTimeout(() => {\n resolve(true)\n }, ms)\n })\n}\n","import crypto from 'node:crypto'\nimport { performance } from 'node:perf_hooks'\n\nimport { EventEmitter } from './EventEmitter.ts'\n\nexport type QueueJob<T = unknown> = {\n (...args: unknown[]): Promise<T | void>\n}\n\ntype RunOptions = {\n controller?: AbortController\n name?: string\n description?: string\n}\n\ntype QueueItem = {\n reject: <T>(reason?: T) => void\n resolve: <T>(value: T | PromiseLike<T>) => void\n job: QueueJob<unknown>\n} & Required<RunOptions>\n\ntype Events = {\n jobDone: [result: unknown]\n jobFailed: [error: Error]\n}\n\nexport class Queue {\n #queue: QueueItem[] = []\n readonly eventEmitter: EventEmitter<Events> = new EventEmitter()\n\n #workerCount = 0\n\n #maxParallel: number\n #debug = false\n\n constructor(maxParallel: number, debug = false) {\n this.#maxParallel = maxParallel\n this.#debug = debug\n }\n\n run<T>(job: QueueJob<T>, options: RunOptions = { controller: new AbortController(), name: crypto.randomUUID(), description: '' }): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n const item = { reject, resolve, job, name: options.name, description: options.description || options.name } as QueueItem\n\n options.controller?.signal.addEventListener('abort', () => {\n this.#queue = this.#queue.filter((queueItem) => queueItem.name === item.name)\n\n reject('Aborted')\n })\n\n this.#queue.push(item)\n this.#work()\n })\n }\n\n runSync<T>(job: QueueJob<T>, options: RunOptions = { controller: new AbortController(), name: crypto.randomUUID(), description: '' }): void {\n new Promise<T>((resolve, reject) => {\n const item = { reject, resolve, job, name: options.name, description: options.description || options.name } as QueueItem\n\n options.controller?.signal.addEventListener('abort', () => {\n this.#queue = this.#queue.filter((queueItem) => queueItem.name === item.name)\n })\n\n this.#queue.push(item)\n this.#work()\n })\n }\n\n get hasJobs(): boolean {\n return this.#workerCount > 0 || this.#queue.length > 0\n }\n\n get count(): number {\n return this.#workerCount\n }\n\n #work(): void {\n if (this.#workerCount >= this.#maxParallel) {\n return\n }\n\n this.#workerCount++\n\n let entry: QueueItem | undefined\n while ((entry = this.#queue.shift())) {\n const { reject, resolve, job, name, description } = entry\n\n if (this.#debug) {\n performance.mark(name + '_start')\n }\n\n job()\n .then((result) => {\n this.eventEmitter.emit('jobDone', result)\n\n resolve(result)\n\n if (this.#debug) {\n performance.mark(name + '_stop')\n performance.measure(description, name + '_start', name + '_stop')\n }\n })\n .catch((err) => {\n this.eventEmitter.emit('jobFailed', err as Error)\n reject(err)\n })\n }\n this.#workerCount--\n }\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-argument */\nimport { EventEmitter as NodeEventEmitter } from 'node:events'\n\nexport class EventEmitter<TEvents extends Record<string, any>> {\n constructor() {\n this.#emitter.setMaxListeners(100)\n }\n #emitter = new NodeEventEmitter()\n\n emit<TEventName extends keyof TEvents & string>(eventName: TEventName, ...eventArg: TEvents[TEventName]): void {\n this.#emitter.emit(eventName, ...(eventArg as []))\n }\n\n on<TEventName extends keyof TEvents & string>(eventName: TEventName, handler: (...eventArg: TEvents[TEventName]) => void): void {\n this.#emitter.on(eventName, handler as any)\n }\n\n off<TEventName extends keyof TEvents & string>(eventName: TEventName, handler: (...eventArg: TEvents[TEventName]) => void): void {\n this.#emitter.off(eventName, handler as any)\n }\n removeAll(): void {\n this.#emitter.removeAllListeners()\n }\n}\n","export function getUniqueName(originalName: string, data: Record<string, number>): string {\n let used = data[originalName] || 0\n if (used) {\n data[originalName] = ++used\n originalName += used\n }\n data[originalName] = 1\n return originalName\n}\n\nexport function setUniqueName(originalName: string, data: Record<string, number>): string {\n let used = data[originalName] || 0\n if (used) {\n data[originalName] = ++used\n\n return originalName\n }\n data[originalName] = 1\n return originalName\n}\n"]}
@@ -0,0 +1,79 @@
1
+ import { createRequire } from 'module';
2
+
3
+ const require = createRequire(import.meta.url);
4
+
5
+ var __create = Object.create;
6
+ var __defProp = Object.defineProperty;
7
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
8
+ var __getOwnPropNames = Object.getOwnPropertyNames;
9
+ var __getProtoOf = Object.getPrototypeOf;
10
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
11
+ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
12
+ get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
13
+ }) : x)(function(x) {
14
+ if (typeof require !== "undefined")
15
+ return require.apply(this, arguments);
16
+ throw Error('Dynamic require of "' + x + '" is not supported');
17
+ });
18
+ var __esm = (fn, res) => function __init() {
19
+ return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
20
+ };
21
+ var __commonJS = (cb, mod) => function __require2() {
22
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
23
+ };
24
+ var __copyProps = (to, from, except, desc) => {
25
+ if (from && typeof from === "object" || typeof from === "function") {
26
+ for (let key of __getOwnPropNames(from))
27
+ if (!__hasOwnProp.call(to, key) && key !== except)
28
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
29
+ }
30
+ return to;
31
+ };
32
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
33
+ // If the importer is in node compatibility mode or this is not an ESM
34
+ // file that has been converted to a CommonJS file using a Babel-
35
+ // compatible transform (i.e. "__esModule" has not been set), then set
36
+ // "default" to the CommonJS "module.exports" for node compatibility.
37
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
38
+ mod
39
+ ));
40
+ var __accessCheck = (obj, member, msg) => {
41
+ if (!member.has(obj))
42
+ throw TypeError("Cannot " + msg);
43
+ };
44
+ var __privateGet = (obj, member, getter) => {
45
+ __accessCheck(obj, member, "read from private field");
46
+ return getter ? getter.call(obj) : member.get(obj);
47
+ };
48
+ var __privateAdd = (obj, member, value) => {
49
+ if (member.has(obj))
50
+ throw TypeError("Cannot add the same private member more than once");
51
+ member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
52
+ };
53
+ var __privateSet = (obj, member, value, setter) => {
54
+ __accessCheck(obj, member, "write to private field");
55
+ setter ? setter.call(obj, value) : member.set(obj, value);
56
+ return value;
57
+ };
58
+ var __privateWrapper = (obj, member, setter, getter) => ({
59
+ set _(value) {
60
+ __privateSet(obj, member, value, setter);
61
+ },
62
+ get _() {
63
+ return __privateGet(obj, member, getter);
64
+ }
65
+ });
66
+ var __privateMethod = (obj, member, method) => {
67
+ __accessCheck(obj, member, "access private method");
68
+ return method;
69
+ };
70
+
71
+ // ../../node_modules/.pnpm/tsup@8.0.1_@microsoft+api-extractor@7.38.3_ts-node@10.9.1_typescript@5.3.2/node_modules/tsup/assets/esm_shims.js
72
+ var init_esm_shims = __esm({
73
+ "../../node_modules/.pnpm/tsup@8.0.1_@microsoft+api-extractor@7.38.3_ts-node@10.9.1_typescript@5.3.2/node_modules/tsup/assets/esm_shims.js"() {
74
+ }
75
+ });
76
+
77
+ export { __commonJS, __privateAdd, __privateGet, __privateMethod, __privateSet, __privateWrapper, __require, __toESM, init_esm_shims };
78
+ //# sourceMappingURL=out.js.map
79
+ //# sourceMappingURL=chunk-6N4JBFFS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../node_modules/.pnpm/tsup@8.0.1_@microsoft+api-extractor@7.38.3_ts-node@10.9.1_typescript@5.3.2/node_modules/tsup/assets/esm_shims.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA","sourcesContent":["// Shim globals in esm bundle\nimport { fileURLToPath } from 'url'\nimport path from 'path'\n\nconst getFilename = () => fileURLToPath(import.meta.url)\nconst getDirname = () => path.dirname(getFilename())\n\nexport const __dirname = /* @__PURE__ */ getDirname()\nexport const __filename = /* @__PURE__ */ getFilename()\n"]}
@@ -0,0 +1,247 @@
1
+ 'use strict';
2
+
3
+ var chunkPY7I7OEN_cjs = require('./chunk-PY7I7OEN.cjs');
4
+ var chunkI7UUR5MZ_cjs = require('./chunk-I7UUR5MZ.cjs');
5
+ var crypto = require('crypto');
6
+ var perf_hooks = require('perf_hooks');
7
+ var events = require('events');
8
+
9
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
10
+
11
+ var crypto__default = /*#__PURE__*/_interopDefault(crypto);
12
+
13
+ // src/utils/URLPath.ts
14
+ chunkI7UUR5MZ_cjs.init_cjs_shims();
15
+ var URLPath = class {
16
+ constructor(path) {
17
+ this.path = path;
18
+ return this;
19
+ }
20
+ /**
21
+ * Convert Swagger path to URLPath(syntax of Express)
22
+ * @example /pet/{petId} => /pet/:petId
23
+ */
24
+ get URL() {
25
+ return this.toURLPath();
26
+ }
27
+ get isURL() {
28
+ try {
29
+ const url = new URL(this.path);
30
+ if (url?.href) {
31
+ return true;
32
+ }
33
+ } catch (error) {
34
+ return false;
35
+ }
36
+ return false;
37
+ }
38
+ /**
39
+ * Convert Swagger path to template literals/ template strings(camelcase)
40
+ * @example /pet/{petId} => `/pet/${petId}`
41
+ * @example /account/monetary-accountID => `/account/${monetaryAccountId}`
42
+ * @example /account/userID => `/account/${userId}`
43
+ */
44
+ get template() {
45
+ return this.toTemplateString();
46
+ }
47
+ get object() {
48
+ return this.toObject();
49
+ }
50
+ get params() {
51
+ return this.getParams();
52
+ }
53
+ toObject({ type = "path", replacer, stringify } = {}) {
54
+ const object = {
55
+ url: type === "path" ? this.toURLPath() : this.toTemplateString(replacer),
56
+ params: this.getParams()
57
+ };
58
+ if (stringify) {
59
+ if (type === "template") {
60
+ return JSON.stringify(object).replaceAll("'", "").replaceAll(`"`, "");
61
+ }
62
+ if (object.params) {
63
+ return `{ url: '${object.url}', params: ${JSON.stringify(object.params).replaceAll("'", "").replaceAll(`"`, "")} }`;
64
+ }
65
+ return `{ url: '${object.url}' }`;
66
+ }
67
+ return object;
68
+ }
69
+ /**
70
+ * Convert Swagger path to template literals/ template strings(camelcase)
71
+ * @example /pet/{petId} => `/pet/${petId}`
72
+ * @example /account/monetary-accountID => `/account/${monetaryAccountId}`
73
+ * @example /account/userID => `/account/${userId}`
74
+ */
75
+ toTemplateString(replacer) {
76
+ const regex = /{(\w|-)*}/g;
77
+ const found = this.path.match(regex);
78
+ let newPath = this.path.replaceAll("{", "${");
79
+ if (found) {
80
+ newPath = found.reduce((prev, curr) => {
81
+ const pathParam = replacer ? replacer(chunkPY7I7OEN_cjs.camelCase(curr)) : chunkPY7I7OEN_cjs.camelCase(curr);
82
+ const replacement = `\${${pathParam}}`;
83
+ return prev.replace(curr, replacement);
84
+ }, this.path);
85
+ }
86
+ return `\`${newPath}\``;
87
+ }
88
+ getParams(replacer) {
89
+ const regex = /{(\w|-)*}/g;
90
+ const found = this.path.match(regex);
91
+ if (!found) {
92
+ return void 0;
93
+ }
94
+ const params = {};
95
+ found.forEach((item) => {
96
+ item = item.replaceAll("{", "").replaceAll("}", "");
97
+ const pathParam = replacer ? replacer(chunkPY7I7OEN_cjs.camelCase(item)) : chunkPY7I7OEN_cjs.camelCase(item);
98
+ params[pathParam] = pathParam;
99
+ }, this.path);
100
+ return params;
101
+ }
102
+ /**
103
+ * Convert Swagger path to URLPath(syntax of Express)
104
+ * @example /pet/{petId} => /pet/:petId
105
+ */
106
+ toURLPath() {
107
+ return this.path.replaceAll("{", ":").replaceAll("}", "");
108
+ }
109
+ };
110
+
111
+ // src/utils/timeout.ts
112
+ chunkI7UUR5MZ_cjs.init_cjs_shims();
113
+ async function timeout(ms) {
114
+ return new Promise((resolve) => {
115
+ setTimeout(() => {
116
+ resolve(true);
117
+ }, ms);
118
+ });
119
+ }
120
+
121
+ // src/utils/Queue.ts
122
+ chunkI7UUR5MZ_cjs.init_cjs_shims();
123
+
124
+ // src/utils/EventEmitter.ts
125
+ chunkI7UUR5MZ_cjs.init_cjs_shims();
126
+ var _emitter;
127
+ var EventEmitter = class {
128
+ constructor() {
129
+ chunkI7UUR5MZ_cjs.__privateAdd(this, _emitter, new events.EventEmitter());
130
+ chunkI7UUR5MZ_cjs.__privateGet(this, _emitter).setMaxListeners(100);
131
+ }
132
+ emit(eventName, ...eventArg) {
133
+ chunkI7UUR5MZ_cjs.__privateGet(this, _emitter).emit(eventName, ...eventArg);
134
+ }
135
+ on(eventName, handler) {
136
+ chunkI7UUR5MZ_cjs.__privateGet(this, _emitter).on(eventName, handler);
137
+ }
138
+ off(eventName, handler) {
139
+ chunkI7UUR5MZ_cjs.__privateGet(this, _emitter).off(eventName, handler);
140
+ }
141
+ removeAll() {
142
+ chunkI7UUR5MZ_cjs.__privateGet(this, _emitter).removeAllListeners();
143
+ }
144
+ };
145
+ _emitter = new WeakMap();
146
+
147
+ // src/utils/Queue.ts
148
+ var _queue, _workerCount, _maxParallel, _debug, _work, work_fn;
149
+ var Queue = class {
150
+ constructor(maxParallel, debug = false) {
151
+ chunkI7UUR5MZ_cjs.__privateAdd(this, _work);
152
+ chunkI7UUR5MZ_cjs.__privateAdd(this, _queue, []);
153
+ this.eventEmitter = new EventEmitter();
154
+ chunkI7UUR5MZ_cjs.__privateAdd(this, _workerCount, 0);
155
+ chunkI7UUR5MZ_cjs.__privateAdd(this, _maxParallel, void 0);
156
+ chunkI7UUR5MZ_cjs.__privateAdd(this, _debug, false);
157
+ chunkI7UUR5MZ_cjs.__privateSet(this, _maxParallel, maxParallel);
158
+ chunkI7UUR5MZ_cjs.__privateSet(this, _debug, debug);
159
+ }
160
+ run(job, options = { controller: new AbortController(), name: crypto__default.default.randomUUID(), description: "" }) {
161
+ return new Promise((resolve, reject) => {
162
+ const item = { reject, resolve, job, name: options.name, description: options.description || options.name };
163
+ options.controller?.signal.addEventListener("abort", () => {
164
+ chunkI7UUR5MZ_cjs.__privateSet(this, _queue, chunkI7UUR5MZ_cjs.__privateGet(this, _queue).filter((queueItem) => queueItem.name === item.name));
165
+ reject("Aborted");
166
+ });
167
+ chunkI7UUR5MZ_cjs.__privateGet(this, _queue).push(item);
168
+ chunkI7UUR5MZ_cjs.__privateMethod(this, _work, work_fn).call(this);
169
+ });
170
+ }
171
+ runSync(job, options = { controller: new AbortController(), name: crypto__default.default.randomUUID(), description: "" }) {
172
+ new Promise((resolve, reject) => {
173
+ const item = { reject, resolve, job, name: options.name, description: options.description || options.name };
174
+ options.controller?.signal.addEventListener("abort", () => {
175
+ chunkI7UUR5MZ_cjs.__privateSet(this, _queue, chunkI7UUR5MZ_cjs.__privateGet(this, _queue).filter((queueItem) => queueItem.name === item.name));
176
+ });
177
+ chunkI7UUR5MZ_cjs.__privateGet(this, _queue).push(item);
178
+ chunkI7UUR5MZ_cjs.__privateMethod(this, _work, work_fn).call(this);
179
+ });
180
+ }
181
+ get hasJobs() {
182
+ return chunkI7UUR5MZ_cjs.__privateGet(this, _workerCount) > 0 || chunkI7UUR5MZ_cjs.__privateGet(this, _queue).length > 0;
183
+ }
184
+ get count() {
185
+ return chunkI7UUR5MZ_cjs.__privateGet(this, _workerCount);
186
+ }
187
+ };
188
+ _queue = new WeakMap();
189
+ _workerCount = new WeakMap();
190
+ _maxParallel = new WeakMap();
191
+ _debug = new WeakMap();
192
+ _work = new WeakSet();
193
+ work_fn = function() {
194
+ if (chunkI7UUR5MZ_cjs.__privateGet(this, _workerCount) >= chunkI7UUR5MZ_cjs.__privateGet(this, _maxParallel)) {
195
+ return;
196
+ }
197
+ chunkI7UUR5MZ_cjs.__privateWrapper(this, _workerCount)._++;
198
+ let entry;
199
+ while (entry = chunkI7UUR5MZ_cjs.__privateGet(this, _queue).shift()) {
200
+ const { reject, resolve, job, name, description } = entry;
201
+ if (chunkI7UUR5MZ_cjs.__privateGet(this, _debug)) {
202
+ perf_hooks.performance.mark(name + "_start");
203
+ }
204
+ job().then((result) => {
205
+ this.eventEmitter.emit("jobDone", result);
206
+ resolve(result);
207
+ if (chunkI7UUR5MZ_cjs.__privateGet(this, _debug)) {
208
+ perf_hooks.performance.mark(name + "_stop");
209
+ perf_hooks.performance.measure(description, name + "_start", name + "_stop");
210
+ }
211
+ }).catch((err) => {
212
+ this.eventEmitter.emit("jobFailed", err);
213
+ reject(err);
214
+ });
215
+ }
216
+ chunkI7UUR5MZ_cjs.__privateWrapper(this, _workerCount)._--;
217
+ };
218
+
219
+ // src/utils/uniqueName.ts
220
+ chunkI7UUR5MZ_cjs.init_cjs_shims();
221
+ function getUniqueName(originalName, data) {
222
+ let used = data[originalName] || 0;
223
+ if (used) {
224
+ data[originalName] = ++used;
225
+ originalName += used;
226
+ }
227
+ data[originalName] = 1;
228
+ return originalName;
229
+ }
230
+ function setUniqueName(originalName, data) {
231
+ let used = data[originalName] || 0;
232
+ if (used) {
233
+ data[originalName] = ++used;
234
+ return originalName;
235
+ }
236
+ data[originalName] = 1;
237
+ return originalName;
238
+ }
239
+
240
+ exports.EventEmitter = EventEmitter;
241
+ exports.Queue = Queue;
242
+ exports.URLPath = URLPath;
243
+ exports.getUniqueName = getUniqueName;
244
+ exports.setUniqueName = setUniqueName;
245
+ exports.timeout = timeout;
246
+ //# sourceMappingURL=out.js.map
247
+ //# sourceMappingURL=chunk-72O327DC.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/URLPath.ts","../src/utils/timeout.ts","../src/utils/Queue.ts","../src/utils/EventEmitter.ts","../src/utils/uniqueName.ts"],"names":[],"mappings":"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","sourcesContent":["import { camelCase } from '../transformers/casing.ts'\n\nexport type URLObject = {\n url: string\n params?: Record<string, string>\n}\n\ntype ObjectOptions = {\n type?: 'path' | 'template'\n replacer?: (pathParam: string) => string\n stringify?: boolean\n}\n\nexport class URLPath {\n path: string\n\n constructor(path: string) {\n this.path = path\n\n return this\n }\n\n /**\n * Convert Swagger path to URLPath(syntax of Express)\n * @example /pet/{petId} => /pet/:petId\n */\n get URL(): string {\n return this.toURLPath()\n }\n get isURL(): boolean {\n try {\n const url = new URL(this.path)\n if (url?.href) {\n return true\n }\n } catch (error) {\n return false\n }\n return false\n }\n\n /**\n * Convert Swagger path to template literals/ template strings(camelcase)\n * @example /pet/{petId} => `/pet/${petId}`\n * @example /account/monetary-accountID => `/account/${monetaryAccountId}`\n * @example /account/userID => `/account/${userId}`\n */\n get template(): string {\n return this.toTemplateString()\n }\n get object(): URLObject | string {\n return this.toObject()\n }\n get params(): Record<string, string> | undefined {\n return this.getParams()\n }\n\n toObject({ type = 'path', replacer, stringify }: ObjectOptions = {}): URLObject | string {\n const object = {\n url: type === 'path' ? this.toURLPath() : this.toTemplateString(replacer),\n params: this.getParams(),\n }\n\n if (stringify) {\n if (type === 'template') {\n return JSON.stringify(object).replaceAll(\"'\", '').replaceAll(`\"`, '')\n }\n\n if (object.params) {\n return `{ url: '${object.url}', params: ${JSON.stringify(object.params).replaceAll(\"'\", '').replaceAll(`\"`, '')} }`\n }\n\n return `{ url: '${object.url}' }`\n }\n\n return object\n }\n\n /**\n * Convert Swagger path to template literals/ template strings(camelcase)\n * @example /pet/{petId} => `/pet/${petId}`\n * @example /account/monetary-accountID => `/account/${monetaryAccountId}`\n * @example /account/userID => `/account/${userId}`\n */\n toTemplateString(replacer?: (pathParam: string) => string): string {\n const regex = /{(\\w|-)*}/g\n const found = this.path.match(regex)\n let newPath = this.path.replaceAll('{', '${')\n\n if (found) {\n newPath = found.reduce((prev, curr) => {\n const pathParam = replacer\n ? replacer(camelCase(curr))\n : camelCase(curr)\n const replacement = `\\${${pathParam}}`\n\n return prev.replace(curr, replacement)\n }, this.path)\n }\n\n return `\\`${newPath}\\``\n }\n\n getParams(replacer?: (pathParam: string) => string): Record<string, string> | undefined {\n const regex = /{(\\w|-)*}/g\n const found = this.path.match(regex)\n\n if (!found) {\n return undefined\n }\n\n const params: Record<string, string> = {}\n found.forEach((item) => {\n item = item.replaceAll('{', '').replaceAll('}', '')\n\n const pathParam = replacer\n ? replacer(camelCase(item))\n : camelCase(item)\n\n params[pathParam] = pathParam\n }, this.path)\n\n return params\n }\n\n /**\n * Convert Swagger path to URLPath(syntax of Express)\n * @example /pet/{petId} => /pet/:petId\n */\n toURLPath(): string {\n return this.path.replaceAll('{', ':').replaceAll('}', '')\n }\n}\n","export async function timeout(ms: number): Promise<unknown> {\n return new Promise((resolve) => {\n setTimeout(() => {\n resolve(true)\n }, ms)\n })\n}\n","import crypto from 'node:crypto'\nimport { performance } from 'node:perf_hooks'\n\nimport { EventEmitter } from './EventEmitter.ts'\n\nexport type QueueJob<T = unknown> = {\n (...args: unknown[]): Promise<T | void>\n}\n\ntype RunOptions = {\n controller?: AbortController\n name?: string\n description?: string\n}\n\ntype QueueItem = {\n reject: <T>(reason?: T) => void\n resolve: <T>(value: T | PromiseLike<T>) => void\n job: QueueJob<unknown>\n} & Required<RunOptions>\n\ntype Events = {\n jobDone: [result: unknown]\n jobFailed: [error: Error]\n}\n\nexport class Queue {\n #queue: QueueItem[] = []\n readonly eventEmitter: EventEmitter<Events> = new EventEmitter()\n\n #workerCount = 0\n\n #maxParallel: number\n #debug = false\n\n constructor(maxParallel: number, debug = false) {\n this.#maxParallel = maxParallel\n this.#debug = debug\n }\n\n run<T>(job: QueueJob<T>, options: RunOptions = { controller: new AbortController(), name: crypto.randomUUID(), description: '' }): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n const item = { reject, resolve, job, name: options.name, description: options.description || options.name } as QueueItem\n\n options.controller?.signal.addEventListener('abort', () => {\n this.#queue = this.#queue.filter((queueItem) => queueItem.name === item.name)\n\n reject('Aborted')\n })\n\n this.#queue.push(item)\n this.#work()\n })\n }\n\n runSync<T>(job: QueueJob<T>, options: RunOptions = { controller: new AbortController(), name: crypto.randomUUID(), description: '' }): void {\n new Promise<T>((resolve, reject) => {\n const item = { reject, resolve, job, name: options.name, description: options.description || options.name } as QueueItem\n\n options.controller?.signal.addEventListener('abort', () => {\n this.#queue = this.#queue.filter((queueItem) => queueItem.name === item.name)\n })\n\n this.#queue.push(item)\n this.#work()\n })\n }\n\n get hasJobs(): boolean {\n return this.#workerCount > 0 || this.#queue.length > 0\n }\n\n get count(): number {\n return this.#workerCount\n }\n\n #work(): void {\n if (this.#workerCount >= this.#maxParallel) {\n return\n }\n\n this.#workerCount++\n\n let entry: QueueItem | undefined\n while ((entry = this.#queue.shift())) {\n const { reject, resolve, job, name, description } = entry\n\n if (this.#debug) {\n performance.mark(name + '_start')\n }\n\n job()\n .then((result) => {\n this.eventEmitter.emit('jobDone', result)\n\n resolve(result)\n\n if (this.#debug) {\n performance.mark(name + '_stop')\n performance.measure(description, name + '_start', name + '_stop')\n }\n })\n .catch((err) => {\n this.eventEmitter.emit('jobFailed', err as Error)\n reject(err)\n })\n }\n this.#workerCount--\n }\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-argument */\nimport { EventEmitter as NodeEventEmitter } from 'node:events'\n\nexport class EventEmitter<TEvents extends Record<string, any>> {\n constructor() {\n this.#emitter.setMaxListeners(100)\n }\n #emitter = new NodeEventEmitter()\n\n emit<TEventName extends keyof TEvents & string>(eventName: TEventName, ...eventArg: TEvents[TEventName]): void {\n this.#emitter.emit(eventName, ...(eventArg as []))\n }\n\n on<TEventName extends keyof TEvents & string>(eventName: TEventName, handler: (...eventArg: TEvents[TEventName]) => void): void {\n this.#emitter.on(eventName, handler as any)\n }\n\n off<TEventName extends keyof TEvents & string>(eventName: TEventName, handler: (...eventArg: TEvents[TEventName]) => void): void {\n this.#emitter.off(eventName, handler as any)\n }\n removeAll(): void {\n this.#emitter.removeAllListeners()\n }\n}\n","export function getUniqueName(originalName: string, data: Record<string, number>): string {\n let used = data[originalName] || 0\n if (used) {\n data[originalName] = ++used\n originalName += used\n }\n data[originalName] = 1\n return originalName\n}\n\nexport function setUniqueName(originalName: string, data: Record<string, number>): string {\n let used = data[originalName] || 0\n if (used) {\n data[originalName] = ++used\n\n return originalName\n }\n data[originalName] = 1\n return originalName\n}\n"]}