prostgles-server 2.0.186 → 2.0.187
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/DboBuilder.d.ts.map +1 -1
- package/dist/DboBuilder.js +16 -9
- package/dist/DboBuilder.js.map +1 -1
- package/dist/Prostgles.d.ts +15 -13
- package/dist/Prostgles.d.ts.map +1 -1
- package/dist/Prostgles.js +7 -7
- package/dist/Prostgles.js.map +1 -1
- package/dist/PubSubManager.d.ts +1 -0
- package/dist/PubSubManager.d.ts.map +1 -1
- package/dist/PubSubManager.js +2 -1
- package/dist/PubSubManager.js.map +1 -1
- package/lib/DboBuilder.d.ts.map +1 -1
- package/lib/DboBuilder.js +16 -9
- package/lib/DboBuilder.ts +17 -13
- package/lib/Prostgles.d.ts +15 -13
- package/lib/Prostgles.d.ts.map +1 -1
- package/lib/Prostgles.js +7 -7
- package/lib/Prostgles.ts +19 -17
- package/lib/PubSubManager.d.ts +1 -0
- package/lib/PubSubManager.d.ts.map +1 -1
- package/lib/PubSubManager.js +2 -1
- package/lib/PubSubManager.ts +3 -1
- package/lib/SchemaWatchManager.ts +72 -0
- package/package.json +1 -1
- package/tests/client/PID.txt +1 -1
- package/tests/client/package-lock.json +7 -7
- package/tests/client/package.json +1 -1
- package/tests/isomorphic_queries.d.ts.map +1 -1
- package/tests/isomorphic_queries.js +1 -0
- package/tests/isomorphic_queries.ts +1 -0
- package/tests/server/package-lock.json +1 -1
package/lib/Prostgles.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
1
2
|
import * as pgPromise from 'pg-promise';
|
|
2
3
|
import pg = require('pg-promise/typescript/pg-subset');
|
|
3
4
|
import FileManager, { ImageOptions, LocalConfig, S3Config } from "./FileManager";
|
|
@@ -99,21 +100,28 @@ export declare type ProstglesInitOptions<S = void> = {
|
|
|
99
100
|
DEBUG_MODE?: boolean;
|
|
100
101
|
watchSchemaType?:
|
|
101
102
|
/**
|
|
102
|
-
* Will
|
|
103
|
+
* Will set database event trigger for schema changes. Requires superuser
|
|
103
104
|
* Default
|
|
104
105
|
*/
|
|
105
|
-
"
|
|
106
|
+
"DDL_trigger"
|
|
106
107
|
/**
|
|
107
|
-
* Will
|
|
108
|
+
* Will check client queries for schema changes
|
|
109
|
+
* fallback if DDL not possible
|
|
108
110
|
*/
|
|
109
|
-
| "
|
|
111
|
+
| "prostgles_queries"
|
|
112
|
+
/**
|
|
113
|
+
* Schema checked for changes every 'checkIntervalMillis" milliseconds
|
|
114
|
+
*/
|
|
115
|
+
| {
|
|
116
|
+
checkIntervalMillis: number;
|
|
117
|
+
};
|
|
110
118
|
watchSchema?:
|
|
111
119
|
/**
|
|
112
120
|
* If true then DBoGenerated.d.ts will be updated and "onReady" will be called with new schema on both client and server
|
|
113
121
|
*/
|
|
114
122
|
boolean
|
|
115
123
|
/**
|
|
116
|
-
*
|
|
124
|
+
* Will only rewrite the DBoGenerated.d.ts found in tsGeneratedTypesDir
|
|
117
125
|
* This is meant to be used in development when server restarts on file change
|
|
118
126
|
*/
|
|
119
127
|
| "hotReloadMode"
|
|
@@ -123,13 +131,7 @@ export declare type ProstglesInitOptions<S = void> = {
|
|
|
123
131
|
| ((event: {
|
|
124
132
|
command: string;
|
|
125
133
|
query: string;
|
|
126
|
-
}) => void)
|
|
127
|
-
/**
|
|
128
|
-
* Schema checked for changes every 'checkIntervalMillis" milliseconds
|
|
129
|
-
*/
|
|
130
|
-
| {
|
|
131
|
-
checkIntervalMillis: number;
|
|
132
|
-
};
|
|
134
|
+
}) => void);
|
|
133
135
|
keywords?: Keywords;
|
|
134
136
|
onNotice?: (notice: AnyObject, message?: string) => void;
|
|
135
137
|
fileTable?: FileTableConfig;
|
|
@@ -176,7 +178,7 @@ export declare class Prostgles {
|
|
|
176
178
|
writeDBSchema(force?: boolean): void;
|
|
177
179
|
refreshDBO: () => Promise<DBHandlerServer>;
|
|
178
180
|
isSuperUser: boolean;
|
|
179
|
-
schema_checkIntervalMillis
|
|
181
|
+
schema_checkIntervalMillis?: NodeJS.Timeout;
|
|
180
182
|
init(onReady: (dbo: DBOFullyTyped, db: DB) => any): Promise<{
|
|
181
183
|
db: DBOFullyTyped;
|
|
182
184
|
_db: DB;
|
package/lib/Prostgles.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Prostgles.d.ts","sourceRoot":"","sources":["Prostgles.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Prostgles.d.ts","sourceRoot":"","sources":["Prostgles.ts"],"names":[],"mappings":";AAMA,OAAO,KAAK,SAAS,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,GAAG,QAAQ,iCAAiC,CAAC,CAAC;AACvD,OAAO,WAAW,EAAE,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAIjF,OAAO,WAAW,EAAE,EAAc,IAAI,EAAE,MAAM,eAAe,CAAC;AAG9D,OAAO,iBAAiB,EAAE,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG/D,OAAO,EAAE,UAAU,EAAE,eAAe,EAA2C,YAAY,EAAE,MAAM,cAAc,CAAC;AAElH,OAAO,EAAE,eAAe,EAAE,CAAA;AAC1B,oBAAY,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;AAElD,OAAO,EAA8C,SAAS,EAAkD,MAAM,iBAAiB,CAAC;AACxI,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACxF,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,oBAAY,EAAE,GAAG,SAAS,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;AACrD,aAAK,YAAY,GAAG,MAAM,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;AAClE,aAAK,gBAAgB,GAAG,EAAE,CAAC,SAAS,CAAC;AACrC,eAAO,MAAM,aAAa,sEAAuE,CAAC;AAgDlG,eAAO,MAAM,UAAU,2DAA4D,CAAC;AACpF,oBAAY,IAAI,GAAG;IACf,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzB,EAAE,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IAC9B,IAAI,EAAE,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;CACnC,CAAC;AACF,oBAAY,KAAK,GAAG,IAAI,EAAE,GAAG,UAAU,CAAC;AAIxC,aAAK,QAAQ,GAAG;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,oBAAY,WAAW,CAAC,CAAC,IAAI;KACxB,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACrC,CAAC;AAYF,aAAK,UAAU,GAAG;IACd,GAAG,EAAE,CACD,SAAS,EAAE,MAAM,EACjB,EAAE,EAAE,CACA,GAAG,EAAE;QACD,MAAM,EAAE;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC;QACzB,OAAO,EAAE;YAAE,GAAG,EAAE,MAAM,CAAA;SAAE,CAAA;KAC3B,EACD,GAAG,EAAE;QACD,QAAQ,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,GAAG,CAAC;QACvC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;QACpC,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,KAAK,GAAG,CAAC;QAC7D,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK;YACtB,IAAI,EAAE,CAAC,QAAQ,EAAE,SAAS,KAAK,GAAG,CAAC;SACtC,CAAA;KACJ,KACA,GAAG,KACP,GAAG,CAAA;CACX,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,oBAAY,eAAe,GAAG;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,WAAW,CAAC,EAAE,QAAQ,CAAC;IACvB,WAAW,CAAC,EAAE,WAAW,CAAC;IAO1B,UAAU,EAAE,UAAU,CAAC;IACvB,gBAAgB,CAAC,EAAE;QACf,CAAC,SAAS,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,CAAA;KACtC,CAAC;IACF,YAAY,CAAC,EAAE,YAAY,CAAA;CAC9B,CAAC;AAEF,oBAAY,oBAAoB,CAAC,CAAC,GAAG,IAAI,IAAI;IACzC,YAAY,EAAE,YAAY,CAAC;IAC3B,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,EAAE,CAAC,EAAE,GAAG,CAAC;IACT,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACrB,cAAc,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;IACnC,aAAa,CAAC,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,CAAE,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IACxF,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;IAC7C,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAChC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,eAAe,CAAC,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC;IAC5E,kBAAkB,CAAC,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC;IAC/E,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,eAAe,CAAC;IAEhB;;;OAGG;IACD,aAAa;IAEf;;;OAGG;OACD,mBAAmB;IAErB;;OAEG;OACD;QAAE,mBAAmB,EAAE,MAAM,CAAA;KAAE,CAAC;IAElC,WAAW,CAAC;IAER;;OAEG;IACD,OAAO;IAET;;;OAGG;OACD,eAAe;IAEjB;;OAEG;OACD,CAAC,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC,CAAA;IAE3D,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACzD,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,WAAW,CAAC,EAAE,WAAW,CAAC;CAC7B,CAAA;AAUD,oBAAY,OAAO,GAAG;IAClB,GAAG,EAAE,eAAe,CAAC;IACrB,EAAE,EAAE,EAAE,CAAC;CACV,CAAA;AAUD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,qBAAa,SAAS;IAElB,IAAI,EAAE,oBAAoB,CAWxB;IAQF,EAAE,CAAC,EAAE,EAAE,CAAC;IACR,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,GAAG,CAAC,EAAE,eAAe,CAAC;IACtB,WAAW,CAAC,EAAE,UAAU,CAAC;IACzB,IAAI,UAAU,IAAI,UAAU,CAG3B;IACD,IAAI,UAAU,CAAC,CAAC,EAAE,UAAU,EAE3B;IACD,aAAa,CAAC,EAAE,aAAa,CAAC;IAE9B,WAAW,CAAC,EAAE,WAAW,CAAC;IAG1B,QAAQ;;;;;MAAoB;IAC5B,OAAO,CAAC,MAAM,CAAS;IAEvB,eAAe,CAAC,EAAE,eAAe,CAAC;IAGlC,WAAW,CAAC,EAAE,WAAW,CAAC;IAE1B,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IAEtC,OAAO,CAAC,SAAS,EAAE,MAAM;gBAIb,MAAM,EAAE,oBAAoB;IA+BxC,SAAS,UAAS;IAEZ,cAAc,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;IA+B9D,OAAO;IAIP,aAAa;;;;IAMb,OAAO,CAAC,WAAW;IASnB,aAAa,CAAC,KAAK,UAAQ;IAmB3B,UAAU,iCAMT;IAED,WAAW,UAAS;IACpB,0BAA0B,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC;IACtC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,aAAa,EAAE,EAAE,EAAE,EAAE,KAAK,GAAG,GAAG,OAAO,CAAC;QAC9D,EAAE,EAAE,aAAa,CAAC;QAClB,GAAG,EAAE,EAAE,CAAC;QACR,GAAG,EAAE,GAAG,CAAC;QACT,EAAE,CAAC,EAAE,GAAG,CAAC;QACT,OAAO,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;KACnC,CAAC;IAuJI,UAAU,CAAC,QAAQ,EAAE,MAAM;IA0BjC,gBAAgB,EAAE,GAAG,EAAE,CAAM;IACvB,eAAe;IAsGrB,gBAAgB,WAAkB,GAAG,mBAkFpC;CACJ;AAqCD,wBAAsB,WAAW,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAE1D"}
|
package/lib/Prostgles.js
CHANGED
|
@@ -110,7 +110,7 @@ class Prostgles {
|
|
|
110
110
|
onReady: () => { },
|
|
111
111
|
schema: "public",
|
|
112
112
|
watchSchema: false,
|
|
113
|
-
watchSchemaType: "
|
|
113
|
+
watchSchemaType: "DDL_trigger",
|
|
114
114
|
};
|
|
115
115
|
this.keywords = DEFAULT_KEYWORDS;
|
|
116
116
|
this.loaded = false;
|
|
@@ -238,7 +238,7 @@ class Prostgles {
|
|
|
238
238
|
return this.opts?.fileTable?.tableName === tableName;
|
|
239
239
|
}
|
|
240
240
|
async onSchemaChange(event) {
|
|
241
|
-
const { watchSchema, onReady, tsGeneratedTypesDir } = this.opts;
|
|
241
|
+
const { watchSchema, watchSchemaType, onReady, tsGeneratedTypesDir } = this.opts;
|
|
242
242
|
if (watchSchema && this.loaded) {
|
|
243
243
|
console.log("Schema changed");
|
|
244
244
|
const { query } = event;
|
|
@@ -258,7 +258,7 @@ class Prostgles {
|
|
|
258
258
|
this.writeDBSchema(true);
|
|
259
259
|
}
|
|
260
260
|
}
|
|
261
|
-
else if (watchSchema === true || "checkIntervalMillis" in
|
|
261
|
+
else if (watchSchema === true || (0, DboBuilder_1.isPlainObject)(watchSchemaType) && "checkIntervalMillis" in watchSchemaType) {
|
|
262
262
|
/* Full re-init. Sockets must reconnect */
|
|
263
263
|
console.log("watchSchema: Full re-initialisation");
|
|
264
264
|
this.init(onReady);
|
|
@@ -308,9 +308,9 @@ class Prostgles {
|
|
|
308
308
|
throw "tsGeneratedTypesDir option is needed for watchSchema: hotReloadMode to work ";
|
|
309
309
|
}
|
|
310
310
|
else if (this.opts.watchSchema &&
|
|
311
|
-
typeof this.opts.
|
|
312
|
-
"checkIntervalMillis" in this.opts.
|
|
313
|
-
typeof this.opts.
|
|
311
|
+
typeof this.opts.watchSchemaType === "object" &&
|
|
312
|
+
"checkIntervalMillis" in this.opts.watchSchemaType &&
|
|
313
|
+
typeof this.opts.watchSchemaType.checkIntervalMillis === "number") {
|
|
314
314
|
if (this.schema_checkIntervalMillis) {
|
|
315
315
|
clearInterval(this.schema_checkIntervalMillis);
|
|
316
316
|
this.schema_checkIntervalMillis = setInterval(async () => {
|
|
@@ -319,7 +319,7 @@ class Prostgles {
|
|
|
319
319
|
this.refreshDBO();
|
|
320
320
|
this.init(onReady);
|
|
321
321
|
}
|
|
322
|
-
}, this.opts.
|
|
322
|
+
}, this.opts.watchSchemaType.checkIntervalMillis);
|
|
323
323
|
}
|
|
324
324
|
}
|
|
325
325
|
/* 1. Connect to db */
|
package/lib/Prostgles.ts
CHANGED
|
@@ -186,16 +186,22 @@ export type ProstglesInitOptions<S = void> = {
|
|
|
186
186
|
watchSchemaType?:
|
|
187
187
|
|
|
188
188
|
/**
|
|
189
|
-
* Will
|
|
189
|
+
* Will set database event trigger for schema changes. Requires superuser
|
|
190
190
|
* Default
|
|
191
191
|
*/
|
|
192
|
-
| "
|
|
192
|
+
| "DDL_trigger"
|
|
193
193
|
|
|
194
194
|
/**
|
|
195
|
-
* Will
|
|
195
|
+
* Will check client queries for schema changes
|
|
196
|
+
* fallback if DDL not possible
|
|
196
197
|
*/
|
|
197
|
-
| "
|
|
198
|
+
| "prostgles_queries"
|
|
198
199
|
|
|
200
|
+
/**
|
|
201
|
+
* Schema checked for changes every 'checkIntervalMillis" milliseconds
|
|
202
|
+
*/
|
|
203
|
+
| { checkIntervalMillis: number };
|
|
204
|
+
|
|
199
205
|
watchSchema?:
|
|
200
206
|
|
|
201
207
|
/**
|
|
@@ -204,7 +210,7 @@ export type ProstglesInitOptions<S = void> = {
|
|
|
204
210
|
| boolean
|
|
205
211
|
|
|
206
212
|
/**
|
|
207
|
-
*
|
|
213
|
+
* Will only rewrite the DBoGenerated.d.ts found in tsGeneratedTypesDir
|
|
208
214
|
* This is meant to be used in development when server restarts on file change
|
|
209
215
|
*/
|
|
210
216
|
| "hotReloadMode"
|
|
@@ -214,10 +220,6 @@ export type ProstglesInitOptions<S = void> = {
|
|
|
214
220
|
*/
|
|
215
221
|
| ((event: { command: string; query: string }) => void)
|
|
216
222
|
|
|
217
|
-
/**
|
|
218
|
-
* Schema checked for changes every 'checkIntervalMillis" milliseconds
|
|
219
|
-
*/
|
|
220
|
-
| { checkIntervalMillis: number };
|
|
221
223
|
keywords?: Keywords;
|
|
222
224
|
onNotice?: (notice: AnyObject, message?: string) => void;
|
|
223
225
|
fileTable?: FileTableConfig;
|
|
@@ -258,7 +260,7 @@ export class Prostgles {
|
|
|
258
260
|
onReady: () => {},
|
|
259
261
|
schema: "public",
|
|
260
262
|
watchSchema: false,
|
|
261
|
-
watchSchemaType: "
|
|
263
|
+
watchSchemaType: "DDL_trigger",
|
|
262
264
|
};
|
|
263
265
|
|
|
264
266
|
// dbConnection: DbConnection = {
|
|
@@ -331,7 +333,7 @@ export class Prostgles {
|
|
|
331
333
|
destroyed = false;
|
|
332
334
|
|
|
333
335
|
async onSchemaChange(event: { command: string; query: string }){
|
|
334
|
-
const { watchSchema, onReady, tsGeneratedTypesDir } = this.opts;
|
|
336
|
+
const { watchSchema, watchSchemaType, onReady, tsGeneratedTypesDir } = this.opts;
|
|
335
337
|
if(watchSchema && this.loaded){
|
|
336
338
|
console.log("Schema changed");
|
|
337
339
|
const { query } = event;
|
|
@@ -353,7 +355,7 @@ export class Prostgles {
|
|
|
353
355
|
this.writeDBSchema(true);
|
|
354
356
|
}
|
|
355
357
|
|
|
356
|
-
} else if(watchSchema === true || "checkIntervalMillis" in
|
|
358
|
+
} else if(watchSchema === true || isPlainObject(watchSchemaType) && "checkIntervalMillis" in watchSchemaType){
|
|
357
359
|
/* Full re-init. Sockets must reconnect */
|
|
358
360
|
console.log("watchSchema: Full re-initialisation")
|
|
359
361
|
this.init(onReady);
|
|
@@ -408,7 +410,7 @@ export class Prostgles {
|
|
|
408
410
|
}
|
|
409
411
|
|
|
410
412
|
isSuperUser = false;
|
|
411
|
-
schema_checkIntervalMillis
|
|
413
|
+
schema_checkIntervalMillis?: NodeJS.Timeout;
|
|
412
414
|
async init(onReady: (dbo: DBOFullyTyped, db: DB) => any): Promise<{
|
|
413
415
|
db: DBOFullyTyped;
|
|
414
416
|
_db: DB;
|
|
@@ -423,9 +425,9 @@ export class Prostgles {
|
|
|
423
425
|
throw "tsGeneratedTypesDir option is needed for watchSchema: hotReloadMode to work ";
|
|
424
426
|
} else if(
|
|
425
427
|
this.opts.watchSchema &&
|
|
426
|
-
typeof this.opts.
|
|
427
|
-
"checkIntervalMillis" in this.opts.
|
|
428
|
-
typeof this.opts.
|
|
428
|
+
typeof this.opts.watchSchemaType === "object" &&
|
|
429
|
+
"checkIntervalMillis" in this.opts.watchSchemaType &&
|
|
430
|
+
typeof this.opts.watchSchemaType.checkIntervalMillis === "number"
|
|
429
431
|
){
|
|
430
432
|
|
|
431
433
|
if(this.schema_checkIntervalMillis){
|
|
@@ -436,7 +438,7 @@ export class Prostgles {
|
|
|
436
438
|
this.refreshDBO();
|
|
437
439
|
this.init(onReady);
|
|
438
440
|
}
|
|
439
|
-
}, this.opts.
|
|
441
|
+
}, this.opts.watchSchemaType.checkIntervalMillis)
|
|
440
442
|
}
|
|
441
443
|
}
|
|
442
444
|
|
package/lib/PubSubManager.d.ts
CHANGED
|
@@ -117,6 +117,7 @@ export declare class PubSubManager {
|
|
|
117
117
|
schema_watch_func: string;
|
|
118
118
|
schema_watch_trigger: string;
|
|
119
119
|
};
|
|
120
|
+
static SCHEMA_ALTERING_QUERIES: string[];
|
|
120
121
|
static EXCLUDE_QUERY_FROM_SCHEMA_WATCH_ID: string;
|
|
121
122
|
prepareTriggers: () => Promise<boolean>;
|
|
122
123
|
isReady(): any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PubSubManager.d.ts","sourceRoot":"","sources":["PubSubManager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PubSubManager.d.ts","sourceRoot":"","sources":["PubSubManager.ts"],"names":[],"mappings":"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"}
|
package/lib/PubSubManager.js
CHANGED
|
@@ -721,7 +721,7 @@ class PubSubManager {
|
|
|
721
721
|
if (!this.appID)
|
|
722
722
|
throw "prepareTriggers failed: this.appID missing";
|
|
723
723
|
if (this.dboBuilder.prostgles.opts.watchSchema && !(await (0, Prostgles_1.isSuperUser)(this.db))) {
|
|
724
|
-
console.warn("prostgles watchSchema requires superuser db user. Will not watch");
|
|
724
|
+
console.warn("prostgles watchSchema requires superuser db user. Will not watch using event triggers");
|
|
725
725
|
}
|
|
726
726
|
try {
|
|
727
727
|
await this.db.any(`
|
|
@@ -1378,6 +1378,7 @@ PubSubManager.create = async (options) => {
|
|
|
1378
1378
|
const res = new PubSubManager(options);
|
|
1379
1379
|
return await res.init();
|
|
1380
1380
|
};
|
|
1381
|
+
PubSubManager.SCHEMA_ALTERING_QUERIES = ['CREATE TABLE', 'ALTER TABLE', 'DROP TABLE', 'CREATE VIEW', 'DROP VIEW', 'ALTER VIEW', 'CREATE TABLE AS', 'SELECT INTO'];
|
|
1381
1382
|
PubSubManager.EXCLUDE_QUERY_FROM_SCHEMA_WATCH_ID = "prostgles internal query that should be excluded from ";
|
|
1382
1383
|
function omitKeys(obj, exclude) {
|
|
1383
1384
|
return pickKeys(obj, (0, prostgles_types_1.getKeys)(obj).filter(k => !exclude.includes(k)));
|
package/lib/PubSubManager.ts
CHANGED
|
@@ -842,12 +842,14 @@ export class PubSubManager {
|
|
|
842
842
|
schema_watch_trigger: "prostgles_schema_watch_trigger_new"
|
|
843
843
|
}
|
|
844
844
|
|
|
845
|
+
static SCHEMA_ALTERING_QUERIES = ['CREATE TABLE', 'ALTER TABLE', 'DROP TABLE', 'CREATE VIEW', 'DROP VIEW', 'ALTER VIEW', 'CREATE TABLE AS', 'SELECT INTO'];
|
|
846
|
+
|
|
845
847
|
static EXCLUDE_QUERY_FROM_SCHEMA_WATCH_ID = "prostgles internal query that should be excluded from "
|
|
846
848
|
prepareTriggers = async () => {
|
|
847
849
|
// SELECT * FROM pg_catalog.pg_event_trigger WHERE evtname
|
|
848
850
|
if (!this.appID) throw "prepareTriggers failed: this.appID missing";
|
|
849
851
|
if (this.dboBuilder.prostgles.opts.watchSchema && !(await isSuperUser(this.db))) {
|
|
850
|
-
console.warn("prostgles watchSchema requires superuser db user. Will not watch")
|
|
852
|
+
console.warn("prostgles watchSchema requires superuser db user. Will not watch using event triggers")
|
|
851
853
|
}
|
|
852
854
|
|
|
853
855
|
try {
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
// import PubSubManager from "./PubSubManager";
|
|
2
|
+
import { DboBuilder, isPlainObject } from "./DboBuilder";
|
|
3
|
+
import { Prostgles, ProstglesInitOptions } from "./Prostgles";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Prostgles creates an internal schema object that is used in providing core functionality: handles to explore and edit data within the database
|
|
7
|
+
* This schema object is created once on startup
|
|
8
|
+
* To allow reloading of internal schema without a full application restart we use schema watch
|
|
9
|
+
* Schema watch triggers internal schema rebuild every time the schema changes
|
|
10
|
+
* There are two methods for identifying a schema change:
|
|
11
|
+
* 1) Create an EVENT TRIGGER - most resilient option but requires a superuser. It fires every time an sql command of a certain type is fired.
|
|
12
|
+
* Example sql command signatures: 'CREATE TABLE', 'ALTER TABLE', 'DROP TABLE', 'CREATE VIEW', 'DROP VIEW', 'ALTER VIEW', 'CREATE TABLE AS', 'SELECT INTO'
|
|
13
|
+
* 2) Check SQL queries executed by this prostgles instance. This option is used as a fallback to option 1 in cases where there is no superuser
|
|
14
|
+
*
|
|
15
|
+
* Some schema altering queries are executed by prostgles on startup. To prevent an infinite loop a specific
|
|
16
|
+
* piece of text (PubSubManager.EXCLUDE_QUERY_FROM_SCHEMA_WATCH_ID) is inserted in these queries to then disregard them from schema watch
|
|
17
|
+
*
|
|
18
|
+
*/
|
|
19
|
+
export class SchemaWatchManager {
|
|
20
|
+
|
|
21
|
+
checkInterval?: NodeJS.Timeout;
|
|
22
|
+
prostgles: Prostgles;
|
|
23
|
+
|
|
24
|
+
constructor(prgl: Prostgles){
|
|
25
|
+
this.prostgles = prgl;
|
|
26
|
+
if(prgl.opts.watchSchema){
|
|
27
|
+
|
|
28
|
+
if(isPlainObject(prgl.opts.watchSchemaType) && prgl.opts.watchSchemaType.checkIntervalMillis){
|
|
29
|
+
|
|
30
|
+
clearInterval(this.checkInterval);
|
|
31
|
+
this.checkInterval = setInterval(async () => {
|
|
32
|
+
const dbuilder = await DboBuilder.create(this as any);
|
|
33
|
+
if(dbuilder.tsTypesDefinition !== this.prostgles.dboBuilder.tsTypesDefinition){
|
|
34
|
+
this.prostgles.refreshDBO();
|
|
35
|
+
this.prostgles.init(this.prostgles.opts.onReady);
|
|
36
|
+
}
|
|
37
|
+
}, prgl.opts.watchSchemaType.checkIntervalMillis)
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// async onSchemaChange(event: { command: string; query: string }){
|
|
43
|
+
// const { watchSchema, watchSchemaType, onReady, tsGeneratedTypesDir } = this.opts as any;
|
|
44
|
+
// if(watchSchema && this.loaded){
|
|
45
|
+
// console.log("Schema changed");
|
|
46
|
+
// const { query } = event;
|
|
47
|
+
// if(typeof query === "string" && query.includes(PubSubManag.EXCLUDE_QUERY_FROM_SCHEMA_WATCH_ID)){
|
|
48
|
+
// console.log("Schema change event excluded from triggers due to EXCLUDE_QUERY_FROM_SCHEMA_WATCH_ID");
|
|
49
|
+
// return;
|
|
50
|
+
// }
|
|
51
|
+
|
|
52
|
+
// if(typeof watchSchema === "function"){
|
|
53
|
+
// /* Only call the provided func */
|
|
54
|
+
// watchSchema(event);
|
|
55
|
+
|
|
56
|
+
// } else if(watchSchema === "hotReloadMode") {
|
|
57
|
+
// if(tsGeneratedTypesDir) {
|
|
58
|
+
// /* Hot reload integration. Will only touch tsGeneratedTypesDir */
|
|
59
|
+
// console.log("watchSchema: Re-writing TS schema");
|
|
60
|
+
|
|
61
|
+
// await this.refreshDBO();
|
|
62
|
+
// this.writeDBSchema(true);
|
|
63
|
+
// }
|
|
64
|
+
|
|
65
|
+
// } else if(watchSchema === true || isPlainObject(watchSchemaType) && "checkIntervalMillis" in watchSchemaType){
|
|
66
|
+
// /* Full re-init. Sockets must reconnect */
|
|
67
|
+
// console.log("watchSchema: Full re-initialisation")
|
|
68
|
+
// this.init(onReady);
|
|
69
|
+
// }
|
|
70
|
+
// }
|
|
71
|
+
// }
|
|
72
|
+
}
|
package/package.json
CHANGED
package/tests/client/PID.txt
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
3011
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"license": "ISC",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@types/node": "^14.14.16",
|
|
13
|
-
"prostgles-client": "^1.5.
|
|
13
|
+
"prostgles-client": "^1.5.161",
|
|
14
14
|
"prostgles-types": "^1.5.68",
|
|
15
15
|
"socket.io-client": "^4.5.1"
|
|
16
16
|
}
|
|
@@ -67,9 +67,9 @@
|
|
|
67
67
|
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
|
|
68
68
|
},
|
|
69
69
|
"node_modules/prostgles-client": {
|
|
70
|
-
"version": "1.5.
|
|
71
|
-
"resolved": "https://registry.npmjs.org/prostgles-client/-/prostgles-client-1.5.
|
|
72
|
-
"integrity": "sha512
|
|
70
|
+
"version": "1.5.161",
|
|
71
|
+
"resolved": "https://registry.npmjs.org/prostgles-client/-/prostgles-client-1.5.161.tgz",
|
|
72
|
+
"integrity": "sha512-/1NHXfyKtoPLquNjv8eWIvk0ezjogaL3QRJrGpUiH6vt74MFVQ5FRwtrct37fj0fBwsKS4HrHduwh33Ohv1ycw==",
|
|
73
73
|
"dependencies": {
|
|
74
74
|
"prostgles-types": "^1.5.160"
|
|
75
75
|
}
|
|
@@ -176,9 +176,9 @@
|
|
|
176
176
|
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
|
|
177
177
|
},
|
|
178
178
|
"prostgles-client": {
|
|
179
|
-
"version": "1.5.
|
|
180
|
-
"resolved": "https://registry.npmjs.org/prostgles-client/-/prostgles-client-1.5.
|
|
181
|
-
"integrity": "sha512
|
|
179
|
+
"version": "1.5.161",
|
|
180
|
+
"resolved": "https://registry.npmjs.org/prostgles-client/-/prostgles-client-1.5.161.tgz",
|
|
181
|
+
"integrity": "sha512-/1NHXfyKtoPLquNjv8eWIvk0ezjogaL3QRJrGpUiH6vt74MFVQ5FRwtrct37fj0fBwsKS4HrHduwh33Ohv1ycw==",
|
|
182
182
|
"requires": {
|
|
183
183
|
"prostgles-types": "^1.5.160"
|
|
184
184
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isomorphic_queries.d.ts","sourceRoot":"","sources":["isomorphic_queries.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAC,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGjD,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,EAAE,GAAG,CAAC,EAAE,QAAQ,iBAWzE;AACD,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,GAAG,EAAE,GAAG,CAAC,EAAE,QAAQ,oBAW7F;AAED,wBAA8B,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,
|
|
1
|
+
{"version":3,"file":"isomorphic_queries.d.ts","sourceRoot":"","sources":["isomorphic_queries.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAC,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGjD,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,EAAE,GAAG,CAAC,EAAE,QAAQ,iBAWzE;AACD,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,GAAG,EAAE,GAAG,CAAC,EAAE,QAAQ,oBAW7F;AAED,wBAA8B,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,iBAwrB/F"}
|
|
@@ -295,6 +295,7 @@ async function isomorphic(db) {
|
|
|
295
295
|
});
|
|
296
296
|
await tryRunP("subscribe", async (resolve, reject) => {
|
|
297
297
|
await db.various.insert({ id: 99 });
|
|
298
|
+
console.log("subscribing");
|
|
298
299
|
const sub = await db.various.subscribe({ id: 99 }, {}, async (items) => {
|
|
299
300
|
const item = items[0];
|
|
300
301
|
if (item && item.name === "zz3zz3") {
|
|
@@ -327,6 +327,7 @@ export default async function isomorphic(db: Partial<DBHandlerServer> | Partial<
|
|
|
327
327
|
|
|
328
328
|
await tryRunP("subscribe", async (resolve, reject) => {
|
|
329
329
|
await db.various.insert({ id: 99 });
|
|
330
|
+
console.log("subscribing")
|
|
330
331
|
const sub = await db.various.subscribe({ id: 99 }, { }, async items => {
|
|
331
332
|
const item = items[0];
|
|
332
333
|
|