@danceroutine/tango-openapi 1.6.0 → 1.8.0

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.
@@ -1,9 +1,9 @@
1
- import type { APIViewMethod, ModelSerializerClass, SerializerSchema } from '@danceroutine/tango-resources';
1
+ import type { APIViewMethod, AnyModelSerializer, AnyModelSerializerClass } from '@danceroutine/tango-resources';
2
2
  import type { OpenAPIViewSetDescriptor, OpenAPIGenericAPIViewDescriptor, OpenAPIAPIViewDescriptor } from './types';
3
- export declare function describeViewSet(descriptor: Omit<OpenAPIViewSetDescriptor, 'kind'>): OpenAPIViewSetDescriptor;
4
- export declare function describeViewSet<TModel extends Record<string, unknown>, TSerializer extends ModelSerializerClass<TModel, SerializerSchema, SerializerSchema, SerializerSchema>>(descriptor: Omit<OpenAPIViewSetDescriptor<TModel, TSerializer>, 'kind'>): OpenAPIViewSetDescriptor<TModel, TSerializer>;
5
- export declare function describeGenericAPIView(descriptor: Omit<OpenAPIGenericAPIViewDescriptor, 'kind'>): OpenAPIGenericAPIViewDescriptor;
6
- export declare function describeGenericAPIView<TModel extends Record<string, unknown>, TSerializer extends ModelSerializerClass<TModel, SerializerSchema, SerializerSchema, SerializerSchema>>(descriptor: Omit<OpenAPIGenericAPIViewDescriptor<TModel, TSerializer>, 'kind'>): OpenAPIGenericAPIViewDescriptor<TModel, TSerializer>;
3
+ export declare function describeViewSet(descriptor: Omit<OpenAPIViewSetDescriptor<Record<string, unknown>, AnyModelSerializerClass>, 'kind'>): OpenAPIViewSetDescriptor;
4
+ export declare function describeViewSet<TModel extends Record<string, unknown>, TSerializer extends AnyModelSerializer<TModel> = AnyModelSerializer<TModel>>(descriptor: Omit<OpenAPIViewSetDescriptor<TModel, TSerializer>, 'kind'>): OpenAPIViewSetDescriptor<TModel, TSerializer>;
5
+ export declare function describeGenericAPIView(descriptor: Omit<OpenAPIGenericAPIViewDescriptor<Record<string, unknown>, AnyModelSerializerClass>, 'kind'>): OpenAPIGenericAPIViewDescriptor;
6
+ export declare function describeGenericAPIView<TModel extends Record<string, unknown>, TSerializer extends AnyModelSerializer<TModel> = AnyModelSerializer<TModel>>(descriptor: Omit<OpenAPIGenericAPIViewDescriptor<TModel, TSerializer>, 'kind'>): OpenAPIGenericAPIViewDescriptor<TModel, TSerializer>;
7
7
  export declare function describeAPIView(descriptor: Omit<OpenAPIAPIViewDescriptor, 'kind'>): OpenAPIAPIViewDescriptor;
