prostgles-types 3.0.23 → 3.0.25

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/dist/util.d.ts CHANGED
@@ -3,8 +3,10 @@ import { AnyObject, TS_COLUMN_DATA_TYPES } from ".";
3
3
  export declare function asName(str: string): string;
4
4
  export declare function pickKeys<T extends AnyObject, Include extends keyof T>(obj: T, include?: Include[], onlyIfDefined?: boolean): Pick<T, Include>;
5
5
  export declare function omitKeys<T extends AnyObject, Exclude extends keyof T>(obj: T, exclude: Exclude[]): Omit<T, Exclude>;
6
+ export declare function filter<T extends AnyObject, ArrFilter extends Partial<T>>(array: T[], arrFilter: ArrFilter): T[];
7
+ export declare function find<T extends AnyObject, ArrFilter extends Partial<T>>(array: T[], arrFilter: ArrFilter): T | undefined;
6
8
  export declare function stableStringify(data: AnyObject, opts: any): string | undefined;
7
- export declare type TextPatch = {
9
+ export type TextPatch = {
8
10
  from: number;
9
11
  to: number;
10
12
  text: string;
@@ -12,18 +14,18 @@ export declare type TextPatch = {
12
14
  };
13
15
  export declare function getTextPatch(oldStr: string, newStr: string): TextPatch | string;
14
16
  export declare function unpatchText(original: string, patch: TextPatch): string;
15
- export declare type SyncTableInfo = {
17
+ export type SyncTableInfo = {
16
18
  id_fields: string[];
17
19
  synced_field: string;
18
20
  throttle: number;
19
21
  batch_size: number;
20
22
  };
21
- export declare type BasicOrderBy = {
23
+ export type BasicOrderBy = {
22
24
  fieldName: string;
23
25
  tsDataType: TS_COLUMN_DATA_TYPES;
24
26
  asc: boolean;
25
27
  }[];
26
- export declare type WALConfig = SyncTableInfo & {
28
+ export type WALConfig = SyncTableInfo & {
27
29
  onSendStart?: () => any;
28
30
  onSend: (items: any[], fullItems: WALItem[]) => Promise<any>;
29
31
  onSendEnd?: (batch: any[], fullItems: WALItem[], error?: any) => any;
@@ -32,12 +34,12 @@ export declare type WALConfig = SyncTableInfo & {
32
34
  DEBUG_MODE?: boolean;
33
35
  id?: string;
34
36
  };
35
- export declare type WALItem = {
37
+ export type WALItem = {
36
38
  initial?: AnyObject;
37
39
  delta?: AnyObject;
38
40
  current: AnyObject;
39
41
  };
40
- export declare type WALItemsObj = Record<string, WALItem>;
42
+ export type WALItemsObj = Record<string, WALItem>;
41
43
  export declare class WAL {
42
44
  private changed;
43
45
  private sending;
@@ -62,12 +64,16 @@ export declare function get(obj: any, propertyPath: string | string[]): any;
62
64
  export declare function isObject(obj: any): obj is Record<string, any>;
63
65
  export declare function isDefined<T>(v: T | undefined | void): v is T;
64
66
  export declare function getKeys<T extends AnyObject>(o: T): Array<keyof T>;
65
- export declare type Explode<T> = keyof T extends infer K ? K extends unknown ? {
67
+ export type Explode<T> = keyof T extends infer K ? K extends unknown ? {
66
68
  [I in keyof T]: I extends K ? T[I] : never;
67
69
  } : never : never;
68
- export declare type AtMostOne<T> = Explode<Partial<T>>;
69
- export declare type AtLeastOne<T, U = {
70
+ export type AtMostOne<T> = Explode<Partial<T>>;
71
+ export type AtLeastOne<T, U = {
70
72
  [K in keyof T]: Pick<T, K>;
71
73
  }> = Partial<T> & U[keyof U];
72
- export declare type ExactlyOne<T> = AtMostOne<T> & AtLeastOne<T>;
74
+ export type ExactlyOne<T> = AtMostOne<T> & AtLeastOne<T>;
75
+ type UnionKeys<T> = T extends T ? keyof T : never;
76
+ type StrictUnionHelper<T, TAll> = T extends any ? T & Partial<Record<Exclude<UnionKeys<TAll>, keyof T>, never>> : never;
77
+ export type StrictUnion<T> = StrictUnionHelper<T, T>;
78
+ export {};
73
79
  //# sourceMappingURL=util.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../lib/util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../lib/util.ts"],"names":[],"mappings":"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"}
package/dist/util.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getKeys = exports.isDefined = exports.isObject = exports.get = exports.isEmpty = exports.WAL = exports.unpatchText = exports.getTextPatch = exports.stableStringify = exports.omitKeys = exports.pickKeys = exports.asName = void 0;
3
+ exports.getKeys = exports.isDefined = exports.isObject = exports.get = exports.isEmpty = exports.WAL = exports.unpatchText = exports.getTextPatch = exports.stableStringify = exports.find = exports.filter = exports.omitKeys = exports.pickKeys = exports.asName = void 0;
4
4
  const md5_1 = require("./md5");
5
5
  function asName(str) {
6
6
  if (str === null || str === undefined || !str.toString || !str.toString())
@@ -31,6 +31,14 @@ function omitKeys(obj, exclude) {
31
31
  return pickKeys(obj, getKeys(obj).filter(k => !exclude.includes(k)));
32
32
  }
33
33
  exports.omitKeys = omitKeys;
34
+ function filter(array, arrFilter) {
35
+ return array.filter(d => Object.entries(arrFilter).every(([k, v]) => d[k] === v));
36
+ }
37
+ exports.filter = filter;
38
+ function find(array, arrFilter) {
39
+ return filter(array, arrFilter)[0];
40
+ }
41
+ exports.find = find;
34
42
  function stableStringify(data, opts) {
35
43
  if (!opts)
36
44
  opts = {};
package/dist/util.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../lib/util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../lib/util.ts"],"names":[],"mappings":"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"}
package/lib/index.ts CHANGED
@@ -1,6 +1,7 @@
1
1
 
2
2
  import { FullFilter, AnyObject, FullFilterBasic, ValueOf, ComplexFilter } from "./filters";
3
3
  import { FileColumnConfig } from "./files";
4
+ import { JSONB } from "./jsonb";
4
5
 
5
6
  export const _PG_strings = [
6
7
  'bpchar','char','varchar','text','citext','uuid','bytea', 'time','timetz','interval','name',
@@ -157,7 +158,8 @@ export type ColumnInfo = {
157
158
  min?: string | number;
158
159
  max?: string | number;
159
160
  hint?: string;
160
- jsonSchema?: AnyObject;
161
+
162
+ jsonbSchema?: JSONB.JSONBSchema;
161
163
 
162
164
  /**
163
165
  * If degined then this column is referencing the file table
@@ -889,3 +891,4 @@ export * from "./filters";
889
891
  export type { ClientExpressData, ClientSyncHandles, ClientSyncInfo, SyncConfig, ClientSyncPullResponse, SyncBatchParams, onUpdatesParams } from "./replication";
890
892
  export type { ALLOWED_CONTENT_TYPE, ALLOWED_EXTENSION, FileColumnConfig, FileType } from "./files";
891
893
  export { CONTENT_TYPE_TO_EXT } from "./files";
894
+ export * from "./jsonb";
package/lib/jsonb.ts ADDED
@@ -0,0 +1,288 @@
1
+ import { getKeys, isObject, StrictUnion } from "./util";
2
+ import type { JSONSchema7, JSONSchema7TypeName } from "json-schema";
3
+
4
+ export const PrimitiveTypes = ["boolean" , "number", "integer", "string", "any"] as const;
5
+ export const PrimitiveArrayTypes = PrimitiveTypes.map(v => `${v}[]` as `${typeof v}[]`);
6
+ export const DATA_TYPES = [
7
+ ...PrimitiveTypes,
8
+ ...PrimitiveArrayTypes
9
+ ] as const;
10
+ type DataType = typeof DATA_TYPES[number];
11
+
12
+
13
+ export namespace JSONB {
14
+
15
+ export type BaseOptions = {
16
+ /**
17
+ * False by default
18
+ */
19
+ optional?: boolean;
20
+ /**
21
+ * False by default
22
+ */
23
+ nullable?: boolean;
24
+ description?: string;
25
+ title?: string;
26
+ };
27
+
28
+ export type BasicType = BaseOptions & {
29
+ type: DataType;
30
+ allowedValues?: any[];
31
+ oneOf?: undefined;
32
+ oneOfType?: undefined;
33
+ arrayOf?: undefined;
34
+ arrayOfType?: undefined;
35
+ enum?: undefined;
36
+ };
37
+
38
+ export type ObjectType = BaseOptions & {
39
+ type: ObjectSchema;
40
+ allowedValues?: undefined;
41
+ oneOf?: undefined;
42
+ oneOfType?: undefined;
43
+ arrayOf?: undefined;
44
+ arrayOfType?: undefined;
45
+ enum?: undefined;
46
+ }
47
+
48
+ export type EnumType = BaseOptions & {
49
+ type?: undefined;
50
+ enum: readonly any[];
51
+ oneOf?: undefined;
52
+ oneOfType?: undefined;
53
+ arrayOf?: undefined;
54
+ arrayOfType?: undefined;
55
+ allowedValues?: undefined;
56
+ };
57
+
58
+ export type OneOf = BaseOptions & {
59
+ type?: undefined;
60
+ arrayOf?: undefined;
61
+ arrayOfType?: undefined;
62
+ allowedValues?: undefined;
63
+ enum?: undefined;
64
+ } & ({
65
+ oneOf?: undefined;
66
+ oneOfType: readonly ObjectSchema[];
67
+ } | {
68
+ oneOf: FieldType[];
69
+ oneOfType?: undefined;
70
+ })
71
+ export type ArrayOf = BaseOptions & {
72
+ type?: undefined;
73
+ allowedValues?: undefined;
74
+ oneOf?: undefined;
75
+ oneOfType?: undefined;
76
+ enum?: undefined;
77
+ } & ({
78
+ arrayOf?: undefined;
79
+ arrayOfType: ObjectSchema;
80
+ } | {
81
+ arrayOf: FieldType;
82
+ arrayOfType?: undefined;
83
+ });
84
+
85
+ export type RecordType = BaseOptions & {
86
+ type?: undefined;
87
+ allowedValues?: undefined;
88
+ oneOf?: undefined;
89
+ oneOfType?: undefined;
90
+ arrayOf?: undefined;
91
+ arrayOfType?: undefined;
92
+ enum?: undefined;
93
+ record: {
94
+ keysEnum?: readonly string[];
95
+ values?: FieldType;
96
+ }
97
+ }
98
+
99
+ export type FieldTypeObj = StrictUnion<
100
+ | BasicType
101
+ | ObjectType
102
+ | EnumType
103
+ | OneOf
104
+ | ArrayOf
105
+ | RecordType
106
+ >;
107
+
108
+ export type FieldType =
109
+ | DataType
110
+ | FieldTypeObj;
111
+
112
+
113
+ export type GetType<T extends FieldType | Omit<FieldTypeObj, "optional">> =
114
+ | T extends { type: ObjectSchema } ? GetObjectType<T["type"]> :
115
+ | T extends "number" | { type: "number" } ? number :
116
+ | T extends "boolean" | { type: "boolean" } ? boolean :
117
+ | T extends "integer" | { type: "integer" } ? number :
118
+ | T extends "string" | { type: "string" } ? string :
119
+ | T extends "any" | { type: "any" } ? any :
120
+ | T extends "number[]" | { type: "number[]" } ? number[] :
121
+ | T extends "boolean[]" | { type: "boolean[]" } ? boolean[] :
122
+ | T extends "integer[]" | { type: "integer[]" } ? number[] :
123
+ | T extends "string[]" | { type: "string[]" } ? string[] :
124
+ | T extends "any[]" | { type: "any[]" } ? any[] :
125
+ | T extends { "enum": readonly any[] } ? T["enum"][number] :
126
+ | T extends { "record": RecordType["record"] } ? Record<
127
+ T["record"] extends { keysEnum: readonly string[] }? T["record"]["keysEnum"][number] : string,
128
+ T["record"] extends { values: FieldType }? GetType<T["record"]["values"]> : any
129
+ > :
130
+
131
+ | T extends { oneOf: FieldType[] } ? StrictUnion<GetType<T["oneOf"][number]>> :
132
+ | T extends { oneOf: readonly ObjectSchema[] } ? StrictUnion<GetType<T["oneOf"][number]>> :
133
+
134
+ | T extends { arrayOf: ObjectSchema } ? GetType<T["arrayOf"]>[] :
135
+ | T extends { arrayOfType: ObjectSchema } ? GetType<T["arrayOfType"]>[] :
136
+ any;
137
+
138
+ type IsOptional<F extends FieldType> = F extends DataType? false : F extends { optional: true }? true : false;
139
+
140
+ const _r: GetType<{ record: { keysEnum: ["a", "b"], values: "integer[]" } }> = {
141
+ a: [2],
142
+ b: [221]
143
+ }
144
+
145
+ export type ObjectSchema = Record<string, FieldType>;
146
+ export type JSONBSchema = Omit<FieldTypeObj, "optional">;
147
+
148
+ const _dd: JSONBSchema = {
149
+ enum: [1],
150
+ type: "any"
151
+ }
152
+
153
+ export type GetObjectType<S extends ObjectSchema> = (
154
+ {
155
+ [K in keyof S as IsOptional<S[K]> extends true ? K : never]?: GetType<S[K]>
156
+ } & {
157
+ [K in keyof S as IsOptional<S[K]> extends true ? never : K]: GetType<S[K]>
158
+ }
159
+ );
160
+ export type SchemaObject<S extends JSONBSchema> = S["nullable"] extends true? (null | GetType<S>) : GetType<S>;
161
+ }
162
+
163
+
164
+ /** tests */
165
+ const s: JSONB.JSONBSchema = {
166
+ type: {
167
+ a: { type: "boolean" },
168
+ c: { type: { c1: { type: "string" } } },
169
+ arr: { arrayOfType: { d: "string" } },
170
+ o: {
171
+ oneOfType: [
172
+ { z: { type: "integer" } },
173
+ { z1: { type: "integer" } }
174
+ ]
175
+ }
176
+ }
177
+ };
178
+
179
+ const _ss: JSONB.SchemaObject<typeof s> = {
180
+ a: true,
181
+ arr: [{ d: "" }],
182
+ c: {
183
+ c1: ""
184
+ },
185
+ o: { z1: 23 }
186
+ }
187
+
188
+ const getJSONSchemaObject = (rawType: JSONB.FieldType | JSONB.JSONBSchema, rootInfo?: { id: string }): JSONSchema7 => {
189
+ const { type, arrayOf, arrayOfType, description, nullable, oneOf, oneOfType, title, record, ...t } = typeof rawType === "string"? ({ type: rawType } as JSONB.FieldTypeObj) : rawType;
190
+
191
+ let result: JSONSchema7 = {};
192
+ const partialProps: Partial<JSONSchema7> = {
193
+ ...((t.enum || t.allowedValues?.length) && { enum: t.allowedValues ?? t.enum!.slice(0) }),
194
+ ...(!!description && { description }),
195
+ ...(!!title && { title }),
196
+ };
197
+
198
+ if(t.enum?.length){
199
+ partialProps.type = typeof t.enum[0]! as any;
200
+ }
201
+
202
+ if(typeof type === "string" || arrayOf || arrayOfType){
203
+
204
+ /** ARRAY */
205
+ if(type && typeof type !== "string") {
206
+ throw "Not expected";
207
+ }
208
+ if(arrayOf || arrayOfType || type?.endsWith("[]")){
209
+ const arrayItems =
210
+ (arrayOf || arrayOfType)? getJSONSchemaObject(arrayOf || { type: arrayOfType }) :
211
+ type?.startsWith("any")? { type: undefined } :
212
+ {
213
+ type: type?.slice(0, -2) as JSONSchema7TypeName,
214
+ ...(t.allowedValues && { enum: t.allowedValues }),
215
+ };
216
+ result = {
217
+ type: "array",
218
+ items: arrayItems,
219
+ }
220
+
221
+ /** PRIMITIVES */
222
+ } else {
223
+ result = {
224
+ type: type as JSONSchema7TypeName,
225
+ }
226
+ }
227
+
228
+ /** OBJECT */
229
+ } else if(isObject(type)){
230
+ result = {
231
+ type: "object",
232
+ required: getKeys(type).filter(k => {
233
+ const t = type[k]!;
234
+ return typeof t === "string" || !t.optional;
235
+ }),
236
+ properties: getKeys(type).reduce((a, k) => {
237
+ return {
238
+ ...a,
239
+ [k]: getJSONSchemaObject(type[k]!)
240
+ }
241
+ }, {}),
242
+ }
243
+ } else if(oneOf || oneOfType){
244
+ const _oneOf = oneOf || oneOfType!.map(type => ({ type }))
245
+ result = {
246
+ type: "object",
247
+ oneOf: _oneOf.map(t => getJSONSchemaObject(t))
248
+ }
249
+ } else if(record){
250
+ result = {
251
+ type: "object",
252
+ ...(record.values && !record.keysEnum && { additionalProperties: getJSONSchemaObject(record.values) }),
253
+ ...(record.keysEnum && { properties: record.keysEnum.reduce((a, v) => ({
254
+ ...a,
255
+ [v]: !record.values? { type: {} } : getJSONSchemaObject(record.values)
256
+ }), {}) })
257
+ }
258
+ }
259
+
260
+ if (nullable) {
261
+ const nullDef = { type: "null" } as const;
262
+ if (result.oneOf) {
263
+ result.oneOf.push(nullDef)
264
+ } else if (result.enum && !result.enum.includes(null)) {
265
+ result.enum.push(null)
266
+
267
+ } else result = {
268
+ type: 'object',
269
+ oneOf: [result, nullDef]
270
+ }
271
+ }
272
+
273
+ const rootSchema: JSONSchema7 | undefined = !rootInfo? undefined : {
274
+ "$id": rootInfo?.id,
275
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
276
+ };
277
+
278
+ return {
279
+ ...rootSchema,
280
+ ...partialProps,
281
+ ...result,
282
+ }
283
+ }
284
+
285
+ export function getJSONBSchemaAsJSONSchema(tableName: string, colName: string, schema: JSONB.JSONBSchema): JSONSchema7 {
286
+ return getJSONSchemaObject(schema, { id: `${tableName}.${colName}` })
287
+ }
288
+
package/lib/util.ts CHANGED
@@ -31,6 +31,13 @@ export function omitKeys<T extends AnyObject, Exclude extends keyof T>(obj: T, e
31
31
  return pickKeys(obj, getKeys(obj).filter(k => !exclude.includes(k as any)))
32
32
  }
33
33
 
34
+ export function filter<T extends AnyObject, ArrFilter extends Partial<T>>(array: T[], arrFilter: ArrFilter): T[] {
35
+ return array.filter(d => Object.entries(arrFilter).every(([k, v]) => d[k] === v))
36
+ }
37
+ export function find<T extends AnyObject, ArrFilter extends Partial<T>>(array: T[], arrFilter: ArrFilter): T | undefined {
38
+ return filter(array, arrFilter)[0];
39
+ }
40
+
34
41
  export function stableStringify(data: AnyObject, opts: any) {
35
42
  if (!opts) opts = {};
36
43
  if (typeof opts === 'function') opts = { cmp: opts };
@@ -494,4 +501,9 @@ export type Explode<T> = keyof T extends infer K
494
501
  : never;
495
502
  export type AtMostOne<T> = Explode<Partial<T>>;
496
503
  export type AtLeastOne<T, U = {[K in keyof T]: Pick<T, K> }> = Partial<T> & U[keyof U]
497
- export type ExactlyOne<T> = AtMostOne<T> & AtLeastOne<T>
504
+ export type ExactlyOne<T> = AtMostOne<T> & AtLeastOne<T>;
505
+
506
+
507
+ type UnionKeys<T> = T extends T ? keyof T : never;
508
+ type StrictUnionHelper<T, TAll> = T extends any ? T & Partial<Record<Exclude<UnionKeys<TAll>, keyof T>, never>> : never;
509
+ export type StrictUnion<T> = StrictUnionHelper<T, T>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prostgles-types",
3
- "version": "3.0.23",
3
+ "version": "3.0.25",
4
4
  "description": "",
5
5
  "main": "dist/index_umd.js",
6
6
  "types": "dist/index.d.ts",
@@ -28,9 +28,12 @@
28
28
  ],
29
29
  "homepage": "https://prostgles.com",
30
30
  "devDependencies": {
31
- "tsconfig-paths-webpack-plugin": "^3.5.2",
32
- "typescript": "^4.8.4",
33
- "webpack": "^5.72.1",
34
- "webpack-cli": "^4.9.2"
31
+ "tsconfig-paths-webpack-plugin": "^4.0.0",
32
+ "typescript": "^4.9.5",
33
+ "webpack": "^5.75.0",
34
+ "webpack-cli": "^5.0.1"
35
+ },
36
+ "dependencies": {
37
+ "json-schema": "^0.4.0"
35
38
  }
36
39
  }
package/tests/index.js CHANGED
@@ -1,15 +1,8 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ const assert_1 = require("assert");
12
4
  const util_1 = require("../dist/util");
5
+ const jsonb_1 = require("../dist/jsonb");
13
6
  const typeTests_1 = require("./typeTests");
14
7
  (0, typeTests_1.typeTestsOK)();
15
8
  let error;
@@ -35,10 +28,88 @@ vals.map(({ o, n }, i) => {
35
28
  if (failed > -1) {
36
29
  error = { msg: "unpatchText failed for:", data: vals[failed] };
37
30
  }
31
+ assert_1.strict.deepEqual((0, jsonb_1.getJSONBSchemaAsJSONSchema)("tjson", "json", { type: {
32
+ a: { type: "boolean" },
33
+ arr: { enum: ["1", "2", "3"] },
34
+ arr1: { enum: [1, 2, 3] },
35
+ arr2: { type: "integer[]" },
36
+ arrStr: { type: "string[]", optional: true, nullable: true },
37
+ o: { optional: true, nullable: true, oneOfType: [
38
+ { o1: "integer" },
39
+ { o2: "boolean" }
40
+ ] },
41
+ } }), {
42
+ $id: 'tjson.json',
43
+ $schema: 'https://json-schema.org/draft/2020-12/schema',
44
+ type: 'object',
45
+ required: ['a', 'arr', 'arr1', 'arr2'],
46
+ properties: {
47
+ a: { type: 'boolean' },
48
+ arr: {
49
+ type: 'string', enum: ['1', '2', '3']
50
+ },
51
+ arr1: {
52
+ type: 'number', enum: [1, 2, 3]
53
+ },
54
+ arr2: { type: 'array', items: { type: 'integer' } },
55
+ arrStr: {
56
+ type: "object",
57
+ oneOf: [
58
+ { type: 'array', items: { type: 'string' } },
59
+ { type: 'null' }
60
+ ]
61
+ },
62
+ o: {
63
+ type: "object",
64
+ oneOf: [
65
+ { type: "object", required: ["o1"], properties: { o1: { type: 'integer' } } },
66
+ { type: "object", required: ["o2"], properties: { o2: { type: 'boolean' } } },
67
+ { type: 'null' }
68
+ ]
69
+ }
70
+ }
71
+ });
72
+ assert_1.strict.deepEqual((0, jsonb_1.getJSONBSchemaAsJSONSchema)("tjson", "status", {
73
+ nullable: true,
74
+ oneOfType: [
75
+ { ok: { type: "string" } },
76
+ { err: { type: "string" } },
77
+ {
78
+ loading: { type: {
79
+ loaded: { type: "number" },
80
+ total: { type: "number" }
81
+ }
82
+ }
83
+ }
84
+ ]
85
+ }), {
86
+ $id: 'tjson.status',
87
+ $schema: 'https://json-schema.org/draft/2020-12/schema',
88
+ type: "object",
89
+ oneOf: [
90
+ { type: "object", required: ["ok"], properties: { ok: { type: 'string' } } },
91
+ { type: "object", required: ["err"], properties: { err: { type: 'string' } } },
92
+ {
93
+ type: "object",
94
+ required: ["loading"],
95
+ properties: {
96
+ loading: {
97
+ required: ["loaded", "total"],
98
+ properties: {
99
+ loaded: { type: 'number' },
100
+ total: { type: 'number' }
101
+ },
102
+ type: 'object'
103
+ }
104
+ }
105
+ },
106
+ { type: "null" }
107
+ ],
108
+ });
38
109
  const w = new util_1.WAL({
39
110
  id_fields: ["a", "b"],
40
111
  synced_field: "c",
41
- onSend: (d) => __awaiter(void 0, void 0, void 0, function* () {
112
+ onSend: async (d) => {
42
113
  if (d[0].a !== "a" || d[3].a !== "z" || d[2].b !== "zbb") {
43
114
  error = error || { msg: "WAL sorting failed", data: d };
44
115
  }
@@ -50,7 +121,7 @@ const w = new util_1.WAL({
50
121
  console.log("Testing successful");
51
122
  process.exit(0);
52
123
  }
53
- }),
124
+ },
54
125
  throttle: 100,
55
126
  batch_size: 50
56
127
  });