@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.
Files changed (47) hide show
  1. package/README.md +351 -0
  2. package/dist/conversion-CH_EmflL.d.cts +30 -0
  3. package/dist/conversion-Civd6bIU.mjs +89 -0
  4. package/dist/conversion-Civd6bIU.mjs.map +1 -0
  5. package/dist/conversion-CrSNoSRa.cjs +125 -0
  6. package/dist/conversion-CrSNoSRa.cjs.map +1 -0
  7. package/dist/conversion-DUyZYTWO.d.mts +30 -0
  8. package/dist/conversion.cjs +8 -0
  9. package/dist/conversion.d.cts +2 -0
  10. package/dist/conversion.d.mts +2 -0
  11. package/dist/conversion.mjs +3 -0
  12. package/dist/index.cjs +7 -0
  13. package/dist/index.d.cts +4 -0
  14. package/dist/index.d.mts +4 -0
  15. package/dist/index.mjs +4 -0
  16. package/dist/openapi-DH5yCqKh.mjs +46 -0
  17. package/dist/openapi-DH5yCqKh.mjs.map +1 -0
  18. package/dist/openapi-DR4_PG-e.d.cts +26 -0
  19. package/dist/openapi-DVvLYx-8.cjs +58 -0
  20. package/dist/openapi-DVvLYx-8.cjs.map +1 -0
  21. package/dist/openapi-j01kFjpI.d.mts +26 -0
  22. package/dist/openapi.cjs +4 -0
  23. package/dist/openapi.d.cts +2 -0
  24. package/dist/openapi.d.mts +2 -0
  25. package/dist/openapi.mjs +3 -0
  26. package/dist/parser.cjs +23 -0
  27. package/dist/parser.cjs.map +1 -0
  28. package/dist/parser.d.cts +17 -0
  29. package/dist/parser.d.mts +17 -0
  30. package/dist/parser.mjs +21 -0
  31. package/dist/parser.mjs.map +1 -0
  32. package/dist/types-ByLHeRGs.d.mts +13 -0
  33. package/dist/types-DfcgE7cO.d.cts +13 -0
  34. package/dist/types.cjs +0 -0
  35. package/dist/types.d.cts +2 -0
  36. package/dist/types.d.mts +2 -0
  37. package/dist/types.mjs +0 -0
  38. package/package.json +44 -0
  39. package/src/__tests__/conversion.spec.ts +319 -0
  40. package/src/__tests__/openapi.spec.ts +396 -0
  41. package/src/__tests__/parser.spec.ts +236 -0
  42. package/src/conversion.ts +199 -0
  43. package/src/index.ts +15 -0
  44. package/src/openapi.ts +75 -0
  45. package/src/parser.ts +30 -0
  46. package/src/types.ts +23 -0
  47. 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;
@@ -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 };
@@ -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
@@ -0,0 +1,4 @@
1
+ const require_openapi = require('./openapi-DVvLYx-8.cjs');
2
+
3
+ exports.buildOpenApiSchema = require_openapi.buildOpenApiSchema;
4
+ exports.createComponentCollector = require_openapi.createComponentCollector;
@@ -0,0 +1,2 @@
1
+ import { ComponentCollector, OpenApiSchemaOptions, buildOpenApiSchema, createComponentCollector } from "./openapi-DR4_PG-e.cjs";
2
+ export { ComponentCollector, OpenApiSchemaOptions, buildOpenApiSchema, createComponentCollector };
@@ -0,0 +1,2 @@
1
+ import { ComponentCollector, OpenApiSchemaOptions, buildOpenApiSchema, createComponentCollector } from "./openapi-j01kFjpI.mjs";
2
+ export { ComponentCollector, OpenApiSchemaOptions, buildOpenApiSchema, createComponentCollector };
@@ -0,0 +1,3 @@
1
+ import { buildOpenApiSchema, createComponentCollector } from "./openapi-DH5yCqKh.mjs";
2
+
3
+ export { buildOpenApiSchema, createComponentCollector };
@@ -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
@@ -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
@@ -0,0 +1,2 @@
1
+ import { ComposableStandardSchema, InferComposableStandardSchema, InferStandardSchema } from "./types-DfcgE7cO.cjs";
2
+ export { ComposableStandardSchema, InferComposableStandardSchema, InferStandardSchema };
@@ -0,0 +1,2 @@
1
+ import { ComposableStandardSchema, InferComposableStandardSchema, InferStandardSchema } from "./types-ByLHeRGs.mjs";
2
+ export { ComposableStandardSchema, InferComposableStandardSchema, InferStandardSchema };
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
+ }