8
8
  export declare function describeAPIView<TMethods extends Partial<Record<APIViewMethod, OpenAPIAPIViewDescriptor['methods'][APIViewMethod]>>>(descriptor: Omit<OpenAPIAPIViewDescriptor, 'kind'> & {
9
9
  methods: TMethods;
@@ -1,4 +1,4 @@
1
- import type { APIView, APIViewMethod, GenericAPIView, ModelSerializerClass, ModelViewSet, SerializerSchema } from '@danceroutine/tango-resources';
1
+ import type { APIView, APIViewMethod, AnyModelSerializer, AnyModelSerializerClass, GenericAPIView, ModelViewSet } from '@danceroutine/tango-resources';
2
2
  import type { z } from 'zod';
3
3
  /** Model field metadata used by low-level model-to-schema OpenAPI generation. */
4
4
  export type OpenAPIModelFieldMeta = {
@@ -125,14 +125,14 @@ export interface OpenAPIOptions {
125
125
  description?: string;
126
126
  }>;
127
127
  }
128
- export type OpenAPIViewSetDescriptor<TModel extends Record<string, unknown> = Record<string, unknown>, TSerializer extends ModelSerializerClass<TModel, SerializerSchema, SerializerSchema, SerializerSchema> = ModelSerializerClass<TModel, SerializerSchema, SerializerSchema, SerializerSchema>> = {
128
+ export type OpenAPIViewSetDescriptor<TModel extends Record<string, unknown> = Record<string, unknown>, TSerializer extends AnyModelSerializer<TModel> = AnyModelSerializer<TModel>> = {
129
129
  kind: 'viewset';
130
130
  basePath: string;
131
131
  resource: ModelViewSet<TModel, TSerializer>;
132
132
  tags?: string[];
133
133
  actions?: Record<string, OpenAPIOperationOverride>;
134
134
  };
135
- export type OpenAPIGenericAPIViewDescriptor<TModel extends Record<string, unknown> = Record<string, unknown>, TSerializer extends ModelSerializerClass<TModel, SerializerSchema, SerializerSchema, SerializerSchema> = ModelSerializerClass<TModel, SerializerSchema, SerializerSchema, SerializerSchema>> = {
135
+ export type OpenAPIGenericAPIViewDescriptor<TModel extends Record<string, unknown> = Record<string, unknown>, TSerializer extends AnyModelSerializer<TModel> = AnyModelSerializer<TModel>> = {
136
136
  kind: 'generic';
137
137
  collectionPath?: string;
138
138
  detailPath?: string;
@@ -147,8 +147,21 @@ export type OpenAPIAPIViewDescriptor = {
147
147
  tags?: string[];
148
148
  methods: Partial<Record<APIViewMethod, OpenAPIOperationOverride>>;
149
149
  };
150
- type AnyOpenAPIViewSetDescriptor = OpenAPIViewSetDescriptor<any, any>;
151
- type AnyOpenAPIGenericAPIViewDescriptor = OpenAPIGenericAPIViewDescriptor<any, any>;
150
+ type AnyOpenAPIViewSetDescriptor = {
151
+ kind: 'viewset';
152
+ basePath: string;
153
+ resource: ModelViewSet<any, AnyModelSerializerClass>;
154
+ tags?: string[];
155
+ actions?: Record<string, OpenAPIOperationOverride>;
156
+ };
157
+ type AnyOpenAPIGenericAPIViewDescriptor = {
158
+ kind: 'generic';
159
+ collectionPath?: string;
160
+ detailPath?: string;
161
+ resource: GenericAPIView<any, AnyModelSerializerClass>;
162
+ tags?: string[];
163
+ methods?: Partial<Record<APIViewMethod, OpenAPIOperationOverride>>;
164
+ };
152
165
  export type OpenAPIResourceDescriptor = AnyOpenAPIViewSetDescriptor | AnyOpenAPIGenericAPIViewDescriptor | OpenAPIAPIViewDescriptor;
153
166
  /** Extended generator configuration used by Tango's OpenAPI builder. */
154
167
  export type OpenAPIGeneratorConfig = OpenAPIOptions & {
@@ -1 +1 @@
1
- {"version":3,"file":"domain-B-7sApJT.js","names":["descriptor: Omit<OpenAPIViewSetDescriptor, 'kind'>","descriptor: Omit<OpenAPIGenericAPIViewDescriptor, 'kind'>","descriptor: Omit<OpenAPIAPIViewDescriptor, 'kind'>"],"sources":["../src/domain/describeResources.ts","../src/domain/index.ts"],"sourcesContent":["import type { APIViewMethod, ModelSerializerClass, SerializerSchema } from '@danceroutine/tango-resources';\nimport type { OpenAPIViewSetDescriptor, OpenAPIGenericAPIViewDescriptor, OpenAPIAPIViewDescriptor } from './types';\n\nexport function describeViewSet(descriptor: Omit<OpenAPIViewSetDescriptor, 'kind'>): OpenAPIViewSetDescriptor;\nexport function describeViewSet<\n TModel extends Record<string, unknown>,\n TSerializer extends ModelSerializerClass<TModel, SerializerSchema, SerializerSchema, SerializerSchema>,\n>(\n descriptor: Omit<OpenAPIViewSetDescriptor<TModel, TSerializer>, 'kind'>\n): OpenAPIViewSetDescriptor<TModel, TSerializer>;\nexport function describeViewSet(descriptor: Omit<OpenAPIViewSetDescriptor, 'kind'>) {\n return {\n kind: 'viewset',\n ...descriptor,\n };\n}\n\nexport function describeGenericAPIView(\n descriptor: Omit<OpenAPIGenericAPIViewDescriptor, 'kind'>\n): OpenAPIGenericAPIViewDescriptor;\nexport function describeGenericAPIView<\n TModel extends Record<string, unknown>,\n TSerializer extends ModelSerializerClass<TModel, SerializerSchema, SerializerSchema, SerializerSchema>,\n>(\n descriptor: Omit<OpenAPIGenericAPIViewDescriptor<TModel, TSerializer>, 'kind'>\n): OpenAPIGenericAPIViewDescriptor<TModel, TSerializer>;\nexport function describeGenericAPIView(descriptor: Omit<OpenAPIGenericAPIViewDescriptor, 'kind'>) {\n return {\n kind: 'generic',\n ...descriptor,\n };\n}\n\nexport function describeAPIView(descriptor: Omit<OpenAPIAPIViewDescriptor, 'kind'>): OpenAPIAPIViewDescriptor;\nexport function describeAPIView<\n TMethods extends Partial<Record<APIViewMethod, OpenAPIAPIViewDescriptor['methods'][APIViewMethod]>>,\n>(descriptor: Omit<OpenAPIAPIViewDescriptor, 'kind'> & { methods: TMethods }): OpenAPIAPIViewDescriptor;\nexport function describeAPIView(descriptor: Omit<OpenAPIAPIViewDescriptor, 'kind'>) {\n return {\n kind: 'api',\n ...descriptor,\n };\n}\n","/**\n * Domain boundary barrel: centralizes this subdomain's public contract.\n */\n\nexport type {\n ComponentsObject,\n MediaTypeObject,\n OperationObject,\n OpenAPIAPIViewDescriptor,\n OpenAPIModel,\n OpenAPIModelFieldMeta,\n OpenAPIOptions,\n OpenAPIOperationOverride,\n OpenAPIResponseOverride,\n OpenAPIResourceDescriptor,\n OpenAPISchemaInput,\n OpenAPISpec,\n OpenAPIGeneratorConfig,\n OpenAPIGenericAPIViewDescriptor,\n OpenAPIViewSetDescriptor,\n ParameterObject,\n PathItemObject,\n ReferenceObject,\n RequestBodyObject,\n ResponseObject,\n SchemaObject,\n} from './types';\nexport { describeAPIView, describeGenericAPIView, describeViewSet } from './describeResources';\n"],"mappings":";;;AAUO,SAAS,gBAAgBA,YAAoD;AAChF,QAAO;EACH,MAAM;EACN,GAAG;CACN;AACJ;AAWM,SAAS,uBAAuBC,YAA2D;AAC9F,QAAO;EACH,MAAM;EACN,GAAG;CACN;AACJ;AAMM,SAAS,gBAAgBC,YAAoD;AAChF,QAAO;EACH,MAAM;EACN,GAAG;CACN;AACJ"}
1
+ {"version":3,"file":"domain-B-7sApJT.js","names":["descriptor: Omit<OpenAPIViewSetDescriptor, 'kind'>","descriptor: Omit<OpenAPIGenericAPIViewDescriptor, 'kind'>","descriptor: Omit<OpenAPIAPIViewDescriptor, 'kind'>"],"sources":["../src/domain/describeResources.ts","../src/domain/index.ts"],"sourcesContent":["import type { APIViewMethod, AnyModelSerializer, AnyModelSerializerClass } from '@danceroutine/tango-resources';\nimport type { OpenAPIViewSetDescriptor, OpenAPIGenericAPIViewDescriptor, OpenAPIAPIViewDescriptor } from './types';\n\nexport function describeViewSet(\n descriptor: Omit<\n OpenAPIViewSetDescriptor<\n Record<string, unknown>,\n // oxlint-disable-next-line typescript/no-explicit-any\n AnyModelSerializerClass\n >,\n 'kind'\n >\n): OpenAPIViewSetDescriptor;\nexport function describeViewSet<\n TModel extends Record<string, unknown>,\n TSerializer extends AnyModelSerializer<TModel> = AnyModelSerializer<TModel>,\n>(\n descriptor: Omit<OpenAPIViewSetDescriptor<TModel, TSerializer>, 'kind'>\n): OpenAPIViewSetDescriptor<TModel, TSerializer>;\nexport function describeViewSet(descriptor: Omit<OpenAPIViewSetDescriptor, 'kind'>) {\n return {\n kind: 'viewset',\n ...descriptor,\n };\n}\n\nexport function describeGenericAPIView(\n descriptor: Omit<\n OpenAPIGenericAPIViewDescriptor<\n Record<string, unknown>,\n // oxlint-disable-next-line typescript/no-explicit-any\n AnyModelSerializerClass\n >,\n 'kind'\n >\n): OpenAPIGenericAPIViewDescriptor;\nexport function describeGenericAPIView<\n TModel extends Record<string, unknown>,\n TSerializer extends AnyModelSerializer<TModel> = AnyModelSerializer<TModel>,\n>(\n descriptor: Omit<OpenAPIGenericAPIViewDescriptor<TModel, TSerializer>, 'kind'>\n): OpenAPIGenericAPIViewDescriptor<TModel, TSerializer>;\nexport function describeGenericAPIView(descriptor: Omit<OpenAPIGenericAPIViewDescriptor, 'kind'>) {\n return {\n kind: 'generic',\n ...descriptor,\n };\n}\n\nexport function describeAPIView(descriptor: Omit<OpenAPIAPIViewDescriptor, 'kind'>): OpenAPIAPIViewDescriptor;\nexport function describeAPIView<\n TMethods extends Partial<Record<APIViewMethod, OpenAPIAPIViewDescriptor['methods'][APIViewMethod]>>,\n>(descriptor: Omit<OpenAPIAPIViewDescriptor, 'kind'> & { methods: TMethods }): OpenAPIAPIViewDescriptor;\nexport function describeAPIView(descriptor: Omit<OpenAPIAPIViewDescriptor, 'kind'>) {\n return {\n kind: 'api',\n ...descriptor,\n };\n}\n","/**\n * Domain boundary barrel: centralizes this subdomain's public contract.\n */\n\nexport type {\n ComponentsObject,\n MediaTypeObject,\n OperationObject,\n OpenAPIAPIViewDescriptor,\n OpenAPIModel,\n OpenAPIModelFieldMeta,\n OpenAPIOptions,\n OpenAPIOperationOverride,\n OpenAPIResponseOverride,\n OpenAPIResourceDescriptor,\n OpenAPISchemaInput,\n OpenAPISpec,\n OpenAPIGeneratorConfig,\n OpenAPIGenericAPIViewDescriptor,\n OpenAPIViewSetDescriptor,\n ParameterObject,\n PathItemObject,\n ReferenceObject,\n RequestBodyObject,\n ResponseObject,\n SchemaObject,\n} from './types';\nexport { describeAPIView, describeGenericAPIView, describeViewSet } from './describeResources';\n"],"mappings":";;;AAmBO,SAAS,gBAAgBA,YAAoD;AAChF,QAAO;EACH,MAAM;EACN,GAAG;CACN;AACJ;AAkBM,SAAS,uBAAuBC,YAA2D;AAC9F,QAAO;EACH,MAAM;EACN,GAAG;CACN;AACJ;AAMM,SAAS,gBAAgBC,YAAoD;AAChF,QAAO;EACH,MAAM;EACN,GAAG;CACN;AACJ"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@danceroutine/tango-openapi",
3
- "version": "1.6.0",
3
+ "version": "1.8.0",
4
4
  "description": "OpenAPI generation for Tango resources",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -41,15 +41,15 @@
41
41
  },
42
42
  "dependencies": {
43
43
  "zod": "^4.0.0",
44
- "@danceroutine/tango-resources": "1.6.0"
44
+ "@danceroutine/tango-resources": "1.8.0"
45
45
  },
46
46
  "devDependencies": {
47
47
  "@types/node": "^22.9.0",
48
48
  "tsdown": "^0.4.0",
49
49
  "typescript": "^5.6.3",
50
50
  "vitest": "^4.0.6",
51
- "@danceroutine/tango-core": "1.6.0",
52
- "@danceroutine/tango-testing": "1.6.0"
51
+ "@danceroutine/tango-core": "1.8.0",
52
+ "@danceroutine/tango-testing": "1.8.0"
53
53
  },
54
54
  "scripts": {
55
55
  "build": "tsdown",