syncorejs 0.2.0 → 0.2.2

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 (135) hide show
  1. package/README.md +2 -1
  2. package/dist/_vendor/cli/app.d.mts.map +1 -1
  3. package/dist/_vendor/cli/app.mjs +323 -42
  4. package/dist/_vendor/cli/app.mjs.map +1 -1
  5. package/dist/_vendor/cli/context.mjs +27 -9
  6. package/dist/_vendor/cli/context.mjs.map +1 -1
  7. package/dist/_vendor/cli/doctor.mjs +513 -46
  8. package/dist/_vendor/cli/doctor.mjs.map +1 -1
  9. package/dist/_vendor/cli/messages.mjs +5 -4
  10. package/dist/_vendor/cli/messages.mjs.map +1 -1
  11. package/dist/_vendor/cli/project.mjs +110 -12
  12. package/dist/_vendor/cli/project.mjs.map +1 -1
  13. package/dist/_vendor/cli/render.mjs +57 -9
  14. package/dist/_vendor/cli/render.mjs.map +1 -1
  15. package/dist/_vendor/cli/targets.mjs +4 -3
  16. package/dist/_vendor/cli/targets.mjs.map +1 -1
  17. package/dist/_vendor/core/cli.d.mts +13 -3
  18. package/dist/_vendor/core/cli.d.mts.map +1 -1
  19. package/dist/_vendor/core/cli.mjs +242 -91
  20. package/dist/_vendor/core/cli.mjs.map +1 -1
  21. package/dist/_vendor/core/devtools-auth.mjs +60 -0
  22. package/dist/_vendor/core/devtools-auth.mjs.map +1 -0
  23. package/dist/_vendor/core/index.d.mts +5 -3
  24. package/dist/_vendor/core/index.mjs +22 -2
  25. package/dist/_vendor/core/index.mjs.map +1 -1
  26. package/dist/_vendor/core/runtime/components.d.mts +111 -0
  27. package/dist/_vendor/core/runtime/components.d.mts.map +1 -0
  28. package/dist/_vendor/core/runtime/components.mjs +186 -0
  29. package/dist/_vendor/core/runtime/components.mjs.map +1 -0
  30. package/dist/_vendor/core/runtime/devtools.d.mts +4 -4
  31. package/dist/_vendor/core/runtime/devtools.d.mts.map +1 -1
  32. package/dist/_vendor/core/runtime/devtools.mjs +52 -41
  33. package/dist/_vendor/core/runtime/devtools.mjs.map +1 -1
  34. package/dist/_vendor/core/runtime/functions.d.mts +10 -10
  35. package/dist/_vendor/core/runtime/functions.d.mts.map +1 -1
  36. package/dist/_vendor/core/runtime/functions.mjs +2 -2
  37. package/dist/_vendor/core/runtime/functions.mjs.map +1 -1
  38. package/dist/_vendor/core/runtime/internal/engines/devtoolsEngine.mjs +77 -0
  39. package/dist/_vendor/core/runtime/internal/engines/devtoolsEngine.mjs.map +1 -0
  40. package/dist/_vendor/core/runtime/internal/engines/executionEngine.mjs +617 -0
  41. package/dist/_vendor/core/runtime/internal/engines/executionEngine.mjs.map +1 -0
  42. package/dist/_vendor/core/runtime/internal/engines/reactivityEngine.mjs +186 -0
  43. package/dist/_vendor/core/runtime/internal/engines/reactivityEngine.mjs.map +1 -0
  44. package/dist/_vendor/core/runtime/internal/engines/schedulerEngine.mjs +220 -0
  45. package/dist/_vendor/core/runtime/internal/engines/schedulerEngine.mjs.map +1 -0
  46. package/dist/_vendor/core/runtime/internal/engines/schemaEngine.mjs +203 -0
  47. package/dist/_vendor/core/runtime/internal/engines/schemaEngine.mjs.map +1 -0
  48. package/dist/_vendor/core/runtime/internal/engines/shared.mjs +177 -0
  49. package/dist/_vendor/core/runtime/internal/engines/shared.mjs.map +1 -0
  50. package/dist/_vendor/core/runtime/internal/engines/storageEngine.mjs +144 -0
  51. package/dist/_vendor/core/runtime/internal/engines/storageEngine.mjs.map +1 -0
  52. package/dist/_vendor/core/runtime/internal/runtimeKernel.mjs +220 -0
  53. package/dist/_vendor/core/runtime/internal/runtimeKernel.mjs.map +1 -0
  54. package/dist/_vendor/core/runtime/internal/runtimeStatus.mjs +32 -0
  55. package/dist/_vendor/core/runtime/internal/runtimeStatus.mjs.map +1 -0
  56. package/dist/_vendor/core/runtime/internal/systemMeta.mjs +61 -0
  57. package/dist/_vendor/core/runtime/internal/systemMeta.mjs.map +1 -0
  58. package/dist/_vendor/core/runtime/internal/transactionCoordinator.mjs +37 -0
  59. package/dist/_vendor/core/runtime/internal/transactionCoordinator.mjs.map +1 -0
  60. package/dist/_vendor/core/runtime/runtime.d.mts +159 -205
  61. package/dist/_vendor/core/runtime/runtime.d.mts.map +1 -1
  62. package/dist/_vendor/core/runtime/runtime.mjs +16 -1371
  63. package/dist/_vendor/core/runtime/runtime.mjs.map +1 -1
  64. package/dist/_vendor/core/transport.d.mts +111 -0
  65. package/dist/_vendor/core/transport.d.mts.map +1 -0
  66. package/dist/_vendor/core/transport.mjs +419 -0
  67. package/dist/_vendor/core/transport.mjs.map +1 -0
  68. package/dist/_vendor/devtools-protocol/index.d.ts +39 -1
  69. package/dist/_vendor/devtools-protocol/index.d.ts.map +1 -1
  70. package/dist/_vendor/devtools-protocol/index.js +25 -9
  71. package/dist/_vendor/devtools-protocol/index.js.map +1 -1
  72. package/dist/_vendor/next/index.d.ts +1 -1
  73. package/dist/_vendor/next/index.d.ts.map +1 -1
  74. package/dist/_vendor/next/index.js +31 -13
  75. package/dist/_vendor/next/index.js.map +1 -1
  76. package/dist/_vendor/platform-expo/index.d.ts +12 -12
  77. package/dist/_vendor/platform-expo/index.d.ts.map +1 -1
  78. package/dist/_vendor/platform-expo/index.js +4 -2
  79. package/dist/_vendor/platform-expo/index.js.map +1 -1
  80. package/dist/_vendor/platform-expo/react.d.ts.map +1 -1
  81. package/dist/_vendor/platform-expo/react.js +11 -10
  82. package/dist/_vendor/platform-expo/react.js.map +1 -1
  83. package/dist/_vendor/platform-node/index.d.mts +23 -19
  84. package/dist/_vendor/platform-node/index.d.mts.map +1 -1
  85. package/dist/_vendor/platform-node/index.mjs +13 -5
  86. package/dist/_vendor/platform-node/index.mjs.map +1 -1
  87. package/dist/_vendor/platform-node/ipc-react.d.mts.map +1 -1
  88. package/dist/_vendor/platform-node/ipc-react.mjs +15 -2
  89. package/dist/_vendor/platform-node/ipc-react.mjs.map +1 -1
  90. package/dist/_vendor/platform-node/ipc.d.mts +11 -35
  91. package/dist/_vendor/platform-node/ipc.d.mts.map +1 -1
  92. package/dist/_vendor/platform-node/ipc.mjs +3 -273
  93. package/dist/_vendor/platform-node/ipc.mjs.map +1 -1
  94. package/dist/_vendor/platform-web/external-change.d.ts +2 -1
  95. package/dist/_vendor/platform-web/external-change.d.ts.map +1 -1
  96. package/dist/_vendor/platform-web/external-change.js +2 -1
  97. package/dist/_vendor/platform-web/external-change.js.map +1 -1
  98. package/dist/_vendor/platform-web/index.d.ts +21 -21
  99. package/dist/_vendor/platform-web/index.d.ts.map +1 -1
  100. package/dist/_vendor/platform-web/index.js +44 -7
  101. package/dist/_vendor/platform-web/index.js.map +1 -1
  102. package/dist/_vendor/platform-web/react.d.ts.map +1 -1
  103. package/dist/_vendor/platform-web/react.js +29 -13
  104. package/dist/_vendor/platform-web/react.js.map +1 -1
  105. package/dist/_vendor/platform-web/worker.d.ts +11 -35
  106. package/dist/_vendor/platform-web/worker.d.ts.map +1 -1
  107. package/dist/_vendor/platform-web/worker.js +3 -267
  108. package/dist/_vendor/platform-web/worker.js.map +1 -1
  109. package/dist/_vendor/react/index.d.ts +36 -20
  110. package/dist/_vendor/react/index.d.ts.map +1 -1
  111. package/dist/_vendor/react/index.js +279 -57
  112. package/dist/_vendor/react/index.js.map +1 -1
  113. package/dist/_vendor/schema/definition.d.ts +48 -63
  114. package/dist/_vendor/schema/definition.d.ts.map +1 -1
  115. package/dist/_vendor/schema/definition.js +22 -39
  116. package/dist/_vendor/schema/definition.js.map +1 -1
  117. package/dist/_vendor/schema/index.d.ts +4 -4
  118. package/dist/_vendor/schema/index.js +2 -2
  119. package/dist/_vendor/schema/planner.d.ts +19 -2
  120. package/dist/_vendor/schema/planner.d.ts.map +1 -1
  121. package/dist/_vendor/schema/planner.js +79 -3
  122. package/dist/_vendor/schema/planner.js.map +1 -1
  123. package/dist/_vendor/schema/validators.d.ts +141 -121
  124. package/dist/_vendor/schema/validators.d.ts.map +1 -1
  125. package/dist/_vendor/schema/validators.js +300 -42
  126. package/dist/_vendor/schema/validators.js.map +1 -1
  127. package/dist/_vendor/svelte/index.d.ts +47 -19
  128. package/dist/_vendor/svelte/index.d.ts.map +1 -1
  129. package/dist/_vendor/svelte/index.js +250 -20
  130. package/dist/_vendor/svelte/index.js.map +1 -1
  131. package/dist/components.d.ts +2 -0
  132. package/dist/components.js +2 -0
  133. package/dist/index.d.ts +3 -2
  134. package/dist/index.js +2 -1
  135. package/package.json +8 -3
