@readme/oas-to-snippet 29.0.1 → 29.0.3

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
@@ -17,7 +17,7 @@ function oasToSnippet(oas, operation, values, auth, lang, opts = {}) {
17
17
  });
18
18
  try {
19
19
  ({ config, language, target } = _chunkIGRKQZNEcjs.getLanguageConfig.call(void 0, languages, lang));
20
- } catch (err) {
20
+ } catch (e) {
21
21
  if (!language || !target) {
22
22
  return { code: "", highlightMode: false, install: false };
23
23
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/erunion/code/readme/oas/packages/oas-to-snippet/dist/index.cjs","../src/index.ts"],"names":[],"mappings":"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","file":"/Users/erunion/code/readme/oas/packages/oas-to-snippet/dist/index.cjs","sourcesContent":[null,"import type { ClientId, ClientPlugin, TargetId } from '@readme/httpsnippet/targets';\nimport type { AuthForHAR, DataForHAR } from '@readme/oas-to-har/lib/types';\nimport type Oas from 'oas';\nimport type { Operation } from 'oas/operation';\nimport type { Language, LanguageConfig } from './languages.js';\nimport type { HarRequest } from './types.js';\n\nimport { addClientPlugin, HTTPSnippet } from '@readme/httpsnippet';\nimport generateHar from '@readme/oas-to-har';\n\nimport { getClientInstallationInstructions, getLanguageConfig, getSupportedLanguages } from './languages.js';\n\nexport default function oasToSnippet(\n oas: Oas,\n operation: Operation,\n values: DataForHAR,\n auth: AuthForHAR,\n lang: Language,\n opts: {\n /**\n * If you already have a HAR and you just want to generate a code snippet for it then you should\n * supply that HAR to this option.\n *\n */\n harOverride?: HarRequest;\n\n /**\n * Various options that are required for generating `[node, api]` code snippets.\n *\n * @see {@link https://npm.im/httpsnippet-client-api}\n */\n openapi?: {\n /**\n * The ReadMe API Registry identifier for this OpenAPI definition.\n *\n * @example @developers/v2.0#17273l2glm9fq4l5\n */\n registryIdentifier?: string;\n\n /**\n * This is the primary variable name that will be used in the code snippet. If supplied this\n * will take precedence over any supplied `registryIdentifier`.\n *\n * @example developers\n */\n variableName?: string;\n };\n\n /**\n * `httpsnippet` plugins to extend snippet generation to.\n *\n */\n // biome-ignore lint/suspicious/noExplicitAny: Intentionally loose because this supports different plugin types.\n plugins?: ClientPlugin<any>[];\n } = {},\n): {\n /**\n * The resulting code snippet. Returns `false` if a snippet could not be generated.\n *\n * @example ```sh\n * curl --request DELETE --url http://petstore.swagger.io/v2/pet/petId\n * ```\n */\n code: string | false;\n /**\n * The programming language (used for syntax highlighting).\n * Returns `false` if a language could not be determined.\n *\n * @example shell\n */\n highlightMode: string | false;\n /**\n * Installation instructions for using the snippet.\n * Returns `false` if the snippet does not have an installation step.\n *\n * @example ```sh\n * npm install node-fetch@2 --save\n * ```\n */\n install: string | false;\n} {\n let config: LanguageConfig | undefined;\n let language: TargetId | undefined;\n let target: ClientId | undefined;\n\n const plugins = opts.plugins || [];\n\n const languages = getSupportedLanguages({\n plugins,\n });\n\n try {\n ({ config, language, target } = getLanguageConfig(languages, lang));\n } catch (err) {\n if (!language || !target) {\n return { code: '', highlightMode: false, install: false };\n }\n }\n\n if (!config) {\n throw new Error(\n `The supplied language \\`${lang.toString()}\\` is not supported. If a plugin powers this language please initialize that plugin with the \\`plugins\\` option.`,\n );\n }\n\n if (!language || !target) {\n return { code: '', highlightMode: false, install: false };\n }\n\n const har = opts.harOverride || generateHar(oas, operation, values, auth);\n const snippet = new HTTPSnippet(har as HarRequest, {\n // We should only expect HAR's generated with `@readme/oas-to-har` to already be encoded.\n harIsAlreadyEncoded: !opts.harOverride,\n });\n\n let targetOpts = config.httpsnippet.targets[target].opts || {};\n const highlightMode = config.highlight;\n\n plugins.forEach(plugin => {\n addClientPlugin(plugin);\n\n // Our `httpsnippet-client-api` plugin uses these options so we need to pass them along.\n if (plugin.target === 'node' && plugin.client.info.key === 'api') {\n targetOpts.api = {\n definition: oas ? oas.getDefinition() : null,\n identifier: opts?.openapi?.variableName,\n registryURI: opts?.openapi?.registryIdentifier,\n };\n }\n });\n\n const install = getClientInstallationInstructions(languages, lang, opts?.openapi?.registryIdentifier) || false;\n\n try {\n const code = snippet.convert(language, target, targetOpts);\n\n return {\n code: code ? code[0] : false,\n highlightMode,\n install,\n };\n } catch (err) {\n if (language !== 'node' && target !== 'api') {\n throw err;\n }\n\n /**\n * Since `api` depends upon the API definition it's more subject to breakage than other snippet\n * targets, so if we failed when attempting to generate one for that let's instead render out a\n * `fetch` snippet.\n */\n targetOpts = config.httpsnippet.targets.fetch.opts || {};\n\n const code = snippet.convert(language, 'fetch', targetOpts);\n\n return {\n code: code ? code[0] : false,\n highlightMode,\n install: false,\n };\n }\n}\n"]}
1
+ {"version":3,"sources":["/Users/erunion/code/readme/oas/packages/oas-to-snippet/dist/index.cjs","../src/index.ts"],"names":[],"mappings":"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","file":"/Users/erunion/code/readme/oas/packages/oas-to-snippet/dist/index.cjs","sourcesContent":[null,"import type { ClientId, ClientPlugin, TargetId } from '@readme/httpsnippet/targets';\nimport type { AuthForHAR, DataForHAR } from '@readme/oas-to-har/lib/types';\nimport type Oas from 'oas';\nimport type { Operation } from 'oas/operation';\nimport type { Language, LanguageConfig } from './languages.js';\nimport type { HarRequest } from './types.js';\n\nimport { addClientPlugin, HTTPSnippet } from '@readme/httpsnippet';\nimport generateHar from '@readme/oas-to-har';\n\nimport { getClientInstallationInstructions, getLanguageConfig, getSupportedLanguages } from './languages.js';\n\n// biome-ignore lint/style/noDefaultExport: This is fine for now.\nexport default function oasToSnippet(\n oas: Oas,\n operation: Operation,\n values: DataForHAR,\n auth: AuthForHAR,\n lang: Language,\n opts: {\n /**\n * If you already have a HAR and you just want to generate a code snippet for it then you should\n * supply that HAR to this option.\n *\n */\n harOverride?: HarRequest;\n\n /**\n * Various options that are required for generating `[node, api]` code snippets.\n *\n * @see {@link https://npm.im/httpsnippet-client-api}\n */\n openapi?: {\n /**\n * The ReadMe API Registry identifier for this OpenAPI definition.\n *\n * @example @developers/v2.0#17273l2glm9fq4l5\n */\n registryIdentifier?: string;\n\n /**\n * This is the primary variable name that will be used in the code snippet. If supplied this\n * will take precedence over any supplied `registryIdentifier`.\n *\n * @example developers\n */\n variableName?: string;\n };\n\n /**\n * `httpsnippet` plugins to extend snippet generation to.\n *\n */\n // biome-ignore lint/suspicious/noExplicitAny: Intentionally loose because this supports different plugin types.\n plugins?: ClientPlugin<any>[];\n } = {},\n): {\n /**\n * The resulting code snippet. Returns `false` if a snippet could not be generated.\n *\n * @example ```sh\n * curl --request DELETE --url http://petstore.swagger.io/v2/pet/petId\n * ```\n */\n code: string | false;\n /**\n * The programming language (used for syntax highlighting).\n * Returns `false` if a language could not be determined.\n *\n * @example shell\n */\n highlightMode: string | false;\n /**\n * Installation instructions for using the snippet.\n * Returns `false` if the snippet does not have an installation step.\n *\n * @example ```sh\n * npm install node-fetch@2 --save\n * ```\n */\n install: string | false;\n} {\n let config: LanguageConfig | undefined;\n let language: TargetId | undefined;\n let target: ClientId | undefined;\n\n const plugins = opts.plugins || [];\n\n const languages = getSupportedLanguages({\n plugins,\n });\n\n try {\n ({ config, language, target } = getLanguageConfig(languages, lang));\n } catch {\n if (!language || !target) {\n return { code: '', highlightMode: false, install: false };\n }\n }\n\n if (!config) {\n throw new Error(\n `The supplied language \\`${lang.toString()}\\` is not supported. If a plugin powers this language please initialize that plugin with the \\`plugins\\` option.`,\n );\n }\n\n if (!language || !target) {\n return { code: '', highlightMode: false, install: false };\n }\n\n const har = opts.harOverride || generateHar(oas, operation, values, auth);\n const snippet = new HTTPSnippet(har as HarRequest, {\n // We should only expect HAR's generated with `@readme/oas-to-har` to already be encoded.\n harIsAlreadyEncoded: !opts.harOverride,\n });\n\n let targetOpts = config.httpsnippet.targets[target].opts || {};\n const highlightMode = config.highlight;\n\n plugins.forEach(plugin => {\n addClientPlugin(plugin);\n\n // Our `httpsnippet-client-api` plugin uses these options so we need to pass them along.\n if (plugin.target === 'node' && plugin.client.info.key === 'api') {\n targetOpts.api = {\n definition: oas ? oas.getDefinition() : null,\n identifier: opts?.openapi?.variableName,\n registryURI: opts?.openapi?.registryIdentifier,\n };\n }\n });\n\n const install = getClientInstallationInstructions(languages, lang, opts?.openapi?.registryIdentifier) || false;\n\n try {\n const code = snippet.convert(language, target, targetOpts);\n\n return {\n code: code ? code[0] : false,\n highlightMode,\n install,\n };\n } catch (err) {\n if (language !== 'node' && target !== 'api') {\n throw err;\n }\n\n /**\n * Since `api` depends upon the API definition it's more subject to breakage than other snippet\n * targets, so if we failed when attempting to generate one for that let's instead render out a\n * `fetch` snippet.\n */\n targetOpts = config.httpsnippet.targets.fetch.opts || {};\n\n const code = snippet.convert(language, 'fetch', targetOpts);\n\n return {\n code: code ? code[0] : false,\n highlightMode,\n install: false,\n };\n }\n}\n"]}
package/dist/index.js CHANGED
@@ -17,7 +17,7 @@ function oasToSnippet(oas, operation, values, auth, lang, opts = {}) {
17
17
  });
18
18
  try {
19
19
  ({ config, language, target } = getLanguageConfig(languages, lang));
20
- } catch (err) {
20
+ } catch {
21
21
  if (!language || !target) {
22
22
  return { code: "", highlightMode: false, install: false };
23
23
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import type { ClientId, ClientPlugin, TargetId } from '@readme/httpsnippet/targets';\nimport type { AuthForHAR, DataForHAR } from '@readme/oas-to-har/lib/types';\nimport type Oas from 'oas';\nimport type { Operation } from 'oas/operation';\nimport type { Language, LanguageConfig } from './languages.js';\nimport type { HarRequest } from './types.js';\n\nimport { addClientPlugin, HTTPSnippet } from '@readme/httpsnippet';\nimport generateHar from '@readme/oas-to-har';\n\nimport { getClientInstallationInstructions, getLanguageConfig, getSupportedLanguages } from './languages.js';\n\nexport default function oasToSnippet(\n oas: Oas,\n operation: Operation,\n values: DataForHAR,\n auth: AuthForHAR,\n lang: Language,\n opts: {\n /**\n * If you already have a HAR and you just want to generate a code snippet for it then you should\n * supply that HAR to this option.\n *\n */\n harOverride?: HarRequest;\n\n /**\n * Various options that are required for generating `[node, api]` code snippets.\n *\n * @see {@link https://npm.im/httpsnippet-client-api}\n */\n openapi?: {\n /**\n * The ReadMe API Registry identifier for this OpenAPI definition.\n *\n * @example @developers/v2.0#17273l2glm9fq4l5\n */\n registryIdentifier?: string;\n\n /**\n * This is the primary variable name that will be used in the code snippet. If supplied this\n * will take precedence over any supplied `registryIdentifier`.\n *\n * @example developers\n */\n variableName?: string;\n };\n\n /**\n * `httpsnippet` plugins to extend snippet generation to.\n *\n */\n // biome-ignore lint/suspicious/noExplicitAny: Intentionally loose because this supports different plugin types.\n plugins?: ClientPlugin<any>[];\n } = {},\n): {\n /**\n * The resulting code snippet. Returns `false` if a snippet could not be generated.\n *\n * @example ```sh\n * curl --request DELETE --url http://petstore.swagger.io/v2/pet/petId\n * ```\n */\n code: string | false;\n /**\n * The programming language (used for syntax highlighting).\n * Returns `false` if a language could not be determined.\n *\n * @example shell\n */\n highlightMode: string | false;\n /**\n * Installation instructions for using the snippet.\n * Returns `false` if the snippet does not have an installation step.\n *\n * @example ```sh\n * npm install node-fetch@2 --save\n * ```\n */\n install: string | false;\n} {\n let config: LanguageConfig | undefined;\n let language: TargetId | undefined;\n let target: ClientId | undefined;\n\n const plugins = opts.plugins || [];\n\n const languages = getSupportedLanguages({\n plugins,\n });\n\n try {\n ({ config, language, target } = getLanguageConfig(languages, lang));\n } catch (err) {\n if (!language || !target) {\n return { code: '', highlightMode: false, install: false };\n }\n }\n\n if (!config) {\n throw new Error(\n `The supplied language \\`${lang.toString()}\\` is not supported. If a plugin powers this language please initialize that plugin with the \\`plugins\\` option.`,\n );\n }\n\n if (!language || !target) {\n return { code: '', highlightMode: false, install: false };\n }\n\n const har = opts.harOverride || generateHar(oas, operation, values, auth);\n const snippet = new HTTPSnippet(har as HarRequest, {\n // We should only expect HAR's generated with `@readme/oas-to-har` to already be encoded.\n harIsAlreadyEncoded: !opts.harOverride,\n });\n\n let targetOpts = config.httpsnippet.targets[target].opts || {};\n const highlightMode = config.highlight;\n\n plugins.forEach(plugin => {\n addClientPlugin(plugin);\n\n // Our `httpsnippet-client-api` plugin uses these options so we need to pass them along.\n if (plugin.target === 'node' && plugin.client.info.key === 'api') {\n targetOpts.api = {\n definition: oas ? oas.getDefinition() : null,\n identifier: opts?.openapi?.variableName,\n registryURI: opts?.openapi?.registryIdentifier,\n };\n }\n });\n\n const install = getClientInstallationInstructions(languages, lang, opts?.openapi?.registryIdentifier) || false;\n\n try {\n const code = snippet.convert(language, target, targetOpts);\n\n return {\n code: code ? code[0] : false,\n highlightMode,\n install,\n };\n } catch (err) {\n if (language !== 'node' && target !== 'api') {\n throw err;\n }\n\n /**\n * Since `api` depends upon the API definition it's more subject to breakage than other snippet\n * targets, so if we failed when attempting to generate one for that let's instead render out a\n * `fetch` snippet.\n */\n targetOpts = config.httpsnippet.targets.fetch.opts || {};\n\n const code = snippet.convert(language, 'fetch', targetOpts);\n\n return {\n code: code ? code[0] : false,\n highlightMode,\n install: false,\n };\n }\n}\n"],"mappings":";;;;;;;AAOA,SAAS,iBAAiB,mBAAmB;AAC7C,OAAO,iBAAiB;AAIT,SAAR,aACL,KACA,WACA,QACA,MACA,MACA,OAoCI,CAAC,GA0BL;AACA,MAAI;AACJ,MAAI;AACJ,MAAI;AAEJ,QAAM,UAAU,KAAK,WAAW,CAAC;AAEjC,QAAM,YAAY,sBAAsB;AAAA,IACtC;AAAA,EACF,CAAC;AAED,MAAI;AACF,KAAC,EAAE,QAAQ,UAAU,OAAO,IAAI,kBAAkB,WAAW,IAAI;AAAA,EACnE,SAAS,KAAK;AACZ,QAAI,CAAC,YAAY,CAAC,QAAQ;AACxB,aAAO,EAAE,MAAM,IAAI,eAAe,OAAO,SAAS,MAAM;AAAA,IAC1D;AAAA,EACF;AAEA,MAAI,CAAC,QAAQ;AACX,UAAM,IAAI;AAAA,MACR,2BAA2B,KAAK,SAAS,CAAC;AAAA,IAC5C;AAAA,EACF;AAEA,MAAI,CAAC,YAAY,CAAC,QAAQ;AACxB,WAAO,EAAE,MAAM,IAAI,eAAe,OAAO,SAAS,MAAM;AAAA,EAC1D;AAEA,QAAM,MAAM,KAAK,eAAe,YAAY,KAAK,WAAW,QAAQ,IAAI;AACxE,QAAM,UAAU,IAAI,YAAY,KAAmB;AAAA;AAAA,IAEjD,qBAAqB,CAAC,KAAK;AAAA,EAC7B,CAAC;AAED,MAAI,aAAa,OAAO,YAAY,QAAQ,MAAM,EAAE,QAAQ,CAAC;AAC7D,QAAM,gBAAgB,OAAO;AAE7B,UAAQ,QAAQ,YAAU;AACxB,oBAAgB,MAAM;AAGtB,QAAI,OAAO,WAAW,UAAU,OAAO,OAAO,KAAK,QAAQ,OAAO;AAChE,iBAAW,MAAM;AAAA,QACf,YAAY,MAAM,IAAI,cAAc,IAAI;AAAA,QACxC,YAAY,MAAM,SAAS;AAAA,QAC3B,aAAa,MAAM,SAAS;AAAA,MAC9B;AAAA,IACF;AAAA,EACF,CAAC;AAED,QAAM,UAAU,kCAAkC,WAAW,MAAM,MAAM,SAAS,kBAAkB,KAAK;AAEzG,MAAI;AACF,UAAM,OAAO,QAAQ,QAAQ,UAAU,QAAQ,UAAU;AAEzD,WAAO;AAAA,MACL,MAAM,OAAO,KAAK,CAAC,IAAI;AAAA,MACvB;AAAA,MACA;AAAA,IACF;AAAA,EACF,SAAS,KAAK;AACZ,QAAI,aAAa,UAAU,WAAW,OAAO;AAC3C,YAAM;AAAA,IACR;AAOA,iBAAa,OAAO,YAAY,QAAQ,MAAM,QAAQ,CAAC;AAEvD,UAAM,OAAO,QAAQ,QAAQ,UAAU,SAAS,UAAU;AAE1D,WAAO;AAAA,MACL,MAAM,OAAO,KAAK,CAAC,IAAI;AAAA,MACvB;AAAA,MACA,SAAS;AAAA,IACX;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import type { ClientId, ClientPlugin, TargetId } from '@readme/httpsnippet/targets';\nimport type { AuthForHAR, DataForHAR } from '@readme/oas-to-har/lib/types';\nimport type Oas from 'oas';\nimport type { Operation } from 'oas/operation';\nimport type { Language, LanguageConfig } from './languages.js';\nimport type { HarRequest } from './types.js';\n\nimport { addClientPlugin, HTTPSnippet } from '@readme/httpsnippet';\nimport generateHar from '@readme/oas-to-har';\n\nimport { getClientInstallationInstructions, getLanguageConfig, getSupportedLanguages } from './languages.js';\n\n// biome-ignore lint/style/noDefaultExport: This is fine for now.\nexport default function oasToSnippet(\n oas: Oas,\n operation: Operation,\n values: DataForHAR,\n auth: AuthForHAR,\n lang: Language,\n opts: {\n /**\n * If you already have a HAR and you just want to generate a code snippet for it then you should\n * supply that HAR to this option.\n *\n */\n harOverride?: HarRequest;\n\n /**\n * Various options that are required for generating `[node, api]` code snippets.\n *\n * @see {@link https://npm.im/httpsnippet-client-api}\n */\n openapi?: {\n /**\n * The ReadMe API Registry identifier for this OpenAPI definition.\n *\n * @example @developers/v2.0#17273l2glm9fq4l5\n */\n registryIdentifier?: string;\n\n /**\n * This is the primary variable name that will be used in the code snippet. If supplied this\n * will take precedence over any supplied `registryIdentifier`.\n *\n * @example developers\n */\n variableName?: string;\n };\n\n /**\n * `httpsnippet` plugins to extend snippet generation to.\n *\n */\n // biome-ignore lint/suspicious/noExplicitAny: Intentionally loose because this supports different plugin types.\n plugins?: ClientPlugin<any>[];\n } = {},\n): {\n /**\n * The resulting code snippet. Returns `false` if a snippet could not be generated.\n *\n * @example ```sh\n * curl --request DELETE --url http://petstore.swagger.io/v2/pet/petId\n * ```\n */\n code: string | false;\n /**\n * The programming language (used for syntax highlighting).\n * Returns `false` if a language could not be determined.\n *\n * @example shell\n */\n highlightMode: string | false;\n /**\n * Installation instructions for using the snippet.\n * Returns `false` if the snippet does not have an installation step.\n *\n * @example ```sh\n * npm install node-fetch@2 --save\n * ```\n */\n install: string | false;\n} {\n let config: LanguageConfig | undefined;\n let language: TargetId | undefined;\n let target: ClientId | undefined;\n\n const plugins = opts.plugins || [];\n\n const languages = getSupportedLanguages({\n plugins,\n });\n\n try {\n ({ config, language, target } = getLanguageConfig(languages, lang));\n } catch {\n if (!language || !target) {\n return { code: '', highlightMode: false, install: false };\n }\n }\n\n if (!config) {\n throw new Error(\n `The supplied language \\`${lang.toString()}\\` is not supported. If a plugin powers this language please initialize that plugin with the \\`plugins\\` option.`,\n );\n }\n\n if (!language || !target) {\n return { code: '', highlightMode: false, install: false };\n }\n\n const har = opts.harOverride || generateHar(oas, operation, values, auth);\n const snippet = new HTTPSnippet(har as HarRequest, {\n // We should only expect HAR's generated with `@readme/oas-to-har` to already be encoded.\n harIsAlreadyEncoded: !opts.harOverride,\n });\n\n let targetOpts = config.httpsnippet.targets[target].opts || {};\n const highlightMode = config.highlight;\n\n plugins.forEach(plugin => {\n addClientPlugin(plugin);\n\n // Our `httpsnippet-client-api` plugin uses these options so we need to pass them along.\n if (plugin.target === 'node' && plugin.client.info.key === 'api') {\n targetOpts.api = {\n definition: oas ? oas.getDefinition() : null,\n identifier: opts?.openapi?.variableName,\n registryURI: opts?.openapi?.registryIdentifier,\n };\n }\n });\n\n const install = getClientInstallationInstructions(languages, lang, opts?.openapi?.registryIdentifier) || false;\n\n try {\n const code = snippet.convert(language, target, targetOpts);\n\n return {\n code: code ? code[0] : false,\n highlightMode,\n install,\n };\n } catch (err) {\n if (language !== 'node' && target !== 'api') {\n throw err;\n }\n\n /**\n * Since `api` depends upon the API definition it's more subject to breakage than other snippet\n * targets, so if we failed when attempting to generate one for that let's instead render out a\n * `fetch` snippet.\n */\n targetOpts = config.httpsnippet.targets.fetch.opts || {};\n\n const code = snippet.convert(language, 'fetch', targetOpts);\n\n return {\n code: code ? code[0] : false,\n highlightMode,\n install: false,\n };\n }\n}\n"],"mappings":";;;;;;;AAOA,SAAS,iBAAiB,mBAAmB;AAC7C,OAAO,iBAAiB;AAKT,SAAR,aACL,KACA,WACA,QACA,MACA,MACA,OAoCI,CAAC,GA0BL;AACA,MAAI;AACJ,MAAI;AACJ,MAAI;AAEJ,QAAM,UAAU,KAAK,WAAW,CAAC;AAEjC,QAAM,YAAY,sBAAsB;AAAA,IACtC;AAAA,EACF,CAAC;AAED,MAAI;AACF,KAAC,EAAE,QAAQ,UAAU,OAAO,IAAI,kBAAkB,WAAW,IAAI;AAAA,EACnE,QAAQ;AACN,QAAI,CAAC,YAAY,CAAC,QAAQ;AACxB,aAAO,EAAE,MAAM,IAAI,eAAe,OAAO,SAAS,MAAM;AAAA,IAC1D;AAAA,EACF;AAEA,MAAI,CAAC,QAAQ;AACX,UAAM,IAAI;AAAA,MACR,2BAA2B,KAAK,SAAS,CAAC;AAAA,IAC5C;AAAA,EACF;AAEA,MAAI,CAAC,YAAY,CAAC,QAAQ;AACxB,WAAO,EAAE,MAAM,IAAI,eAAe,OAAO,SAAS,MAAM;AAAA,EAC1D;AAEA,QAAM,MAAM,KAAK,eAAe,YAAY,KAAK,WAAW,QAAQ,IAAI;AACxE,QAAM,UAAU,IAAI,YAAY,KAAmB;AAAA;AAAA,IAEjD,qBAAqB,CAAC,KAAK;AAAA,EAC7B,CAAC;AAED,MAAI,aAAa,OAAO,YAAY,QAAQ,MAAM,EAAE,QAAQ,CAAC;AAC7D,QAAM,gBAAgB,OAAO;AAE7B,UAAQ,QAAQ,YAAU;AACxB,oBAAgB,MAAM;AAGtB,QAAI,OAAO,WAAW,UAAU,OAAO,OAAO,KAAK,QAAQ,OAAO;AAChE,iBAAW,MAAM;AAAA,QACf,YAAY,MAAM,IAAI,cAAc,IAAI;AAAA,QACxC,YAAY,MAAM,SAAS;AAAA,QAC3B,aAAa,MAAM,SAAS;AAAA,MAC9B;AAAA,IACF;AAAA,EACF,CAAC;AAED,QAAM,UAAU,kCAAkC,WAAW,MAAM,MAAM,SAAS,kBAAkB,KAAK;AAEzG,MAAI;AACF,UAAM,OAAO,QAAQ,QAAQ,UAAU,QAAQ,UAAU;AAEzD,WAAO;AAAA,MACL,MAAM,OAAO,KAAK,CAAC,IAAI;AAAA,MACvB;AAAA,MACA;AAAA,IACF;AAAA,EACF,SAAS,KAAK;AACZ,QAAI,aAAa,UAAU,WAAW,OAAO;AAC3C,YAAM;AAAA,IACR;AAOA,iBAAa,OAAO,YAAY,QAAQ,MAAM,QAAQ,CAAC;AAEvD,UAAM,OAAO,QAAQ,QAAQ,UAAU,SAAS,UAAU;AAE1D,WAAO;AAAA,MACL,MAAM,OAAO,KAAK,CAAC,IAAI;AAAA,MACvB;AAAA,MACA,SAAS;AAAA,IACX;AAAA,EACF;AACF;","names":[]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@readme/oas-to-snippet",
3
3
  "description": "Transform an OpenAPI operation into a code snippet",
4
- "version": "29.0.1",
4
+ "version": "29.0.3",
5
5
  "author": "Jon Ursenbach <jon@readme.io>",
6
6
  "license": "MIT",
7
7
  "sideEffects": false,
@@ -50,18 +50,18 @@
50
50
  },
51
51
  "dependencies": {
52
52
  "@readme/httpsnippet": "^11.0.0",
53
- "@readme/oas-to-har": "^27.0.1"
53
+ "@readme/oas-to-har": "^27.1.1"
54
54
  },
55
55
  "devDependencies": {
56
- "@readme/oas-examples": "^7.0.0",
56
+ "@readme/oas-examples": "^7.0.1",
57
57
  "@types/har-format": "^1.2.14",
58
58
  "@types/node": "^22.7.6",
59
- "har-examples": "^4.0.7",
60
- "oas": "^28.1.0",
59
+ "har-examples": "^4.0.8",
60
+ "oas": "^28.3.0",
61
61
  "tsup": "^8.5.0",
62
62
  "typescript": "^5.2.2",
63
63
  "vitest": "^3.2.1"
64
64
  },
65
65
  "prettier": "@readme/standards/prettier",
66
- "gitHead": "4bccb292663cb3945062633cb48f66aa57a8dedd"
66
+ "gitHead": "3d895bfa7f64a674b4462b0fd005ee96319d5263"
67
67
  }