@geekmidas/schema 0.0.1
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/README.md +351 -0
- package/dist/conversion-CH_EmflL.d.cts +30 -0
- package/dist/conversion-Civd6bIU.mjs +89 -0
- package/dist/conversion-Civd6bIU.mjs.map +1 -0
- package/dist/conversion-CrSNoSRa.cjs +125 -0
- package/dist/conversion-CrSNoSRa.cjs.map +1 -0
- package/dist/conversion-DUyZYTWO.d.mts +30 -0
- package/dist/conversion.cjs +8 -0
- package/dist/conversion.d.cts +2 -0
- package/dist/conversion.d.mts +2 -0
- package/dist/conversion.mjs +3 -0
- package/dist/index.cjs +7 -0
- package/dist/index.d.cts +4 -0
- package/dist/index.d.mts +4 -0
- package/dist/index.mjs +4 -0
- package/dist/openapi-DH5yCqKh.mjs +46 -0
- package/dist/openapi-DH5yCqKh.mjs.map +1 -0
- package/dist/openapi-DR4_PG-e.d.cts +26 -0
- package/dist/openapi-DVvLYx-8.cjs +58 -0
- package/dist/openapi-DVvLYx-8.cjs.map +1 -0
- package/dist/openapi-j01kFjpI.d.mts +26 -0
- package/dist/openapi.cjs +4 -0
- package/dist/openapi.d.cts +2 -0
- package/dist/openapi.d.mts +2 -0
- package/dist/openapi.mjs +3 -0
- package/dist/parser.cjs +23 -0
- package/dist/parser.cjs.map +1 -0
- package/dist/parser.d.cts +17 -0
- package/dist/parser.d.mts +17 -0
- package/dist/parser.mjs +21 -0
- package/dist/parser.mjs.map +1 -0
- package/dist/types-ByLHeRGs.d.mts +13 -0
- package/dist/types-DfcgE7cO.d.cts +13 -0
- package/dist/types.cjs +0 -0
- package/dist/types.d.cts +2 -0
- package/dist/types.d.mts +2 -0
- package/dist/types.mjs +0 -0
- package/package.json +44 -0
- package/src/__tests__/conversion.spec.ts +319 -0
- package/src/__tests__/openapi.spec.ts +396 -0
- package/src/__tests__/parser.spec.ts +236 -0
- package/src/conversion.ts +199 -0
- package/src/index.ts +15 -0
- package/src/openapi.ts +75 -0
- package/src/parser.ts +30 -0
- package/src/types.ts +23 -0
- package/tsdown.config.ts +5 -0
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { SchemaVendor, StandardSchemaJsonSchema, convertSchemaWithComponents, convertStandardSchemaToJsonSchema, getSchemaMetadata, getZodMetadata } from "./conversion-Civd6bIU.mjs";
|
|
2
|
+
|
|
3
|
+
export { SchemaVendor, StandardSchemaJsonSchema, convertSchemaWithComponents, convertStandardSchemaToJsonSchema, getSchemaMetadata, getZodMetadata };
|
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
const require_conversion = require('./conversion-CrSNoSRa.cjs');
|
|
2
|
+
const require_openapi = require('./openapi-DVvLYx-8.cjs');
|
|
3
|
+
|
|
4
|
+
exports.buildOpenApiSchema = require_openapi.buildOpenApiSchema;
|
|
5
|
+
exports.convertSchemaWithComponents = require_conversion.convertSchemaWithComponents;
|
|
6
|
+
exports.convertStandardSchemaToJsonSchema = require_conversion.convertStandardSchemaToJsonSchema;
|
|
7
|
+
exports.createComponentCollector = require_openapi.createComponentCollector;
|
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { convertSchemaWithComponents, convertStandardSchemaToJsonSchema } from "./conversion-CH_EmflL.cjs";
|
|
2
|
+
import { ComposableStandardSchema, InferComposableStandardSchema, InferStandardSchema } from "./types-DfcgE7cO.cjs";
|
|
3
|
+
import { ComponentCollector, OpenApiSchemaOptions, buildOpenApiSchema, createComponentCollector } from "./openapi-DR4_PG-e.cjs";
|
|
4
|
+
export { ComponentCollector, ComposableStandardSchema, InferComposableStandardSchema, InferStandardSchema, OpenApiSchemaOptions, buildOpenApiSchema, convertSchemaWithComponents, convertStandardSchemaToJsonSchema, createComponentCollector };
|
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { convertSchemaWithComponents, convertStandardSchemaToJsonSchema } from "./conversion-DUyZYTWO.mjs";
|
|
2
|
+
import { ComposableStandardSchema, InferComposableStandardSchema, InferStandardSchema } from "./types-ByLHeRGs.mjs";
|
|
3
|
+
import { ComponentCollector, OpenApiSchemaOptions, buildOpenApiSchema, createComponentCollector } from "./openapi-j01kFjpI.mjs";
|
|
4
|
+
export { ComponentCollector, ComposableStandardSchema, InferComposableStandardSchema, InferStandardSchema, OpenApiSchemaOptions, buildOpenApiSchema, convertSchemaWithComponents, convertStandardSchemaToJsonSchema, createComponentCollector };
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { convertSchemaWithComponents, convertStandardSchemaToJsonSchema } from "./conversion-Civd6bIU.mjs";
|
|
2
|
+
import { buildOpenApiSchema, createComponentCollector } from "./openapi-DH5yCqKh.mjs";
|
|
3
|
+
|
|
4
|
+
export { buildOpenApiSchema, convertSchemaWithComponents, convertStandardSchemaToJsonSchema, createComponentCollector };
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
//#region src/openapi.ts
|
|
2
|
+
function createComponentCollector() {
|
|
3
|
+
const schemas = {};
|
|
4
|
+
return {
|
|
5
|
+
schemas,
|
|
6
|
+
addSchema(id, schema) {
|
|
7
|
+
schemas[id] = schema;
|
|
8
|
+
},
|
|
9
|
+
getReference(id) {
|
|
10
|
+
return { $ref: `#/components/schemas/${id}` };
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Builds OpenAPI 3.1 schema from an array of endpoints.
|
|
16
|
+
*
|
|
17
|
+
* Note: This function requires endpoints with toOpenApi3Route method.
|
|
18
|
+
* The actual implementation is in @geekmidas/constructs to avoid circular dependencies.
|
|
19
|
+
*/
|
|
20
|
+
async function buildOpenApiSchema(endpoints, options = {}) {
|
|
21
|
+
const { title = "API", version = "1.0.0", description } = options;
|
|
22
|
+
const paths = {};
|
|
23
|
+
const componentCollector = createComponentCollector();
|
|
24
|
+
for (const endpoint of endpoints) {
|
|
25
|
+
const route = await endpoint.toOpenApi3Route(componentCollector);
|
|
26
|
+
for (const [path, methods] of Object.entries(route)) {
|
|
27
|
+
if (!paths[path]) paths[path] = {};
|
|
28
|
+
Object.assign(paths[path], methods);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
const doc = {
|
|
32
|
+
openapi: "3.0.0",
|
|
33
|
+
info: {
|
|
34
|
+
title,
|
|
35
|
+
version,
|
|
36
|
+
...description && { description }
|
|
37
|
+
},
|
|
38
|
+
paths
|
|
39
|
+
};
|
|
40
|
+
if (Object.keys(componentCollector.schemas).length > 0) doc.components = { schemas: componentCollector.schemas };
|
|
41
|
+
return doc;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
//#endregion
|
|
45
|
+
export { buildOpenApiSchema, createComponentCollector };
|
|
46
|
+
//# sourceMappingURL=openapi-DH5yCqKh.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openapi-DH5yCqKh.mjs","names":["schemas: Record<string, OpenAPIV3_1.SchemaObject>","id: string","schema: OpenAPIV3_1.SchemaObject","endpoints: Array<{\n toOpenApi3Route(collector?: ComponentCollector): Promise<any>;\n }>","options: OpenApiSchemaOptions","paths: OpenAPIV3_1.PathsObject","doc: OpenAPIV3_1.Document"],"sources":["../src/openapi.ts"],"sourcesContent":["import type { OpenAPIV3_1 } from 'openapi-types';\n\nexport interface OpenApiSchemaOptions {\n title?: string;\n version?: string;\n description?: string;\n}\n\nexport interface ComponentCollector {\n schemas: Record<string, OpenAPIV3_1.SchemaObject>;\n addSchema(id: string, schema: OpenAPIV3_1.SchemaObject): void;\n getReference(id: string): OpenAPIV3_1.ReferenceObject;\n}\n\nexport function createComponentCollector(): ComponentCollector {\n const schemas: Record<string, OpenAPIV3_1.SchemaObject> = {};\n\n return {\n schemas,\n addSchema(id: string, schema: OpenAPIV3_1.SchemaObject) {\n schemas[id] = schema;\n },\n getReference(id: string): OpenAPIV3_1.ReferenceObject {\n return { $ref: `#/components/schemas/${id}` };\n },\n };\n}\n\n/**\n * Builds OpenAPI 3.1 schema from an array of endpoints.\n *\n * Note: This function requires endpoints with toOpenApi3Route method.\n * The actual implementation is in @geekmidas/constructs to avoid circular dependencies.\n */\nexport async function buildOpenApiSchema(\n endpoints: Array<{\n toOpenApi3Route(collector?: ComponentCollector): Promise<any>;\n }>,\n options: OpenApiSchemaOptions = {},\n): Promise<OpenAPIV3_1.Document> {\n const { title = 'API', version = '1.0.0', description } = options;\n const paths: OpenAPIV3_1.PathsObject = {};\n const componentCollector = createComponentCollector();\n\n for (const endpoint of endpoints) {\n const route = await endpoint.toOpenApi3Route(componentCollector);\n\n // Merge the route into the paths object\n for (const [path, methods] of Object.entries(route)) {\n if (!paths[path]) {\n paths[path] = {};\n }\n Object.assign(paths[path], methods);\n }\n }\n\n const doc: OpenAPIV3_1.Document = {\n openapi: '3.0.0',\n info: {\n title,\n version,\n ...(description && { description }),\n },\n paths,\n };\n\n // Add components if any schemas were collected\n if (Object.keys(componentCollector.schemas).length > 0) {\n doc.components = {\n schemas: componentCollector.schemas,\n };\n }\n\n return doc;\n}\n"],"mappings":";AAcA,SAAgB,2BAA+C;CAC7D,MAAMA,UAAoD,CAAE;AAE5D,QAAO;EACL;EACA,UAAUC,IAAYC,QAAkC;AACtD,WAAQ,MAAM;EACf;EACD,aAAaD,IAAyC;AACpD,UAAO,EAAE,OAAO,uBAAuB,GAAG,EAAG;EAC9C;CACF;AACF;;;;;;;AAQD,eAAsB,mBACpBE,WAGAC,UAAgC,CAAE,GACH;CAC/B,MAAM,EAAE,QAAQ,OAAO,UAAU,SAAS,aAAa,GAAG;CAC1D,MAAMC,QAAiC,CAAE;CACzC,MAAM,qBAAqB,0BAA0B;AAErD,MAAK,MAAM,YAAY,WAAW;EAChC,MAAM,QAAQ,MAAM,SAAS,gBAAgB,mBAAmB;AAGhE,OAAK,MAAM,CAAC,MAAM,QAAQ,IAAI,OAAO,QAAQ,MAAM,EAAE;AACnD,QAAK,MAAM,MACT,OAAM,QAAQ,CAAE;AAElB,UAAO,OAAO,MAAM,OAAO,QAAQ;EACpC;CACF;CAED,MAAMC,MAA4B;EAChC,SAAS;EACT,MAAM;GACJ;GACA;GACA,GAAI,eAAe,EAAE,YAAa;EACnC;EACD;CACD;AAGD,KAAI,OAAO,KAAK,mBAAmB,QAAQ,CAAC,SAAS,EACnD,KAAI,aAAa,EACf,SAAS,mBAAmB,QAC7B;AAGH,QAAO;AACR"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { OpenAPIV3_1 } from "openapi-types";
|
|
2
|
+
|
|
3
|
+
//#region src/openapi.d.ts
|
|
4
|
+
interface OpenApiSchemaOptions {
|
|
5
|
+
title?: string;
|
|
6
|
+
version?: string;
|
|
7
|
+
description?: string;
|
|
8
|
+
}
|
|
9
|
+
interface ComponentCollector {
|
|
10
|
+
schemas: Record<string, OpenAPIV3_1.SchemaObject>;
|
|
11
|
+
addSchema(id: string, schema: OpenAPIV3_1.SchemaObject): void;
|
|
12
|
+
getReference(id: string): OpenAPIV3_1.ReferenceObject;
|
|
13
|
+
}
|
|
14
|
+
declare function createComponentCollector(): ComponentCollector;
|
|
15
|
+
/**
|
|
16
|
+
* Builds OpenAPI 3.1 schema from an array of endpoints.
|
|
17
|
+
*
|
|
18
|
+
* Note: This function requires endpoints with toOpenApi3Route method.
|
|
19
|
+
* The actual implementation is in @geekmidas/constructs to avoid circular dependencies.
|
|
20
|
+
*/
|
|
21
|
+
declare function buildOpenApiSchema(endpoints: Array<{
|
|
22
|
+
toOpenApi3Route(collector?: ComponentCollector): Promise<any>;
|
|
23
|
+
}>, options?: OpenApiSchemaOptions): Promise<OpenAPIV3_1.Document>;
|
|
24
|
+
//#endregion
|
|
25
|
+
export { ComponentCollector, OpenApiSchemaOptions, buildOpenApiSchema, createComponentCollector };
|
|
26
|
+
//# sourceMappingURL=openapi-DR4_PG-e.d.cts.map
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
|
|
2
|
+
//#region src/openapi.ts
|
|
3
|
+
function createComponentCollector() {
|
|
4
|
+
const schemas = {};
|
|
5
|
+
return {
|
|
6
|
+
schemas,
|
|
7
|
+
addSchema(id, schema) {
|
|
8
|
+
schemas[id] = schema;
|
|
9
|
+
},
|
|
10
|
+
getReference(id) {
|
|
11
|
+
return { $ref: `#/components/schemas/${id}` };
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Builds OpenAPI 3.1 schema from an array of endpoints.
|
|
17
|
+
*
|
|
18
|
+
* Note: This function requires endpoints with toOpenApi3Route method.
|
|
19
|
+
* The actual implementation is in @geekmidas/constructs to avoid circular dependencies.
|
|
20
|
+
*/
|
|
21
|
+
async function buildOpenApiSchema(endpoints, options = {}) {
|
|
22
|
+
const { title = "API", version = "1.0.0", description } = options;
|
|
23
|
+
const paths = {};
|
|
24
|
+
const componentCollector = createComponentCollector();
|
|
25
|
+
for (const endpoint of endpoints) {
|
|
26
|
+
const route = await endpoint.toOpenApi3Route(componentCollector);
|
|
27
|
+
for (const [path, methods] of Object.entries(route)) {
|
|
28
|
+
if (!paths[path]) paths[path] = {};
|
|
29
|
+
Object.assign(paths[path], methods);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
const doc = {
|
|
33
|
+
openapi: "3.0.0",
|
|
34
|
+
info: {
|
|
35
|
+
title,
|
|
36
|
+
version,
|
|
37
|
+
...description && { description }
|
|
38
|
+
},
|
|
39
|
+
paths
|
|
40
|
+
};
|
|
41
|
+
if (Object.keys(componentCollector.schemas).length > 0) doc.components = { schemas: componentCollector.schemas };
|
|
42
|
+
return doc;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
//#endregion
|
|
46
|
+
Object.defineProperty(exports, 'buildOpenApiSchema', {
|
|
47
|
+
enumerable: true,
|
|
48
|
+
get: function () {
|
|
49
|
+
return buildOpenApiSchema;
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
Object.defineProperty(exports, 'createComponentCollector', {
|
|
53
|
+
enumerable: true,
|
|
54
|
+
get: function () {
|
|
55
|
+
return createComponentCollector;
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
//# sourceMappingURL=openapi-DVvLYx-8.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openapi-DVvLYx-8.cjs","names":["schemas: Record<string, OpenAPIV3_1.SchemaObject>","id: string","schema: OpenAPIV3_1.SchemaObject","endpoints: Array<{\n toOpenApi3Route(collector?: ComponentCollector): Promise<any>;\n }>","options: OpenApiSchemaOptions","paths: OpenAPIV3_1.PathsObject","doc: OpenAPIV3_1.Document"],"sources":["../src/openapi.ts"],"sourcesContent":["import type { OpenAPIV3_1 } from 'openapi-types';\n\nexport interface OpenApiSchemaOptions {\n title?: string;\n version?: string;\n description?: string;\n}\n\nexport interface ComponentCollector {\n schemas: Record<string, OpenAPIV3_1.SchemaObject>;\n addSchema(id: string, schema: OpenAPIV3_1.SchemaObject): void;\n getReference(id: string): OpenAPIV3_1.ReferenceObject;\n}\n\nexport function createComponentCollector(): ComponentCollector {\n const schemas: Record<string, OpenAPIV3_1.SchemaObject> = {};\n\n return {\n schemas,\n addSchema(id: string, schema: OpenAPIV3_1.SchemaObject) {\n schemas[id] = schema;\n },\n getReference(id: string): OpenAPIV3_1.ReferenceObject {\n return { $ref: `#/components/schemas/${id}` };\n },\n };\n}\n\n/**\n * Builds OpenAPI 3.1 schema from an array of endpoints.\n *\n * Note: This function requires endpoints with toOpenApi3Route method.\n * The actual implementation is in @geekmidas/constructs to avoid circular dependencies.\n */\nexport async function buildOpenApiSchema(\n endpoints: Array<{\n toOpenApi3Route(collector?: ComponentCollector): Promise<any>;\n }>,\n options: OpenApiSchemaOptions = {},\n): Promise<OpenAPIV3_1.Document> {\n const { title = 'API', version = '1.0.0', description } = options;\n const paths: OpenAPIV3_1.PathsObject = {};\n const componentCollector = createComponentCollector();\n\n for (const endpoint of endpoints) {\n const route = await endpoint.toOpenApi3Route(componentCollector);\n\n // Merge the route into the paths object\n for (const [path, methods] of Object.entries(route)) {\n if (!paths[path]) {\n paths[path] = {};\n }\n Object.assign(paths[path], methods);\n }\n }\n\n const doc: OpenAPIV3_1.Document = {\n openapi: '3.0.0',\n info: {\n title,\n version,\n ...(description && { description }),\n },\n paths,\n };\n\n // Add components if any schemas were collected\n if (Object.keys(componentCollector.schemas).length > 0) {\n doc.components = {\n schemas: componentCollector.schemas,\n };\n }\n\n return doc;\n}\n"],"mappings":";;AAcA,SAAgB,2BAA+C;CAC7D,MAAMA,UAAoD,CAAE;AAE5D,QAAO;EACL;EACA,UAAUC,IAAYC,QAAkC;AACtD,WAAQ,MAAM;EACf;EACD,aAAaD,IAAyC;AACpD,UAAO,EAAE,OAAO,uBAAuB,GAAG,EAAG;EAC9C;CACF;AACF;;;;;;;AAQD,eAAsB,mBACpBE,WAGAC,UAAgC,CAAE,GACH;CAC/B,MAAM,EAAE,QAAQ,OAAO,UAAU,SAAS,aAAa,GAAG;CAC1D,MAAMC,QAAiC,CAAE;CACzC,MAAM,qBAAqB,0BAA0B;AAErD,MAAK,MAAM,YAAY,WAAW;EAChC,MAAM,QAAQ,MAAM,SAAS,gBAAgB,mBAAmB;AAGhE,OAAK,MAAM,CAAC,MAAM,QAAQ,IAAI,OAAO,QAAQ,MAAM,EAAE;AACnD,QAAK,MAAM,MACT,OAAM,QAAQ,CAAE;AAElB,UAAO,OAAO,MAAM,OAAO,QAAQ;EACpC;CACF;CAED,MAAMC,MAA4B;EAChC,SAAS;EACT,MAAM;GACJ;GACA;GACA,GAAI,eAAe,EAAE,YAAa;EACnC;EACD;CACD;AAGD,KAAI,OAAO,KAAK,mBAAmB,QAAQ,CAAC,SAAS,EACnD,KAAI,aAAa,EACf,SAAS,mBAAmB,QAC7B;AAGH,QAAO;AACR"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { OpenAPIV3_1 } from "openapi-types";
|
|
2
|
+
|
|
3
|
+
//#region src/openapi.d.ts
|
|
4
|
+
interface OpenApiSchemaOptions {
|
|
5
|
+
title?: string;
|
|
6
|
+
version?: string;
|
|
7
|
+
description?: string;
|
|
8
|
+
}
|
|
9
|
+
interface ComponentCollector {
|
|
10
|
+
schemas: Record<string, OpenAPIV3_1.SchemaObject>;
|
|
11
|
+
addSchema(id: string, schema: OpenAPIV3_1.SchemaObject): void;
|
|
12
|
+
getReference(id: string): OpenAPIV3_1.ReferenceObject;
|
|
13
|
+
}
|
|
14
|
+
declare function createComponentCollector(): ComponentCollector;
|
|
15
|
+
/**
|
|
16
|
+
* Builds OpenAPI 3.1 schema from an array of endpoints.
|
|
17
|
+
*
|
|
18
|
+
* Note: This function requires endpoints with toOpenApi3Route method.
|
|
19
|
+
* The actual implementation is in @geekmidas/constructs to avoid circular dependencies.
|
|
20
|
+
*/
|
|
21
|
+
declare function buildOpenApiSchema(endpoints: Array<{
|
|
22
|
+
toOpenApi3Route(collector?: ComponentCollector): Promise<any>;
|
|
23
|
+
}>, options?: OpenApiSchemaOptions): Promise<OpenAPIV3_1.Document>;
|
|
24
|
+
//#endregion
|
|
25
|
+
export { ComponentCollector, OpenApiSchemaOptions, buildOpenApiSchema, createComponentCollector };
|
|
26
|
+
//# sourceMappingURL=openapi-j01kFjpI.d.mts.map
|
package/dist/openapi.cjs
ADDED
package/dist/openapi.mjs
ADDED
package/dist/parser.cjs
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
|
|
2
|
+
//#region src/parser.ts
|
|
3
|
+
/**
|
|
4
|
+
* Validates data against a StandardSchema.
|
|
5
|
+
*
|
|
6
|
+
* @param schema - The StandardSchema to validate against
|
|
7
|
+
* @param data - The data to validate
|
|
8
|
+
* @returns Validation result with value or issues
|
|
9
|
+
*/
|
|
10
|
+
function validate(schema, data) {
|
|
11
|
+
return schema["~standard"].validate(data);
|
|
12
|
+
}
|
|
13
|
+
async function parseSchema(schema, data) {
|
|
14
|
+
if (!schema) return void 0;
|
|
15
|
+
const parsed = await validate(schema, data);
|
|
16
|
+
if (parsed.issues) throw parsed.issues;
|
|
17
|
+
return parsed.value;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
//#endregion
|
|
21
|
+
exports.parseSchema = parseSchema;
|
|
22
|
+
exports.validate = validate;
|
|
23
|
+
//# sourceMappingURL=parser.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.cjs","names":["schema: T","data: unknown"],"sources":["../src/parser.ts"],"sourcesContent":["import type { StandardSchemaV1 } from '@standard-schema/spec';\nimport type { InferStandardSchema } from './types';\n\n/**\n * Validates data against a StandardSchema.\n *\n * @param schema - The StandardSchema to validate against\n * @param data - The data to validate\n * @returns Validation result with value or issues\n */\nexport function validate<T extends StandardSchemaV1>(schema: T, data: unknown) {\n return schema['~standard'].validate(data);\n}\n\nexport async function parseSchema<T extends StandardSchemaV1>(\n schema: T,\n data: unknown,\n): Promise<InferStandardSchema<T>> {\n if (!schema) {\n return undefined as InferStandardSchema<T>;\n }\n\n const parsed = await validate(schema as unknown as StandardSchemaV1, data);\n\n if (parsed.issues) {\n throw parsed.issues;\n }\n\n return parsed.value as InferStandardSchema<T>;\n}\n"],"mappings":";;;;;;;;;AAUA,SAAgB,SAAqCA,QAAWC,MAAe;AAC7E,QAAO,OAAO,aAAa,SAAS,KAAK;AAC1C;AAED,eAAsB,YACpBD,QACAC,MACiC;AACjC,MAAK,OACH;CAGF,MAAM,SAAS,MAAM,SAAS,QAAuC,KAAK;AAE1E,KAAI,OAAO,OACT,OAAM,OAAO;AAGf,QAAO,OAAO;AACf"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { InferStandardSchema } from "./types-DfcgE7cO.cjs";
|
|
2
|
+
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
3
|
+
|
|
4
|
+
//#region src/parser.d.ts
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Validates data against a StandardSchema.
|
|
8
|
+
*
|
|
9
|
+
* @param schema - The StandardSchema to validate against
|
|
10
|
+
* @param data - The data to validate
|
|
11
|
+
* @returns Validation result with value or issues
|
|
12
|
+
*/
|
|
13
|
+
declare function validate<T extends StandardSchemaV1>(schema: T, data: unknown): StandardSchemaV1.Result<unknown> | Promise<StandardSchemaV1.Result<unknown>>;
|
|
14
|
+
declare function parseSchema<T extends StandardSchemaV1>(schema: T, data: unknown): Promise<InferStandardSchema<T>>;
|
|
15
|
+
//#endregion
|
|
16
|
+
export { parseSchema, validate };
|
|
17
|
+
//# sourceMappingURL=parser.d.cts.map
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { InferStandardSchema } from "./types-ByLHeRGs.mjs";
|
|
2
|
+
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
3
|
+
|
|
4
|
+
//#region src/parser.d.ts
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Validates data against a StandardSchema.
|
|
8
|
+
*
|
|
9
|
+
* @param schema - The StandardSchema to validate against
|
|
10
|
+
* @param data - The data to validate
|
|
11
|
+
* @returns Validation result with value or issues
|
|
12
|
+
*/
|
|
13
|
+
declare function validate<T extends StandardSchemaV1>(schema: T, data: unknown): StandardSchemaV1.Result<unknown> | Promise<StandardSchemaV1.Result<unknown>>;
|
|
14
|
+
declare function parseSchema<T extends StandardSchemaV1>(schema: T, data: unknown): Promise<InferStandardSchema<T>>;
|
|
15
|
+
//#endregion
|
|
16
|
+
export { parseSchema, validate };
|
|
17
|
+
//# sourceMappingURL=parser.d.mts.map
|
package/dist/parser.mjs
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
//#region src/parser.ts
|
|
2
|
+
/**
|
|
3
|
+
* Validates data against a StandardSchema.
|
|
4
|
+
*
|
|
5
|
+
* @param schema - The StandardSchema to validate against
|
|
6
|
+
* @param data - The data to validate
|
|
7
|
+
* @returns Validation result with value or issues
|
|
8
|
+
*/
|
|
9
|
+
function validate(schema, data) {
|
|
10
|
+
return schema["~standard"].validate(data);
|
|
11
|
+
}
|
|
12
|
+
async function parseSchema(schema, data) {
|
|
13
|
+
if (!schema) return void 0;
|
|
14
|
+
const parsed = await validate(schema, data);
|
|
15
|
+
if (parsed.issues) throw parsed.issues;
|
|
16
|
+
return parsed.value;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
//#endregion
|
|
20
|
+
export { parseSchema, validate };
|
|
21
|
+
//# sourceMappingURL=parser.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.mjs","names":["schema: T","data: unknown"],"sources":["../src/parser.ts"],"sourcesContent":["import type { StandardSchemaV1 } from '@standard-schema/spec';\nimport type { InferStandardSchema } from './types';\n\n/**\n * Validates data against a StandardSchema.\n *\n * @param schema - The StandardSchema to validate against\n * @param data - The data to validate\n * @returns Validation result with value or issues\n */\nexport function validate<T extends StandardSchemaV1>(schema: T, data: unknown) {\n return schema['~standard'].validate(data);\n}\n\nexport async function parseSchema<T extends StandardSchemaV1>(\n schema: T,\n data: unknown,\n): Promise<InferStandardSchema<T>> {\n if (!schema) {\n return undefined as InferStandardSchema<T>;\n }\n\n const parsed = await validate(schema as unknown as StandardSchemaV1, data);\n\n if (parsed.issues) {\n throw parsed.issues;\n }\n\n return parsed.value as InferStandardSchema<T>;\n}\n"],"mappings":";;;;;;;;AAUA,SAAgB,SAAqCA,QAAWC,MAAe;AAC7E,QAAO,OAAO,aAAa,SAAS,KAAK;AAC1C;AAED,eAAsB,YACpBD,QACAC,MACiC;AACjC,MAAK,OACH;CAGF,MAAM,SAAS,MAAM,SAAS,QAAuC,KAAK;AAE1E,KAAI,OAAO,OACT,OAAM,OAAO;AAGf,QAAO,OAAO;AACf"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
2
|
+
|
|
3
|
+
//#region src/types.d.ts
|
|
4
|
+
type InferStandardSchema<T> = T extends StandardSchemaV1 ? StandardSchemaV1.InferOutput<T> : never;
|
|
5
|
+
type ComposableStandardSchema = StandardSchemaV1 | {
|
|
6
|
+
[key: string]: StandardSchemaV1 | undefined;
|
|
7
|
+
};
|
|
8
|
+
type InferComposableStandardSchema<T> = T extends StandardSchemaV1 ? StandardSchemaV1.InferOutput<T> : T extends {
|
|
9
|
+
[key: string]: StandardSchemaV1 | undefined;
|
|
10
|
+
} ? { [K in keyof T as T[K] extends StandardSchemaV1 ? K : never]: T[K] extends StandardSchemaV1 ? StandardSchemaV1.InferOutput<T[K]> : never } : {};
|
|
11
|
+
//#endregion
|
|
12
|
+
export { ComposableStandardSchema, InferComposableStandardSchema, InferStandardSchema };
|
|
13
|
+
//# sourceMappingURL=types-ByLHeRGs.d.mts.map
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
2
|
+
|
|
3
|
+
//#region src/types.d.ts
|
|
4
|
+
type InferStandardSchema<T> = T extends StandardSchemaV1 ? StandardSchemaV1.InferOutput<T> : never;
|
|
5
|
+
type ComposableStandardSchema = StandardSchemaV1 | {
|
|
6
|
+
[key: string]: StandardSchemaV1 | undefined;
|
|
7
|
+
};
|
|
8
|
+
type InferComposableStandardSchema<T> = T extends StandardSchemaV1 ? StandardSchemaV1.InferOutput<T> : T extends {
|
|
9
|
+
[key: string]: StandardSchemaV1 | undefined;
|
|
10
|
+
} ? { [K in keyof T as T[K] extends StandardSchemaV1 ? K : never]: T[K] extends StandardSchemaV1 ? StandardSchemaV1.InferOutput<T[K]> : never } : {};
|
|
11
|
+
//#endregion
|
|
12
|
+
export { ComposableStandardSchema, InferComposableStandardSchema, InferStandardSchema };
|
|
13
|
+
//# sourceMappingURL=types-DfcgE7cO.d.cts.map
|
package/dist/types.cjs
ADDED
|
File without changes
|
package/dist/types.d.cts
ADDED
package/dist/types.d.mts
ADDED
package/dist/types.mjs
ADDED
|
File without changes
|
package/package.json
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@geekmidas/schema",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"exports": {
|
|
6
|
+
".": {
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"import": "./dist/index.mjs",
|
|
9
|
+
"require": "./dist/index.cjs"
|
|
10
|
+
},
|
|
11
|
+
"./conversion": {
|
|
12
|
+
"types": "./dist/conversion.d.ts",
|
|
13
|
+
"import": "./dist/conversion.mjs",
|
|
14
|
+
"require": "./dist/conversion.cjs"
|
|
15
|
+
},
|
|
16
|
+
"./openapi": {
|
|
17
|
+
"types": "./dist/openapi.d.ts",
|
|
18
|
+
"import": "./dist/openapi.mjs",
|
|
19
|
+
"require": "./dist/openapi.cjs"
|
|
20
|
+
},
|
|
21
|
+
"./parser": {
|
|
22
|
+
"types": "./dist/parser.d.ts",
|
|
23
|
+
"import": "./dist/parser.mjs",
|
|
24
|
+
"require": "./dist/parser.cjs"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"publishConfig": {
|
|
28
|
+
"registry": "https://registry.npmjs.org/",
|
|
29
|
+
"access": "public"
|
|
30
|
+
},
|
|
31
|
+
"dependencies": {
|
|
32
|
+
"openapi-types": "~12.1.3"
|
|
33
|
+
},
|
|
34
|
+
"devDependencies": {},
|
|
35
|
+
"peerDependencies": {
|
|
36
|
+
"@standard-schema/spec": ">=1.0.0",
|
|
37
|
+
"@valibot/to-json-schema": ">=1.3.0",
|
|
38
|
+
"zod-to-json-schema": "~3.24.1",
|
|
39
|
+
"zod": ">=3.25.67"
|
|
40
|
+
},
|
|
41
|
+
"scripts": {
|
|
42
|
+
"ts": "tsc --noEmit --skipLibCheck src/**/*.ts"
|
|
43
|
+
}
|
|
44
|
+
}
|