prostgles-server 3.0.134 → 3.0.136
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/JSONBValidation/validate_jsonb_schema_sql.d.ts.map +1 -1
- package/dist/JSONBValidation/validate_jsonb_schema_sql.js +45 -2
- package/dist/JSONBValidation/validate_jsonb_schema_sql.js.map +1 -1
- package/lib/JSONBValidation/validate_jsonb_schema_sql.d.ts.map +1 -1
- package/lib/JSONBValidation/validate_jsonb_schema_sql.js +45 -2
- package/lib/JSONBValidation/validate_jsonb_schema_sql.ts +45 -2
- package/package.json +1 -1
- package/tests/client/PID.txt +1 -1
- package/tests/server/package-lock.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate_jsonb_schema_sql.d.ts","sourceRoot":"","sources":["../../lib/JSONBValidation/validate_jsonb_schema_sql.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,wBAAwB,yBAAmC,CAAC;AACzE,eAAO,MAAM,yBAAyB,
|
|
1
|
+
{"version":3,"file":"validate_jsonb_schema_sql.d.ts","sourceRoot":"","sources":["../../lib/JSONBValidation/validate_jsonb_schema_sql.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,wBAAwB,yBAAmC,CAAC;AACzE,eAAO,MAAM,yBAAyB,QAwcrC,CAAC"}
|
|
@@ -31,6 +31,7 @@ DECLARE
|
|
|
31
31
|
"type": { "enum": ["data", "data-def"] },
|
|
32
32
|
"table": "string",
|
|
33
33
|
"column": "string",
|
|
34
|
+
"lookup": { "type": "any", "optional": true },
|
|
34
35
|
"isArray": { "type": "boolean", "optional": true },
|
|
35
36
|
"filter": { "optional": true, "type": "any" },
|
|
36
37
|
"isFullRow": { "optional": true, "type": {
|
|
@@ -46,11 +47,21 @@ DECLARE
|
|
|
46
47
|
"type": { "enum": ["schema"] },
|
|
47
48
|
"object": { "enum": ["table", "column"] },
|
|
48
49
|
"isArray": { "type": "boolean", "optional": true },
|
|
50
|
+
"lookup": { "type": "any", "optional": true },
|
|
49
51
|
"filter": { "optional": true, "type": "any" }
|
|
50
52
|
}
|
|
51
53
|
$d$;
|
|
52
54
|
|
|
53
55
|
extra_keys TEXT[];
|
|
56
|
+
|
|
57
|
+
/* Used for oneOf schema errors */
|
|
58
|
+
v_state TEXT;
|
|
59
|
+
v_msg TEXT;
|
|
60
|
+
v_detail TEXT;
|
|
61
|
+
v_hint TEXT;
|
|
62
|
+
v_context TEXT;
|
|
63
|
+
v_one_of_errors TEXT;
|
|
64
|
+
|
|
54
65
|
BEGIN
|
|
55
66
|
path = concat_ws(', ',
|
|
56
67
|
'Path: ' || array_to_string(checked_path, '.'),
|
|
@@ -63,6 +74,9 @@ BEGIN
|
|
|
63
74
|
RAISE EXCEPTION 'Empty schema. %', path USING HINT = path, COLUMN = colname;
|
|
64
75
|
END IF;
|
|
65
76
|
|
|
77
|
+
/* Sometimes text comes double quoted from jsonb, e.g.: '"string"' */
|
|
78
|
+
jsonb_schema = CASE WHEN jsonb_schema::text ilike '"%"' THEN LEFT(RIGHT(jsonb_schema::text, -1), -1) ELSE jsonb_schema END;
|
|
79
|
+
|
|
66
80
|
/* 'string' */
|
|
67
81
|
IF ARRAY[jsonb_schema] <@ allowed_types THEN
|
|
68
82
|
schema = jsonb_build_object('type', jsonb_schema);
|
|
@@ -250,7 +264,8 @@ BEGIN
|
|
|
250
264
|
END IF;
|
|
251
265
|
|
|
252
266
|
FOR sub_schema IN
|
|
253
|
-
SELECT CASE WHEN schema ? 'oneOfType' THEN jsonb_build_object('type', value) ELSE value END as value
|
|
267
|
+
SELECT CASE WHEN schema ? 'oneOfType' THEN jsonb_build_object('type', value) ELSE value END as value,
|
|
268
|
+
row_number() over() - 1 as idx
|
|
254
269
|
FROM jsonb_array_elements(oneof)
|
|
255
270
|
LOOP
|
|
256
271
|
|
|
@@ -266,10 +281,35 @@ BEGIN
|
|
|
266
281
|
|
|
267
282
|
/* Ignore exceptions in case the last schema will match */
|
|
268
283
|
EXCEPTION WHEN others THEN
|
|
284
|
+
|
|
285
|
+
GET STACKED DIAGNOSTICS
|
|
286
|
+
v_state = returned_sqlstate,
|
|
287
|
+
v_msg = message_text,
|
|
288
|
+
v_detail = pg_exception_detail,
|
|
289
|
+
v_hint = pg_exception_hint,
|
|
290
|
+
v_context = pg_exception_context;
|
|
291
|
+
|
|
292
|
+
/* Ignore duplicate errors */
|
|
293
|
+
IF v_one_of_errors IS NULL OR v_one_of_errors NOT ilike '%' || v_msg || '%' THEN
|
|
294
|
+
v_one_of_errors = concat_ws(
|
|
295
|
+
E'\n',
|
|
296
|
+
v_one_of_errors,
|
|
297
|
+
concat_ws(
|
|
298
|
+
', ',
|
|
299
|
+
'Schema index ' || sub_schema.idx::TEXT || ' error:',
|
|
300
|
+
'state: ' || v_state,
|
|
301
|
+
'message: ' || v_msg,
|
|
302
|
+
'detail: ' || v_detail,
|
|
303
|
+
'hint: ' || v_hint
|
|
304
|
+
-- 'context: ' || v_context
|
|
305
|
+
)
|
|
306
|
+
);
|
|
307
|
+
END IF;
|
|
269
308
|
END;
|
|
309
|
+
|
|
270
310
|
END LOOP;
|
|
271
311
|
|
|
272
|
-
RAISE EXCEPTION '
|
|
312
|
+
RAISE EXCEPTION 'No oneOf schemas matching ( % ), %', v_one_of_errors, path;-- USING HINT = path, COLUMN = colname;
|
|
273
313
|
|
|
274
314
|
/* arrayOfType: { key_name: { type: "string" } } */
|
|
275
315
|
ELSIF (schema ? 'arrayOf' OR schema ? 'arrayOfType') THEN
|
|
@@ -416,5 +456,8 @@ SELECT ${exports.VALIDATE_SCHEMA_FUNCNAME}('{ "lookup": { "type": "schema", "obj
|
|
|
416
456
|
|
|
417
457
|
SELECT ${exports.VALIDATE_SCHEMA_FUNCNAME}('{ "type": "time"}', '"22:22"');
|
|
418
458
|
SELECT ${exports.VALIDATE_SCHEMA_FUNCNAME}('{ "type": "Date"}', '"2222-22-22"');
|
|
459
|
+
|
|
460
|
+
|
|
461
|
+
SELECT ${exports.VALIDATE_SCHEMA_FUNCNAME}('{ "oneOf": ["number"]}','2');
|
|
419
462
|
`;
|
|
420
463
|
//# sourceMappingURL=validate_jsonb_schema_sql.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate_jsonb_schema_sql.js","sourceRoot":"","sources":["../../lib/JSONBValidation/validate_jsonb_schema_sql.ts"],"names":[],"mappings":";;;AAAA,kEAA+D;AAGlD,QAAA,wBAAwB,GAAG,uBAAgC,CAAC;AAC5D,QAAA,yBAAyB,GAAG;;;IAGrC,6BAAa,CAAC,kCAAkC;;;4BAGxB,gCAAwB;;6BAEvB,gCAAwB
|
|
1
|
+
{"version":3,"file":"validate_jsonb_schema_sql.js","sourceRoot":"","sources":["../../lib/JSONBValidation/validate_jsonb_schema_sql.ts"],"names":[],"mappings":";;;AAAA,kEAA+D;AAGlD,QAAA,wBAAwB,GAAG,uBAAgC,CAAC;AAC5D,QAAA,yBAAyB,GAAG;;;IAGrC,6BAAa,CAAC,kCAAkC;;;4BAGxB,gCAAwB;;6BAEvB,gCAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAoGxC,gCAAwB;;;;;;;;;;aAUxB,gCAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAuClB,gCAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBA8EvB,gCAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAiC/B,gCAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAqDtB,gCAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6EAgCsC,gCAAwB;;;;;;oEAMjC,gCAAwB;;;;;;;;;;;;;;;sBAetE,gCAAwB,QAAQ,6BAAa,CAAC,kCAAkC;;;;;;;;;;;;SAY7F,gCAAwB;;;;;;SAMxB,gCAAwB;;;;;SAKxB,gCAAwB;;;;SAIxB,gCAAwB;;;;;SAKxB,gCAAwB;;;;;;;;;;;;;;;;SAgBxB,gCAAwB;;;;;SAKxB,gCAAwB;;;;;SAKxB,gCAAwB;;;;;SAKxB,gCAAwB;;SAExB,gCAAwB;;SAExB,gCAAwB;;;SAGxB,gCAAwB;SACxB,gCAAwB;SACxB,gCAAwB;SACxB,gCAAwB;SACxB,gCAAwB;SACxB,gCAAwB;;SAExB,gCAAwB;SACxB,gCAAwB;;;SAGxB,gCAAwB;CAChC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate_jsonb_schema_sql.d.ts","sourceRoot":"","sources":["validate_jsonb_schema_sql.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,wBAAwB,yBAAmC,CAAC;AACzE,eAAO,MAAM,yBAAyB,
|
|
1
|
+
{"version":3,"file":"validate_jsonb_schema_sql.d.ts","sourceRoot":"","sources":["validate_jsonb_schema_sql.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,wBAAwB,yBAAmC,CAAC;AACzE,eAAO,MAAM,yBAAyB,QAwcrC,CAAC"}
|
|
@@ -31,6 +31,7 @@ DECLARE
|
|
|
31
31
|
"type": { "enum": ["data", "data-def"] },
|
|
32
32
|
"table": "string",
|
|
33
33
|
"column": "string",
|
|
34
|
+
"lookup": { "type": "any", "optional": true },
|
|
34
35
|
"isArray": { "type": "boolean", "optional": true },
|
|
35
36
|
"filter": { "optional": true, "type": "any" },
|
|
36
37
|
"isFullRow": { "optional": true, "type": {
|
|
@@ -46,11 +47,21 @@ DECLARE
|
|
|
46
47
|
"type": { "enum": ["schema"] },
|
|
47
48
|
"object": { "enum": ["table", "column"] },
|
|
48
49
|
"isArray": { "type": "boolean", "optional": true },
|
|
50
|
+
"lookup": { "type": "any", "optional": true },
|
|
49
51
|
"filter": { "optional": true, "type": "any" }
|
|
50
52
|
}
|
|
51
53
|
$d$;
|
|
52
54
|
|
|
53
55
|
extra_keys TEXT[];
|
|
56
|
+
|
|
57
|
+
/* Used for oneOf schema errors */
|
|
58
|
+
v_state TEXT;
|
|
59
|
+
v_msg TEXT;
|
|
60
|
+
v_detail TEXT;
|
|
61
|
+
v_hint TEXT;
|
|
62
|
+
v_context TEXT;
|
|
63
|
+
v_one_of_errors TEXT;
|
|
64
|
+
|
|
54
65
|
BEGIN
|
|
55
66
|
path = concat_ws(', ',
|
|
56
67
|
'Path: ' || array_to_string(checked_path, '.'),
|
|
@@ -63,6 +74,9 @@ BEGIN
|
|
|
63
74
|
RAISE EXCEPTION 'Empty schema. %', path USING HINT = path, COLUMN = colname;
|
|
64
75
|
END IF;
|
|
65
76
|
|
|
77
|
+
/* Sometimes text comes double quoted from jsonb, e.g.: '"string"' */
|
|
78
|
+
jsonb_schema = CASE WHEN jsonb_schema::text ilike '"%"' THEN LEFT(RIGHT(jsonb_schema::text, -1), -1) ELSE jsonb_schema END;
|
|
79
|
+
|
|
66
80
|
/* 'string' */
|
|
67
81
|
IF ARRAY[jsonb_schema] <@ allowed_types THEN
|
|
68
82
|
schema = jsonb_build_object('type', jsonb_schema);
|
|
@@ -250,7 +264,8 @@ BEGIN
|
|
|
250
264
|
END IF;
|
|
251
265
|
|
|
252
266
|
FOR sub_schema IN
|
|
253
|
-
SELECT CASE WHEN schema ? 'oneOfType' THEN jsonb_build_object('type', value) ELSE value END as value
|
|
267
|
+
SELECT CASE WHEN schema ? 'oneOfType' THEN jsonb_build_object('type', value) ELSE value END as value,
|
|
268
|
+
row_number() over() - 1 as idx
|
|
254
269
|
FROM jsonb_array_elements(oneof)
|
|
255
270
|
LOOP
|
|
256
271
|
|
|
@@ -266,10 +281,35 @@ BEGIN
|
|
|
266
281
|
|
|
267
282
|
/* Ignore exceptions in case the last schema will match */
|
|
268
283
|
EXCEPTION WHEN others THEN
|
|
284
|
+
|
|
285
|
+
GET STACKED DIAGNOSTICS
|
|
286
|
+
v_state = returned_sqlstate,
|
|
287
|
+
v_msg = message_text,
|
|
288
|
+
v_detail = pg_exception_detail,
|
|
289
|
+
v_hint = pg_exception_hint,
|
|
290
|
+
v_context = pg_exception_context;
|
|
291
|
+
|
|
292
|
+
/* Ignore duplicate errors */
|
|
293
|
+
IF v_one_of_errors IS NULL OR v_one_of_errors NOT ilike '%' || v_msg || '%' THEN
|
|
294
|
+
v_one_of_errors = concat_ws(
|
|
295
|
+
E'\n',
|
|
296
|
+
v_one_of_errors,
|
|
297
|
+
concat_ws(
|
|
298
|
+
', ',
|
|
299
|
+
'Schema index ' || sub_schema.idx::TEXT || ' error:',
|
|
300
|
+
'state: ' || v_state,
|
|
301
|
+
'message: ' || v_msg,
|
|
302
|
+
'detail: ' || v_detail,
|
|
303
|
+
'hint: ' || v_hint
|
|
304
|
+
-- 'context: ' || v_context
|
|
305
|
+
)
|
|
306
|
+
);
|
|
307
|
+
END IF;
|
|
269
308
|
END;
|
|
309
|
+
|
|
270
310
|
END LOOP;
|
|
271
311
|
|
|
272
|
-
RAISE EXCEPTION '
|
|
312
|
+
RAISE EXCEPTION 'No oneOf schemas matching ( % ), %', v_one_of_errors, path;-- USING HINT = path, COLUMN = colname;
|
|
273
313
|
|
|
274
314
|
/* arrayOfType: { key_name: { type: "string" } } */
|
|
275
315
|
ELSIF (schema ? 'arrayOf' OR schema ? 'arrayOfType') THEN
|
|
@@ -416,4 +456,7 @@ SELECT ${exports.VALIDATE_SCHEMA_FUNCNAME}('{ "lookup": { "type": "schema", "obj
|
|
|
416
456
|
|
|
417
457
|
SELECT ${exports.VALIDATE_SCHEMA_FUNCNAME}('{ "type": "time"}', '"22:22"');
|
|
418
458
|
SELECT ${exports.VALIDATE_SCHEMA_FUNCNAME}('{ "type": "Date"}', '"2222-22-22"');
|
|
459
|
+
|
|
460
|
+
|
|
461
|
+
SELECT ${exports.VALIDATE_SCHEMA_FUNCNAME}('{ "oneOf": ["number"]}','2');
|
|
419
462
|
`;
|
|
@@ -30,6 +30,7 @@ DECLARE
|
|
|
30
30
|
"type": { "enum": ["data", "data-def"] },
|
|
31
31
|
"table": "string",
|
|
32
32
|
"column": "string",
|
|
33
|
+
"lookup": { "type": "any", "optional": true },
|
|
33
34
|
"isArray": { "type": "boolean", "optional": true },
|
|
34
35
|
"filter": { "optional": true, "type": "any" },
|
|
35
36
|
"isFullRow": { "optional": true, "type": {
|
|
@@ -45,11 +46,21 @@ DECLARE
|
|
|
45
46
|
"type": { "enum": ["schema"] },
|
|
46
47
|
"object": { "enum": ["table", "column"] },
|
|
47
48
|
"isArray": { "type": "boolean", "optional": true },
|
|
49
|
+
"lookup": { "type": "any", "optional": true },
|
|
48
50
|
"filter": { "optional": true, "type": "any" }
|
|
49
51
|
}
|
|
50
52
|
$d$;
|
|
51
53
|
|
|
52
54
|
extra_keys TEXT[];
|
|
55
|
+
|
|
56
|
+
/* Used for oneOf schema errors */
|
|
57
|
+
v_state TEXT;
|
|
58
|
+
v_msg TEXT;
|
|
59
|
+
v_detail TEXT;
|
|
60
|
+
v_hint TEXT;
|
|
61
|
+
v_context TEXT;
|
|
62
|
+
v_one_of_errors TEXT;
|
|
63
|
+
|
|
53
64
|
BEGIN
|
|
54
65
|
path = concat_ws(', ',
|
|
55
66
|
'Path: ' || array_to_string(checked_path, '.'),
|
|
@@ -62,6 +73,9 @@ BEGIN
|
|
|
62
73
|
RAISE EXCEPTION 'Empty schema. %', path USING HINT = path, COLUMN = colname;
|
|
63
74
|
END IF;
|
|
64
75
|
|
|
76
|
+
/* Sometimes text comes double quoted from jsonb, e.g.: '"string"' */
|
|
77
|
+
jsonb_schema = CASE WHEN jsonb_schema::text ilike '"%"' THEN LEFT(RIGHT(jsonb_schema::text, -1), -1) ELSE jsonb_schema END;
|
|
78
|
+
|
|
65
79
|
/* 'string' */
|
|
66
80
|
IF ARRAY[jsonb_schema] <@ allowed_types THEN
|
|
67
81
|
schema = jsonb_build_object('type', jsonb_schema);
|
|
@@ -249,7 +263,8 @@ BEGIN
|
|
|
249
263
|
END IF;
|
|
250
264
|
|
|
251
265
|
FOR sub_schema IN
|
|
252
|
-
SELECT CASE WHEN schema ? 'oneOfType' THEN jsonb_build_object('type', value) ELSE value END as value
|
|
266
|
+
SELECT CASE WHEN schema ? 'oneOfType' THEN jsonb_build_object('type', value) ELSE value END as value,
|
|
267
|
+
row_number() over() - 1 as idx
|
|
253
268
|
FROM jsonb_array_elements(oneof)
|
|
254
269
|
LOOP
|
|
255
270
|
|
|
@@ -265,10 +280,35 @@ BEGIN
|
|
|
265
280
|
|
|
266
281
|
/* Ignore exceptions in case the last schema will match */
|
|
267
282
|
EXCEPTION WHEN others THEN
|
|
283
|
+
|
|
284
|
+
GET STACKED DIAGNOSTICS
|
|
285
|
+
v_state = returned_sqlstate,
|
|
286
|
+
v_msg = message_text,
|
|
287
|
+
v_detail = pg_exception_detail,
|
|
288
|
+
v_hint = pg_exception_hint,
|
|
289
|
+
v_context = pg_exception_context;
|
|
290
|
+
|
|
291
|
+
/* Ignore duplicate errors */
|
|
292
|
+
IF v_one_of_errors IS NULL OR v_one_of_errors NOT ilike '%' || v_msg || '%' THEN
|
|
293
|
+
v_one_of_errors = concat_ws(
|
|
294
|
+
E'\n',
|
|
295
|
+
v_one_of_errors,
|
|
296
|
+
concat_ws(
|
|
297
|
+
', ',
|
|
298
|
+
'Schema index ' || sub_schema.idx::TEXT || ' error:',
|
|
299
|
+
'state: ' || v_state,
|
|
300
|
+
'message: ' || v_msg,
|
|
301
|
+
'detail: ' || v_detail,
|
|
302
|
+
'hint: ' || v_hint
|
|
303
|
+
-- 'context: ' || v_context
|
|
304
|
+
)
|
|
305
|
+
);
|
|
306
|
+
END IF;
|
|
268
307
|
END;
|
|
308
|
+
|
|
269
309
|
END LOOP;
|
|
270
310
|
|
|
271
|
-
RAISE EXCEPTION '
|
|
311
|
+
RAISE EXCEPTION 'No oneOf schemas matching ( % ), %', v_one_of_errors, path;-- USING HINT = path, COLUMN = colname;
|
|
272
312
|
|
|
273
313
|
/* arrayOfType: { key_name: { type: "string" } } */
|
|
274
314
|
ELSIF (schema ? 'arrayOf' OR schema ? 'arrayOfType') THEN
|
|
@@ -415,5 +455,8 @@ SELECT ${VALIDATE_SCHEMA_FUNCNAME}('{ "lookup": { "type": "schema", "object": "c
|
|
|
415
455
|
|
|
416
456
|
SELECT ${VALIDATE_SCHEMA_FUNCNAME}('{ "type": "time"}', '"22:22"');
|
|
417
457
|
SELECT ${VALIDATE_SCHEMA_FUNCNAME}('{ "type": "Date"}', '"2222-22-22"');
|
|
458
|
+
|
|
459
|
+
|
|
460
|
+
SELECT ${VALIDATE_SCHEMA_FUNCNAME}('{ "oneOf": ["number"]}','2');
|
|
418
461
|
`;
|
|
419
462
|
|
package/package.json
CHANGED
package/tests/client/PID.txt
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
18339
|