apollo-conn-gen 0.0.2 → 0.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.
|
@@ -2,12 +2,12 @@ import { OasContext } from '../oasContext.js';
|
|
|
2
2
|
import { Writer } from '../io/writer.js';
|
|
3
3
|
import { IType, Type } from './type.js';
|
|
4
4
|
export declare class CircularRef extends Type {
|
|
5
|
-
ref
|
|
6
|
-
constructor(parent: IType,
|
|
5
|
+
ref?: IType;
|
|
6
|
+
constructor(parent: IType, name: string);
|
|
7
7
|
get id(): string;
|
|
8
8
|
forPrompt(_: OasContext): string;
|
|
9
|
-
add(
|
|
9
|
+
add(_child: IType): void;
|
|
10
10
|
visit(context: OasContext): void;
|
|
11
|
-
generate(context: OasContext,
|
|
11
|
+
generate(context: OasContext, _writer: Writer): void;
|
|
12
12
|
select(context: OasContext, writer: Writer): void;
|
|
13
13
|
}
|
|
@@ -3,19 +3,17 @@ import { Naming } from '../utils/naming.js';
|
|
|
3
3
|
import { Type } from './type.js';
|
|
4
4
|
export class CircularRef extends Type {
|
|
5
5
|
ref;
|
|
6
|
-
constructor(parent,
|
|
7
|
-
super(parent,
|
|
8
|
-
this.ref = ref;
|
|
9
|
-
// this.children = parent.children;
|
|
6
|
+
constructor(parent, name) {
|
|
7
|
+
super(parent, name);
|
|
10
8
|
}
|
|
11
9
|
get id() {
|
|
12
|
-
return `circular-ref:#${this.ref
|
|
10
|
+
return `circular-ref:#${this.ref?.id}`;
|
|
13
11
|
// return this.child.id;
|
|
14
12
|
}
|
|
15
13
|
forPrompt(_) {
|
|
16
14
|
return `${Naming.getRefName(this.ref.name)} (Circular Ref in: ${this.parent?.id})`;
|
|
17
15
|
}
|
|
18
|
-
add(
|
|
16
|
+
add(_child) {
|
|
19
17
|
throw new Error('Should not be adding a child to a circular ref');
|
|
20
18
|
}
|
|
21
19
|
visit(context) {
|
|
@@ -23,7 +21,7 @@ export class CircularRef extends Type {
|
|
|
23
21
|
// Do nothing, this type is always visited.
|
|
24
22
|
trace(context, '<- [circular-ref:visit]', `-> out: ${this.name}`);
|
|
25
23
|
}
|
|
26
|
-
generate(context,
|
|
24
|
+
generate(context, _writer) {
|
|
27
25
|
trace(context, '-> [circular-ref:generate]', `-> in: ${this.name}`);
|
|
28
26
|
// Do nothing, we can't really generate a circular reference.
|
|
29
27
|
trace(context, '<- [circular-ref:generate]', `-> out: ${this.name}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"circularRef.js","sourceRoot":"","sources":["../../../src/oas/nodes/circularRef.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAGxC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAS,IAAI,EAAE,MAAM,WAAW,CAAC;AAExC,MAAM,OAAO,WAAY,SAAQ,IAAI;
|
|
1
|
+
{"version":3,"file":"circularRef.js","sourceRoot":"","sources":["../../../src/oas/nodes/circularRef.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAGxC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAS,IAAI,EAAE,MAAM,WAAW,CAAC;AAExC,MAAM,OAAO,WAAY,SAAQ,IAAI;IAC5B,GAAG,CAAS;IAEnB,YAAY,MAAa,EAAE,IAAY;QACrC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACtB,CAAC;IAED,IAAI,EAAE;QACJ,OAAO,iBAAiB,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC;QACvC,wBAAwB;IAC1B,CAAC;IAEM,SAAS,CAAC,CAAa;QAC5B,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAAI,CAAC,IAAI,CAAC,sBAAsB,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC;IACtF,CAAC;IAEM,GAAG,CAAC,MAAa;QACtB,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IAEM,KAAK,CAAC,OAAmB;QAC9B,KAAK,CAAC,OAAO,EAAE,yBAAyB,EAAE,UAAU,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACjE,2CAA2C;QAC3C,KAAK,CAAC,OAAO,EAAE,yBAAyB,EAAE,WAAW,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACpE,CAAC;IAEM,QAAQ,CAAC,OAAmB,EAAE,OAAe;QAClD,KAAK,CAAC,OAAO,EAAE,4BAA4B,EAAE,UAAU,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACpE,6DAA6D;QAC7D,KAAK,CAAC,OAAO,EAAE,4BAA4B,EAAE,WAAW,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACvE,CAAC;IAEM,MAAM,CAAC,OAAmB,EAAE,MAAc;QAC/C,KAAK,CAAC,OAAO,EAAE,0BAA0B,EAAE,UAAU,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAElE,MAAM;aACH,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;aACzD,MAAM,CACL,4BAA4B,IAAI,CAAC,IAAI,oEAAoE,CAC1G,CAAC;QAEJ,KAAK,CAAC,OAAO,EAAE,0BAA0B,EAAE,WAAW,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACrE,CAAC;CACF","sourcesContent":["import { trace } from '../log/trace.js';\nimport { OasContext } from '../oasContext.js';\nimport { Writer } from '../io/writer.js';\nimport { Naming } from '../utils/naming.js';\nimport { IType, Type } from './type.js';\n\nexport class CircularRef extends Type {\n public ref?: IType;\n\n constructor(parent: IType, name: string) {\n super(parent, name);\n }\n\n get id(): string {\n return `circular-ref:#${this.ref?.id}`;\n // return this.child.id;\n }\n\n public forPrompt(_: OasContext): string {\n return `${Naming.getRefName(this.ref!.name)} (Circular Ref in: ${this.parent?.id})`;\n }\n\n public add(_child: IType): void {\n throw new Error('Should not be adding a child to a circular ref');\n }\n\n public visit(context: OasContext): void {\n trace(context, '-> [circular-ref:visit]', `-> in: ${this.name}`);\n // Do nothing, this type is always visited.\n trace(context, '<- [circular-ref:visit]', `-> out: ${this.name}`);\n }\n\n public generate(context: OasContext, _writer: Writer): void {\n trace(context, '-> [circular-ref:generate]', `-> in: ${this.name}`);\n // Do nothing, we can't really generate a circular reference.\n trace(context, '<- [circular-ref:generate]', `-> out: ${this.name}`);\n }\n\n public select(context: OasContext, writer: Writer): void {\n trace(context, '-> [circular-ref:select]', `-> in: ${this.name}`);\n\n writer\n .append(' '.repeat(context.indent + context.stack.length))\n .append(\n `# Circular reference to '${this.name}' detected! Please re-visit the schema and remove the reference.\\n`,\n );\n\n trace(context, '<- [circular-ref:select]', `-> out: ${this.name}`);\n }\n}\n"]}
|
|
@@ -163,7 +163,9 @@ export class Factory {
|
|
|
163
163
|
return new Param(parent, param.name, schema, required, schema.default, param);
|
|
164
164
|
}
|
|
165
165
|
static fromCircularRef(parent, child) {
|
|
166
|
-
|
|
166
|
+
const circularRef = new CircularRef(parent, child.name);
|
|
167
|
+
circularRef.ref = child;
|
|
168
|
+
return circularRef;
|
|
167
169
|
}
|
|
168
170
|
static fromUnion(_context, parent, oneOfs) {
|
|
169
171
|
const union = new Union(parent, parent.name, oneOfs);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/oas/nodes/factory.ts"],"names":[],"mappings":"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","sourcesContent":["import { Operation } from 'oas/operation';\nimport { ParameterObject, SchemaObject } from 'oas/types';\nimport { OpenAPIV3 } from 'openapi-types';\nimport ArraySchemaObject = OpenAPIV3.ArraySchemaObject;\nimport _ from 'lodash';\nimport { IType } from './type.js';\nimport { trace, warn } from '../log/trace.js';\nimport { OasContext } from '../oasContext.js';\nimport { Naming } from '../utils/naming.js';\nimport { GqlUtils } from '../utils/gql.js';\nimport { Arr } from './arr.js';\nimport { CircularRef } from './circularRef.js';\nimport { Composed } from './comp.js';\nimport { En } from './en.js';\nimport { Get } from './get.js';\nimport { Obj } from './obj.js';\nimport { Param } from './param/param.js';\nimport { Prop } from './props/prop.js';\nimport { PropArray } from './props/propArray.js';\nimport { PropObj } from './props/propObj.js';\nimport { PropRef } from './props/propRef.js';\nimport { PropScalar } from './props/propScalar.js';\nimport { Ref } from './ref.js';\nimport { Response } from './response.js';\nimport { Union } from './union.js';\nimport { Scalar } from './scalar.js';\nimport { ReferenceObject } from './props/referenceObject.js';\n\nexport class Factory {\n public static createGet(name: string, op: Operation): Get {\n return new Get(name, op);\n }\n\n public static fromSchema(parent: IType, schema: SchemaObject): IType {\n let result: IType | null = null;\n\n if ('$ref' in schema) {\n result = new Ref(parent, schema.$ref as string, schema as ReferenceObject);\n }\n // array case\n else if (schema.type === 'array' && schema.items) {\n // Array schema case.\n let parentName = parent.name;\n if (parent instanceof Response) {\n // Assume parent.parent is a GetOp.\n const get = parent.parent as Get;\n parentName = _.upperFirst(get.getGqlOpName());\n } else {\n trace(null, '[factory]', 'Factory.fromSchema >>> HERE');\n }\n result = new Arr(parent, parentName, schema.items as ArraySchemaObject);\n (result as Arr).itemsType = Factory.fromSchema(result, schema.items as ArraySchemaObject);\n }\n // array case\n else if (schema.type === 'object') {\n if (schema.allOf || schema.oneOf) {\n result = new Composed(parent, _.get(schema, 'name') || parent.name, schema);\n } else {\n if (!schema.properties) {\n warn(\n null,\n '[factory]',\n 'Object has no properties: ' + JSON.stringify(schema, null, 2) + ' in: ' + parent.pathToRoot(),\n );\n }\n\n result = new Obj(parent, _.get(schema, 'name') || null, schema);\n }\n }\n // Composed schema case.\n else if (schema.allOf || schema.oneOf) {\n result = new Composed(parent, _.get(schema, 'name') || parent.name, schema);\n }\n // scalar\n else {\n const typeStr = schema.type;\n if (typeStr != null) {\n if (typeStr === 'array') {\n throw new Error(`Should have been handled already? ${typeStr}, schema: ${JSON.stringify(schema)}`);\n } else if (schema.enum != null) {\n result = new En(parent, schema, schema.enum! as string[]);\n }\n // scalar case\n else if (GqlUtils.gqlScalar(typeStr as string)) {\n const scalarType = GqlUtils.getGQLScalarType(schema);\n result = new Scalar(parent, scalarType, schema);\n } else {\n throw new Error(`Cannot handle property type ${typeStr}, schema: ${JSON.stringify(schema)}`);\n }\n } else if (schema.enum != null) {\n result = new En(parent, schema, _.get(schema, 'enum') as string[]);\n } else {\n throw new Error(`Cannot handle schema ${parent.pathToRoot()}, schema: ${JSON.stringify(schema)}`);\n }\n }\n\n if (result != null) {\n parent.add(result);\n } else {\n throw new Error(`Not yet implemented for ${JSON.stringify(schema)}`);\n }\n\n return result;\n }\n\n public static fromProp(context: OasContext, parent: IType, propertyName: string, schema: SchemaObject): Prop {\n if (!schema) {\n throw new Error(`Should have a schema defined for property '${propertyName}' (parent: '${parent.name}')`);\n }\n\n const type = schema.type;\n let prop: Prop;\n\n if (!type && '$ref' in schema) {\n prop = new PropRef(parent, propertyName, schema, (schema as ReferenceObject).$ref);\n }\n // uses the type of the schema to find out what kind of property it is\n else if (type) {\n // 1st case is if the type is an array\n if (type === 'array') {\n const array = new PropArray(parent, propertyName, schema);\n\n const itemsName = Naming.genArrayItems(propertyName);\n const itemsType = Factory.fromProp(context, array, itemsName, schema.items as ArraySchemaObject);\n\n array.setItems(itemsType);\n\n prop = array;\n }\n // 2nd checks for obj property\n else if (type === 'object') {\n // the type of the property will be an object, which needs to be added as a child\n const propType: IType = new Obj(parent, propertyName, schema);\n prop = new PropObj(parent, propertyName, schema, propType);\n }\n // 3rd tries for scalar\n else if (GqlUtils.gqlScalar(type as string)) {\n const scalar = GqlUtils.gqlScalar(type as string);\n prop = new PropScalar(parent, propertyName, scalar as string, schema);\n }\n // or we don't know how to handle this\n else {\n throw new Error('Cannot handle property type ' + type);\n }\n }\n // otherwise let's use the properties instead and assume an Obj\n else if (schema.properties != null) {\n const propType: IType = new Obj(parent, propertyName, schema);\n prop = new PropObj(parent, propertyName, schema, propType);\n }\n // default case, we don't know what to do so we'll create a scalar of type JSON\n else {\n prop = new PropScalar(parent, propertyName, 'JSON', schema);\n }\n\n if (parent.ancestors().includes(prop)) {\n console.warn('[factory] Recursion detected! Ancestors already contain this type: \\n' + prop.pathToRoot());\n }\n\n return prop;\n }\n\n public static fromResponse(_context: OasContext, parent: IType, mediaSchema: SchemaObject): IType {\n // const content = Factory.fromSchema(response, mediaSchema);\n // response.response = content;\n return new Response(parent, 'r', mediaSchema);\n }\n\n public static fromParam(context: OasContext, parent: IType, p: ParameterObject | ReferenceObject): Param {\n let param: ParameterObject;\n\n if ('$ref' in p) {\n const ref: ReferenceObject = p as ReferenceObject;\n const schema = context.lookupParam(ref.$ref);\n\n if (!schema) {\n throw new Error('Schema not found for ref: ' + ref.$ref);\n }\n param = schema as ParameterObject;\n } else {\n param = p as ParameterObject;\n }\n\n const schema = param.schema as SchemaObject;\n const required = param.required === true;\n\n return new Param(parent, param.name, schema, required, schema.default, param);\n }\n\n public static fromCircularRef(parent: IType, child: IType): IType {\n return new CircularRef(parent, child);\n }\n\n public static fromUnion(_context: OasContext, parent: IType, oneOfs: SchemaObject[]): IType {\n const union = new Union(parent, parent.name, oneOfs);\n parent.add(union);\n return union;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/oas/nodes/factory.ts"],"names":[],"mappings":"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","sourcesContent":["import { Operation } from 'oas/operation';\nimport { ParameterObject, SchemaObject } from 'oas/types';\nimport { OpenAPIV3 } from 'openapi-types';\nimport ArraySchemaObject = OpenAPIV3.ArraySchemaObject;\nimport _ from 'lodash';\nimport { IType } from './type.js';\nimport { trace, warn } from '../log/trace.js';\nimport { OasContext } from '../oasContext.js';\nimport { Naming } from '../utils/naming.js';\nimport { GqlUtils } from '../utils/gql.js';\nimport { Arr } from './arr.js';\nimport { CircularRef } from './circularRef.js';\nimport { Composed } from './comp.js';\nimport { En } from './en.js';\nimport { Get } from './get.js';\nimport { Obj } from './obj.js';\nimport { Param } from './param/param.js';\nimport { Prop } from './props/prop.js';\nimport { PropArray } from './props/propArray.js';\nimport { PropObj } from './props/propObj.js';\nimport { PropRef } from './props/propRef.js';\nimport { PropScalar } from './props/propScalar.js';\nimport { Ref } from './ref.js';\nimport { Response } from './response.js';\nimport { Union } from './union.js';\nimport { Scalar } from './scalar.js';\nimport { ReferenceObject } from './props/referenceObject.js';\n\nexport class Factory {\n public static createGet(name: string, op: Operation): Get {\n return new Get(name, op);\n }\n\n public static fromSchema(parent: IType, schema: SchemaObject): IType {\n let result: IType | null = null;\n\n if ('$ref' in schema) {\n result = new Ref(parent, schema.$ref as string, schema as ReferenceObject);\n }\n // array case\n else if (schema.type === 'array' && schema.items) {\n // Array schema case.\n let parentName = parent.name;\n if (parent instanceof Response) {\n // Assume parent.parent is a GetOp.\n const get = parent.parent as Get;\n parentName = _.upperFirst(get.getGqlOpName());\n } else {\n trace(null, '[factory]', 'Factory.fromSchema >>> HERE');\n }\n result = new Arr(parent, parentName, schema.items as ArraySchemaObject);\n (result as Arr).itemsType = Factory.fromSchema(result, schema.items as ArraySchemaObject);\n }\n // array case\n else if (schema.type === 'object') {\n if (schema.allOf || schema.oneOf) {\n result = new Composed(parent, _.get(schema, 'name') || parent.name, schema);\n } else {\n if (!schema.properties) {\n warn(\n null,\n '[factory]',\n 'Object has no properties: ' + JSON.stringify(schema, null, 2) + ' in: ' + parent.pathToRoot(),\n );\n }\n\n result = new Obj(parent, _.get(schema, 'name') || null, schema);\n }\n }\n // Composed schema case.\n else if (schema.allOf || schema.oneOf) {\n result = new Composed(parent, _.get(schema, 'name') || parent.name, schema);\n }\n // scalar\n else {\n const typeStr = schema.type;\n if (typeStr != null) {\n if (typeStr === 'array') {\n throw new Error(`Should have been handled already? ${typeStr}, schema: ${JSON.stringify(schema)}`);\n } else if (schema.enum != null) {\n result = new En(parent, schema, schema.enum! as string[]);\n }\n // scalar case\n else if (GqlUtils.gqlScalar(typeStr as string)) {\n const scalarType = GqlUtils.getGQLScalarType(schema);\n result = new Scalar(parent, scalarType, schema);\n } else {\n throw new Error(`Cannot handle property type ${typeStr}, schema: ${JSON.stringify(schema)}`);\n }\n } else if (schema.enum != null) {\n result = new En(parent, schema, _.get(schema, 'enum') as string[]);\n } else {\n throw new Error(`Cannot handle schema ${parent.pathToRoot()}, schema: ${JSON.stringify(schema)}`);\n }\n }\n\n if (result != null) {\n parent.add(result);\n } else {\n throw new Error(`Not yet implemented for ${JSON.stringify(schema)}`);\n }\n\n return result;\n }\n\n public static fromProp(context: OasContext, parent: IType, propertyName: string, schema: SchemaObject): Prop {\n if (!schema) {\n throw new Error(`Should have a schema defined for property '${propertyName}' (parent: '${parent.name}')`);\n }\n\n const type = schema.type;\n let prop: Prop;\n\n if (!type && '$ref' in schema) {\n prop = new PropRef(parent, propertyName, schema, (schema as ReferenceObject).$ref);\n }\n // uses the type of the schema to find out what kind of property it is\n else if (type) {\n // 1st case is if the type is an array\n if (type === 'array') {\n const array = new PropArray(parent, propertyName, schema);\n\n const itemsName = Naming.genArrayItems(propertyName);\n const itemsType = Factory.fromProp(context, array, itemsName, schema.items as ArraySchemaObject);\n\n array.setItems(itemsType);\n\n prop = array;\n }\n // 2nd checks for obj property\n else if (type === 'object') {\n // the type of the property will be an object, which needs to be added as a child\n const propType: IType = new Obj(parent, propertyName, schema);\n prop = new PropObj(parent, propertyName, schema, propType);\n }\n // 3rd tries for scalar\n else if (GqlUtils.gqlScalar(type as string)) {\n const scalar = GqlUtils.gqlScalar(type as string);\n prop = new PropScalar(parent, propertyName, scalar as string, schema);\n }\n // or we don't know how to handle this\n else {\n throw new Error('Cannot handle property type ' + type);\n }\n }\n // otherwise let's use the properties instead and assume an Obj\n else if (schema.properties != null) {\n const propType: IType = new Obj(parent, propertyName, schema);\n prop = new PropObj(parent, propertyName, schema, propType);\n }\n // default case, we don't know what to do so we'll create a scalar of type JSON\n else {\n prop = new PropScalar(parent, propertyName, 'JSON', schema);\n }\n\n if (parent.ancestors().includes(prop)) {\n console.warn('[factory] Recursion detected! Ancestors already contain this type: \\n' + prop.pathToRoot());\n }\n\n return prop;\n }\n\n public static fromResponse(_context: OasContext, parent: IType, mediaSchema: SchemaObject): IType {\n // const content = Factory.fromSchema(response, mediaSchema);\n // response.response = content;\n return new Response(parent, 'r', mediaSchema);\n }\n\n public static fromParam(context: OasContext, parent: IType, p: ParameterObject | ReferenceObject): Param {\n let param: ParameterObject;\n\n if ('$ref' in p) {\n const ref: ReferenceObject = p as ReferenceObject;\n const schema = context.lookupParam(ref.$ref);\n\n if (!schema) {\n throw new Error('Schema not found for ref: ' + ref.$ref);\n }\n param = schema as ParameterObject;\n } else {\n param = p as ParameterObject;\n }\n\n const schema = param.schema as SchemaObject;\n const required = param.required === true;\n\n return new Param(parent, param.name, schema, required, schema.default, param);\n }\n\n public static fromCircularRef(parent: IType, child: IType): IType {\n const circularRef = new CircularRef(parent, child.name);\n circularRef.ref = child;\n return circularRef;\n }\n\n public static fromUnion(_context: OasContext, parent: IType, oneOfs: SchemaObject[]): IType {\n const union = new Union(parent, parent.name, oneOfs);\n parent.add(union);\n return union;\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "apollo-conn-gen",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.3",
|
|
4
4
|
"description": "Library to generate Apollo connector schemas from OpenAPI specs or JSON payloads. Also includes a CLI to generate connectors from the command line.",
|
|
5
5
|
"author": "Fernando @ Apollo",
|
|
6
6
|
"license": "MIT",
|