@forklaunch/validator 0.3.10 → 0.3.12

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.
@@ -13,7 +13,7 @@ type RecursiveUnion<T extends readonly string[]> = T extends readonly [
13
13
  infer F extends string,
14
14
  ...infer R extends readonly string[]
15
15
  ] ? R extends [] ? F : `${F} | ${RecursiveUnion<R>}` : '';
16
- export declare class MockSchemaValidator implements SchemaValidator<(<T extends string>(schema: T) => T), <T extends string>(schema: T) => T, <T extends string>(schema: T) => `optional ${T}`, <T extends string>(schema: T) => `array ${T}`, <T extends readonly string[]>(schemas: T) => RecursiveUnion<T>, <T extends LiteralSchema>(schema: T) => `literal ${T}`, <T extends string>(schema: T, value: string) => boolean, <T extends string>(schema: T, value: string) => ParseResult<T>, <T extends string>(schema: T) => SchemaObject> {
16
+ export declare class MockSchemaValidator implements SchemaValidator<(<T extends string>(schema: T) => T), <T extends string>(schema: T) => T, <T extends string>(schema: T) => `optional ${T}`, <T extends string>(schema: T) => `array ${T}`, <T extends readonly string[]>(schemas: T) => RecursiveUnion<T>, <T extends LiteralSchema>(schema: T) => `literal ${T}`, <T extends LiteralSchema>(schemaEnum: Record<string, T>) => `enum ${T}`, (value: unknown) => value is string, <T extends string>(schema: T, value: string) => boolean, <T extends string>(schema: T, value: string) => ParseResult<T>, <T extends string>(schema: T) => SchemaObject> {
17
17
  _Type: 'Mock';
18
18
  _SchemaCatchall: string;
19
19
  _ValidSchemaObject: string;
@@ -36,6 +36,8 @@ export declare class MockSchemaValidator implements SchemaValidator<(<T extends
36
36
  array<T extends string>(schema: T): `array ${T}`;
37
37
  union<T extends readonly string[]>(schemas: T): RecursiveUnion<T>;
38
38
  literal<T extends LiteralSchema>(schema: T): `literal ${T}`;
39
+ enum_<T extends LiteralSchema>(schemaEnum: Record<string, T>): `enum ${T}`;
40
+ isSchema(value: unknown): value is string;
39
41
  validate<T extends string>(schema: T, value: string): boolean;
40
42
  parse<T extends string>(schema: T, value: string): ParseResult<T>;
41
43
  openapi<T extends string>(_schema: T): SchemaObject;
@@ -56,6 +58,7 @@ export declare const optional: <T extends string>(schema: T) => `optional ${T}`;
56
58
  export declare const array: <T extends string>(schema: T) => `array ${T}`;
57
59
  export declare const union: <T extends readonly string[]>(schemas: T) => RecursiveUnion<T>;
58
60
  export declare const literal: <T extends LiteralSchema>(schema: T) => `literal ${T}`;
61
+ export declare const enum_: <T extends LiteralSchema>(schemaEnum: Record<string, T>) => `enum ${T}`;
59
62
  export declare const validate: <T extends string>(schema: T, value: string) => boolean;
60
63
  export declare const openapi: <T extends string>(_schema: T) => SchemaObject;
61
64
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"mockSchemaValidator.d.ts","sourceRoot":"","sources":["../../../tests/utils/mockSchemaValidator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mockSchemaValidator.d.ts","sourceRoot":"","sources":["../../../tests/utils/mockSchemaValidator.ts"],"names":[],"mappings":"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"}
@@ -22,10 +22,10 @@ export class MockSchemaValidator {
22
22
  return schema;
23
23
  }
24
24
  optional(schema) {
25
- return ('optional ' + schema);
25
+ return `optional ${schema}`;
26
26
  }
27
27
  array(schema) {
28
- return ('array ' + schema);
28
+ return `array ${schema}`;
29
29
  }
30
30
  union(schemas) {
31
31
  return schemas.join(' | ');
@@ -33,6 +33,12 @@ export class MockSchemaValidator {
33
33
  literal(schema) {
34
34
  return `literal ${schema}`;
35
35
  }
36
+ enum_(schemaEnum) {
37
+ return `enum ${Object.values(schemaEnum).join(' | ')}`;
38
+ }
39
+ isSchema(value) {
40
+ return typeof value === 'string';
41
+ }
36
42
  validate(schema, value) {
37
43
  return schema === value;
38
44
  }
@@ -68,5 +74,6 @@ export const array = mockSchemaValidator.array.bind(mockSchemaValidator);
68
74
  // note, use 'as const' when calling on the input array, for proper type parsing
69
75
  export const union = mockSchemaValidator.union.bind(mockSchemaValidator);
70
76
  export const literal = mockSchemaValidator.literal.bind(mockSchemaValidator);
77
+ export const enum_ = mockSchemaValidator.enum_.bind(mockSchemaValidator);
71
78
  export const validate = mockSchemaValidator.validate.bind(mockSchemaValidator);
72
79
  export const openapi = mockSchemaValidator.openapi.bind(mockSchemaValidator);
@@ -1,6 +1,6 @@
1
1
  import { generateSchema } from '@anatine/zod-openapi';
2
2
  import { z } from 'zod';
3
- import { array, number, openapi, optional, parse, schemify, string, union, validate } from '../../src/zod';
3
+ import { array, enum_, isSchema, number, openapi, optional, parse, schemify, string, union, validate } from '../../src/zod';
4
4
  import { compare } from '../utils/compare';
5
5
  describe('zod schema validator tests', () => {
6
6
  let schema;
@@ -118,6 +118,32 @@ describe('zod schema validator tests', () => {
118
118
  hello: z.literal('world')
119
119
  }));
120
120
  });
121
+ test('enum', async () => {
122
+ let TestSingleEnum;
123
+ (function (TestSingleEnum) {
124
+ TestSingleEnum["WORLD"] = "world";
125
+ })(TestSingleEnum || (TestSingleEnum = {}));
126
+ const schemified = enum_(TestSingleEnum);
127
+ compare(schemified, z.union([z.literal('world')]));
128
+ let TestMultipleEnum;
129
+ (function (TestMultipleEnum) {
130
+ TestMultipleEnum["WORLD"] = "world";
131
+ TestMultipleEnum["HELLO"] = "hello";
132
+ })(TestMultipleEnum || (TestMultipleEnum = {}));
133
+ const schemifiedMultiple = enum_(TestMultipleEnum);
134
+ compare(schemifiedMultiple, z.union([z.literal('world'), z.literal('hello')]));
135
+ });
136
+ test('isSchema', () => {
137
+ expect(isSchema(z.string())).toBe(true);
138
+ expect(isSchema(z.number())).toBe(true);
139
+ expect(isSchema(z.object({ foo: z.string() }))).toBe(true);
140
+ expect(isSchema(schemified)).toBe(true);
141
+ expect(isSchema('not a schema')).toBe(false);
142
+ expect(isSchema(42)).toBe(false);
143
+ expect(isSchema({})).toBe(false);
144
+ expect(isSchema(null)).toBe(false);
145
+ expect(isSchema(undefined)).toBe(false);
146
+ });
121
147
  test('validate', async () => {
122
148
  validate(schemified, {
123
149
  hello: {