prostgles-server 3.0.86 → 3.0.88

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 (216) hide show
  1. package/.eslintignore +5 -0
  2. package/.eslintrc.json +30 -0
  3. package/dist/DBEventsManager.js +1 -1
  4. package/dist/DBEventsManager.js.map +1 -1
  5. package/dist/DBSchemaBuilder.d.ts.map +1 -1
  6. package/dist/DBSchemaBuilder.js +6 -6
  7. package/dist/DBSchemaBuilder.js.map +1 -1
  8. package/dist/DboBuilder/QueryBuilder/Functions.js +9 -9
  9. package/dist/DboBuilder/QueryBuilder/Functions.js.map +1 -1
  10. package/dist/DboBuilder/QueryBuilder/QueryBuilder.d.ts.map +1 -1
  11. package/dist/DboBuilder/QueryBuilder/QueryBuilder.js +8 -7
  12. package/dist/DboBuilder/QueryBuilder/QueryBuilder.js.map +1 -1
  13. package/dist/DboBuilder/QueryBuilder/makeSelectQuery.d.ts.map +1 -1
  14. package/dist/DboBuilder/QueryBuilder/makeSelectQuery.js +4 -4
  15. package/dist/DboBuilder/QueryBuilder/makeSelectQuery.js.map +1 -1
  16. package/dist/DboBuilder/TableHandler.d.ts.map +1 -1
  17. package/dist/DboBuilder/TableHandler.js +18 -20
  18. package/dist/DboBuilder/TableHandler.js.map +1 -1
  19. package/dist/DboBuilder/ViewHandler.d.ts +0 -10
  20. package/dist/DboBuilder/ViewHandler.d.ts.map +1 -1
  21. package/dist/DboBuilder/ViewHandler.js +50 -63
  22. package/dist/DboBuilder/ViewHandler.js.map +1 -1
  23. package/dist/DboBuilder/delete.js +0 -1
  24. package/dist/DboBuilder/delete.js.map +1 -1
  25. package/dist/DboBuilder/getColumns.js +5 -4
  26. package/dist/DboBuilder/getColumns.js.map +1 -1
  27. package/dist/DboBuilder/getCondition.d.ts.map +1 -1
  28. package/dist/DboBuilder/getCondition.js +6 -6
  29. package/dist/DboBuilder/getCondition.js.map +1 -1
  30. package/dist/DboBuilder/insert.js +15 -16
  31. package/dist/DboBuilder/insert.js.map +1 -1
  32. package/dist/DboBuilder/insertDataParse.d.ts.map +1 -1
  33. package/dist/DboBuilder/insertDataParse.js +9 -10
  34. package/dist/DboBuilder/insertDataParse.js.map +1 -1
  35. package/dist/DboBuilder/parseUpdateRules.js +2 -2
  36. package/dist/DboBuilder/parseUpdateRules.js.map +1 -1
  37. package/dist/DboBuilder/runSQL.d.ts.map +1 -1
  38. package/dist/DboBuilder/runSQL.js +5 -5
  39. package/dist/DboBuilder/runSQL.js.map +1 -1
  40. package/dist/DboBuilder/subscribe.js +3 -3
  41. package/dist/DboBuilder/subscribe.js.map +1 -1
  42. package/dist/DboBuilder/update.js +5 -6
  43. package/dist/DboBuilder/update.js.map +1 -1
  44. package/dist/DboBuilder/uploadFile.d.ts.map +1 -1
  45. package/dist/DboBuilder/uploadFile.js +1 -1
  46. package/dist/DboBuilder/uploadFile.js.map +1 -1
  47. package/dist/DboBuilder.d.ts.map +1 -1
  48. package/dist/DboBuilder.js +13 -14
  49. package/dist/DboBuilder.js.map +1 -1
  50. package/dist/FileManager.d.ts.map +1 -1
  51. package/dist/FileManager.js +3 -5
  52. package/dist/FileManager.js.map +1 -1
  53. package/dist/Filtering.js +7 -7
  54. package/dist/Filtering.js.map +1 -1
  55. package/dist/JSONBValidation/validate_jsonb_schema_sql.d.ts +3 -0
  56. package/dist/JSONBValidation/validate_jsonb_schema_sql.d.ts.map +1 -0
  57. package/dist/JSONBValidation/validate_jsonb_schema_sql.js +295 -0
  58. package/dist/JSONBValidation/validate_jsonb_schema_sql.js.map +1 -0
  59. package/dist/JSONBValidation/validation.d.ts +108 -0
  60. package/dist/JSONBValidation/validation.d.ts.map +1 -0
  61. package/dist/JSONBValidation/validation.js +222 -0
  62. package/dist/JSONBValidation/validation.js.map +1 -0
  63. package/dist/PostgresNotifListenManager.js +1 -1
  64. package/dist/PostgresNotifListenManager.js.map +1 -1
  65. package/dist/Prostgles.d.ts.map +1 -1
  66. package/dist/Prostgles.js +20 -20
  67. package/dist/Prostgles.js.map +1 -1
  68. package/dist/PubSubManager/PubSubManager.d.ts.map +1 -1
  69. package/dist/PubSubManager/PubSubManager.js +10 -8
  70. package/dist/PubSubManager/PubSubManager.js.map +1 -1
  71. package/dist/PubSubManager/initPubSubManager.d.ts.map +1 -1
  72. package/dist/PubSubManager/initPubSubManager.js +10 -7
  73. package/dist/PubSubManager/initPubSubManager.js.map +1 -1
  74. package/dist/PublishParser.d.ts.map +1 -1
  75. package/dist/PublishParser.js +122 -125
  76. package/dist/PublishParser.js.map +1 -1
  77. package/dist/SyncReplication.d.ts.map +1 -1
  78. package/dist/SyncReplication.js +19 -16
  79. package/dist/SyncReplication.js.map +1 -1
  80. package/dist/TableConfig.d.ts +9 -5
  81. package/dist/TableConfig.d.ts.map +1 -1
  82. package/dist/TableConfig.js +33 -12
  83. package/dist/TableConfig.js.map +1 -1
  84. package/dist/index.js +1 -1
  85. package/dist/index.js.map +1 -1
  86. package/dist/shortestPath.js +11 -11
  87. package/dist/shortestPath.js.map +1 -1
  88. package/dist/validation.d.ts +50 -24
  89. package/dist/validation.d.ts.map +1 -1
  90. package/dist/validation.js +177 -53
  91. package/dist/validation.js.map +1 -1
  92. package/lib/AuthHandler.d.ts +11 -11
  93. package/lib/AuthHandler.d.ts.map +1 -1
  94. package/lib/DBEventsManager.js +1 -1
  95. package/lib/DBEventsManager.ts +1 -1
  96. package/lib/DBSchemaBuilder.d.ts +3 -3
  97. package/lib/DBSchemaBuilder.d.ts.map +1 -1
  98. package/lib/DBSchemaBuilder.js +6 -6
  99. package/lib/DBSchemaBuilder.ts +10 -9
  100. package/lib/DboBuilder/QueryBuilder/Functions.d.ts +3 -3
  101. package/lib/DboBuilder/QueryBuilder/Functions.d.ts.map +1 -1
  102. package/lib/DboBuilder/QueryBuilder/Functions.js +9 -9
  103. package/lib/DboBuilder/QueryBuilder/Functions.ts +13 -13
  104. package/lib/DboBuilder/QueryBuilder/QueryBuilder.d.ts +3 -3
  105. package/lib/DboBuilder/QueryBuilder/QueryBuilder.d.ts.map +1 -1
  106. package/lib/DboBuilder/QueryBuilder/QueryBuilder.js +8 -7
  107. package/lib/DboBuilder/QueryBuilder/QueryBuilder.ts +12 -12
  108. package/lib/DboBuilder/QueryBuilder/makeSelectQuery.d.ts.map +1 -1
  109. package/lib/DboBuilder/QueryBuilder/makeSelectQuery.js +4 -4
  110. package/lib/DboBuilder/QueryBuilder/makeSelectQuery.ts +5 -5
  111. package/lib/DboBuilder/TableHandler.d.ts +1 -1
  112. package/lib/DboBuilder/TableHandler.d.ts.map +1 -1
  113. package/lib/DboBuilder/TableHandler.js +18 -20
  114. package/lib/DboBuilder/TableHandler.ts +21 -20
  115. package/lib/DboBuilder/ViewHandler.d.ts +1 -11
  116. package/lib/DboBuilder/ViewHandler.d.ts.map +1 -1
  117. package/lib/DboBuilder/ViewHandler.js +50 -63
  118. package/lib/DboBuilder/ViewHandler.ts +68 -97
  119. package/lib/DboBuilder/delete.js +0 -1
  120. package/lib/DboBuilder/delete.ts +1 -1
  121. package/lib/DboBuilder/getColumns.js +5 -4
  122. package/lib/DboBuilder/getColumns.ts +5 -5
  123. package/lib/DboBuilder/getCondition.d.ts.map +1 -1
  124. package/lib/DboBuilder/getCondition.js +6 -6
  125. package/lib/DboBuilder/getCondition.ts +7 -7
  126. package/lib/DboBuilder/insert.js +15 -16
  127. package/lib/DboBuilder/insert.ts +18 -18
  128. package/lib/DboBuilder/insertDataParse.d.ts.map +1 -1
  129. package/lib/DboBuilder/insertDataParse.js +9 -10
  130. package/lib/DboBuilder/insertDataParse.ts +42 -43
  131. package/lib/DboBuilder/parseUpdateRules.js +2 -2
  132. package/lib/DboBuilder/parseUpdateRules.ts +2 -2
  133. package/lib/DboBuilder/runSQL.d.ts.map +1 -1
  134. package/lib/DboBuilder/runSQL.js +5 -5
  135. package/lib/DboBuilder/runSQL.ts +6 -6
  136. package/lib/DboBuilder/subscribe.d.ts +1 -1
  137. package/lib/DboBuilder/subscribe.d.ts.map +1 -1
  138. package/lib/DboBuilder/subscribe.js +3 -3
  139. package/lib/DboBuilder/subscribe.ts +3 -3
  140. package/lib/DboBuilder/update.js +5 -6
  141. package/lib/DboBuilder/update.ts +6 -6
  142. package/lib/DboBuilder/uploadFile.d.ts.map +1 -1
  143. package/lib/DboBuilder/uploadFile.js +1 -1
  144. package/lib/DboBuilder/uploadFile.ts +2 -2
  145. package/lib/DboBuilder.d.ts +22 -22
  146. package/lib/DboBuilder.d.ts.map +1 -1
  147. package/lib/DboBuilder.js +13 -14
  148. package/lib/DboBuilder.ts +19 -19
  149. package/lib/FileManager.d.ts +6 -6
  150. package/lib/FileManager.d.ts.map +1 -1
  151. package/lib/FileManager.js +3 -5
  152. package/lib/FileManager.ts +7 -6
  153. package/lib/Filtering.d.ts +1 -1
  154. package/lib/Filtering.d.ts.map +1 -1
  155. package/lib/Filtering.js +7 -7
  156. package/lib/Filtering.ts +7 -7
  157. package/lib/JSONBValidation/validate_jsonb_schema_sql.d.ts +3 -0
  158. package/lib/JSONBValidation/validate_jsonb_schema_sql.d.ts.map +1 -0
  159. package/lib/JSONBValidation/validate_jsonb_schema_sql.js +294 -0
  160. package/lib/JSONBValidation/validate_jsonb_schema_sql.ts +293 -0
  161. package/lib/JSONBValidation/validation.d.ts +108 -0
  162. package/lib/JSONBValidation/validation.d.ts.map +1 -0
  163. package/lib/JSONBValidation/validation.js +221 -0
  164. package/lib/JSONBValidation/validation.ts +332 -0
  165. package/lib/PostgresNotifListenManager.d.ts +1 -1
  166. package/lib/PostgresNotifListenManager.d.ts.map +1 -1
  167. package/lib/PostgresNotifListenManager.js +1 -1
  168. package/lib/PostgresNotifListenManager.ts +1 -1
  169. package/lib/Prostgles.d.ts +14 -14
  170. package/lib/Prostgles.d.ts.map +1 -1
  171. package/lib/Prostgles.js +20 -19
  172. package/lib/Prostgles.ts +22 -21
  173. package/lib/PubSubManager/PubSubManager.d.ts +7 -7
  174. package/lib/PubSubManager/PubSubManager.d.ts.map +1 -1
  175. package/lib/PubSubManager/PubSubManager.js +10 -8
  176. package/lib/PubSubManager/PubSubManager.ts +13 -8
  177. package/lib/PubSubManager/initPubSubManager.d.ts.map +1 -1
  178. package/lib/PubSubManager/initPubSubManager.js +10 -7
  179. package/lib/PubSubManager/initPubSubManager.ts +12 -7
  180. package/lib/PublishParser.d.ts +32 -32
  181. package/lib/PublishParser.d.ts.map +1 -1
  182. package/lib/PublishParser.js +121 -124
  183. package/lib/PublishParser.ts +125 -127
  184. package/lib/SchemaWatch.d.ts +1 -1
  185. package/lib/SchemaWatch.d.ts.map +1 -1
  186. package/lib/SyncReplication.d.ts +5 -5
  187. package/lib/SyncReplication.d.ts.map +1 -1
  188. package/lib/SyncReplication.js +19 -16
  189. package/lib/SyncReplication.ts +470 -471
  190. package/lib/TableConfig.d.ts +28 -24
  191. package/lib/TableConfig.d.ts.map +1 -1
  192. package/lib/TableConfig.js +33 -12
  193. package/lib/TableConfig.ts +55 -21
  194. package/lib/index.js +1 -1
  195. package/lib/index.ts +1 -1
  196. package/lib/shortestPath.d.ts +1 -1
  197. package/lib/shortestPath.d.ts.map +1 -1
  198. package/lib/shortestPath.js +11 -11
  199. package/lib/shortestPath.ts +11 -11
  200. package/package.json +10 -6
  201. package/tests/client/PID.txt +1 -1
  202. package/tests/client/package-lock.json +53 -31
  203. package/tests/client/package.json +4 -1
  204. package/tests/isomorphic_queries.d.ts.map +1 -1
  205. package/tests/isomorphic_queries.js +28 -26
  206. package/tests/isomorphic_queries.ts +30 -29
  207. package/tests/server/DBoGenerated.d.ts +1 -1
  208. package/tests/server/index.js +8 -7
  209. package/tests/server/index.ts +10 -8
  210. package/tests/server/package-lock.json +76 -58
  211. package/tests/server/package.json +2 -2
  212. package/tests/server/server.ts +2 -3
  213. package/lib/validation.d.ts +0 -100
  214. package/lib/validation.d.ts.map +0 -1
  215. package/lib/validation.js +0 -280
  216. package/lib/validation.ts +0 -360
