@thymian/plugin-openapi 0.1.2-canary.20260409-4f4e7df → 0.1.2-canary.20260410-b188f29

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.
@@ -16,7 +16,7 @@ export default class Info extends BaseCliRunCommand {
16
16
  '<%= config.bin %> <%= command.id %> openapi.yaml',
17
17
  ];
18
18
  async run() {
19
- const [document] = await loadOpenApi(this.args.content, this.flags.cwd);
19
+ const { document } = await loadOpenApi(this.args.content, this.flags.cwd);
20
20
  const { valid, version, specification } = await validate(document);
21
21
  if (!valid || !specification) {
22
22
  throw new ThymianBaseError('Invalid OpenAPI document.', {
@@ -1 +1 @@
1
- {"version":3,"file":"info.js","sourceRoot":"","sources":["../../../../src/cli/commands/openapi/info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,iBAA8B;IAC9D,MAAM,CAAU,IAAI,GAAG;QACrB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC;YACnB,WAAW,EAAE,cAAc;YAC3B,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,KAAK;SACnB,CAAC;KACH,CAAC;IACF,MAAM,CAAU,WAAW,GACzB,sEAAsE,CAAC;IACzE,MAAM,CAAU,QAAQ,GAAG;QACzB,kDAAkD;KACnD,CAAC;IAEO,KAAK,CAAC,GAAG;QAChB,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAExE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAEnE,IAAI,CAAC,KAAK,IAAI,CAAC,aAAa,EAAE,CAAC;YAC7B,MAAM,IAAI,gBAAgB,CAAC,2BAA2B,EAAE;gBACtD,IAAI,EAAE,6BAA6B;gBACnC,GAAG,EAAE,uEAAuE;gBAC5E,WAAW,EAAE;oBACX,iEAAiE;iBAClE;aACF,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;QACxC,IAAI,CAAC,GAAG,CAAC,cAAc,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,GAAG,CAAC,gBAAgB,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACzD,CAAC"}
1
+ {"version":3,"file":"info.js","sourceRoot":"","sources":["../../../../src/cli/commands/openapi/info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,iBAA8B;IAC9D,MAAM,CAAU,IAAI,GAAG;QACrB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC;YACnB,WAAW,EAAE,cAAc;YAC3B,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,KAAK;SACnB,CAAC;KACH,CAAC;IACF,MAAM,CAAU,WAAW,GACzB,sEAAsE,CAAC;IACzE,MAAM,CAAU,QAAQ,GAAG;QACzB,kDAAkD;KACnD,CAAC;IAEO,KAAK,CAAC,GAAG;QAChB,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE1E,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAEnE,IAAI,CAAC,KAAK,IAAI,CAAC,aAAa,EAAE,CAAC;YAC7B,MAAM,IAAI,gBAAgB,CAAC,2BAA2B,EAAE;gBACtD,IAAI,EAAE,6BAA6B;gBACnC,GAAG,EAAE,uEAAuE;gBAC5E,WAAW,EAAE;oBACX,iEAAiE;iBAClE;aACF,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;QACxC,IAAI,CAAC,GAAG,CAAC,cAAc,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,GAAG,CAAC,gBAAgB,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACzD,CAAC"}
@@ -6,7 +6,10 @@ export type LoadResult = {
6
6
  original: OpenAPI.Document;
7
7
  filePath?: string;
8
8
  };
9
- export declare function loadOpenApi(value: string, cwd?: string): Promise<[object, string | undefined]>;
9
+ export declare function loadOpenApi(value: string, cwd?: string): Promise<{
10
+ document: object;
11
+ filePath: string | undefined;
12
+ }>;
10
13
  export declare function loadAndUpgrade(value: string, cwd: string | undefined, logger: Logger): Promise<LoadResult>;
11
14
  export declare function openapiToThymianFormat(document: OpenAPIV3_1.Document, options: {
12
15
  logger?: Logger;
@@ -15,6 +18,7 @@ export declare function openapiToThymianFormat(document: OpenAPIV3_1.Document, o
15
18
  filePath?: string;
16
19
  format?: ThymianFormat;
17
20
  sourceName?: string;
21
+ cwd?: string;
18
22
  }): Promise<ThymianFormat>;
19
23
  export declare function loadAndTransform(value: string, options: {
20
24
  logger: Logger;
@@ -1 +1 @@
1
- {"version":3,"file":"load-openapi.d.ts","sourceRoot":"","sources":["../src/load-openapi.ts"],"names":[],"mappings":"AAWA,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,MAAM,EAGX,KAAK,aAAa,EACnB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAI1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AAGtE,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,EAAE,WAAW,CAAC,QAAQ,CAAC;IAC/B,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,wBAAsB,WAAW,CAC/B,KAAK,EAAE,MAAM,EACb,GAAG,GAAE,MAAsB,GAC1B,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAkBvC;AAED,wBAAsB,cAAc,CAClC,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,YAAgB,EAC3B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,UAAU,CAAC,CAoCrB;AAED,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAC9B,OAAO,EAAE;IACP,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,UAAU,CAAC;IACvB,MAAM,EAAE,oBAAoB,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GACA,OAAO,CAAC,aAAa,CAAC,CAkBxB;AAED,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE;IACP,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,UAAU,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,oBAAoB,CAAC;IAC7B,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GACA,OAAO,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAYhE"}
1
+ {"version":3,"file":"load-openapi.d.ts","sourceRoot":"","sources":["../src/load-openapi.ts"],"names":[],"mappings":"AAYA,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,MAAM,EAGX,KAAK,aAAa,EACnB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAI1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AAwBtE,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,EAAE,WAAW,CAAC,QAAQ,CAAC;IAC/B,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,wBAAsB,WAAW,CAC/B,KAAK,EAAE,MAAM,EACb,GAAG,GAAE,MAAsB,GAC1B,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC,CAuD7D;AAED,wBAAsB,cAAc,CAClC,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,YAAgB,EAC3B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,UAAU,CAAC,CA4ErB;AAED,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAC9B,OAAO,EAAE;IACP,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,UAAU,CAAC;IACvB,MAAM,EAAE,oBAAoB,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GACA,OAAO,CAAC,aAAa,CAAC,CA8BxB;AAED,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE;IACP,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,UAAU,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,oBAAoB,CAAC;IAC7B,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GACA,OAAO,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAkBhE"}
@@ -1,4 +1,5 @@
1
- import { isAbsolute, join } from 'node:path';
1
+ import { access } from 'node:fs/promises';
2
+ import { isAbsolute, join, relative } from 'node:path';
2
3
  import { bundle } from '@scalar/json-magic/bundle';
3
4
  import { fetchUrls, parseJson, parseYaml, readFiles, } from '@scalar/json-magic/bundle/plugins/node';
4
5
  import { dereference, validate } from '@scalar/openapi-parser';
@@ -7,6 +8,26 @@ import { NoopLogger, ThymianBaseError, } from '@thymian/core';
7
8
  import { locMapperForFile } from './loc-mapper/loc-mapper-for-file.js';
8
9
  import { NoopLocMapper } from './loc-mapper/noop-loc-mapper.js';
9
10
  import { OpenapiProcessor } from './processors/openapi.processor.js';
11
+ function getRelativePath(filePath, cwd) {
12
+ try {
13
+ return relative(cwd, filePath);
14
+ }
15
+ catch {
16
+ return filePath;
17
+ }
18
+ }
19
+ function formatSourceLabel(relativePath) {
20
+ return relativePath ? `'${relativePath}'` : 'the OpenAPI document';
21
+ }
22
+ async function fileExists(path) {
23
+ try {
24
+ await access(path);
25
+ return true;
26
+ }
27
+ catch {
28
+ return false;
29
+ }
30
+ }
10
31
  export async function loadOpenApi(value, cwd = process.cwd()) {
11
32
  const readFilesPlugin = readFiles();
12
33
  // the validate function of the readFiles plugin returns undefined if the value is not a local file
@@ -14,49 +35,107 @@ export async function loadOpenApi(value, cwd = process.cwd()) {
14
35
  const finalValue = !isFileValue || (isFileValue && isAbsolute(value))
15
36
  ? value
16
37
  : join(cwd, value);
38
+ const relativePath = isFileValue
39
+ ? getRelativePath(finalValue, cwd)
40
+ : undefined;
17
41
  const plugins = [parseJson(), parseYaml(), readFilesPlugin, fetchUrls()];
18
- return [
19
- await bundle(finalValue, {
20
- plugins,
21
- treeShake: false,
22
- }),
23
- isFileValue ? finalValue : undefined,
24
- ];
25
- }
26
- export async function loadAndUpgrade(value, cwd = process.cwd(), logger) {
27
42
  try {
28
- const [result, filePath] = await loadOpenApi(value, cwd);
29
- logger.debug(`Loaded OpenAPI document.`);
30
- await validate(result, { throwOnError: true });
31
- logger.debug(`Successfully validated OpenAPI document.`);
32
- const upgradedObject = upgrade(structuredClone(result), '3.1');
33
- logger.debug(`Upgraded OpenAPI document.`);
34
- const dereferenced = dereference(upgradedObject, {
35
- throwOnError: true,
36
- }).schema;
37
- logger.debug(`Dereferenced OpenAPI document.`);
38
43
  return {
39
- document: dereferenced,
40
- original: result,
41
- filePath: filePath,
44
+ document: await bundle(finalValue, {
45
+ plugins,
46
+ treeShake: false,
47
+ }),
48
+ filePath: isFileValue ? finalValue : undefined,
42
49
  };
43
50
  }
44
51
  catch (e) {
45
- throw new ThymianBaseError(`Error while loading OpenAPI document.`, {
52
+ if (isFileValue && !(await fileExists(finalValue))) {
53
+ throw new ThymianBaseError(`OpenAPI file not found: ${relativePath ?? value}`, {
54
+ name: 'OpenAPIFileNotFoundError',
55
+ ref: 'https://thymian.dev/references/errors/openapi-file-not-found-error/',
56
+ cause: e,
57
+ suggestions: [
58
+ `Verify the file path is correct: ${relativePath ?? value}`,
59
+ 'Check file permissions and ensure the file is readable',
60
+ ],
61
+ });
62
+ }
63
+ const sourceLabel = relativePath ? `'${relativePath}'` : 'the document';
64
+ throw new ThymianBaseError(`Failed to read or parse ${sourceLabel}.`, {
46
65
  name: 'OpenAPILoadError',
47
- ref: 'https://thymian.dev/references/errors/openapi-load-error/',
48
66
  cause: e,
49
67
  suggestions: [
50
- 'Currently, only files without external references are supported. Do your OpenAPI documents contain any external references?',
51
- 'You can validate your OpenAPI document using the `thymian openapi:validate` command.',
68
+ 'Ensure the content is valid YAML or JSON',
69
+ ...(isFileValue
70
+ ? [
71
+ `Verify the file path is correct: ${relativePath ?? value}`,
72
+ 'Check file permissions and ensure the file is readable',
73
+ ]
74
+ : []),
52
75
  ],
53
76
  });
54
77
  }
55
78
  }
79
+ export async function loadAndUpgrade(value, cwd = process.cwd(), logger) {
80
+ const { document, filePath } = await loadOpenApi(value, cwd);
81
+ const relativePath = filePath ? getRelativePath(filePath, cwd) : undefined;
82
+ const sourceLabel = formatSourceLabel(relativePath);
83
+ logger.info(`Loading ${sourceLabel}.`);
84
+ const validationResult = await validate(document, { throwOnError: false });
85
+ if (!validationResult.valid && validationResult.errors) {
86
+ const refErrors = validationResult.errors.filter((err) => err.code === 'INVALID_REFERENCE');
87
+ if (refErrors.length > 0) {
88
+ throw new ThymianBaseError(`Invalid $ref${refErrors.length > 1 ? 's' : ''} found: ${refErrors.map((err) => err.message).join(', ')}`, {
89
+ name: 'OpenAPIDereferenceError',
90
+ ref: 'https://thymian.dev/references/errors/openapi-dereference-error/',
91
+ cause: new Error(validationResult?.errors?.map((e) => e.message).join('; ') ?? ''),
92
+ suggestions: [
93
+ 'Ensure all $refs are valid and resolve to a valid non-external location.',
94
+ ],
95
+ });
96
+ }
97
+ throw new ThymianBaseError(`Schema validation for ${sourceLabel} failed.`, {
98
+ name: 'OpenAPIValidationError',
99
+ ref: 'https://thymian.dev/references/errors/openapi-validation-error/',
100
+ cause: new Error(validationResult.errors.map((e) => e.message).join('; ')),
101
+ suggestions: [
102
+ 'This indicates that your OpenAPI document does not match the OpenAPI specification. Use `thymian openapi:validate` to get detailed validation errors',
103
+ 'Ensure all required fields are present (openapi, info, paths)',
104
+ ],
105
+ });
106
+ }
107
+ logger.debug(`Successfully validated ${sourceLabel}.`);
108
+ const upgradedObject = upgrade(structuredClone(document), '3.1');
109
+ logger.debug(`Upgraded ${sourceLabel} to version 3.1.`);
110
+ const dereferencedResult = dereference(upgradedObject, {
111
+ throwOnError: false,
112
+ });
113
+ if (dereferencedResult?.errors?.length || !dereferencedResult.schema) {
114
+ logger.debug(`Cannot dereference ${sourceLabel}.`);
115
+ throw new ThymianBaseError(`Dereferencing all internal references in ${sourceLabel} failed.`, {
116
+ name: 'OpenAPIDereferenceError',
117
+ ref: 'https://thymian.dev/references/errors/openapi-dereference-error/',
118
+ cause: new Error(dereferencedResult?.errors?.map((e) => e.message).join('; ') ?? ''),
119
+ suggestions: [
120
+ 'Ensure all $refs are valid and resolve to a valid non-external location.',
121
+ ],
122
+ });
123
+ }
124
+ return {
125
+ document: dereferencedResult.schema,
126
+ original: document,
127
+ filePath: filePath ? filePath : undefined,
128
+ };
129
+ }
56
130
  export async function openapiToThymianFormat(document, options) {
131
+ const sourceLabel = options.filePath
132
+ ? formatSourceLabel(getRelativePath(options.filePath, options.cwd ?? process.cwd()))
133
+ : formatSourceLabel(undefined);
57
134
  if (typeof document.openapi !== 'string' ||
58
135
  !document.openapi.startsWith('3.1')) {
59
- throw new ThymianBaseError('Only OpenAPI 3.1.x documents are supported.');
136
+ throw new ThymianBaseError(`Only OpenAPI 3.1.x documents are supported (found in ${sourceLabel}).`, {
137
+ name: 'OpenAPIDocumentVersionError',
138
+ });
60
139
  }
61
140
  const locMapper = typeof options.filePath === 'string'
62
141
  ? await locMapperForFile(options.filePath)
@@ -65,12 +144,16 @@ export async function openapiToThymianFormat(document, options) {
65
144
  }
66
145
  export async function loadAndTransform(value, options) {
67
146
  const loadResult = await loadAndUpgrade(value, options.cwd, options.logger);
147
+ const relativePath = loadResult.filePath
148
+ ? getRelativePath(loadResult.filePath, options.cwd)
149
+ : undefined;
68
150
  const result = await openapiToThymianFormat(loadResult.document, {
69
151
  ...options,
70
152
  filePath: loadResult.filePath,
71
153
  filter: options.filter,
154
+ cwd: options.cwd,
72
155
  });
73
- options.logger.debug('Transformed OpenAPI document into Thymian format.');
156
+ options.logger.debug(`Transformed ${formatSourceLabel(relativePath)} into Thymian format.`);
74
157
  return [loadResult.original, result, loadResult.filePath];
75
158
  }
76
159
  //# sourceMappingURL=load-openapi.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"load-openapi.js","sourceRoot":"","sources":["../src/load-openapi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE7C,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EACL,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,GACV,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAGL,UAAU,EACV,gBAAgB,GAEjB,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAEhE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAQrE,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,KAAa,EACb,MAAc,OAAO,CAAC,GAAG,EAAE;IAE3B,MAAM,eAAe,GAAG,SAAS,EAAE,CAAC;IACpC,mGAAmG;IACnG,MAAM,WAAW,GAAG,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,UAAU,GACd,CAAC,WAAW,IAAI,CAAC,WAAW,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;QAChD,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAEvB,MAAM,OAAO,GAAG,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC,CAAC;IAEzE,OAAO;QACL,MAAM,MAAM,CAAC,UAAU,EAAE;YACvB,OAAO;YACP,SAAS,EAAE,KAAK;SACjB,CAAC;QACF,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;KACrC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,KAAa,EACb,MAAc,OAAO,CAAC,GAAG,EAAE,EAC3B,MAAc;IAEd,IAAI,CAAC;QACH,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,MAAM,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAEzD,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAEzC,MAAM,QAAQ,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;QAE/C,MAAM,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAEzD,MAAM,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC;QAE/D,MAAM,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAE3C,MAAM,YAAY,GAAG,WAAW,CAAC,cAAc,EAAE;YAC/C,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC,MAA8B,CAAC;QAElC,MAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAE/C,OAAO;YACL,QAAQ,EAAE,YAAY;YACtB,QAAQ,EAAE,MAA0B;YACpC,QAAQ,EAAE,QAAQ;SACnB,CAAC;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,gBAAgB,CAAC,uCAAuC,EAAE;YAClE,IAAI,EAAE,kBAAkB;YACxB,GAAG,EAAE,2DAA2D;YAChE,KAAK,EAAE,CAAC;YACR,WAAW,EAAE;gBACX,6HAA6H;gBAC7H,sFAAsF;aACvF;SACF,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,QAA8B,EAC9B,OAOC;IAED,IACE,OAAO,QAAQ,CAAC,OAAO,KAAK,QAAQ;QACpC,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EACnC,CAAC;QACD,MAAM,IAAI,gBAAgB,CAAC,6CAA6C,CAAC,CAAC;IAC5E,CAAC;IACD,MAAM,SAAS,GACb,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ;QAClC,CAAC,CAAC,MAAM,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC;QAC1C,CAAC,CAAC,IAAI,aAAa,EAAE,CAAC;IAE1B,OAAO,IAAI,gBAAgB,CACzB,OAAO,CAAC,MAAM,IAAI,IAAI,UAAU,EAAE,EAClC,OAAO,CAAC,UAAU,EAClB,SAAS,EACT,OAAO,CAAC,MAAM,CACf,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,KAAa,EACb,OAOC;IAED,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAE5E,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,UAAU,CAAC,QAAQ,EAAE;QAC/D,GAAG,OAAO;QACV,QAAQ,EAAE,UAAU,CAAC,QAAQ;QAC7B,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;IAEH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;IAE1E,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC5D,CAAC"}
1
+ {"version":3,"file":"load-openapi.js","sourceRoot":"","sources":["../src/load-openapi.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thymian/plugin-openapi",
3
- "version": "0.1.2-canary.20260409-4f4e7df",
3
+ "version": "0.1.2-canary.20260410-b188f29",
4
4
  "license": "AGPL-3.0-only",
5
5
  "bugs": {
6
6
  "url": "https://github.com/thymianofficial/thymian/issues"
@@ -28,8 +28,8 @@
28
28
  "dependencies": {
29
29
  "@scalar/openapi-parser": "^0.23.2",
30
30
  "@scalar/openapi-upgrader": "^0.1.4",
31
- "@thymian/common-cli": "0.1.2-canary.20260409-4f4e7df",
32
- "@thymian/core": "0.1.2-canary.20260409-4f4e7df",
31
+ "@thymian/common-cli": "0.1.2-canary.20260410-b188f29",
32
+ "@thymian/core": "0.1.2-canary.20260410-b188f29",
33
33
  "jsonc-parser": "^3.2.0",
34
34
  "tinyglobby": "^0.2.14",
35
35
  "traverse": "^0.6.11",