prostgles-server 2.0.245 → 2.0.248

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 (45) hide show
  1. package/dist/DboBuilder/insert.d.ts.map +1 -1
  2. package/dist/DboBuilder/insert.js +39 -16
  3. package/dist/DboBuilder/insert.js.map +1 -1
  4. package/dist/DboBuilder/insertDataParse.js +1 -1
  5. package/dist/DboBuilder/insertDataParse.js.map +1 -1
  6. package/dist/DboBuilder/update.js +2 -2
  7. package/dist/DboBuilder/update.js.map +1 -1
  8. package/dist/DboBuilder/uploadFile.js +1 -1
  9. package/dist/DboBuilder/uploadFile.js.map +1 -1
  10. package/dist/DboBuilder.d.ts +2 -2
  11. package/dist/DboBuilder.d.ts.map +1 -1
  12. package/dist/DboBuilder.js +8 -8
  13. package/dist/DboBuilder.js.map +1 -1
  14. package/dist/PublishParser.d.ts +18 -14
  15. package/dist/PublishParser.d.ts.map +1 -1
  16. package/dist/PublishParser.js +1 -1
  17. package/dist/PublishParser.js.map +1 -1
  18. package/lib/DboBuilder/insert.d.ts.map +1 -1
  19. package/lib/DboBuilder/insert.js +39 -16
  20. package/lib/DboBuilder/insert.ts +44 -17
  21. package/lib/DboBuilder/insertDataParse.js +1 -1
  22. package/lib/DboBuilder/insertDataParse.ts +1 -1
  23. package/lib/DboBuilder/update.js +2 -2
  24. package/lib/DboBuilder/update.ts +2 -2
  25. package/lib/DboBuilder/uploadFile.js +1 -1
  26. package/lib/DboBuilder/uploadFile.ts +1 -1
  27. package/lib/DboBuilder.d.ts +2 -2
  28. package/lib/DboBuilder.d.ts.map +1 -1
  29. package/lib/DboBuilder.js +8 -8
  30. package/lib/DboBuilder.ts +16 -9
  31. package/lib/PublishParser.d.ts +18 -14
  32. package/lib/PublishParser.d.ts.map +1 -1
  33. package/lib/PublishParser.js +1 -1
  34. package/lib/PublishParser.ts +20 -14
  35. package/package.json +1 -1
  36. package/tests/client/PID.txt +1 -1
  37. package/tests/client_only_queries.d.ts.map +1 -1
  38. package/tests/client_only_queries.js +9 -1
  39. package/tests/client_only_queries.ts +11 -2
  40. package/tests/server/dboTypeCheck.d.ts.map +1 -1
  41. package/tests/server/dboTypeCheck.js +11 -0
  42. package/tests/server/dboTypeCheck.ts +14 -0
  43. package/tests/server/index.js +6 -0
  44. package/tests/server/index.ts +5 -0
  45. package/tests/server/package-lock.json +1 -1
@@ -48,11 +48,11 @@ export declare type UpdateRequestDataBatch<R> = {
48
48
  data: UpdateReq<R>[];
49
49
  };
50
50
  export declare type UpdateRequestData<R extends AnyObject = AnyObject> = UpdateRequestDataOne<R> | UpdateRequestDataBatch<R>;
51
- export declare type ValidateRow<R extends AnyObject = AnyObject> = (row: R) => R | Promise<R>;
52
- export declare type ValidateUpdateRow<R extends AnyObject = AnyObject> = (args: {
51
+ export declare type ValidateRow<R extends AnyObject = AnyObject, S = void> = (row: R, dbx: DBOFullyTyped<S>) => R | Promise<R>;
52
+ export declare type ValidateUpdateRow<R extends AnyObject = AnyObject, S = void> = (args: {
53
53
  update: Partial<R>;
54
54
  filter: FullFilter<R>;
55
- }) => R | Promise<R>;
55
+ }, dbx: DBOFullyTyped<S>) => R | Promise<R>;
56
56
  export declare type SelectRule<Cols extends AnyObject = AnyObject, S = void> = {
57
57
  /**
58
58
  * Fields allowed to be selected. Tip: Use false to exclude field
@@ -75,7 +75,7 @@ export declare type SelectRule<Cols extends AnyObject = AnyObject, S = void> = {
75
75
  */
76
76
  validate?(args: SelectRequestData): SelectRequestData | Promise<SelectRequestData>;
77
77
  };
