New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

openapi-typescript

Package Overview
Dependencies
Maintainers
1
Versions
145
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

openapi-typescript - npm Package Compare versions

Comparing version 6.3.1 to 6.3.2

13

./dist/index.js

@@ -149,2 +149,15 @@ import { URL } from "node:url";

}
case "SchemaMap": {
subschemaOutput += "{\n";
indentLv++;
for (const [name, schemaObject] of getEntries(subschema.schema)) {
const c = getSchemaObjectComment(schemaObject, indentLv);
if (c)
subschemaOutput += indent(c, indentLv);
subschemaOutput += indent(`${escObjKey(name)}: ${transformSchemaObject(schemaObject, { path: `${path}${name}`, ctx: { ...ctx, indentLv } })};\n`, indentLv);
}
indentLv--;
subschemaOutput += indent("};", indentLv);
break;
}
case "SchemaObject": {

@@ -151,0 +164,0 @@ subschemaOutput = transformSchemaObject(subschema.schema, { path, ctx: { ...ctx, indentLv } });

@@ -149,2 +149,15 @@ import { URL } from "node:url";

}
case "SchemaMap": {
subschemaOutput += "{\n";
indentLv++;
for (const [name, schemaObject] of getEntries(subschema.schema)) {
const c = getSchemaObjectComment(schemaObject, indentLv);
if (c)
subschemaOutput += indent(c, indentLv);
subschemaOutput += indent(`${escObjKey(name)}: ${transformSchemaObject(schemaObject, { path: `${path}${name}`, ctx: { ...ctx, indentLv } })};\n`, indentLv);
}
indentLv--;
subschemaOutput += indent("};", indentLv);
break;
}
case "SchemaObject": {

@@ -151,0 +164,0 @@ subschemaOutput = transformSchemaObject(subschema.schema, { path, ctx: { ...ctx, indentLv } });

7

dist/load.d.ts

@@ -25,3 +25,8 @@ /// <reference types="node" resolution-mode="require"/>

}>;
export declare function getHint(path: (string | number)[], startFrom?: Subschema["hint"]): Subschema["hint"] | undefined;
export interface GetHintOptions {
path: string[];
external: boolean;
startFrom?: Subschema["hint"];
}
export declare function getHint({ path, external, startFrom }: GetHintOptions): Subschema["hint"] | undefined;
export {};

69

dist/load.js

@@ -170,3 +170,7 @@ import fs from "node:fs";