@@ -0,0 +1,295 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validate_jsonb_schema_sql = exports.VALIDATE_SCHEMA_FUNCNAME = void 0;
4
+ exports.VALIDATE_SCHEMA_FUNCNAME = "prostgles.validate_jsonb_schema";
5
+ exports.validate_jsonb_schema_sql = `
6
+ DROP FUNCTION IF EXISTS ${exports.VALIDATE_SCHEMA_FUNCNAME}(jsonb_schema text, data jsonb, checked_path text[]);
7
+
8
+ CREATE OR REPLACE FUNCTION ${exports.VALIDATE_SCHEMA_FUNCNAME}(jsonb_schema TEXT, data JSONB, checked_path TEXT[] DEFAULT ARRAY[]::TEXT[]) RETURNS boolean AS
9
+ $f$
10
+ DECLARE
11
+ sub_schema RECORD;
12
+ array_element RECORD;
13
+ schema JSONB;
14
+ path text;
15
+ allowed_types text[] = '{any,boolean,number,integer,string,boolean[],number[],integer[],string[],any[]}';
16
+ typeStr TEXT = NULL;
17
+ optional boolean;
18
+ nullable boolean;
19
+ colname TEXT;
20
+
21
+ extra_keys TEXT[];
22
+ BEGIN
23
+ path = concat_ws(', ',
24
+ 'Path: ' || array_to_string(checked_path, '.'),
25
+ 'Data: ' || data::TEXT,
26
+ 'JSONBSchema: ' || schema::TEXT
27
+ );
28
+ colname = COALESCE(checked_path[1], '');
29
+
30
+ IF length(jsonb_schema) = 0 THEN
31
+ RAISE EXCEPTION 'Empty schema. %', path USING HINT = path, COLUMN = colname;
32
+ END IF;
33
+
34
+ /* 'string' */
35
+ IF ARRAY[jsonb_schema] <@ allowed_types THEN
36
+ schema = jsonb_build_object('type', jsonb_schema);
37
+ /* { "type": ... } */
38
+ ELSIF BTRIM(jsonb_schema) ILIKE '{%' THEN
39
+ schema = jsonb_schema::JSONB;
40
+ ELSE
41
+ RAISE EXCEPTION $$Invalid schema. Expecting 'typename' or { "type": "typename" } but received: %, %$$, jsonb_schema, path USING HINT = path, COLUMN = colname;
42
+ END IF;
43
+
44
+
45
+ nullable = COALESCE((schema->'nullable')::BOOLEAN, FALSE);
46
+ IF data IS NULL OR jsonb_typeof(data) = 'null' THEN
47
+ IF NOT nullable THEN
48
+ RAISE EXCEPTION 'Is not nullable. %', path USING HINT = path, COLUMN = colname;
49
+ ELSE
50
+ RETURN true;
51
+ END IF;
52
+ END IF;
53
+
54
+ IF schema ? 'enum' THEN
55
+ IF
56
+ jsonb_typeof(schema->'enum') != 'array' OR
57
+ jsonb_array_length(schema->'enum') < 1
58
+ THEN
59
+ RAISE EXCEPTION 'Invalid schema enum (%) .Must be a non empty array %', schema->'enum', path USING HINT = path, COLUMN = colname;
60
+ END IF;
61
+
62
+ IF NOT jsonb_build_array(data) <@ (schema->'enum') THEN
63
+ RAISE EXCEPTION 'Data not in allowed enum list (%), %', schema->'enum', path USING HINT = path, COLUMN = colname;
64
+ END IF;
65
+
66
+ ELSIF schema ? 'type' THEN
67
+
68
+ IF jsonb_typeof(schema->'type') = 'string' THEN
69
+ typeStr = schema->>'type';
70
+ IF NOT ARRAY[typeStr] <@ allowed_types THEN
71
+ RAISE EXCEPTION 'Bad schema type type %, allowed types: %. %',typeStr, allowed_types, path USING HINT = path, COLUMN = colname;
72
+ END IF;
73
+
74
+ /** Primitive array */
75
+ IF typeStr LIKE '%[]' THEN
76
+
77
+ typeStr = left(typeStr, -2);
78
+
79
+ IF jsonb_typeof(data) != 'array' THEN
80
+ RAISE EXCEPTION 'Types not matching. Expecting an array. %', path USING HINT = path, COLUMN = colname;
81
+ END IF;
82
+
83
+ FOR array_element IN
84
+ SELECT value, row_number() OVER() -1 as idx
85
+ FROM jsonb_array_elements(data)
86
+ LOOP
87
+ IF NOT ${exports.VALIDATE_SCHEMA_FUNCNAME}(
88
+ CASE WHEN schema->'allowedValues' IS NOT NULL THEN
89
+ jsonb_build_object('type', typeStr, 'allowedValues', schema->'allowedValues')::TEXT
90
+ ELSE typeStr END,
91
+ array_element.value,
92
+ checked_path || array_element.idx::TEXT
93
+ ) THEN
94
+
95
+ RETURN FALSE;
96
+ END IF;
97
+ END LOOP;
98
+
99
+ RETURN TRUE;
100
+
101
+ /** Primitive */
102
+ ELSE
103
+
104
+ IF (
105
+ typeStr = 'number' AND jsonb_typeof(data) != typeStr OR
106
+ (typeStr = 'integer' AND (jsonb_typeof(data) != 'number' OR ceil(data::NUMERIC) != floor(data::NUMERIC))) OR
107
+ typeStr = 'boolean' AND jsonb_typeof(data) != typeStr OR
108
+ typeStr = 'string' AND jsonb_typeof(data) != typeStr OR
109
+ typeStr = 'any' AND jsonb_typeof(data) = 'null'
110
+ ) THEN
111
+ RAISE EXCEPTION 'Data type not matching. Expected: %, Actual: %, %', typeStr, jsonb_typeof(data), path USING HINT = path, COLUMN = colname;
112
+ END IF;
113
+
114
+ IF schema ? 'allowedValues' AND NOT(jsonb_build_array(data) <@ (schema->'allowedValues')) THEN
115
+ IF (
116
+ SELECT COUNT(distinct jsonb_typeof(value))
117
+ FROM jsonb_array_elements(schema->'allowedValues')
118
+ ) > 1 THEN
119
+ RAISE EXCEPTION 'Invalid schema. schema.allowedValues (%) contains more than one data type . %', schema->>'allowedValues', path USING HINT = path, COLUMN = colname;
120
+ END IF;
121
+
122
+ IF EXISTS(
123
+ SELECT 1
124
+ FROM jsonb_array_elements(schema->'allowedValues')
125
+ WHERE jsonb_typeof(value) != jsonb_typeof(data)
126
+ ) THEN
127
+ RAISE EXCEPTION 'Invalid schema. schema.allowedValues (%) contains contains values not matchine the schema.type %', schema->>'allowedValues', path USING HINT = path, COLUMN = colname;
128
+ END IF;
129
+
130
+ RAISE EXCEPTION 'Data not in allowedValues (%). %', schema->>'allowedValues', path USING HINT = path, COLUMN = colname;
131
+
132
+ END IF;
133
+
134
+ END IF;
135
+
136
+ /* Object */
137
+ ELSIF jsonb_typeof(schema->'type') = 'object' THEN
138
+
139
+ IF jsonb_typeof(data) != 'object' THEN
140
+ RAISE EXCEPTION E'Expecting an object: \n %', path USING HINT = path, COLUMN = colname;
141
+ END IF;
142
+
143
+ extra_keys = ARRAY(SELECT k FROM (
144
+ SELECT jsonb_object_keys(data) as k
145
+ EXCEPT
146
+ SELECT jsonb_object_keys(schema->'type') as k
147
+ ) t);
148
+
149
+ IF array_length(extra_keys, 1) > 0 THEN
150
+ RAISE EXCEPTION E'Object contains invalid keys: % \n %',
151
+ array_to_string(extra_keys, ', '), path USING HINT = path, COLUMN = colname;
152
+ END IF;
153
+
154
+ FOR sub_schema IN
155
+ SELECT key, value
156
+ FROM jsonb_each(schema->'type')
157
+ LOOP
158
+ optional = COALESCE((sub_schema.value->'optional')::BOOLEAN, FALSE);
159
+ IF NOT (data ? sub_schema.key) THEN
160
+
161
+ IF NOT optional THEN
162
+ RAISE EXCEPTION 'Types not matching. Required property (%) is missing. %',sub_schema.key , path USING HINT = path, COLUMN = colname;
163
+ ELSE
164
+ RETURN true;
165
+ END IF;
166
+ END IF;
167
+
168
+ IF NOT ${exports.VALIDATE_SCHEMA_FUNCNAME}(
169
+ -- sub_schema.value::TEXT,
170
+ CASE WHEN jsonb_typeof(sub_schema.value) = 'string' THEN TRIM(both '"' from sub_schema.value::TEXT) ELSE sub_schema.value::TEXT END,
171
+ data->sub_schema.key,
172
+ checked_path || sub_schema.key
173
+ ) THEN
174
+ RETURN false;
175
+ END IF;
176
+
177
+ END LOOP;
178
+ ELSE
179
+ RAISE EXCEPTION 'Unexpected schema.type ( % ), %',jsonb_typeof(schema->'type'), path USING HINT = path, COLUMN = colname;
180
+ END IF;
181
+
182
+ /* oneOf: [{ key_name: { type: "string" } }] */
183
+ ELSIF schema ? 'oneOf' THEN
184
+ IF jsonb_typeof(schema->'oneOf') != 'array' THEN
185
+ RAISE EXCEPTION 'Unexpected oneOf schema. Expecting an array of objects but received: % , %',schema->>'oneOf', path USING HINT = path, COLUMN = colname;
186
+ END IF;
187
+
188
+ FOR sub_schema IN
189
+ SELECT jsonb_build_object('type', value) as value
190
+ FROM jsonb_array_elements(schema->'oneOf')
191
+ LOOP
192
+
193
+ BEGIN
194
+
195
+ IF ${exports.VALIDATE_SCHEMA_FUNCNAME}(
196
+ sub_schema.value::TEXT,
197
+ data,
198
+ checked_path
199
+ ) THEN
200
+ RETURN true;
201
+ END IF;
202
+
203
+ /* Ignore exceptions in case the last schema will match */
204
+ EXCEPTION WHEN others THEN
205
+ END;
206
+ END LOOP;
207
+
208
+ RAISE EXCEPTION 'Could not validate against any oneOf schemas ( % ), %', schema->>'oneOf', path USING HINT = path, COLUMN = colname;
209
+
210
+ /* arrayOf: { key_name: { type: "string" } } */
211
+ ELSIF jsonb_typeof(schema->'arrayOf') = 'object' THEN
212
+ IF jsonb_typeof(data) != 'array' THEN
213
+ RAISE EXCEPTION 'Is not an array. %', path USING HINT = path, COLUMN = colname;
214
+ END IF;
215
+
216
+ FOR array_element IN
217
+ SELECT value, row_number() OVER() -1 as idx
218
+ FROM jsonb_array_elements(data)
219
+ LOOP
220
+ IF NOT ${exports.VALIDATE_SCHEMA_FUNCNAME}(
221
+ (schema - 'arrayOf' || jsonb_build_object('type', schema->'arrayOf'))::TEXT, -- RENAME
222
+ array_element.value, checked_path || array_element.idx::TEXT
223
+ ) THEN
224
+ RETURN false;
225
+ END IF;
226
+ END LOOP;
227
+
228
+ ELSE
229
+ RAISE EXCEPTION 'Unexpected schema: %, %', schema, path USING HINT = path, COLUMN = colname;
230
+ END IF;
231
+
232
+ RETURN true;
233
+ END;
234
+ $f$ LANGUAGE 'plpgsql' IMMUTABLE;
235
+
236
+ COMMENT ON FUNCTION ${exports.VALIDATE_SCHEMA_FUNCNAME}
237
+ IS $$Used to validate jsonb data against a schema:
238
+ validate_jsonb_schema(
239
+ '{ "type": { "a": "number[]" } }',
240
+ '{ "a": [2] }'
241
+ )
242
+ $$;
243
+
244
+
245
+ /* TESTS */
246
+
247
+ SELECT ${exports.VALIDATE_SCHEMA_FUNCNAME}(
248
+ '{ "enum": ["a", "b", 2] }',
249
+ '"a"'::JSONB
250
+ );
251
+
252
+ SELECT ${exports.VALIDATE_SCHEMA_FUNCNAME}(
253
+ '{ "enum": ["a", "b", 2] }',
254
+ '2'::JSONB
255
+ );
256
+
257
+ SELECT ${exports.VALIDATE_SCHEMA_FUNCNAME}(
258
+ '{
259
+ "oneOf": [
260
+ { "a": "string" } ,
261
+ {
262
+ "a": {
263
+ "type": "boolean",
264
+ "allowedValues": [false],
265
+ "optional": true
266
+ }
267
+ }
268
+ ]
269
+ }',
270
+ '{ "a": false }'
271
+ );
272
+
273
+ SELECT ${exports.VALIDATE_SCHEMA_FUNCNAME}(
274
+ '{ "arrayOf": { "a": "string", "narr": { "arrayOf": { "a": { "type": "string", "optional": false, "nullable": true } } } } }',
275
+ '[{ "a": "ddd", "narr": [{ "a": null }] }]'::JSONB
276
+ );
277
+
278
+ SELECT ${exports.VALIDATE_SCHEMA_FUNCNAME}(
279
+ '{ "type": { "a": { "type": "integer[]", "allowedValues": [2] } } }'::TEXT,
280
+ '{ "a": [2, 2] }'
281
+ );
282
+
283
+ SELECT ${exports.VALIDATE_SCHEMA_FUNCNAME}(
284
+ '{ "type": { "a": { "type": "string[]", "allowedValues": ["2"] } } }'::TEXT,
285
+ '{ "a": ["2"] }'
286
+ );
287
+
288
+ SELECT ${exports.VALIDATE_SCHEMA_FUNCNAME}('{ "type": "any"}', '{}');
289
+
290
+ SELECT ${exports.VALIDATE_SCHEMA_FUNCNAME}('{ "type": { "a": { "enum": ["a"] } } }', '{ "a": "a"}');
291
+
292
+ SELECT ${exports.VALIDATE_SCHEMA_FUNCNAME}('{ "arrayOf": { "a": { "enum": ["a"] } } }', '[{ "a": "a"}]');
293
+
294
+ `;
295
+ //# sourceMappingURL=validate_jsonb_schema_sql.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate_jsonb_schema_sql.js","sourceRoot":"","sources":["../../lib/JSONBValidation/validate_jsonb_schema_sql.ts"],"names":[],"mappings":";;;AAEa,QAAA,wBAAwB,GAAG,iCAA0C,CAAC;AACtE,QAAA,yBAAyB,GAAG;0BACf,gCAAwB;;6BAErB,gCAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBA+ElC,gCAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAiF1B,gCAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;aA2B5B,gCAAwB;;;;;;;;;;;;;;;;;;;;;;;;;eAyBtB,gCAAwB;;;;;;;;;;;;;;;;sBAgBjB,gCAAwB;;;;;;;;;;;SAWrC,gCAAwB;;;;;SAKxB,gCAAwB;;;;;SAKxB,gCAAwB;;;;;;;;;;;;;;;;SAgBxB,gCAAwB;;;;;SAKxB,gCAAwB;;;;;SAKxB,gCAAwB;;;;;SAKxB,gCAAwB;;SAExB,gCAAwB;;SAExB,gCAAwB;;CAEhC,CAAC"}
@@ -0,0 +1,108 @@
1
+ import { JSONSchema7 } from "json-schema";
2
+ import { BaseColumn, JSONBColumnDef, StrictUnion } from "../TableConfig";
3
+ declare const DATA_TYPES: readonly ["boolean", "number", "integer", "string", "any", ...("string[]" | "number[]" | "boolean[]" | "integer[]" | "any[]")[]];
4
+ type DataType = typeof DATA_TYPES[number];
5
+ export declare namespace JSONB {
6
+ export type BaseOptions = {
7
+ /**
8
+ * False by default
9
+ */
10
+ optional?: boolean;
11
+ /**
12
+ * False by default
13
+ */
14
+ nullable?: boolean;
15
+ description?: string;
16
+ title?: string;
17
+ };
18
+ export type BasicType = BaseOptions & {
19
+ type: DataType;
20
+ allowedValues?: any[];
21
+ oneOf?: undefined;
22
+ arrayOf?: undefined;
23
+ enum?: undefined;
24
+ };
25
+ export type ObjectType = BaseOptions & {
26
+ type: ObjectSchema;
27
+ allowedValues?: undefined;
28
+ oneOf?: undefined;
29
+ arrayOf?: undefined;
30
+ enum?: undefined;
31
+ };
32
+ export type EnumType = BaseOptions & {
33
+ type?: undefined;
34
+ enum: readonly any[];
35
+ oneOf?: undefined;
36
+ arrayOf?: undefined;
37
+ allowedValues?: undefined;
38
+ };
39
+ export type OneOf = BaseOptions & {
40
+ type?: undefined;
41
+ oneOf: readonly ObjectSchema[];
42
+ arrayOf?: undefined;
43
+ allowedValues?: undefined;
44
+ enum?: undefined;
45
+ };
46
+ export type ArrayOf = BaseOptions & {
47
+ type?: undefined;
48
+ arrayOf: ObjectSchema;
49
+ allowedValues?: undefined;
50
+ oneOf?: undefined;
51
+ enum?: undefined;
52
+ };
53
+ export type FieldTypeObj = BasicType | ObjectType | EnumType | OneOf | ArrayOf;
54
+ export type FieldType = DataType | FieldTypeObj;
55
+ export type GetType<T extends FieldType | Omit<FieldTypeObj, "optional">> = T extends {
56
+ type: ObjectSchema;
57
+ } ? NestedSchemaObject<T["type"]> : T extends "number" | {
58
+ type: "number";
59
+ } ? number : T extends "boolean" | {
60
+ type: "boolean";
61
+ } ? boolean : T extends "integer" | {
62
+ type: "integer";
63
+ } ? number : T extends "string" | {
64
+ type: "string";
65
+ } ? string : T extends "any" | {
66
+ type: "any";
67
+ } ? any : T extends "number[]" | {
68
+ type: "number[]";
69
+ } ? number[] : T extends "boolean[]" | {
70
+ type: "boolean[]";
71
+ } ? boolean[] : T extends "integer[]" | {
72
+ type: "integer[]";
73
+ } ? number[] : T extends "string[]" | {
74
+ type: "string[]";
75
+ } ? string[] : T extends "any[]" | {
76
+ type: "any[]";
77
+ } ? any[] : T extends {
78
+ enum: readonly any[];
79
+ } ? T["enum"][number] : T extends {
80
+ oneOf: readonly ObjectSchema[];
81
+ } ? StrictUnion<NestedSchemaObject<T["oneOf"][number]>> : T extends {
82
+ arrayOf: ObjectSchema;
83
+ } ? NestedSchemaObject<T["arrayOf"]>[] : any;
84
+ type IsOptional<F extends FieldType> = F extends DataType ? false : F extends {
85
+ optional: true;
86
+ } ? true : false;
87
+ export type ObjectSchema = Record<string, FieldType>;
88
+ export type JSONBSchema = Omit<FieldTypeObj, "optional">;
89
+ export type NestedSchemaObject<S extends ObjectSchema> = ({
90
+ [K in keyof S as IsOptional<S[K]> extends true ? K : never]?: GetType<S[K]>;
91
+ } & {
92
+ [K in keyof S as IsOptional<S[K]> extends true ? never : K]: GetType<S[K]>;
93
+ });
94
+ export type SchemaObject<S extends JSONBSchema> = S["nullable"] extends true ? (null | GetType<S>) : GetType<S>;
95
+ export {};
96
+ }
97
+ export declare function validate<T>(obj: T, key: keyof T, rawFieldType: JSONB.FieldType): boolean;
98
+ export declare function validateSchema<S extends JSONB.ObjectSchema>(schema: S, obj: JSONB.NestedSchemaObject<S>, objName?: string, optional?: boolean): void;
99
+ type ColOpts = {
100
+ nullable?: boolean;
101
+ };
102
+ export declare function getSchemaTSTypes(schema: JSONB.ObjectSchema, leading?: string, isOneOf?: boolean): string;
103
+ export declare function getJSONBSchemaTSTypes(schema: JSONB.JSONBSchema, colOpts: ColOpts, leading?: string, isOneOf?: boolean): string;
104
+ export declare function getJSONBSchemaAsJSONSchema(tableName: string, colName: string, columnConfig: BaseColumn<{
105
+ en: 1;
106
+ }> & JSONBColumnDef): JSONSchema7;
107
+ export {};
108
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../lib/JSONBValidation/validation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,222 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getJSONBSchemaAsJSONSchema = exports.getJSONBSchemaTSTypes = exports.getSchemaTSTypes = exports.validateSchema = exports.validate = void 0;
4
+ const prostgles_types_1 = require("prostgles-types");
5
+ const PubSubManager_1 = require("../PubSubManager/PubSubManager");
6
+ const PrimitiveTypes = ["boolean", "number", "integer", "string", "any"];
7
+ const DATA_TYPES = [
8
+ ...PrimitiveTypes,
9
+ ...PrimitiveTypes.map(v => `${v}[]`)
10
+ ];
11
+ /** tests */
12
+ const s = {
13
+ type: {
14
+ a: { type: "boolean" },
15
+ c: { type: { c1: { type: "string" } } },
16
+ arr: { arrayOf: { d: "string" } },
17
+ o: {
18
+ oneOf: [
19
+ { z: { type: "integer" } },
20
+ { z1: { type: "integer" } }
21
+ ]
22
+ }
23
+ }
24
+ };
25
+ const ss = {
26
+ a: true,
27
+ arr: [{ d: "" }],
28
+ c: {
29
+ c1: ""
30
+ },
31
+ o: { z1: 23 }
32
+ };
33
+ const getFieldTypeObj = (rawFieldType) => {
34
+ if (typeof rawFieldType === "string")
35
+ return { type: rawFieldType };
36
+ return rawFieldType;
37
+ };
38
+ function validate(obj, key, rawFieldType) {
39
+ let err = `The provided value for ${JSON.stringify(key)} is of invalid type. Expecting `;
40
+ const val = obj[key];
41
+ const fieldType = getFieldTypeObj(rawFieldType);
42
+ if ("type" in fieldType && fieldType.type) {
43
+ if (typeof fieldType.type !== "string") {
44
+ (0, prostgles_types_1.getKeys)(fieldType.type).forEach(subKey => {
45
+ validate(val, subKey, fieldType.type[subKey]);
46
+ });
47
+ }
48
+ err += fieldType.type;
49
+ if (fieldType.type === "boolean" && typeof val !== fieldType.type)
50
+ throw new Error(err);
51
+ if (fieldType.type === "string" && typeof val !== fieldType.type)
52
+ throw new Error(err);
53
+ if (fieldType.type === "number" && !Number.isFinite(val))
54
+ throw new Error(err);
55
+ if (fieldType.type === "integer" && !Number.isInteger(val))
56
+ throw new Error(err);
57
+ }
58
+ else if (fieldType.enum) {
59
+ err += `on of: ${fieldType.enum}`;
60
+ if (!fieldType.enum.includes(val))
61
+ throw new Error(err);
62
+ }
63
+ return true;
64
+ }
65
+ exports.validate = validate;
66
+ function validateSchema(schema, obj, objName, optional = false) {
67
+ if ((!schema || (0, prostgles_types_1.isEmpty)(schema)) && !optional)
68
+ throw new Error(`Expecting ${objName} to be defined`);
69
+ (0, prostgles_types_1.getKeys)(schema).forEach(k => validate(obj, k, schema[k]));
70
+ }
71
+ exports.validateSchema = validateSchema;
72
+ function getSchemaTSTypes(schema, leading = "", isOneOf = false) {
73
+ const getFieldType = (rawFieldType) => {
74
+ const fieldType = getFieldTypeObj(rawFieldType);
75
+ const nullType = (fieldType.nullable ? `null | ` : "");
76
+ if (fieldType?.type) {
77
+ if (typeof fieldType.type === "string") {
78
+ const correctType = fieldType.type.replace("integer", "number");
79
+ if (fieldType.allowedValues && fieldType.type.endsWith("[]")) {
80
+ return nullType + ` (${fieldType.allowedValues.map(v => JSON.stringify(v)).join(" | ")})[]`;
81
+ }
82
+ return nullType + correctType;
83
+ }
84
+ else {
85
+ return nullType + getSchemaTSTypes(fieldType.type, "", true);
86
+ }
87
+ }
88
+ else if (fieldType?.enum) {
89
+ return nullType + fieldType.enum.map(v => (0, PubSubManager_1.asValue)(v)).join(" | ");
90
+ }
91
+ else if (fieldType?.oneOf) {
92
+ return (fieldType.nullable ? `\n${leading} | null` : "") + fieldType.oneOf.map(v => `\n${leading} | ` + getSchemaTSTypes(v, "", true)).join("");
93
+ }
94
+ else if (fieldType?.arrayOf) {
95
+ return (fieldType.nullable ? `\n${leading} | null` : "") + getSchemaTSTypes(fieldType.arrayOf, "", true) + "[]";
96
+ }
97
+ else
98
+ throw "Unexpected getSchemaTSTypes: " + JSON.stringify({ fieldType, schema }, null, 2);
99
+ };
100
+ const spacing = isOneOf ? " " : " ";
101
+ const res = `${leading}{ \n` + (0, prostgles_types_1.getKeys)(schema).map(k => {
102
+ const fieldType = getFieldTypeObj(schema[k]);
103
+ return `${leading}${spacing}${k}${fieldType.optional ? "?" : ""}: ` + getFieldType(fieldType) + ";";
104
+ }).join("\n") + ` \n${leading}}${isOneOf ? "" : ";"}`;
105
+ /** Keep single line */
106
+ if (isOneOf)
107
+ return res.split("\n").join("");
108
+ return res;
109
+ }
110
+ exports.getSchemaTSTypes = getSchemaTSTypes;
111
+ function getJSONBSchemaTSTypes(schema, colOpts, leading = "", isOneOf = false) {
112
+ if (schema.arrayOf) {
113
+ return (colOpts.nullable ? `\n${leading} | null` : "") + getSchemaTSTypes(schema.arrayOf, leading, isOneOf) + "[]";
114
+ }
115
+ else if (schema.enum) {
116
+ return (colOpts.nullable ? `\n${leading} | null` : "") + schema.enum.map(v => (0, PubSubManager_1.asValue)(v)).join(" | ");
117
+ }
118
+ else if (schema.oneOf) {
119
+ return (colOpts.nullable ? `\n${leading} | null` : "") + schema.oneOf.map(s => `\n${leading} | ` + getSchemaTSTypes(s, "", true)).join("");
120
+ }
121
+ else {
122
+ if (typeof schema.type === "string") {
123
+ return (colOpts.nullable ? `null | ` : "") + schema.type;
124
+ }
125
+ else if (schema.type) {
126
+ return (colOpts.nullable ? `null | ` : "") + getSchemaTSTypes(schema.type, leading, isOneOf);
127
+ }
128
+ return "";
129
+ }
130
+ }
131
+ exports.getJSONBSchemaTSTypes = getJSONBSchemaTSTypes;
132
+ const getJSONSchemaObject = (rawType, rootInfo) => {
133
+ const { type, arrayOf, description, nullable, oneOf, title, ...t } = typeof rawType === "string" ? ({ type: rawType }) :
134
+ rawType;
135
+ let result = {};
136
+ const partialProps = {
137
+ ...((t.enum || t.allowedValues?.length) && { enum: t.allowedValues ?? t.enum.slice(0) }),
138
+ ...(!!description && { description }),
139
+ ...(!!title && { title }),
140
+ };
141
+ if (t.enum?.length) {
142
+ partialProps.type = typeof t.enum[0];
143
+ }
144
+ if (typeof type === "string" || arrayOf) {
145
+ /** ARRAY */
146
+ if (type && typeof type !== "string") {
147
+ throw "Not expected";
148
+ }
149
+ if (arrayOf || type?.endsWith("[]")) {
150
+ const arrayItems = arrayOf ? getJSONSchemaObject({ type: arrayOf }) :
151
+ type?.startsWith("any") ? { type: undefined } :
152
+ {
153
+ type: type?.slice(0, -2),
154
+ ...(t.allowedValues && { enum: t.allowedValues }),
155
+ };
156
+ result = {
157
+ type: "array",
158
+ items: arrayItems,
159
+ };
160
+ /** PRIMITIVES */
161
+ }
162
+ else {
163
+ result = {
164
+ type: type,
165
+ };
166
+ }
167
+ /** OBJECT */
168
+ }
169
+ else if ((0, prostgles_types_1.isObject)(type)) {
170
+ result = {
171
+ type: "object",
172
+ required: (0, prostgles_types_1.getKeys)(type).filter(k => {
173
+ const t = type[k];
174
+ return typeof t === "string" || !t.optional;
175
+ }),
176
+ properties: (0, prostgles_types_1.getKeys)(type).reduce((a, k) => {
177
+ return {
178
+ ...a,
179
+ [k]: getJSONSchemaObject(type[k])
180
+ };
181
+ }, {}),
182
+ };
183
+ }
184
+ else if (oneOf) {
185
+ result = {
186
+ type: "object",
187
+ oneOf: oneOf.map(s => getJSONSchemaObject({ type: s }))
188
+ };
189
+ }
190
+ if (nullable) {
191
+ const nullDef = { type: "null" };
192
+ if (result.oneOf) {
193
+ result.oneOf.push(nullDef);
194
+ }
195
+ else if (result.enum && !result.enum.includes(null)) {
196
+ result.enum.push(null);
197
+ }
198
+ else
199
+ result = {
200
+ type: 'object',
201
+ oneOf: [result, nullDef]
202
+ };
203
+ }
204
+ const rootSchema = !rootInfo ? undefined : {
205
+ "$id": rootInfo?.id,
206
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
207
+ };
208
+ return {
209
+ ...rootSchema,
210
+ ...partialProps,
211
+ ...result,
212
+ };
213
+ };
214
+ function getJSONBSchemaAsJSONSchema(tableName, colName, columnConfig) {
215
+ const schema = {
216
+ ...columnConfig,
217
+ ...(columnConfig.jsonbSchema ?? { type: columnConfig.jsonbSchemaType })
218
+ };
219
+ return getJSONSchemaObject(schema, { id: `${tableName}.${colName}` });
220
+ }
221
+ exports.getJSONBSchemaAsJSONSchema = getJSONBSchemaAsJSONSchema;
222
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../lib/JSONBValidation/validation.ts"],"names":[],"mappings":"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"}
@@ -123,7 +123,7 @@ class PostgresNotifListenManager {
123
123
  }
124
124
  exports.PostgresNotifListenManager = PostgresNotifListenManager;
125
125
  PostgresNotifListenManager.create = (db_pg, notifListener, db_channel_name) => {
126
- let res = new PostgresNotifListenManager(db_pg, notifListener, db_channel_name, true);
126
+ const res = new PostgresNotifListenManager(db_pg, notifListener, db_channel_name, true);
127
127
  return res.init();
128
128
  };
129
129
  //# sourceMappingURL=PostgresNotifListenManager.js.map