78
- export declare type InsertRule<Cols extends AnyObject = AnyObject> = {
78
+ export declare type InsertRule<Cols extends AnyObject = AnyObject, S = void> = {
79
79
  /**
80
80
  * Fields allowed to be inserted. Tip: Use false to exclude field
81
81
  */
@@ -91,11 +91,15 @@ export declare type InsertRule<Cols extends AnyObject = AnyObject> = {
91
91
  /**
92
92
  * Validation logic to check/update data for each request. Happens before publish rule checks (for fields, forcedData/forcedFilter)
93
93
  */
94
- preValidate?: ValidateRow<Cols>;
94
+ preValidate?: ValidateRow<Cols, S>;
95
95
  /**
96
96
  * Validation logic to check/update data for each request. Happens after publish rule checks (for fields, forcedData/forcedFilter)
97
97
  */
98
- validate?: InsertRule<Cols>["preValidate"];
98
+ validate?: ValidateRow<Cols, S>;
99
+ /**
100
+ * Validation logic to check/update data after the insert. Happens in the same transaction so upon throwing an error the record will be deleted (not committed)
101
+ */
102
+ postValidate?: ValidateRow<Required<Cols>, S>;
99
103
  };
100
104
  export declare type UpdateRule<Cols extends AnyObject = AnyObject, S = void> = {
101
105
  /**
@@ -121,7 +125,7 @@ export declare type UpdateRule<Cols extends AnyObject = AnyObject, S = void> = {
121
125
  /**
122
126
  * Data to include/overwrite on each updatDBe
123
127
  */
124
- forcedData?: InsertRule<Cols>["forcedData"];
128
+ forcedData?: InsertRule<Cols, S>["forcedData"];
125
129
  /**
126
130
  * Fields user can use to find the updates
127
131
  */
@@ -133,7 +137,7 @@ export declare type UpdateRule<Cols extends AnyObject = AnyObject, S = void> = {
133
137
  /**
134
138
  * Validation logic to check/update data for each request
135
139
  */
136
- validate?: ValidateUpdateRow<Cols>;
140
+ validate?: ValidateUpdateRow<Cols, S>;
137
141
  };
138
142
  export declare type DeleteRule<Cols extends AnyObject = AnyObject, S = void> = {
139
143
  /**
@@ -184,11 +188,11 @@ export declare type ViewRule<S = AnyObject> = CommonTableRules & {
184
188
  */
185
189
  select?: SelectRule<S>;
186
190
  };
187
- export declare type TableRule<S = AnyObject> = ViewRule<S> & {
188
- insert?: InsertRule<S>;
189
- update?: UpdateRule<S>;
190
- delete?: DeleteRule<S>;
191
- sync?: SyncRule<S>;
191
+ export declare type TableRule<RowType = AnyObject, S = void> = ViewRule<RowType> & {
192
+ insert?: InsertRule<RowType, S>;
193
+ update?: UpdateRule<RowType, S>;
194
+ delete?: DeleteRule<RowType, S>;
195
+ sync?: SyncRule<RowType>;
192
196
  subscribe?: SubscribeRule;
193
197
  };
194
198
  export declare type PublishViewRule<Col extends AnyObject = AnyObject, S = void> = {
@@ -197,7 +201,7 @@ export declare type PublishViewRule<Col extends AnyObject = AnyObject, S = void>
197
201
  getInfo?: PublishAllOrNothing;
198
202
  };
199
203
  export declare type PublishTableRule<Col extends AnyObject = AnyObject, S = void> = PublishViewRule<Col, S> & {
200
- insert?: InsertRule<Col> | PublishAllOrNothing;
204
+ insert?: InsertRule<Col, S> | PublishAllOrNothing;
201
205
  update?: UpdateRule<Col, S> | PublishAllOrNothing;
202
206
  delete?: DeleteRule<Col, S> | PublishAllOrNothing;
203
207
  sync?: SyncRule<Col>;
@@ -1 +1 @@
1
- {"version":3,"file":"PublishParser.d.ts","sourceRoot":"","sources":["PublishParser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PublishParser.d.ts","sourceRoot":"","sources":["PublishParser.ts"],"names":[],"mappings":"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"}
@@ -29,7 +29,7 @@ const RULE_TO_METHODS = [
29
29
  methods: prostgles_types_1.RULE_METHODS.insert,
30
30
  no_limits: { fields: "*" },
31
31
  table_only: true,
32
- allowed_params: ["fields", "forcedData", "returningFields", "validate", "preValidate"],
32
+ allowed_params: ["fields", "forcedData", "returningFields", "validate", "preValidate", "postValidate"],
33
33
  hint: ` expecting "*" | true | { fields: string | string[] | {} }`
34
34
  },
35
35
  {
@@ -1,6 +1,7 @@
1
1
  import { getKeys, RULE_METHODS, AnyObject, get, TableSchemaForClient, DBSchemaTable, MethodKey, TableInfo, FullFilter } from "prostgles-types";
2
2
  import { ClientInfo } from "./AuthHandler";
3
3
  import { CommonTableRules, Filter, isPlainObject, LocalParams, PRGLIOSocket, TableHandler, ViewHandler } from "./DboBuilder";
4
+ import type { TableHandler as TableHandlerFromTypes } from "prostgles-types";
4
5
  import { Prostgles, DBHandlerServer, DB, TABLE_METHODS } from "./Prostgles";
5
6
  import type { DBOFullyTyped, PublishFullyTyped } from "./DBSchemaBuilder";
6
7
  export type Method = (...args: any) => ( any | Promise<any> );
@@ -47,7 +48,7 @@ const RULE_TO_METHODS = [
47
48
  methods: RULE_METHODS.insert,
48
49
  no_limits: <SelectRule>{ fields: "*" },
49
50
  table_only: true,
50
- allowed_params: <Array<keyof InsertRule>>["fields", "forcedData", "returningFields", "validate", "preValidate"] ,
51
+ allowed_params: <Array<keyof InsertRule>>["fields", "forcedData", "returningFields", "validate", "preValidate", "postValidate"] ,
51
52
  hint: ` expecting "*" | true | { fields: string | string[] | {} }`
52
53
  },
53
54
  {
@@ -126,8 +127,8 @@ export type UpdateRequestDataBatch<R> = {
126
127
  }
127
128
  export type UpdateRequestData<R extends AnyObject = AnyObject> = UpdateRequestDataOne<R> | UpdateRequestDataBatch<R>;
128
129
 
129
- export type ValidateRow<R extends AnyObject = AnyObject> = (row: R) => R | Promise<R>;
130
- export type ValidateUpdateRow<R extends AnyObject = AnyObject> = (args: { update: Partial<R>, filter: FullFilter<R> }) => R | Promise<R>;
130
+ export type ValidateRow<R extends AnyObject = AnyObject, S = void> = (row: R, dbx: DBOFullyTyped<S>) => R | Promise<R>;
131
+ export type ValidateUpdateRow<R extends AnyObject = AnyObject, S = void> = (args: { update: Partial<R>, filter: FullFilter<R> }, dbx: DBOFullyTyped<S>) => R | Promise<R>;
131
132
 
132
133
 
133
134
  export type SelectRule<Cols extends AnyObject = AnyObject, S = void> = {
@@ -158,7 +159,7 @@ export type SelectRule<Cols extends AnyObject = AnyObject, S = void> = {
158
159
  validate?(args: SelectRequestData): SelectRequestData | Promise<SelectRequestData>;
159
160
 
160
161
  }
161
- export type InsertRule<Cols extends AnyObject = AnyObject> = {
162
+ export type InsertRule<Cols extends AnyObject = AnyObject, S = void> = {
162
163
 
163
164
  /**
164
165
  * Fields allowed to be inserted. Tip: Use false to exclude field
@@ -178,12 +179,17 @@ export type InsertRule<Cols extends AnyObject = AnyObject> = {
178
179
  /**
179
180
  * Validation logic to check/update data for each request. Happens before publish rule checks (for fields, forcedData/forcedFilter)
180
181
  */
181
- preValidate?: ValidateRow<Cols>;
182
+ preValidate?: ValidateRow<Cols, S>;
182
183
 
183
184
  /**
184
185
  * Validation logic to check/update data for each request. Happens after publish rule checks (for fields, forcedData/forcedFilter)
185
186
  */
186
- validate?: InsertRule<Cols>["preValidate"]
187
+ validate?: ValidateRow<Cols, S>;
188
+
189
+ /**
190
+ * Validation logic to check/update data after the insert. Happens in the same transaction so upon throwing an error the record will be deleted (not committed)
191
+ */
192
+ postValidate?: ValidateRow<Required<Cols>, S>;
187
193
  }
188
194
  export type UpdateRule<Cols extends AnyObject = AnyObject, S = void> = {
189
195
 
@@ -213,7 +219,7 @@ export type UpdateRule<Cols extends AnyObject = AnyObject, S = void> = {
213
219
  /**
214
220
  * Data to include/overwrite on each updatDBe
215
221
  */
216
- forcedData?: InsertRule<Cols>["forcedData"]
222
+ forcedData?: InsertRule<Cols, S>["forcedData"]
217
223
 
218
224
  /**
219
225
  * Fields user can use to find the updates
@@ -228,7 +234,7 @@ export type UpdateRule<Cols extends AnyObject = AnyObject, S = void> = {
228
234
  /**
229
235
  * Validation logic to check/update data for each request
230
236
  */
231
- validate?: ValidateUpdateRow<Cols>;
237
+ validate?: ValidateUpdateRow<Cols, S>;
232
238
 
233
239
  };
234
240
 
@@ -291,11 +297,11 @@ export type ViewRule<S = AnyObject> = CommonTableRules & {
291
297
  */
292
298
  select?: SelectRule<S>;
293
299
  };
294
- export type TableRule<S = AnyObject> = ViewRule<S> & {
295
- insert?: InsertRule<S>;
296
- update?: UpdateRule<S>;
297
- delete?: DeleteRule<S>;
298
- sync?: SyncRule<S>;
300
+ export type TableRule<RowType = AnyObject, S = void> = ViewRule<RowType> & {
301
+ insert?: InsertRule<RowType, S>;
302
+ update?: UpdateRule<RowType, S>;
303
+ delete?: DeleteRule<RowType, S>;
304
+ sync?: SyncRule<RowType>;
299
305
  subscribe?: SubscribeRule;
300
306
  };
301
307
  export type PublishViewRule<Col extends AnyObject = AnyObject, S = void> = {
@@ -304,7 +310,7 @@ export type PublishViewRule<Col extends AnyObject = AnyObject, S = void> = {
304
310
  getInfo?: PublishAllOrNothing;
305
311
  };
306
312
  export type PublishTableRule<Col extends AnyObject = AnyObject, S = void> = PublishViewRule<Col, S> & {
307
- insert?: InsertRule<Col> | PublishAllOrNothing
313
+ insert?: InsertRule<Col, S> | PublishAllOrNothing
308
314
  update?: UpdateRule<Col, S> | PublishAllOrNothing
309
315
  delete?: DeleteRule<Col, S> | PublishAllOrNothing
310
316
  sync?: SyncRule<Col>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prostgles-server",
3
- "version": "2.0.245",
3
+ "version": "2.0.248",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -1 +1 @@
1
- 13174
1
+ 17313
@@ -1 +1 @@
1
- {"version":3,"file":"client_only_queries.d.ts","sourceRoot":"","sources":["client_only_queries.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAa,MAAM,4CAA4C,CAAC;AAGtF,wBAA8B,WAAW,CAAC,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAAE,OAAO,KAAA,EAAE,WAAW,EAAE,aAAa,EAAE,iBA6S7I"}
1
+ {"version":3,"file":"client_only_queries.d.ts","sourceRoot":"","sources":["client_only_queries.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAa,MAAM,4CAA4C,CAAC;AAGtF,wBAA8B,WAAW,CAAC,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAAE,OAAO,KAAA,EAAE,WAAW,EAAE,aAAa,EAAE,iBAsT7I"}
@@ -194,13 +194,21 @@ async function client_only(db, auth, log, methods, tableSchema) {
194
194
  { id: 2, public: 'public data' }
195
195
  ]);
196
196
  const cols = await db.insert_rules.getColumns();
197
- assert_1.strict.equal(cols.filter(({ insert, update: u, select: s, delete: d }) => insert && !u && !s && !d).length, 3, "Validated getColumns failed");
197
+ assert_1.strict.equal(cols.filter(({ insert, update: u, select: s, delete: d }) => insert && !u && s && !d).length, 3, "Validated getColumns failed");
198
198
  /* Validated insert */
199
199
  const expectB = await db.insert_rules.insert({ name: "a" }, { returning: "*" });
200
200
  assert_1.strict.deepStrictEqual(expectB, { name: "b" }, "Validated insert failed");
201
201
  /* forced UUID insert */
202
202
  const row = await db.uuid_text.insert({}, { returning: "*" });
203
203
  assert_1.strict.equal(row.id, 'c81089e1-c4c1-45d7-a73d-e2d613cb7c3e');
204
+ try {
205
+ await db.insert_rules.insert({ name: "notfail" }, { returning: "*" });
206
+ await db.insert_rules.insert({ name: "fail" }, { returning: "*" });
207
+ }
208
+ catch (err) {
209
+ }
210
+ assert_1.strict.equal(0, +(await db.insert_rules.count({ name: "fail" })), "postValidation failed");
211
+ assert_1.strict.equal(1, +(await db.insert_rules.count({ name: "notfail" })), "postValidation failed");
204
212
  });
205
213
  // await tryRun("Duplicate subscription", async () => {
206
214
  // return new Promise(async (resolve, reject) => {
@@ -224,9 +224,8 @@ export default async function client_only(db: DBHandlerClient, auth: Auth, log:
224
224
  { id: 2, public: 'public data' }
225
225
  ]);
226
226
 
227
-
228
227
  const cols = await db.insert_rules.getColumns();
229
- assert.equal(cols.filter(({ insert, update: u, select: s, delete: d }) => insert && !u && !s && !d).length, 3, "Validated getColumns failed")
228
+ assert.equal(cols.filter(({ insert, update: u, select: s, delete: d }) => insert && !u && s && !d).length, 3, "Validated getColumns failed")
230
229
 
231
230
  /* Validated insert */
232
231
  const expectB = await db.insert_rules.insert({ name: "a" }, { returning: "*" });
@@ -235,6 +234,16 @@ export default async function client_only(db: DBHandlerClient, auth: Auth, log:
235
234
  /* forced UUID insert */
236
235
  const row: any = await db.uuid_text.insert({}, {returning: "*"});
237
236
  assert.equal(row.id, 'c81089e1-c4c1-45d7-a73d-e2d613cb7c3e');
237
+
238
+
239
+ try {
240
+ await db.insert_rules.insert({ name: "notfail" }, { returning: "*" });
241
+ await db.insert_rules.insert({ name: "fail" }, { returning: "*" });
242
+ } catch(err){
243
+
244
+ }
245
+ assert.equal(0, +(await db.insert_rules.count({ name: "fail" })), "postValidation failed");
246
+ assert.equal(1, +(await db.insert_rules.count({ name: "notfail" })), "postValidation failed");
238
247
  });
239
248
 
240
249
  // await tryRun("Duplicate subscription", async () => {
@@ -1 +1 @@
1
- {"version":3,"file":"dboTypeCheck.d.ts","sourceRoot":"","sources":["dboTypeCheck.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,YAAY,YAexB,CAAA"}
1
+ {"version":3,"file":"dboTypeCheck.d.ts","sourceRoot":"","sources":["dboTypeCheck.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,YAAY,YA4BxB,CAAA"}
@@ -11,6 +11,17 @@ const testDboTypes = () => {
11
11
  db.items2.find;
12
12
  const values = await db.items2.find({}, { select: { items_id: 1 }, returnType: "values" });
13
13
  const numArr = values;
14
+ const publish = {
15
+ items: {
16
+ insert: {
17
+ fields: { name: 1 },
18
+ validate: async (row) => ({
19
+ ...row,
20
+ h: [""]
21
+ })
22
+ }
23
+ }
24
+ };
14
25
  });
15
26
  };
16
27
  exports.testDboTypes = testDboTypes;
@@ -1,6 +1,7 @@
1
1
  import type { DBOFullyTyped } from "../../dist/DBSchemaBuilder";
2
2
  import type { DBHandlerServer } from "../../dist/DboBuilder";
3
3
  import { DBSchemaGenerated } from "./DBoGenerated";
4
+ import { Publish } from "../../dist/PublishParser";
4
5
 
5
6
  export const testDboTypes = () => {
6
7
  (async () => {
@@ -16,5 +17,18 @@ export const testDboTypes = () => {
16
17
 
17
18
  const values = await db.items2.find({}, { select: { items_id: 1 }, returnType: "values" });
18
19
  const numArr: number[] = values;
20
+
21
+
22
+ const publish: Publish<DBSchemaGenerated> = {
23
+ items: {
24
+ insert: {
25
+ fields: { name: 1 },
26
+ validate: async (row) => ({
27
+ ...row,
28
+ h: [""]
29
+ })
30
+ }
31
+ }
32
+ }
19
33
  })
20
34
  }
@@ -304,6 +304,7 @@ function dd() {
304
304
  prostgles_lookup_media_items_with_one_media: "*",
305
305
  prostgles_lookup_media_items_with_media: "*",
306
306
  insert_rules: {
307
+ select: "*",
307
308
  insert: {
308
309
  fields: "*",
309
310
  returningFields: { name: 1 },
@@ -311,6 +312,11 @@ function dd() {
311
312
  if (row.name === "a")
312
313
  row.name = "b";
313
314
  return row;
315
+ },
316
+ postValidate: async (row, dbo) => {
317
+ if (row.name === "fail")
318
+ throw "Failed";
319
+ return undefined;
314
320
  }
315
321
  }
316
322
  },
@@ -333,12 +333,17 @@ function dd(){
333
333
  prostgles_lookup_media_items_with_one_media: "*",
334
334
  prostgles_lookup_media_items_with_media: "*",
335
335
  insert_rules: {
336
+ select: "*",
336
337
  insert: {
337
338
  fields: "*",
338
339
  returningFields: { name: 1 },
339
340
  validate: async (row) => {
340
341
  if(row.name === "a") row.name = "b"
341
342
  return row
343
+ },
344
+ postValidate: async (row, dbo) => {
345
+ if(row.name === "fail") throw "Failed";
346
+ return undefined
342
347
  }
343
348
  }
344
349
  },
@@ -21,7 +21,7 @@
21
21
  },
22
22
  "../..": {
23
23
  "name": "prostgles-server",
24
- "version": "2.0.239",
24
+ "version": "2.0.247",
25
25
  "license": "MIT",
26
26
  "dependencies": {
27
27
  "@aws-sdk/client-s3": "^3.121.0",