@@ -1,22 +1,17 @@
1
1
  //#region src/validators.d.ts
2
- type ValidatorKind = "string" | "number" | "boolean" | "literal" | "array" | "object" | "id" | "optional" | "any" | "null";
2
+ type Expand<T> = { [TKey in keyof T]: T[TKey] } & {};
3
+ type ValidatorKind = "string" | "number" | "boolean" | "literal" | "enum" | "array" | "object" | "record" | "union" | "id" | "optional" | "any" | "null" | "codec";
3
4
  /**
4
- * Validates unknown input at runtime and carries its parsed TypeScript type.
5
- *
6
- * Syncore uses validators for function arguments, return values, and table
7
- * definitions. Most apps create validators through {@link v} instead of
8
- * instantiating validator classes directly.
5
+ * A schema field definition that combines validation, serialization, and
6
+ * field-path metadata for Syncore's data model.
9
7
  */
10
- interface Validator<TValue> {
8
+ interface Validator<TValue = unknown, TStorage = TValue, TFieldPaths extends string = never> {
11
9
  readonly kind: ValidatorKind;
12
- /**
13
- * Parse and validate an unknown value.
14
- *
15
- * @param value - The value to validate.
16
- * @param path - A human-readable path used in validation errors.
17
- * @returns The parsed value when validation succeeds.
18
- */
10
+ readonly fieldPaths?: TFieldPaths;
19
11
  parse(value: unknown, path?: string): TValue;
12
+ serialize?(value: TValue, path?: string): TStorage;
13
+ deserialize?(value: unknown, path?: string): TValue;
14
+ describe?(): ValidatorDescription;
20
15
  }
21
16
  type ValidatorDescription = {
22
17
  kind: "string";
@@ -31,164 +26,189 @@ type ValidatorDescription = {
31
26
  } | {
32
27
  kind: "literal";
33
28
  value: string | number | boolean | null;
29
+ } | {
30
+ kind: "enum";
31
+ values: string[];
34
32
  } | {
35
33
  kind: "array";
36
34
  item: ValidatorDescription;
37
35
  } | {
38
36
  kind: "object";
39
- shape: Record<string, ValidatorDescription>;
37
+ shape: Record<string, {
38
+ validator: ValidatorDescription;
39
+ optional: boolean;
40
+ }>;
41
+ } | {
42
+ kind: "record";
43
+ key: ValidatorDescription;
44
+ value: ValidatorDescription;
45
+ } | {
46
+ kind: "union";
47
+ members: ValidatorDescription[];
40
48
  } | {
41
49
  kind: "id";
42
50
  tableName: string;
43
51
  } | {
44
52
  kind: "optional";
45
53
  inner: ValidatorDescription;
54
+ } | {
55
+ kind: "codec";
56
+ value: ValidatorDescription;
57
+ storage: ValidatorDescription;
46
58
  };
59
+ type Infer<TValidator> = TValidator extends Validator<infer TValue, unknown, string> ? TValue : never;
60
+ type InferStorage<TValidator> = TValidator extends Validator<unknown, infer TStorage, string> ? TStorage : never;
61
+ type FieldPaths<TValidator> = TValidator extends Validator<unknown, unknown, infer TFieldPaths> ? TFieldPaths : never;
47
62
  interface ObjectValidatorShape {
48
- [key: string]: Validator<unknown>;
63
+ [key: string]: Validator<unknown, unknown, string>;
64
+ }
65
+ type ValidatorMap = Record<string, Validator<unknown, unknown, string>>;
66
+ type OptionalKeys<TShape extends ObjectValidatorShape> = { [TKey in keyof TShape]: TShape[TKey] extends OptionalValidator<unknown, unknown, string> ? TKey : never }[keyof TShape];
67
+ type RequiredKeys<TShape extends ObjectValidatorShape> = Exclude<keyof TShape, OptionalKeys<TShape>>;
68
+ type InferObject<TShape extends ObjectValidatorShape> = Expand<{ [TKey in OptionalKeys<TShape>]?: Exclude<Infer<TShape[TKey]>, undefined> } & { [TKey in RequiredKeys<TShape>]: Infer<TShape[TKey]> }>;
69
+ type InferStoredObject<TShape extends ObjectValidatorShape> = Expand<{ [TKey in OptionalKeys<TShape>]?: Exclude<InferStorage<TShape[TKey]>, undefined> } & { [TKey in RequiredKeys<TShape>]: InferStorage<TShape[TKey]> }>;
70
+ type JoinFieldPaths<TStart extends string, TEnd extends string> = `${TStart}.${TEnd}`;
71
+ type ShapeFieldPaths<TShape extends ObjectValidatorShape> = { [TKey in keyof TShape & string]: FieldPaths<TShape[TKey]> extends never ? TKey : TKey | JoinFieldPaths<TKey, FieldPaths<TShape[TKey]>> }[keyof TShape & string];
72
+ declare abstract class BaseValidator<TValue, TStorage = TValue, TFieldPaths extends string = never> implements Validator<TValue, TStorage, TFieldPaths> {
73
+ readonly kind: ValidatorKind;
74
+ readonly fieldPaths: TFieldPaths;
75
+ constructor(kind: ValidatorKind);
76
+ abstract parse(value: unknown, path?: string): TValue;
77
+ serialize(value: TValue, path?: string): TStorage;
78
+ deserialize(value: unknown, path?: string): TValue;
79
+ abstract describe(): ValidatorDescription;
49
80
  }
50
- declare class StringValidator implements Validator<string> {
51
- readonly kind: "string";
81
+ declare class StringValidator extends BaseValidator<string> {
82
+ constructor();
52
83
  parse(value: unknown, path?: string): string;
84
+ describe(): ValidatorDescription;
53
85
  }
54
- declare class NumberValidator implements Validator<number> {
55
- readonly kind: "number";
86
+ declare class NumberValidator extends BaseValidator<number> {
87
+ constructor();
56
88
  parse(value: unknown, path?: string): number;
89
+ describe(): ValidatorDescription;
57
90
  }
58
- declare class BooleanValidator implements Validator<boolean> {
59
- readonly kind: "boolean";
91
+ declare class BooleanValidator extends BaseValidator<boolean> {
92
+ constructor();
60
93
  parse(value: unknown, path?: string): boolean;
94
+ describe(): ValidatorDescription;
61
95
  }
62
- declare class NullValidator implements Validator<null> {
63
- readonly kind: "null";
96
+ declare class NullValidator extends BaseValidator<null> {
97
+ constructor();
64
98
  parse(value: unknown, path?: string): null;
99
+ describe(): ValidatorDescription;
65
100
  }
66
- declare class AnyValidator implements Validator<unknown> {
67
- readonly kind: "any";
101
+ declare class AnyValidator extends BaseValidator<unknown, unknown, never> {
102
+ constructor();
68
103
  parse(value: unknown): unknown;
104
+ describe(): ValidatorDescription;
69
105
  }
70
- declare class LiteralValidator<TValue extends string | number | boolean | null> implements Validator<TValue> {
106
+ declare class LiteralValidator<TValue extends string | number | boolean | null> extends BaseValidator<TValue> {
71
107
  readonly literalValue: TValue;
72
- readonly kind: "literal";
73
108
  constructor(literalValue: TValue);
74
109
  parse(value: unknown, path?: string): TValue;
110
+ describe(): ValidatorDescription;
75
111
  }
76
- declare class ArrayValidator<TItem> implements Validator<TItem[]> {
77
- readonly itemValidator: Validator<TItem>;
78
- readonly kind: "array";
79
- constructor(itemValidator: Validator<TItem>);
112
+ declare class EnumValidator<TValues extends readonly [string, ...string[]]> extends BaseValidator<TValues[number]> {
113
+ readonly values: TValues;
114
+ constructor(values: TValues);
115
+ parse(value: unknown, path?: string): TValues[number];
116
+ describe(): ValidatorDescription;
117
+ }
118
+ declare class ArrayValidator<TItem, TItemStorage, TItemValidator extends Validator<TItem, TItemStorage, string>> extends BaseValidator<TItem[], TItemStorage[], never> {
119
+ readonly itemValidator: TItemValidator;
120
+ constructor(itemValidator: TItemValidator);
80
121
  parse(value: unknown, path?: string): TItem[];
122
+ serialize(value: TItem[], path?: string): TItemStorage[];
123
+ deserialize(value: unknown, path?: string): TItem[];
124
+ describe(): ValidatorDescription;
81
125
  }
82
- declare class ObjectValidator<TShape extends ObjectValidatorShape> implements Validator<{ [TKey in keyof TShape]: Infer<TShape[TKey]> }> {
126
+ declare class ObjectValidator<TShape extends ObjectValidatorShape> extends BaseValidator<InferObject<TShape>, InferStoredObject<TShape>, ShapeFieldPaths<TShape>> {
83
127
  readonly shape: TShape;
84
- readonly kind: "object";
85
128
  constructor(shape: TShape);
86
- parse(value: unknown, path?: string): { [TKey in keyof TShape]: Infer<TShape[TKey]> };
129
+ parse(value: unknown, path?: string): InferObject<TShape>;
130
+ serialize(value: InferObject<TShape>, path?: string): InferStoredObject<TShape>;
131
+ deserialize(value: unknown, path?: string): InferObject<TShape>;
132
+ describe(): ValidatorDescription;
87
133
  }
88
- declare class IdValidator<TTableName extends string> implements Validator<string> {
134
+ declare class IdValidator<TTableName extends string> extends BaseValidator<string> {
89
135
  readonly tableName: TTableName;
90
- readonly kind: "id";
91
136
  constructor(tableName: TTableName);
92
137
  parse(value: unknown, path?: string): string;
138
+ describe(): ValidatorDescription;
93
139
  }
94
- declare class OptionalValidator<TValue> implements Validator<TValue | undefined> {
95
- readonly inner: Validator<TValue>;
96
- readonly kind: "optional";
97
- constructor(inner: Validator<TValue>);
140
+ declare class OptionalValidator<TValue, TStorage = TValue, TFieldPaths extends string = never> extends BaseValidator<TValue | undefined, TStorage | undefined, TFieldPaths> {
141
+ readonly inner: Validator<TValue, TStorage, TFieldPaths>;
142
+ constructor(inner: Validator<TValue, TStorage, TFieldPaths>);
98
143
  parse(value: unknown, path?: string): TValue | undefined;
144
+ serialize(value: TValue | undefined, path?: string): TStorage | undefined;
145
+ deserialize(value: unknown, path?: string): TValue | undefined;
146
+ describe(): ValidatorDescription;
147
+ }
148
+ declare class RecordValidator<TKey extends string, TValue, TStorage, TKeyValidator extends Validator<TKey, string, string>, TValueValidator extends Validator<TValue, TStorage, string>> extends BaseValidator<Record<TKey, TValue>, Record<TKey, TStorage>, never> {
149
+ readonly keyValidator: TKeyValidator;
150
+ readonly valueValidator: TValueValidator;
151
+ constructor(keyValidator: TKeyValidator, valueValidator: TValueValidator);
152
+ parse(value: unknown, path?: string): Record<TKey, TValue>;
153
+ serialize(value: Record<TKey, TValue>, path?: string): Record<TKey, TStorage>;
154
+ deserialize(value: unknown, path?: string): Record<TKey, TValue>;
155
+ describe(): ValidatorDescription;
156
+ }
157
+ declare class UnionValidator<TMembers extends readonly Validator<unknown, unknown, string>[]> extends BaseValidator<Infer<TMembers[number]>, InferStorage<TMembers[number]>, FieldPaths<TMembers[number]>> {
158
+ readonly members: TMembers;
159
+ constructor(members: TMembers);
160
+ parse(value: unknown, path?: string): Infer<TMembers[number]>;
161
+ serialize(value: Infer<TMembers[number]>, path?: string): InferStorage<TMembers[number]>;
162
+ deserialize(value: unknown, path?: string): Infer<TMembers[number]>;
163
+ describe(): ValidatorDescription;
164
+ }
165
+ declare class CodecValidator<TValue, TStored, TStorageFieldValidator extends Validator<TStored, unknown, string>, TValueFieldValidator extends Validator<TValue, unknown, string>> extends BaseValidator<TValue, InferStorage<TStorageFieldValidator>, FieldPaths<TValueFieldValidator>> {
166
+ readonly valueValidator: TValueFieldValidator;
167
+ readonly storageValidator: TStorageFieldValidator;
168
+ private readonly codec;
169
+ constructor(valueValidator: TValueFieldValidator, storageValidator: TStorageFieldValidator, codec: {
170
+ serialize(value: TValue): TStored;
171
+ deserialize(value: TStored): TValue;
172
+ });
173
+ parse(value: unknown, path?: string): TValue;
174
+ serialize(value: TValue, path?: string): InferStorage<TStorageFieldValidator>;
175
+ deserialize(value: unknown, path?: string): TValue;
176
+ describe(): ValidatorDescription;
99
177
  }
100
- type Infer<TValidator> = TValidator extends Validator<infer TValue> ? TValue : never;
101
- type ValidatorMap = Record<string, Validator<unknown>>;
102
178
  /**
103
- * The public validator builder API.
104
- *
105
- * Hover each property in your editor to see what it validates and how to use it.
179
+ * Public builder namespace for declaring Syncore schema fields and codecs.
106
180
  */
107
181
  interface ValidatorBuilderApi {
108
- /**
109
- * Validate a string value.
110
- *
111
- * @returns A validator that accepts JavaScript strings.
112
- */
113
182
  string(): StringValidator;
114
- /**
115
- * Validate a number value.
116
- *
117
- * @returns A validator that accepts finite JavaScript numbers.
118
- */
119
183
  number(): NumberValidator;
120
- /**
121
- * Validate a boolean value.
122
- *
123
- * @returns A validator that accepts `true` and `false`.
124
- */
125
184
  boolean(): BooleanValidator;
126
- /**
127
- * Validate the literal value `null`.
128
- *
129
- * @returns A validator that only accepts `null`.
130
- */
131
185
  null(): NullValidator;
132
- /**
133
- * Accept any value without validation.
134
- *
135
- * Use this sparingly for escape hatches when you do not want Syncore to
136
- * enforce a more specific runtime shape.
137
- */
138
186
  any(): AnyValidator;
139
- /**
140
- * Validate a single literal value.
141
- *
142
- * @param literalValue - The exact value that must be provided.
143
- * @returns A validator that only accepts that one value.
144
- */
145
187
  literal<TValue extends string | number | boolean | null>(literalValue: TValue): LiteralValidator<TValue>;
146
- /**
147
- * Validate an array whose items all use the same validator.
148
- *
149
- * @param itemValidator - The validator for each item in the array.
150
- * @returns A validator for arrays of the provided item type.
151
- */
152
- array<TItem>(itemValidator: Validator<TItem>): ArrayValidator<TItem>;
153
- /**
154
- * Validate an object with a fixed property shape.
155
- *
156
- * @param shape - The validators for each property on the object.
157
- * @returns A validator for objects matching that shape.
158
- */
188
+ enum<TValues extends readonly [string, ...string[]]>(values: TValues): EnumValidator<TValues>;
189
+ array<TItem, TItemStorage, TValidator extends Validator<TItem, TItemStorage, string>>(itemValidator: TValidator): ArrayValidator<TItem, TItemStorage, TValidator>;
159
190
  object<TShape extends ObjectValidatorShape>(shape: TShape): ObjectValidator<TShape>;
160
- /**
161
- * Validate an identifier string that points at a table.
162
- *
163
- * Use this for document ids that come from Syncore tables.
164
- *
165
- * @param tableName - The name of the referenced table.
166
- * @returns A validator for ids belonging to that table.
167
- */
168
191
  id<TTableName extends string>(tableName: TTableName): IdValidator<TTableName>;
169
- /**
170
- * Make another validator optional.
171
- *
172
- * @param inner - The validator for the defined case.
173
- * @returns A validator that accepts `undefined` or the inner value.
174
- */
175
- optional<TValue>(inner: Validator<TValue>): OptionalValidator<TValue>;
176
- }
177
- declare function ensureObjectValidator(value: Validator<unknown> | ValidatorMap): Validator<unknown>;
192
+ optional<TValue, TStorage, TFieldPaths extends string>(inner: Validator<TValue, TStorage, TFieldPaths>): OptionalValidator<TValue, TStorage, TFieldPaths>;
193
+ record<TKey extends string, TValue, TStorage, TKeyValidator extends Validator<TKey, string, string>, TValueValidator extends Validator<TValue, TStorage, string>>(keyValidator: TKeyValidator, valueValidator: TValueValidator): RecordValidator<TKey, TValue, TStorage, TKeyValidator, TValueValidator>;
194
+ union<TMembers extends readonly Validator<unknown, unknown, string>[]>(...members: TMembers): UnionValidator<TMembers>;
195
+ nullable<TValue, TStorage, TFieldPaths extends string>(inner: Validator<TValue, TStorage, TFieldPaths>): UnionValidator<readonly [Validator<TValue, TStorage, TFieldPaths>, NullValidator]>;
196
+ codec<TValue, TStored, TStorageFieldValidator extends Validator<TStored, unknown, string>, TValueFieldValidator extends Validator<TValue, unknown, string>>(valueValidator: TValueFieldValidator, config: {
197
+ storage: TStorageFieldValidator;
198
+ serialize(value: TValue): TStored;
199
+ deserialize(value: TStored): TValue;
200
+ }): CodecValidator<TValue, TStored, TStorageFieldValidator, TValueFieldValidator>;
201
+ }
178
202
  /**
179
- * Build runtime validators for schemas, function args, and return values.
180
- *
181
- * @example
182
- * ```ts
183
- * defineTable({
184
- * text: v.string(),
185
- * done: v.boolean(),
186
- * ownerId: v.optional(v.id("users"))
187
- * });
188
- * ```
203
+ * Primary schema builder namespace for Syncore's data-model DSL.
189
204
  */
190
- declare const v: ValidatorBuilderApi;
191
- declare function describeValidator(validator: Validator<unknown>): ValidatorDescription;
205
+ declare const s: ValidatorBuilderApi;
206
+ declare function isValidator(value: Validator<unknown, unknown, string> | ValidatorMap): value is Validator<unknown, unknown, string>;
207
+ declare function ensureObjectValidator<TShape extends ObjectValidatorShape>(value: TShape): ObjectValidator<TShape>;
208
+ declare function ensureObjectValidator<TValidator extends Validator<unknown, unknown, string>>(value: TValidator): TValidator;
209
+ declare function serializeValue<TValue, TStorage, TFieldPaths extends string>(validator: Validator<TValue, TStorage, TFieldPaths>, value: TValue, path?: string): TStorage;
210
+ declare function deserializeValue<TValue, TStorage, TFieldPaths extends string>(validator: Validator<TValue, TStorage, TFieldPaths>, value: unknown, path?: string): TValue;
211
+ declare function describeValidator(validator: Validator<unknown, unknown, string>): ValidatorDescription;
192
212
  //#endregion
193
- export { AnyValidator, ArrayValidator, BooleanValidator, IdValidator, Infer, LiteralValidator, NullValidator, NumberValidator, ObjectValidator, ObjectValidatorShape, OptionalValidator, StringValidator, Validator, ValidatorBuilderApi, ValidatorDescription, ValidatorKind, ValidatorMap, describeValidator, ensureObjectValidator, v };
213
+ export { AnyValidator, ArrayValidator, BooleanValidator, CodecValidator, EnumValidator, FieldPaths, IdValidator, Infer, InferStorage, JoinFieldPaths, LiteralValidator, NullValidator, NumberValidator, ObjectValidator, ObjectValidatorShape, OptionalValidator, RecordValidator, StringValidator, UnionValidator, Validator, ValidatorBuilderApi, ValidatorDescription, ValidatorKind, ValidatorMap, describeValidator, deserializeValue, ensureObjectValidator, isValidator, s, serializeValue };
194
214
  //# sourceMappingURL=validators.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"validators.d.ts","names":[],"sources":["../src/validators.ts"],"mappings":"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"}
1
+ {"version":3,"file":"validators.d.ts","names":[],"sources":["../src/validators.ts"],"mappings":"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"}