prostgles-server 2.0.175 → 2.0.178
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/AuthHandler.d.ts +2 -2
- package/dist/AuthHandler.d.ts.map +1 -1
- package/dist/DBSchemaBuilder.d.ts +3 -3
- package/dist/DBSchemaBuilder.d.ts.map +1 -1
- package/dist/DBSchemaBuilder.js +27 -0
- package/dist/DBSchemaBuilder.js.map +1 -1
- package/dist/DboBuilder.d.ts +1 -1
- package/dist/DboBuilder.d.ts.map +1 -1
- package/dist/DboBuilder.js +1 -1
- package/dist/DboBuilder.js.map +1 -1
- package/dist/Prostgles.d.ts +3 -3
- package/dist/Prostgles.d.ts.map +1 -1
- package/dist/PublishParser.d.ts +36 -36
- package/dist/PublishParser.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/lib/AuthHandler.ts +2 -2
- package/lib/DBSchemaBuilder.ts +39 -6
- package/lib/DboBuilder.ts +5 -5
- package/lib/Prostgles.ts +2 -2
- package/lib/PublishParser.ts +36 -36
- package/lib/index.ts +1 -1
- package/package.json +1 -1
- package/tests/client/PID.txt +1 -1
- package/tests/client/tsconfig.json +1 -0
- package/tests/isomorphic_queries.ts +1 -1
- package/tests/server/DBoGenerated.d.ts +0 -3
- package/tests/server/package-lock.json +1 -1
- package/tests/server/tsconfig.json +1 -0
package/lib/PublishParser.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { CommonTableRules, Filter, isPlainObject, LocalParams, PRGLIOSocket, Tab
|
|
|
4
4
|
import { Prostgles, DBHandlerServer, DB, TABLE_METHODS } from "./Prostgles";
|
|
5
5
|
import type { DBOFullyTyped, PublishFullyTyped } from "./DBSchemaBuilder";
|
|
6
6
|
export type Method = (...args: any) => ( any | Promise<any> );
|
|
7
|
-
export type PublishMethods<S extends DBSchema> = (params: PublishParams<S>) => { [key:string]: Method } | Promise<{ [key:string]: Method }>;
|
|
7
|
+
export type PublishMethods<S extends DBSchema | undefined = undefined> = (params: PublishParams<S>) => { [key:string]: Method } | Promise<{ [key:string]: Method }>;
|
|
8
8
|
|
|
9
9
|
export type Awaitable<T> = T | Promise<T>;
|
|
10
10
|
|
|
@@ -129,12 +129,12 @@ export type UpdateRequestData<R extends AnyObject = AnyObject> = UpdateRequestDa
|
|
|
129
129
|
export type ValidateRow<R extends AnyObject = AnyObject> = (row: R) => R | Promise<R>;
|
|
130
130
|
export type ValidateUpdateRow<R extends AnyObject = AnyObject> = (args: { update: Partial<R>, filter: FullFilter<R> }) => R | Promise<R>;
|
|
131
131
|
|
|
132
|
-
export type SelectRule<S extends DBTableSchema =
|
|
132
|
+
export type SelectRule<S extends DBTableSchema | undefined = undefined> = {
|
|
133
133
|
|
|
134
134
|
/**
|
|
135
135
|
* Fields allowed to be selected. Tip: Use false to exclude field
|
|
136
136
|
*/
|
|
137
|
-
fields: FieldFilter<DBSchemaColumns<S["columns"]
|
|
137
|
+
fields: FieldFilter<S extends DBTableSchema? DBSchemaColumns<S["columns"]> : AnyObject>;
|
|
138
138
|
|
|
139
139
|
/**
|
|
140
140
|
* The maximum number of rows a user can get in a select query. null by default. Unless a null or higher limit is specified 100 rows will be returned by the default
|
|
@@ -144,12 +144,12 @@ export type SelectRule<S extends DBTableSchema = any> = {
|
|
|
144
144
|
/**
|
|
145
145
|
* Filter added to every query (e.g. user_id) to restrict access
|
|
146
146
|
*/
|
|
147
|
-
forcedFilter?: FullFilter<DBSchemaColumns<S["columns"]
|
|
147
|
+
forcedFilter?: FullFilter<S extends DBTableSchema? DBSchemaColumns<S["columns"]> : AnyObject>;
|
|
148
148
|
|
|
149
149
|
/**
|
|
150
150
|
* Fields user can filter by
|
|
151
151
|
* */
|
|
152
|
-
filterFields?: FieldFilter<DBSchemaColumns<S["columns"]
|
|
152
|
+
filterFields?: FieldFilter<S extends DBTableSchema? DBSchemaColumns<S["columns"]> : AnyObject>;
|
|
153
153
|
|
|
154
154
|
/**
|
|
155
155
|
* Validation logic to check/update data for each request
|
|
@@ -157,39 +157,39 @@ export type SelectRule<S extends DBTableSchema = any> = {
|
|
|
157
157
|
validate?(args: SelectRequestData): SelectRequestData | Promise<SelectRequestData>;
|
|
158
158
|
|
|
159
159
|
}
|
|
160
|
-
export type InsertRule<S extends DBTableSchema =
|
|
160
|
+
export type InsertRule<S extends DBTableSchema | undefined = undefined> = {
|
|
161
161
|
|
|
162
162
|
/**
|
|
163
163
|
* Fields allowed to be inserted. Tip: Use false to exclude field
|
|
164
164
|
*/
|
|
165
|
-
fields:
|
|
165
|
+
fields: SelectRule<S>["fields"]
|
|
166
166
|
|
|
167
167
|
/**
|
|
168
168
|
* Data to include/overwrite on each insert
|
|
169
169
|
*/
|
|
170
|
-
forcedData?: Partial<DBSchemaColumns<S["columns"]
|
|
170
|
+
forcedData?: Partial<S extends DBTableSchema? DBSchemaColumns<S["columns"]> : AnyObject>;
|
|
171
171
|
|
|
172
172
|
/**
|
|
173
173
|
* Fields user can view after inserting
|
|
174
174
|
*/
|
|
175
|
-
returningFields?:
|
|
175
|
+
returningFields?: SelectRule<S>["fields"]
|
|
176
176
|
|
|
177
177
|
/**
|
|
178
178
|
* Validation logic to check/update data for each request. Happens before publish rule checks (for fields, forcedData/forcedFilter)
|
|
179
179
|
*/
|
|
180
|
-
preValidate?: ValidateRow<DBSchemaColumns<S["columns"]
|
|
180
|
+
preValidate?: ValidateRow<S extends DBTableSchema? DBSchemaColumns<S["columns"]> : AnyObject>;
|
|
181
181
|
|
|
182
182
|
/**
|
|
183
183
|
* Validation logic to check/update data for each request. Happens after publish rule checks (for fields, forcedData/forcedFilter)
|
|
184
184
|
*/
|
|
185
|
-
validate?:
|
|
185
|
+
validate?: InsertRule<S>["preValidate"]
|
|
186
186
|
}
|
|
187
|
-
export type UpdateRule<S extends DBTableSchema =
|
|
187
|
+
export type UpdateRule<S extends DBTableSchema | undefined = undefined> = {
|
|
188
188
|
|
|
189
189
|
/**
|
|
190
190
|
* Fields allowed to be updated. Tip: Use false/0 to exclude field
|
|
191
191
|
*/
|
|
192
|
-
fields:
|
|
192
|
+
fields: SelectRule<S>["fields"]
|
|
193
193
|
|
|
194
194
|
/**
|
|
195
195
|
* Row level FGAC
|
|
@@ -199,71 +199,71 @@ export type UpdateRule<S extends DBTableSchema = any> = {
|
|
|
199
199
|
* Specify in decreasing order of specificity otherwise a more general filter will match first
|
|
200
200
|
*/
|
|
201
201
|
dynamicFields?: {
|
|
202
|
-
filter:
|
|
203
|
-
fields:
|
|
202
|
+
filter: SelectRule<S>["forcedFilter"]
|
|
203
|
+
fields: SelectRule<S>["fields"]
|
|
204
204
|
}[];
|
|
205
205
|
|
|
206
206
|
/**
|
|
207
207
|
* Filter added to every query (e.g. user_id) to restrict access
|
|
208
208
|
* This filter cannot be updated
|
|
209
209
|
*/
|
|
210
|
-
forcedFilter?:
|
|
210
|
+
forcedFilter?: SelectRule<S>["forcedFilter"]
|
|
211
211
|
|
|
212
212
|
/**
|
|
213
213
|
* Data to include/overwrite on each updatDBe
|
|
214
214
|
*/
|
|
215
|
-
forcedData?:
|
|
215
|
+
forcedData?: InsertRule<S>["forcedData"]
|
|
216
216
|
|
|
217
217
|
/**
|
|
218
218
|
* Fields user can use to find the updates
|
|
219
219
|
*/
|
|
220
|
-
filterFields?:
|
|
220
|
+
filterFields?: SelectRule<S>["fields"]
|
|
221
221
|
|
|
222
222
|
/**
|
|
223
223
|
* Fields user can view after updating
|
|
224
224
|
*/
|
|
225
|
-
returningFields?:
|
|
225
|
+
returningFields?: SelectRule<S>["fields"]
|
|
226
226
|
|
|
227
227
|
/**
|
|
228
228
|
* Validation logic to check/update data for each request
|
|
229
229
|
*/
|
|
230
|
-
validate?: ValidateUpdateRow<DBSchemaColumns<S["columns"]
|
|
230
|
+
validate?: ValidateUpdateRow<S extends DBTableSchema? DBSchemaColumns<S["columns"]> : AnyObject>;
|
|
231
231
|
|
|
232
232
|
};
|
|
233
233
|
|
|
234
|
-
export type DeleteRule<S extends DBTableSchema =
|
|
234
|
+
export type DeleteRule<S extends DBTableSchema | undefined = undefined> = {
|
|
235
235
|
|
|
236
236
|
/**
|
|
237
237
|
* Filter added to every query (e.g. user_id) to restrict access
|
|
238
238
|
*/
|
|
239
|
-
forcedFilter?: FullFilter<DBSchemaColumns<S["columns"]
|
|
239
|
+
forcedFilter?: FullFilter<S extends DBTableSchema? DBSchemaColumns<S["columns"]> : AnyObject>;
|
|
240
240
|
|
|
241
241
|
/**
|
|
242
242
|
* Fields user can filter by
|
|
243
243
|
*/
|
|
244
|
-
filterFields?: FieldFilter<DBSchemaColumns<S["columns"]
|
|
244
|
+
filterFields?: FieldFilter<S extends DBTableSchema? DBSchemaColumns<S["columns"]> : AnyObject>;
|
|
245
245
|
|
|
246
246
|
/**
|
|
247
247
|
* Fields user can view after deleting
|
|
248
248
|
*/
|
|
249
|
-
returningFields?: FieldFilter<DBSchemaColumns<S["columns"]
|
|
249
|
+
returningFields?: FieldFilter<S extends DBTableSchema? DBSchemaColumns<S["columns"]> : AnyObject>;
|
|
250
250
|
|
|
251
251
|
/**
|
|
252
252
|
* Validation logic to check/update data for each request
|
|
253
253
|
*/
|
|
254
|
-
validate?(...args: any[]): UpdateRequestData<DBSchemaColumns<S["columns"]
|
|
254
|
+
validate?(...args: any[]): UpdateRequestData<S extends DBTableSchema? DBSchemaColumns<S["columns"]> : AnyObject>;
|
|
255
255
|
}
|
|
256
|
-
export type SyncRule<S extends DBTableSchema =
|
|
256
|
+
export type SyncRule<S extends DBTableSchema | undefined = undefined> = {
|
|
257
257
|
|
|
258
258
|
/**
|
|
259
259
|
* Primary keys used in updating data
|
|
260
260
|
*/
|
|
261
|
-
id_fields: string[];
|
|
261
|
+
id_fields: S extends DBTableSchema? (keyof S["dataTypes"])[] : string[];
|
|
262
262
|
|
|
263
263
|
/**
|
|
264
264
|
* Numerical incrementing fieldname (last updated timestamp) used to sync items
|
|
265
265
|
*/
|
|
266
|
-
synced_field: string;
|
|
266
|
+
synced_field: S extends DBTableSchema? (keyof S["dataTypes"]) : string;
|
|
267
267
|
|
|
268
268
|
/**
|
|
269
269
|
* EXPERIMENTAL. Disabled by default. If true then server will attempt to delete any records missing from client.
|
|
@@ -284,25 +284,25 @@ export type SubscribeRule = {
|
|
|
284
284
|
throttle?: number;
|
|
285
285
|
}
|
|
286
286
|
|
|
287
|
-
export type ViewRule<S extends DBTableSchema> = CommonTableRules & {
|
|
287
|
+
export type ViewRule<S extends DBTableSchema | undefined = undefined> = CommonTableRules & {
|
|
288
288
|
/**
|
|
289
289
|
* What can be read from the table
|
|
290
290
|
*/
|
|
291
291
|
select?: SelectRule<S>;
|
|
292
292
|
};
|
|
293
|
-
export type TableRule<S extends DBTableSchema =
|
|
293
|
+
export type TableRule<S extends DBTableSchema | undefined = undefined> = ViewRule<S> & {
|
|
294
294
|
insert?: InsertRule<S>;
|
|
295
295
|
update?: UpdateRule<S>;
|
|
296
296
|
delete?: DeleteRule<S>;
|
|
297
297
|
sync?: SyncRule<S>;
|
|
298
298
|
subscribe?: SubscribeRule;
|
|
299
299
|
};
|
|
300
|
-
export type PublishViewRule<S extends DBTableSchema =
|
|
300
|
+
export type PublishViewRule<S extends DBTableSchema | undefined = undefined> = {
|
|
301
301
|
select?: SelectRule<S> | PublishAllOrNothing
|
|
302
302
|
getColumns?: PublishAllOrNothing;
|
|
303
303
|
getInfo?: PublishAllOrNothing;
|
|
304
304
|
};
|
|
305
|
-
export type PublishTableRule<S extends DBTableSchema =
|
|
305
|
+
export type PublishTableRule<S extends DBTableSchema | undefined = undefined> = PublishViewRule<S> & {
|
|
306
306
|
insert?: InsertRule<S> | PublishAllOrNothing
|
|
307
307
|
update?: UpdateRule<S> | PublishAllOrNothing
|
|
308
308
|
delete?: DeleteRule<S> | PublishAllOrNothing
|
|
@@ -327,7 +327,7 @@ export type ParsedPublishTable = {
|
|
|
327
327
|
// export type Publish = {
|
|
328
328
|
// tablesOrViews: {[key:string]: TableRule | ViewRule | "*" }
|
|
329
329
|
// }
|
|
330
|
-
export type PublishParams<S extends DBSchema =
|
|
330
|
+
export type PublishParams<S extends DBSchema | undefined = undefined> = {
|
|
331
331
|
sid?: string;
|
|
332
332
|
dbo: DBOFullyTyped<S>;
|
|
333
333
|
db?: DB;
|
|
@@ -336,14 +336,14 @@ export type PublishParams<S extends DBSchema = any> = {
|
|
|
336
336
|
}
|
|
337
337
|
export type RequestParams = { dbo?: DBHandlerServer, socket?: any };
|
|
338
338
|
export type PublishAllOrNothing = true | "*" | false | null;
|
|
339
|
-
export type PublishObject<Schema extends DBSchema =
|
|
339
|
+
export type PublishObject<Schema extends DBSchema | undefined = undefined> = {
|
|
340
340
|
[table_name: string]: (PublishTableRule | PublishViewRule | PublishAllOrNothing )
|
|
341
341
|
};
|
|
342
342
|
export type ParsedPublishTables = {
|
|
343
343
|
[table_name: string]: ParsedPublishTable
|
|
344
344
|
};
|
|
345
|
-
export type PublishedResult<Schema extends DBSchema =
|
|
346
|
-
export type Publish<Schema extends DBSchema =
|
|
345
|
+
export type PublishedResult<Schema extends DBSchema | undefined = undefined> = PublishAllOrNothing | PublishFullyTyped<Schema> ;
|
|
346
|
+
export type Publish<Schema extends DBSchema | undefined = undefined> = PublishedResult<Schema> | ((params: PublishParams<Schema>) => Awaitable<PublishedResult<Schema>>);
|
|
347
347
|
|
|
348
348
|
export class PublishParser {
|
|
349
349
|
publish: any;
|
package/lib/index.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Prostgles, ProstglesInitOptions } from "./Prostgles";
|
|
2
2
|
import { DBSchema } from "prostgles-types";
|
|
3
3
|
|
|
4
|
-
function prostgles<S extends DBSchema =
|
|
4
|
+
function prostgles<S extends DBSchema | undefined = undefined>(params: ProstglesInitOptions<S>){
|
|
5
5
|
|
|
6
6
|
let prgl = new Prostgles<S>(params as any);
|
|
7
7
|
return prgl.init(params.onReady);
|
package/package.json
CHANGED
package/tests/client/PID.txt
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
85322
|
|
@@ -457,7 +457,7 @@ export default async function isomorphic(db: Partial<DBHandlerServer> | Partial<
|
|
|
457
457
|
assert.deepStrictEqual(MonAgg, [{ added: "Dec", public: '2' }]);
|
|
458
458
|
|
|
459
459
|
// Returning
|
|
460
|
-
const returningParam = { returning: { id: 1, name: 1, public: 1 , $rowhash: 1, added_day: { "$day": ["added"] } }} ; // ctid: 1,
|
|
460
|
+
const returningParam: Parameters<typeof db.items4_pub.insert>[1] = { returning: { id: 1, name: 1, public: 1 , $rowhash: 1, added_day: { "$day": ["added"] } }} ; // ctid: 1,
|
|
461
461
|
let i = await db.items4_pub.insert( { name: "abc123", public: "public data", added: new Date('04 Dec 1995 00:12:00 GMT') }, returningParam);
|
|
462
462
|
assert.deepStrictEqual(i, { id: 1, name: 'abc123', public: 'public data', $rowhash: '347c26babad535aa697a794af89195fe', added_day: 'monday' }); // , ctid: '(0,1)'
|
|
463
463
|
|