const isRemoteFullSchema = ref.path[0] === "paths" || ref.path[0] === "components";
const hint = isRemoteFullSchema ? "OpenAPI3" : getHint([...nodePath, ...ref.path], options.hint);
const hintPath = [...nodePath];
if (ref.filename)
hintPath.push(ref.filename);
hintPath.push(...ref.path);
const hint = isRemoteFullSchema ? "OpenAPI3" : getHint({ path: hintPath, external: !!ref.filename, startFrom: options.hint });
if (schema instanceof URL) {

@@ -242,11 +246,11 @@ const nextURL = new URL(ref.filename, schema);

}
export function getHint(path, startFrom) {
export function getHint({ path, external, startFrom }) {
if (startFrom && startFrom !== "OpenAPI3") {
switch (startFrom) {
case "OperationObject":
return getHintFromOperationObject(path);
return getHintFromOperationObject(path, external);
case "RequestBodyObject":
return getHintFromRequestBodyObject(path);
return getHintFromRequestBodyObject(path, external);
case "ResponseObject":
return getHintFromResponseObject(path);
return getHintFromResponseObject(path, external);
default:

@@ -258,32 +262,32 @@ return startFrom;

case "paths":
return getHintFromPathItemObject(path.slice(2));
return getHintFromPathItemObject(path.slice(2), external);
case "components":
return getHintFromComponentsObject(path.slice(1));
return getHintFromComponentsObject(path.slice(1), external);
}
return undefined;
}
function getHintFromComponentsObject(path) {
function getHintFromComponentsObject(path, external) {
switch (path[0]) {
case "schemas":
case "headers":
return getHintFromSchemaObject(path.slice(2));
return getHintFromSchemaObject(path.slice(2), external);
case "parameters":
return getHintFromParameterObject(path.slice(2));
return getHintFromParameterObject(path.slice(2), external);
case "responses":
return getHintFromResponseObject(path.slice(2));
return getHintFromResponseObject(path.slice(2), external);
case "requestBodies":
return getHintFromRequestBodyObject(path.slice(2));
return getHintFromRequestBodyObject(path.slice(2), external);
case "pathItems":
return getHintFromPathItemObject(path.slice(2));
return getHintFromPathItemObject(path.slice(2), external);
}
return "SchemaObject";
}
function getHintFromMediaTypeObject(path) {
function getHintFromMediaTypeObject(path, external) {
switch (path[0]) {
case "schema":
return getHintFromSchemaObject(path.slice(1));
return getHintFromSchemaObject(path.slice(1), external);
}
return "MediaTypeObject";
}
function getHintFromOperationObject(path) {
function getHintFromOperationObject(path, external) {
switch (path[0]) {

@@ -293,18 +297,18 @@ case "parameters":

case "requestBody":
return getHintFromRequestBodyObject(path.slice(1));
return getHintFromRequestBodyObject(path.slice(1), external);
case "responses":
return getHintFromResponseObject(path.slice(2));
return getHintFromResponseObject(path.slice(2), external);
}
return "OperationObject";
}
function getHintFromParameterObject(path) {
function getHintFromParameterObject(path, external) {
switch (path[0]) {
case "content":
return getHintFromMediaTypeObject(path.slice(2));
return getHintFromMediaTypeObject(path.slice(2), external);
case "schema":
return getHintFromSchemaObject(path.slice(1));
return getHintFromSchemaObject(path.slice(1), external);
}
return "ParameterObject";
}
function getHintFromPathItemObject(path) {
function getHintFromPathItemObject(path, external) {
switch (path[0]) {

@@ -315,25 +319,25 @@ case "parameters": {

}
return getHintFromParameterObject(path.slice(1));
return getHintFromParameterObject(path.slice(1), external);
}
default:
return getHintFromOperationObject(path.slice(1));
return getHintFromOperationObject(path.slice(1), external);
}
}
function getHintFromRequestBodyObject(path) {
function getHintFromRequestBodyObject(path, external) {
switch (path[0]) {
case "content":
return getHintFromMediaTypeObject(path.slice(2));
return getHintFromMediaTypeObject(path.slice(2), external);
}
return "RequestBodyObject";
}
function getHintFromResponseObject(path) {
function getHintFromResponseObject(path, external) {
switch (path[0]) {
case "headers":
return getHintFromSchemaObject(path.slice(2));
return getHintFromSchemaObject(path.slice(2), external);
case "content":
return getHintFromMediaTypeObject(path.slice(2));
return getHintFromMediaTypeObject(path.slice(2), external);
}
return "ResponseObject";
}
function getHintFromSchemaObject(path) {
function getHintFromSchemaObject(path, external) {
switch (path[0]) {

@@ -343,6 +347,9 @@ case "allOf":

case "oneOf":
return getHintFromSchemaObject(path.slice(2));
return getHintFromSchemaObject(path.slice(2), external);
}
if (path.length === 2 && external) {
return "SchemaMap";
}
return "SchemaObject";
}
//# sourceMappingURL=load.js.map

@@ -346,2 +346,5 @@ /// <reference types="node" resolution-mode="require"/>

} | {
hint: "SchemaMap";
schema: NonNullable<ComponentsObject["schemas"]>;
} | {
hint: "SchemaObject";

@@ -348,0 +351,0 @@ schema: SchemaObject;

{
"name": "openapi-typescript",
"description": "Generate TypeScript types from Swagger OpenAPI specs",
"version": "6.3.1",
"version": "6.3.2",
"author": {

@@ -6,0 +6,0 @@ "name": "Drew Powers",

@@ -177,2 +177,14 @@ import type { GlobalContext, OpenAPI3, OpenAPITSOptions, Subschema } from "./types.js";

}
case "SchemaMap": {
subschemaOutput += "{\n";
indentLv++;
for (const [name, schemaObject] of getEntries(subschema.schema!)) {
const c = getSchemaObjectComment(schemaObject, indentLv);
if (c) subschemaOutput += indent(c, indentLv);
subschemaOutput += indent(`${escObjKey(name)}: ${transformSchemaObject(schemaObject, { path: `${path}${name}`, ctx: { ...ctx, indentLv } })};\n`, indentLv);
}
indentLv--;
subschemaOutput += indent("};", indentLv);
break;
}
case "SchemaObject": {

@@ -179,0 +191,0 @@ subschemaOutput = transformSchemaObject(subschema.schema, { path, ctx: { ...ctx, indentLv } });

@@ -220,3 +220,6 @@ import type { ComponentsObject, Fetch, GlobalContext, OpenAPI3, OperationObject, ParameterObject, PathItemObject, ReferenceObject, RequestBodyObject, ResponseObject, SchemaObject, Subschema } from "./types.js";

const isRemoteFullSchema = ref.path[0] === "paths" || ref.path[0] === "components"; // if the initial ref is "paths" or "components" this must be a full schema
const hint = isRemoteFullSchema ? "OpenAPI3" : getHint([...nodePath, ...ref.path], options.hint);
const hintPath: string[] = [...(nodePath as string[])];
if (ref.filename) hintPath.push(ref.filename);
hintPath.push(...ref.path);
const hint = isRemoteFullSchema ? "OpenAPI3" : getHint({ path: hintPath, external: !!ref.filename, startFrom: options.hint });

@@ -310,12 +313,18 @@ // if root schema is remote and this is a relative reference, treat as remote

export interface GetHintOptions {
path: string[];
external: boolean;
startFrom?: Subschema["hint"];
}
/** given a path array (an array of indices), what type of object is this? */
export function getHint(path: (string | number)[], startFrom?: Subschema["hint"]): Subschema["hint"] | undefined {
export function getHint({ path, external, startFrom }: GetHintOptions): Subschema["hint"] | undefined {
if (startFrom && startFrom !== "OpenAPI3") {
switch (startFrom) {
case "OperationObject":
return getHintFromOperationObject(path);
return getHintFromOperationObject(path, external);
case "RequestBodyObject":
return getHintFromRequestBodyObject(path);
return getHintFromRequestBodyObject(path, external);
case "ResponseObject":
return getHintFromResponseObject(path);
return getHintFromResponseObject(path, external);
default:

@@ -327,32 +336,32 @@ return startFrom;

case "paths":
return getHintFromPathItemObject(path.slice(2)); // skip URL at [1]
return getHintFromPathItemObject(path.slice(2), external); // skip URL at [1]
case "components":
return getHintFromComponentsObject(path.slice(1));
return getHintFromComponentsObject(path.slice(1), external);
}
return undefined;
}
function getHintFromComponentsObject(path: (string | number)[]): Subschema["hint"] | undefined {
function getHintFromComponentsObject(path: (string | number)[], external: boolean): Subschema["hint"] | undefined {
switch (path[0] as keyof ComponentsObject) {
case "schemas":
case "headers":
return getHintFromSchemaObject(path.slice(2));
return getHintFromSchemaObject(path.slice(2), external);
case "parameters":
return getHintFromParameterObject(path.slice(2));
return getHintFromParameterObject(path.slice(2), external);
case "responses":
return getHintFromResponseObject(path.slice(2));
return getHintFromResponseObject(path.slice(2), external);
case "requestBodies":
return getHintFromRequestBodyObject(path.slice(2));
return getHintFromRequestBodyObject(path.slice(2), external);
case "pathItems":
return getHintFromPathItemObject(path.slice(2));
return getHintFromPathItemObject(path.slice(2), external);
}
return "SchemaObject";
}
function getHintFromMediaTypeObject(path: (string | number)[]): Subschema["hint"] {
function getHintFromMediaTypeObject(path: (string | number)[], external: boolean): Subschema["hint"] {
switch (path[0]) {
case "schema":
return getHintFromSchemaObject(path.slice(1));
return getHintFromSchemaObject(path.slice(1), external);
}
return "MediaTypeObject";
}
function getHintFromOperationObject(path: (string | number)[]): Subschema["hint"] {
function getHintFromOperationObject(path: (string | number)[], external: boolean): Subschema["hint"] {
switch (path[0] as keyof OperationObject) {

@@ -362,18 +371,18 @@ case "parameters":

case "requestBody":
return getHintFromRequestBodyObject(path.slice(1));
return getHintFromRequestBodyObject(path.slice(1), external);
case "responses":
return getHintFromResponseObject(path.slice(2)); // skip the response code at [1]
return getHintFromResponseObject(path.slice(2), external); // skip the response code at [1]
}
return "OperationObject";
}
function getHintFromParameterObject(path: (string | number)[]): Subschema["hint"] {
function getHintFromParameterObject(path: (string | number)[], external: boolean): Subschema["hint"] {
switch (path[0]) {
case "content":
return getHintFromMediaTypeObject(path.slice(2)); // skip content type at [1]
return getHintFromMediaTypeObject(path.slice(2), external); // skip content type at [1]
case "schema":
return getHintFromSchemaObject(path.slice(1));
return getHintFromSchemaObject(path.slice(1), external);
}
return "ParameterObject";
}
function getHintFromPathItemObject(path: (string | number)[]): Subschema["hint"] | undefined {
function getHintFromPathItemObject(path: (string | number)[], external: boolean): Subschema["hint"] | undefined {
switch (path[0] as keyof PathItemObject) {

@@ -384,25 +393,25 @@ case "parameters": {

}
return getHintFromParameterObject(path.slice(1));
return getHintFromParameterObject(path.slice(1), external);
}
default:
return getHintFromOperationObject(path.slice(1));
return getHintFromOperationObject(path.slice(1), external);
}
}
function getHintFromRequestBodyObject(path: (string | number)[]): Subschema["hint"] {
function getHintFromRequestBodyObject(path: (string | number)[], external: boolean): Subschema["hint"] {
switch (path[0] as keyof RequestBodyObject) {
case "content":
return getHintFromMediaTypeObject(path.slice(2)); // skip content type at [1]
return getHintFromMediaTypeObject(path.slice(2), external); // skip content type at [1]
}
return "RequestBodyObject";
}
function getHintFromResponseObject(path: (string | number)[]): Subschema["hint"] {
function getHintFromResponseObject(path: (string | number)[], external: boolean): Subschema["hint"] {
switch (path[0] as keyof ResponseObject) {
case "headers":
return getHintFromSchemaObject(path.slice(2)); // skip name at [1]
return getHintFromSchemaObject(path.slice(2), external); // skip name at [1]
case "content":
return getHintFromMediaTypeObject(path.slice(2)); // skip content type at [1]
return getHintFromMediaTypeObject(path.slice(2), external); // skip content type at [1]
}
return "ResponseObject";
}
function getHintFromSchemaObject(path: (string | number)[]): Subschema["hint"] {
function getHintFromSchemaObject(path: (string | number)[], external: boolean): Subschema["hint"] {
switch (path[0]) {

@@ -412,5 +421,10 @@ case "allOf":

case "oneOf":
return getHintFromSchemaObject(path.slice(2)); // skip array index at [1]
return getHintFromSchemaObject(path.slice(2), external); // skip array index at [1]
}
// if this is external, and the path is [filename, key], then the external schema is probably a SchemaMap
if (path.length === 2 && external) {
return "SchemaMap";
}
// otherwise, path length of 1 means partial schema is likely a SchemaObject (or it’s unknown, in which case assume SchemaObject)
return "SchemaObject";
}

@@ -642,2 +642,3 @@ import type { URL } from "node:url";

| { hint: "ResponseObject"; schema: ResponseObject }
| { hint: "SchemaMap"; schema: NonNullable<ComponentsObject["schemas"]> }
| { hint: "SchemaObject"; schema: SchemaObject };

@@ -644,0 +645,0 @@

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc