prostgles-server 2.0.333 → 2.0.335

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/lib/validation.ts CHANGED
@@ -10,53 +10,55 @@ type BaseOptions = {
10
10
  };
11
11
 
12
12
  type SimpleType = BaseOptions & ({
13
- type:
13
+ type:
14
14
  | "number" | "boolean" | "integer" | "string" | "any"
15
15
  | "number[]" | "boolean[]" | "integer[]" | "string[]" | "any[]"
16
16
  | ValidationSchema;
17
17
 
18
18
  } | {
19
- oneOf: readonly any[];
19
+ enum: readonly any[];
20
20
  })
21
21
 
22
- export type OneOfTypes = BaseOptions & {
23
- oneOfTypes: readonly ValidationSchema[];
22
+ export type OneOf = BaseOptions & {
23
+ oneOf: readonly ValidationSchema[];
24
24
  }
25
- type FieldType = SimpleType | OneOfTypes;
26
-
27
- type GetType<T extends FieldType> =
28
- | T extends { type: ValidationSchema }? SchemaObject<T["type"]> :
29
- | T extends { type: "number" }? number:
30
- | T extends { type: "boolean" }? boolean:
31
- | T extends { type: "integer" }? number:
32
- | T extends { type: "string" }? string:
33
- | T extends { type: "any" }? any:
34
- | T extends { type: "number[]" }? number[]:
35
- | T extends { type: "boolean[]" }? boolean[]:
36
- | T extends { type: "integer[]" }? number[]:
37
- | T extends { type: "string[]" }? string[]:
38
- | T extends { type: "any[]" }? any[]:
39
- | T extends { oneOf: readonly any[] }? T["oneOf"][number] :
40
-
41
- /** This needs fixing */
42
- | T extends { oneOfTypes: readonly ValidationSchema[] }? SchemaObject<T["oneOfTypes"][number]> :
43
- any;
25
+ type FieldType = SimpleType | OneOf;
26
+
27
+ type GetType<T extends FieldType> =
28
+ | T extends { type: ValidationSchema } ? SchemaObject<T["type"]> :
29
+ | T extends { type: "number" } ? number :
30
+ | T extends { type: "boolean" } ? boolean :
31
+ | T extends { type: "integer" } ? number :
32
+ | T extends { type: "string" } ? string :
33
+ | T extends { type: "any" } ? any :
34
+ | T extends { type: "number[]" } ? number[] :
35
+ | T extends { type: "boolean[]" } ? boolean[] :
36
+ | T extends { type: "integer[]" } ? number[] :
37
+ | T extends { type: "string[]" } ? string[] :
38
+ | T extends { type: "any[]" } ? any[] :
39
+ | T extends { enum: readonly any[] } ? T["enum"][number] :
40
+
41
+ /** This needs fixing */
42
+ | T extends { oneOf: readonly ValidationSchema[] } ? SchemaObject<T["oneOf"][number]> :
43
+ any;
44
44
 
45
45
  export type ValidationSchema = Record<string, FieldType>;
46
46
  export type SchemaObject<S extends ValidationSchema> = ({
47
- [K in keyof S as S[K]["optional"] extends true? K : never]?: GetType<S[K]>
47
+ [K in keyof S as S[K]["optional"] extends true ? K : never]?: GetType<S[K]>
48
48
  } & {
49
- [K in keyof S as S[K]["optional"] extends true? never : K]: GetType<S[K]>
50
- });
49
+ [K in keyof S as S[K]["optional"] extends true ? never : K]: GetType<S[K]>
50
+ });
51
51
 
52
52
  /** tests */
53
53
  const s = {
54
54
  a: { type: "boolean" },
55
55
  c: { type: { c1: { type: "string" } } },
56
- o: { oneOfTypes: [
57
- { z: { type: "integer" } },
58
- { z1: { type: "integer" } }
59
- ] }
56
+ o: {
57
+ oneOf: [
58
+ { z: { type: "integer" } },
59
+ { z1: { type: "integer" } }
60
+ ]
61
+ }
60
62
  } as const;
61
63
  const ss: SchemaObject<typeof s> = {
62
64
  a: true,
@@ -69,30 +71,30 @@ const ss: SchemaObject<typeof s> = {
69
71
  export function validate<T>(obj: T, key: keyof T, validation: FieldType): boolean {
70
72
  let err = `The provided value for ${JSON.stringify(key)} is of invalid type. Expecting `;
71
73
  const val = obj[key];
72
- if("type" in validation && validation.type){
73
- if(typeof validation.type !== "string"){
74
+ if ("type" in validation && validation.type) {
75
+ if (typeof validation.type !== "string") {
74
76
  getKeys(validation.type).forEach(subKey => {
75
77
  validate(val, subKey as any, (validation.type as ValidationSchema)[subKey])
76
78
  });
77
79
  }
78
80
  err += validation.type;
79
- if(validation.type === "boolean" && typeof val !== validation.type) throw new Error(err)
80
- if(validation.type === "string" && typeof val !== validation.type) throw new Error(err)
81
- if(validation.type === "number" && !Number.isFinite(val)) throw new Error(err)
82
- if(validation.type === "integer" && !Number.isInteger(val)) throw new Error(err)
83
- } else if("oneOf" in validation && validation.oneOf){
84
- err += `on of: ${validation.oneOf}`;
85
- if(!validation.oneOf.includes(val)) throw new Error(err)
81
+ if (validation.type === "boolean" && typeof val !== validation.type) throw new Error(err)
82
+ if (validation.type === "string" && typeof val !== validation.type) throw new Error(err)
83
+ if (validation.type === "number" && !Number.isFinite(val)) throw new Error(err)
84
+ if (validation.type === "integer" && !Number.isInteger(val)) throw new Error(err)
85
+ } else if ("enum" in validation && validation.enum) {
86
+ err += `on of: ${validation.enum}`;
87
+ if (!validation.enum.includes(val)) throw new Error(err)
86
88
  }
87
89
  return true
88
90
  }
89
91
 
90
- export function validateSchema<S extends ValidationSchema>(schema: S, obj: SchemaObject<S>, objName?: string, optional = false){
91
- if((!schema || isEmpty(schema)) && !optional) throw new Error(`Expecting ${objName} to be defined`);
92
+ export function validateSchema<S extends ValidationSchema>(schema: S, obj: SchemaObject<S>, objName?: string, optional = false) {
93
+ if ((!schema || isEmpty(schema)) && !optional) throw new Error(`Expecting ${objName} to be defined`);
92
94
  getKeys(schema).forEach(k => validate(obj as any, k, schema[k]));
93
95
  }
94
96
 
95
- export function getPGCheckConstraint(args: { escapedFieldName: string; schema: ValidationSchema | OneOfTypes, nullable: boolean; isRootQuery?: boolean; optional?: boolean; }, depth: number): string {
97
+ export function getPGCheckConstraint(args: { escapedFieldName: string; schema: ValidationSchema | OneOf, nullable: boolean; isRootQuery?: boolean; optional?: boolean; }, depth: number): string {
96
98
  const { schema: s, escapedFieldName, nullable, optional, isRootQuery } = args;
97
99
 
98
100
  const jsToPGtypes = {
@@ -108,40 +110,40 @@ export function getPGCheckConstraint(args: { escapedFieldName: string; schema: V
108
110
  const checks: string[] = [];
109
111
  const valAsJson = `${escapedFieldName}->${asValue(k)}`;
110
112
  const valAsText = `${escapedFieldName}->>${asValue(k)}`;
111
- if(t.nullable) checks.push(`${valAsJson} IS NULL`);
112
- if(t.optional) checks.push(`${escapedFieldName} ? ${asValue(k)} = FALSE`);
113
-
114
- if("oneOfTypes" in t){
115
- checks.push(`(${t.oneOfTypes.map(subType => getPGCheckConstraint({ escapedFieldName: valAsJson, schema: subType, nullable, optional: t.optional }, depth + 1)).join(" OR ")})`)
116
- } else if("oneOf" in t){
117
- if(!t.oneOf.length || t.oneOf.some(v => v === undefined || !["number", "boolean", "string", null].includes(typeof v))) {
118
- throw new Error(`Invalid ValidationSchema for property: ${k} of field ${escapedFieldName}: oneOf cannot be empty AND can only contain: numbers, text, boolean, null`);
113
+ if (t.nullable) checks.push(`${valAsJson} IS NULL`);
114
+ if (t.optional) checks.push(`${escapedFieldName} ? ${asValue(k)} = FALSE`);
115
+
116
+ if ("oneOf" in t) {
117
+ checks.push(`(${t.oneOf.map(subType => getPGCheckConstraint({ escapedFieldName: valAsJson, schema: subType, nullable, optional: t.optional }, depth + 1)).join(" OR ")})`)
118
+ } else if ("enum" in t) {
119
+ if (!t.enum.length || t.enum.some(v => v === undefined || !["number", "boolean", "string", null].includes(typeof v))) {
120
+ throw new Error(`Invalid ValidationSchema for property: ${k} of field ${escapedFieldName}: enum cannot be empty AND can only contain: numbers, text, boolean, null`);
119
121
  }
120
- const oneOfHasNull = t.oneOf.includes(null);
121
- if(oneOfHasNull) checks.push(`${valAsText} IS NULL`);
122
- const oneOf = t.oneOf.filter(o => o !== null);
123
- oneOf.forEach(o => {
122
+ const oneOfHasNull = t.enum.includes(null);
123
+ if (oneOfHasNull) checks.push(`${valAsText} IS NULL`);
124
+ const _enum = t.enum.filter(o => o !== null);
125
+ _enum.forEach(o => {
124
126
  checks.push(`(${valAsText})${(jsToPGtypes as any)[typeof o]} = ${asValue(o)}`);
125
127
  })
126
- } else if("type" in t){
127
- if(typeof t.type === "string") {
128
- if(t.type.endsWith("[]")){
128
+ } else if ("type" in t) {
129
+ if (typeof t.type === "string") {
130
+ if (t.type.endsWith("[]")) {
129
131
  const correctType = t.type.slice(0, -2);
130
- let elemCheck = correctType === "any"? "" : `AND ('{' || right(left(${valAsText},-1),-1) || '}')${jsToPGtypes[correctType as keyof typeof jsToPGtypes]}[] IS NOT NULL`
132
+ let elemCheck = correctType === "any" ? "" : `AND ('{' || right(left(${valAsText},-1),-1) || '}')${jsToPGtypes[correctType as keyof typeof jsToPGtypes]}[] IS NOT NULL`
131
133
  checks.push(`jsonb_typeof(${valAsJson}) = 'array' ${elemCheck}`)
132
134
  } else {
133
135
  const correctType = t.type.replace("integer", "number");
134
- if(correctType !== "any"){
136
+ if (correctType !== "any") {
135
137
  checks.push(`jsonb_typeof(${valAsJson}) = ${asValue(correctType)} `)
136
138
  }
137
139
  }
138
140
  } else {
139
141
  const check = getPGCheckConstraint({ escapedFieldName: valAsJson, schema: t.type, nullable: !!t.nullable, optional: !!t.optional }, depth + 1).trim();
140
- if(check) checks.push(`(${check})`)
142
+ if (check) checks.push(`(${check})`)
141
143
  }
142
144
  }
143
145
  const result = checks.join(" OR ")
144
- if(!depth) return `COALESCE(${result}, false)`
146
+ if (!depth) return `COALESCE(${result}, false)`
145
147
  return result
146
148
  }
147
149
 
@@ -149,21 +151,21 @@ export function getPGCheckConstraint(args: { escapedFieldName: string; schema: V
149
151
 
150
152
  const checks: string[] = [];
151
153
  let typeChecks = "";
152
- if(isOneOfTypes(s)){
153
- typeChecks = s.oneOfTypes.map(t => `(${getSchemaChecks(t)})` ).join(" OR ");
154
+ if (isOneOfTypes(s)) {
155
+ typeChecks = s.oneOf.map(t => `(${getSchemaChecks(t)})`).join(" OR ");
154
156
  } else {
155
157
  typeChecks = getSchemaChecks(s);
156
158
  }
157
- if(nullable) checks.push(` ${escapedFieldName} IS NULL `);
158
- checks.push(`jsonb_typeof(${escapedFieldName}) = 'object' ${typeChecks? ` AND (${typeChecks})` : "" }`);
159
+ if (nullable) checks.push(` ${escapedFieldName} IS NULL `);
160
+ checks.push(`jsonb_typeof(${escapedFieldName}) = 'object' ${typeChecks ? ` AND (${typeChecks})` : ""}`);
159
161
  return checks.join(" OR ");
160
162
  }
161
163
  type ColOpts = { nullable?: boolean };
162
- const isOneOfTypes = (s: ValidationSchema | OneOfTypes): s is OneOfTypes => {
164
+ const isOneOfTypes = (s: ValidationSchema | OneOf): s is OneOf => {
163
165
 
164
- if("oneOfTypes" in s){
165
- if(!Array.isArray(s.oneOfTypes)){
166
- throw "Expecting oneOfTypes to be an array of types";
166
+ if ("oneOf" in s) {
167
+ if (!Array.isArray(s.oneOf)) {
168
+ throw "Expecting oneOf to be an array of types";
167
169
  }
168
170
  return true;
169
171
  }
@@ -172,120 +174,160 @@ const isOneOfTypes = (s: ValidationSchema | OneOfTypes): s is OneOfTypes => {
172
174
 
173
175
  export function getSchemaTSTypes(schema: ValidationSchema, leading = "", isOneOf = false): string {
174
176
  const getFieldType = (def: FieldType) => {
175
- const nullType = (def.nullable? `null | ` : "");
176
- if("type" in def){
177
- if(typeof def.type === "string"){
177
+ const nullType = (def.nullable ? `null | ` : "");
178
+ if ("type" in def) {
179
+ if (typeof def.type === "string") {
178
180
  const correctType = def.type.replace("integer", "number")
179
181
  return nullType + correctType
180
182
  } else {
181
183
  return nullType + getSchemaTSTypes(def.type, "", true)
182
184
  }
183
- } else if("oneOf" in def){
184
- return nullType + def.oneOf.map(v => asValue(v)).join(" | ")
185
- } else if("oneOfTypes" in def){
186
- return (def.nullable? `\n${leading} | null` : "") + def.oneOfTypes.map(v => `\n${leading} | ` + getSchemaTSTypes(v, "", true)).join("")
185
+ } else if ("enum" in def) {
186
+ return nullType + def.enum.map(v => asValue(v)).join(" | ")
187
+ } else if ("oneOf" in def) {
188
+ return (def.nullable ? `\n${leading} | null` : "") + def.oneOf.map(v => `\n${leading} | ` + getSchemaTSTypes(v, "", true)).join("")
187
189
  } else throw "Unexpected getSchemaTSTypes"
188
190
  }
189
191
 
190
- let spacing = isOneOf? " " : " ";
192
+ let spacing = isOneOf ? " " : " ";
191
193
 
192
194
  let res = `${leading}{ \n` + getKeys(schema).map(k => {
193
195
  const def = schema[k];
194
- return `${leading}${spacing}${k}${def.optional? "?" : ""}: ` + getFieldType(def) + ";";
195
- }).join("\n") + ` \n${leading}}${isOneOf? "" : ";"}`;
196
-
196
+ return `${leading}${spacing}${k}${def.optional ? "?" : ""}: ` + getFieldType(def) + ";";
197
+ }).join("\n") + ` \n${leading}}${isOneOf ? "" : ";"}`;
198
+
197
199
  /** Keep single line */
198
- if(isOneOf) res = res.split("\n").join("")
200
+ if (isOneOf) res = res.split("\n").join("")
199
201
  return res;
200
202
  }
201
203
 
202
- export function getJSONBSchemaTSTypes(schema: ValidationSchema | OneOfTypes, colOpts: ColOpts, leading = "", isOneOf = false): string {
203
- if(isOneOfTypes(schema)){
204
- return (colOpts.nullable? `\n${leading} | null` : "") + schema.oneOfTypes.map(s => `\n${leading} | ` + getSchemaTSTypes(s, "", true)).join("")
204
+ export function getJSONBSchemaTSTypes(schema: ValidationSchema | OneOf, colOpts: ColOpts, leading = "", isOneOf = false): string {
205
+ if (isOneOfTypes(schema)) {
206
+ return (colOpts.nullable ? `\n${leading} | null` : "") + schema.oneOf.map(s => `\n${leading} | ` + getSchemaTSTypes(s, "", true)).join("")
205
207
  } else {
206
- return (colOpts.nullable? `null | ` : "") + getSchemaTSTypes(schema, leading, isOneOf);
208
+ return (colOpts.nullable ? `null | ` : "") + getSchemaTSTypes(schema, leading, isOneOf);
207
209
  }
208
210
  }
209
211
 
210
- // type JSONSchema =
211
- const getJSONSchemaObject = <T extends ValidationSchema>(objDef: T): Record<keyof T, any> => {
212
- const resultType: Record<keyof T, any> = {} as any;
213
-
214
- return getKeys(objDef).reduce((a, k) => {
215
- const itemSchema: FieldType = objDef[k];
216
- const { nullable, optional, description, title } = itemSchema;
217
- let item = {} as any;
218
-
219
- if("type" in itemSchema){
220
- const { type } = itemSchema;
221
- /**
222
- * Is primitive or any
223
- */
224
- if(typeof type === "string"){
225
- const arrayType = type.endsWith("[]")? type.slice(0, -2) : undefined;
226
- if(arrayType){
227
- item = {
228
- type: "array",
229
- items: { type: arrayType === "any"? {} : arrayType }
212
+ namespace JSTypes {
213
+ type Base = {
214
+ $id?: string;
215
+ $schema?: string;
216
+ title?: string;
217
+ description?: string;
218
+ required?: boolean;
219
+ // nullable?: boolean;
220
+ // optional?: boolean;
221
+ }
222
+ export type Any = {};
223
+
224
+ export type Object = Base & {
225
+ type: "object";
226
+ properties: Record<string, Schema>;
227
+ }
228
+ export type Enum = Base & {
229
+ type: "string" | "number";
230
+ enum: (string | number)[]
231
+ }
232
+ export type Array = Base & {
233
+ type: "array";
234
+ items: (string | number)[]
235
+ }
236
+ export type OneOf = {
237
+ oneOf: (Any | Object | Enum | Array)[]
238
+ }
239
+ export type Schema =
240
+ | Any
241
+ | Object
242
+ | Enum
243
+ | Array
244
+ | OneOf;
245
+ }
246
+
247
+ type JSONSchema = JSTypes.Schema
248
+
249
+ const getJSONSchemaObject = <T extends ValidationSchema>(objDef: T): Record<keyof T, JSONSchema> => {
250
+ const resultType: JSONSchema = {
251
+ type: "object",
252
+ properties: getKeys(objDef).reduce((a, k) => {
253
+ const itemSchema: FieldType = objDef[k];
254
+ const { nullable, optional, description, title } = itemSchema;
255
+ let item = {} as any;
256
+
257
+ if ("type" in itemSchema) {
258
+ const { type } = itemSchema;
259
+ /**
260
+ * Is primitive or any
261
+ */
262
+ if (typeof type === "string") {
263
+ const arrayType = type.endsWith("[]") ? type.slice(0, -2) : undefined;
264
+ if (arrayType) {
265
+ item = {
266
+ type: "array",
267
+ items: { type: arrayType === "any" ? {} : arrayType }
268
+ }
269
+ } else {
270
+ item = {
271
+ type: type === "any" ? {} : type
272
+ }
230
273
  }
274
+
275
+ /**
276
+ * Is object
277
+ */
231
278
  } else {
232
279
  item = {
233
- type: type === "any"? {} : type
280
+ type: "object",
281
+ properties: getJSONSchemaObject(type)
234
282
  }
283
+
235
284
  }
236
285
 
237
- /**
238
- * Is object
239
- */
240
- } else {
286
+ } else if ("enum" in itemSchema) {
241
287
  item = {
242
- type: "object",
243
- properties: getJSONSchemaObject(type)
288
+ type: typeof itemSchema.enum[0]!,
289
+ "enum": itemSchema.enum //.concat(nullable? [null] : [])
244
290
  }
245
-
291
+ } else if ("oneOf" in itemSchema) {
292
+ item = {
293
+ oneOf: itemSchema.oneOf.map(t => getJSONSchemaObject(t))
294
+ }
295
+ } else {
296
+ throw new Error("Unexpected jsonbSchema itemSchema" + JSON.stringify({ itemSchema, objDef }, null, 2))
246
297
  }
247
298
 
248
- } else if("oneOf" in itemSchema) {
249
- item = {
250
- type: typeof itemSchema.oneOf[0]!,
251
- "enum": itemSchema.oneOf //.concat(nullable? [null] : [])
252
- }
253
- } else if("oneOfTypes" in itemSchema) {
254
- item = {
255
- oneOf: itemSchema.oneOfTypes.map(t => getJSONSchemaObject(t))
299
+ if (nullable) {
300
+ const nullDef = { type: "null" }
301
+ if (item.oneOf) item.oneOf.push(nullDef)
302
+ else item = {
303
+ oneOf: [item, nullDef]
304
+ }
256
305
  }
257
- } else {
258
- throw new Error("Unexpected jsonbSchema itemSchema" + JSON.stringify({itemSchema, objDef}, null, 2))
259
- }
260
306
 
261
- if(nullable){
262
- const nullDef = { type: "null" }
263
- if(item.oneOf) item.oneOf.push(nullDef)
264
- else item = {
265
- oneOf: [item, nullDef]
307
+ return {
308
+ ...a,
309
+ [k]: {
310
+ ...item,
311
+ required: !optional,
312
+ description,
313
+ title,
314
+ }
266
315
  }
267
- }
316
+ }, {} as Record<string, JSTypes.Schema>)
317
+ }
268
318
 
269
- return {
270
- ...a,
271
- [k]: {
272
- ...item,
273
- required: !optional,
274
- description,
275
- title,
276
- }
277
- }
278
- }, resultType)
319
+ return resultType as any;
279
320
  }
280
321
 
281
- export function getJSONBSchemaAsJSONSchema(tableName: string, colName: string, columnConfig: BaseColumn<{ en: 1 }> & JSONBColumnDef): AnyObject {
322
+ export function getJSONBSchemaAsJSONSchema(tableName: string, colName: string, columnConfig: BaseColumn<{ en: 1 }> & JSONBColumnDef): JSONSchema {
282
323
 
283
324
  const schema = columnConfig.jsonbSchema;
284
-
285
- let jSchema = getJSONSchemaObject({
286
- field1: isOneOfTypes(schema)? schema as OneOfTypes :
287
- { type: schema as ValidationSchema }
288
- }).field1;
325
+
326
+ let jSchema = getJSONSchemaObject({
327
+ field1:
328
+ isOneOfTypes(schema) ? schema :
329
+ { type: schema as ValidationSchema }
330
+ }).field1;
289
331
 
290
332
  return {
291
333
  "$id": `${tableName}.${colName}`,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prostgles-server",
3
- "version": "2.0.333",
3
+ "version": "2.0.335",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -1 +1 @@
1
- 70976
1
+ 81428
@@ -573,10 +573,10 @@ async function isomorphic(db) {
573
573
  tjson: {
574
574
  json: { jsonbSchema: {
575
575
  a: { type: "boolean" },
576
- arr: { oneOf: ["1", "2", "3"] },
577
- arr1: { oneOf: [1, 2, 3] },
576
+ arr: { enum: ["1", "2", "3"] },
577
+ arr1: { enum: [1, 2, 3] },
578
578
  arr2: { type: "integer[]" },
579
- o: { oneOfTypes: [{ o1: { type: "integer" } }, { o2: { type: "boolean" } }], optional: true },
579
+ o: { oneOf: [{ o1: { type: "integer" } }, { o2: { type: "boolean" } }], optional: true },
580
580
  }
581
581
  }
582
582
  },
@@ -656,10 +656,10 @@ export default async function isomorphic(db: Required<DBHandlerServer> | Require
656
656
  tjson: {
657
657
  json: { jsonbSchema: {
658
658
  a: { type: "boolean" },
659
- arr: { oneOf: ["1", "2", "3"] },
660
- arr1: { oneOf: [1, 2, 3] },
659
+ arr: { enum: ["1", "2", "3"] },
660
+ arr1: { enum: [1, 2, 3] },
661
661
  arr2: { type: "integer[]" },
662
- o: { oneOfTypes: [{ o1: { type: "integer" } }, { o2: { type: "boolean" } }], optional: true },
662
+ o: { oneOf: [{ o1: { type: "integer" } }, { o2: { type: "boolean" } }], optional: true },
663
663
  }
664
664
  }
665
665
  },
@@ -89,11 +89,11 @@ function dd() {
89
89
  columns: {
90
90
  id: { sqlDefinition: `SERIAL PRIMARY KEY ` },
91
91
  email: { sqlDefinition: `TEXT NOT NULL` },
92
- status: { oneOf: ["active", "disabled", "pending"] },
92
+ status: { enum: ["active", "disabled", "pending"] },
93
93
  preferences: { defaultValue: "{}",
94
94
  jsonbSchema: {
95
95
  showIntro: { type: "boolean", optional: true },
96
- theme: { oneOf: ["light", "dark", "auto"], optional: true },
96
+ theme: { enum: ["light", "dark", "auto"], optional: true },
97
97
  others: { type: "any[]" }
98
98
  }
99
99
  },
@@ -104,18 +104,18 @@ function dd() {
104
104
  columns: {
105
105
  json: { jsonbSchema: {
106
106
  a: { type: "boolean" },
107
- arr: { oneOf: ["1", "2", "3"] },
108
- arr1: { oneOf: [1, 2, 3] },
107
+ arr: { enum: ["1", "2", "3"] },
108
+ arr1: { enum: [1, 2, 3] },
109
109
  arr2: { type: "integer[]" },
110
110
  arrStr: { type: "string[]", optional: true, nullable: true },
111
- o: { oneOfTypes: [{ o1: { type: "integer" } }, { o2: { type: "boolean" } }], optional: true, nullable: true },
111
+ o: { oneOf: [{ o1: { type: "integer" } }, { o2: { type: "boolean" } }], optional: true, nullable: true },
112
112
  }
113
113
  },
114
- colOneOf: { oneOf: ["a", "b", "c"] },
114
+ colOneOf: { enum: ["a", "b", "c"] },
115
115
  status: {
116
116
  nullable: true,
117
117
  jsonbSchema: {
118
- oneOfTypes: [
118
+ oneOf: [
119
119
  { ok: { type: "string" } },
120
120
  { err: { type: "string" } },
121
121
  {
@@ -131,10 +131,10 @@ function dd() {
131
131
  jsonOneOf: {
132
132
  nullable: true,
133
133
  jsonbSchema: {
134
- oneOfTypes: [
135
- { command: { oneOf: ["a"] } },
134
+ oneOf: [
135
+ { command: { enum: ["a"] } },
136
136
  {
137
- command: { oneOf: ["b"] },
137
+ command: { enum: ["b"] },
138
138
  option: { type: "integer[]" }
139
139
  }
140
140
  ]
@@ -110,11 +110,11 @@ function dd(){
110
110
  columns: {
111
111
  id: { sqlDefinition: `SERIAL PRIMARY KEY ` },
112
112
  email: { sqlDefinition: `TEXT NOT NULL` },
113
- status: { oneOf: ["active", "disabled", "pending"] },
113
+ status: { enum: ["active", "disabled", "pending"] },
114
114
  preferences: { defaultValue: "{}",
115
115
  jsonbSchema: {
116
116
  showIntro: { type: "boolean", optional: true },
117
- theme: { oneOf: ["light", "dark", "auto"], optional: true },
117
+ theme: { enum: ["light", "dark", "auto"], optional: true },
118
118
  others: { type: "any[]" }
119
119
  }
120
120
  },
@@ -125,18 +125,18 @@ function dd(){
125
125
  columns: {
126
126
  json: { jsonbSchema: {
127
127
  a: { type: "boolean" },
128
- arr: { oneOf: ["1", "2", "3"] },
129
- arr1: { oneOf: [1, 2, 3] },
128
+ arr: { enum: ["1", "2", "3"] },
129
+ arr1: { enum: [1, 2, 3] },
130
130
  arr2: { type: "integer[]" },
131
131
  arrStr: { type: "string[]", optional: true, nullable: true },
132
- o: { oneOfTypes: [{ o1: { type: "integer" } }, { o2: { type: "boolean" } }], optional: true, nullable: true },
132
+ o: { oneOf: [{ o1: { type: "integer" } }, { o2: { type: "boolean" } }], optional: true, nullable: true },
133
133
  }
134
134
  },
135
- colOneOf: { oneOf: ["a", "b", "c"] },
135
+ colOneOf: { enum: ["a", "b", "c"] },
136
136
  status: {
137
137
  nullable: true,
138
138
  jsonbSchema: {
139
- oneOfTypes: [
139
+ oneOf: [
140
140
  { ok: { type: "string" } },
141
141
  { err: { type: "string" } },
142
142
  {
@@ -152,10 +152,10 @@ function dd(){
152
152
  jsonOneOf: {
153
153
  nullable: true,
154
154
  jsonbSchema: {
155
- oneOfTypes: [
156
- { command: { oneOf: ["a"] } },
155
+ oneOf: [
156
+ { command: { enum: ["a"] } },
157
157
  {
158
- command: { oneOf: ["b"] },
158
+ command: { enum: ["b"] },
159
159
  option: { type: "integer[]" }
160
160
  }
161
161
  ]
@@ -21,7 +21,7 @@
21
21
  },
22
22
  "../..": {
23
23
  "name": "prostgles-server",
24
- "version": "2.0.332",
24
+ "version": "2.0.334",
25
25
  "license": "MIT",
26
26
  "dependencies": {
27
27
  "@aws-sdk/client-s3": "^3.121.0",
@@ -13,12 +13,12 @@ prostgles<DBSchemaGenerated>({
13
13
  columns: {
14
14
  id: { sqlDefinition: `SERIAL PRIMARY KEY ` },
15
15
  email: { sqlDefinition: `TEXT NOT NULL` },
16
- status: { oneOf: ["active", "disabled", "pending"] },
16
+ status: { enum: ["active", "disabled", "pending"] },
17
17
  preferences: {
18
18
  defaultValue: "{}",
19
19
  jsonbSchema: {
20
20
  showIntro: { type: "boolean", optional: true },
21
- theme: { oneOf: ["light", "dark"], optional: true },
21
+ theme: { enum: ["light", "dark"], optional: true },
22
22
  }
23
23
  },
24
24
  }