prostgles-server 2.0.173 → 2.0.176
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/.vscode/settings.json +3 -0
- package/dist/AuthHandler.d.ts +13 -12
- package/dist/AuthHandler.d.ts.map +1 -1
- package/dist/AuthHandler.js +5 -2
- package/dist/AuthHandler.js.map +1 -1
- package/dist/DBSchemaBuilder.d.ts +11 -0
- package/dist/DBSchemaBuilder.d.ts.map +1 -0
- package/dist/DBSchemaBuilder.js +56 -0
- package/dist/DBSchemaBuilder.js.map +1 -0
- package/dist/DboBuilder.d.ts +23 -22
- package/dist/DboBuilder.d.ts.map +1 -1
- package/dist/DboBuilder.js +36 -61
- package/dist/DboBuilder.js.map +1 -1
- package/dist/FileManager.d.ts +2 -2
- package/dist/FileManager.d.ts.map +1 -1
- package/dist/Filtering.d.ts.map +1 -1
- package/dist/Filtering.js.map +1 -1
- package/dist/Prostgles.d.ts +25 -257
- package/dist/Prostgles.d.ts.map +1 -1
- package/dist/Prostgles.js +12 -376
- package/dist/Prostgles.js.map +1 -1
- package/dist/PubSubManager.d.ts +6 -5
- package/dist/PubSubManager.d.ts.map +1 -1
- package/dist/PubSubManager.js.map +1 -1
- package/dist/PublishParser.d.ts +262 -0
- package/dist/PublishParser.d.ts.map +1 -0
- package/dist/PublishParser.js +391 -0
- package/dist/PublishParser.js.map +1 -0
- package/dist/QueryBuilder.d.ts +20 -4
- package/dist/QueryBuilder.d.ts.map +1 -1
- package/dist/QueryBuilder.js.map +1 -1
- package/dist/TableConfig.d.ts +6 -3
- package/dist/TableConfig.d.ts.map +1 -1
- package/dist/TableConfig.js +28 -1
- package/dist/TableConfig.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/lib/AuthHandler.ts +25 -19
- package/lib/DBSchemaBuilder.ts +91 -0
- package/lib/DboBuilder.ts +84 -98
- package/lib/FileManager.ts +2 -2
- package/lib/Filtering.ts +3 -3
- package/lib/Prostgles.ts +33 -704
- package/lib/PubSubManager.ts +6 -5
- package/lib/PublishParser.ts +723 -0
- package/lib/QueryBuilder.ts +6 -5
- package/lib/TableConfig.ts +36 -5
- package/lib/index.ts +4 -4
- package/package.json +2 -2
- package/tests/client/PID.txt +1 -1
- package/tests/client/index.js +2 -2
- package/tests/client/index.ts +2 -2
- package/tests/client/package-lock.json +15 -15
- package/tests/client/package.json +1 -1
- package/tests/client_only_queries.js +24 -1
- package/tests/client_only_queries.ts +23 -1
- package/tests/isomorphic_queries.js +3 -0
- package/tests/isomorphic_queries.ts +5 -2
- package/tests/server/DBoGenerated.d.ts +428 -286
- package/tests/server/index.js +1 -14
- package/tests/server/index.ts +5 -19
- package/tests/server/package-lock.json +3 -3
package/dist/DboBuilder.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*--------------------------------------------------------------------------------------------*/
|
|
6
6
|
var _a;
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.postgresToTsType = exports.isPlainObject = exports.DboBuilder = exports.TableHandler = exports.ViewHandler = exports.EXISTS_KEYS = exports.pgp = exports.getUpdateFilter = void 0;
|
|
8
|
+
exports.postgresToTsType = exports.isPlainObject = exports.DboBuilder = exports.TableHandler = exports.ViewHandler = exports.EXISTS_KEYS = exports.escapeTSNames = exports.pgp = exports.getUpdateFilter = void 0;
|
|
9
9
|
const Bluebird = require("bluebird");
|
|
10
10
|
// declare global { export interface Promise<T> extends Bluebird<T> {} }
|
|
11
11
|
const pgPromise = require("pg-promise");
|
|
@@ -68,6 +68,7 @@ function escapeTSNames(str, capitalize = false) {
|
|
|
68
68
|
return res;
|
|
69
69
|
return JSON.stringify(res);
|
|
70
70
|
}
|
|
71
|
+
exports.escapeTSNames = escapeTSNames;
|
|
71
72
|
const shortestPath_1 = require("./shortestPath");
|
|
72
73
|
/* DEBUG CLIENT ERRORS HERE */
|
|
73
74
|
function makeErr(err, localParams, view, allowedKeys) {
|
|
@@ -420,7 +421,7 @@ class ViewHandler {
|
|
|
420
421
|
};
|
|
421
422
|
}
|
|
422
423
|
// TODO: fix renamed table trigger problem
|
|
423
|
-
async getColumns(lang, params,
|
|
424
|
+
async getColumns(lang, params, _param3, tableRules, localParams) {
|
|
424
425
|
try {
|
|
425
426
|
const p = this.getValidatedRules(tableRules, localParams);
|
|
426
427
|
if (!p.getColumns)
|
|
@@ -447,21 +448,6 @@ class ViewHandler {
|
|
|
447
448
|
.map(_c => {
|
|
448
449
|
let c = { ..._c };
|
|
449
450
|
let label = c.comment || capitalizeFirstLetter(c.name, " ");
|
|
450
|
-
/**
|
|
451
|
-
* Get labels from TableConfig if specified
|
|
452
|
-
*/
|
|
453
|
-
const tblConfig = this.dboBuilder.prostgles?.opts?.tableConfig?.[this.name];
|
|
454
|
-
if (tblConfig && "columns" in tblConfig) {
|
|
455
|
-
const lbl = tblConfig?.columns[c.name]?.label;
|
|
456
|
-
if (["string", "object"].includes(typeof lbl)) {
|
|
457
|
-
if (typeof lbl === "string") {
|
|
458
|
-
label = lbl;
|
|
459
|
-
}
|
|
460
|
-
else if (lang) {
|
|
461
|
-
label = (lbl?.[lang]) || lbl?.en || label;
|
|
462
|
-
}
|
|
463
|
-
}
|
|
464
|
-
}
|
|
465
451
|
const select = c.privileges.some(p => p.privilege_type === "SELECT"), insert = c.privileges.some(p => p.privilege_type === "INSERT"), update = c.privileges.some(p => p.privilege_type === "UPDATE"), _delete = this.tableOrViewInfo.privileges.delete; // c.privileges.some(p => p.privilege_type === "DELETE");
|
|
466
452
|
delete c.privileges;
|
|
467
453
|
let result = {
|
|
@@ -473,7 +459,7 @@ class ViewHandler {
|
|
|
473
459
|
filter: Boolean(p.select && p.select.filterFields && p.select.filterFields.includes(c.name)),
|
|
474
460
|
update: update && Boolean(p.update && p.update.fields && p.update.fields.includes(c.name)),
|
|
475
461
|
delete: _delete && Boolean(p.delete && p.delete.filterFields && p.delete.filterFields.includes(c.name)),
|
|
476
|
-
...(this.dboBuilder?.prostgles?.tableConfigurator?.getColInfo({ table: this.name, col: c.name }) || {})
|
|
462
|
+
...(this.dboBuilder?.prostgles?.tableConfigurator?.getColInfo({ table: this.name, col: c.name, lang }) || {})
|
|
477
463
|
};
|
|
478
464
|
if (dynamicUpdateFields) {
|
|
479
465
|
result.update = dynamicUpdateFields.includes(c.name);
|
|
@@ -2230,6 +2216,7 @@ class TableHandler extends ViewHandler {
|
|
|
2230
2216
|
}
|
|
2231
2217
|
exports.TableHandler = TableHandler;
|
|
2232
2218
|
const Prostgles_1 = require("./Prostgles");
|
|
2219
|
+
const DBSchemaBuilder_1 = require("./DBSchemaBuilder");
|
|
2233
2220
|
class DboBuilder {
|
|
2234
2221
|
constructor(prostgles) {
|
|
2235
2222
|
this.schema = "public";
|
|
@@ -2402,29 +2389,19 @@ class DboBuilder {
|
|
|
2402
2389
|
this.tablesOrViews = await getTablesForSchemaPostgresSQL(this.db); //, this.schema
|
|
2403
2390
|
// console.log(this.tablesOrViews.map(t => `${t.name} (${t.columns.map(c => c.name).join(", ")})`))
|
|
2404
2391
|
this.constraints = await getConstraints(this.db);
|
|
2405
|
-
const common_types = `
|
|
2406
|
-
|
|
2407
|
-
import { ViewHandler, TableHandler, JoinMaker } from "prostgles-types";
|
|
2408
|
-
|
|
2409
|
-
export type TxCB = {
|
|
2410
|
-
(t: DBObj): (any | void | Promise<(any | void)>)
|
|
2411
|
-
};
|
|
2412
|
-
|
|
2413
|
-
`;
|
|
2414
|
-
this.dboDefinition = `export type DBObj = {\n`;
|
|
2415
2392
|
await this.parseJoins();
|
|
2416
|
-
|
|
2417
|
-
|
|
2418
|
-
|
|
2419
|
-
|
|
2420
|
-
|
|
2421
|
-
|
|
2393
|
+
// const common_types =
|
|
2394
|
+
// `
|
|
2395
|
+
// import { ViewHandler, TableHandler, JoinMaker } from "prostgles-types";
|
|
2396
|
+
// export type TxCB = {
|
|
2397
|
+
// (t: DBObj): (any | void | Promise<(any | void)>)
|
|
2398
|
+
// };
|
|
2399
|
+
// `
|
|
2400
|
+
// this.dboDefinition = `export type DBObj = {\n`;
|
|
2401
|
+
// let joinTableNames: string[] = [];
|
|
2402
|
+
// let allDataDefs = "";
|
|
2422
2403
|
this.tablesOrViews.map(tov => {
|
|
2423
2404
|
const columnsForTypes = tov.columns.slice(0).sort((a, b) => a.name.localeCompare(b.name));
|
|
2424
|
-
i18nDef += ` ${escapeTSNames(tov.name)}: { \n`;
|
|
2425
|
-
// i18nDef += ` [key in ${columnsForTypes.map(c => JSON.stringify(c.name)).join(" | ")}]: { [lang_id in keyof LANG_IDS]: string }; \n`;
|
|
2426
|
-
i18nDef += ` [key in keyof ${snakify(tov.name, true)}]: { [lang_id in keyof LANG_IDS]: string }; \n`;
|
|
2427
|
-
i18nDef += ` }; \n`;
|
|
2428
2405
|
const filterKeywords = Object.values(this.prostgles.keywords);
|
|
2429
2406
|
const $filterCol = columnsForTypes.find(c => filterKeywords.includes(c.name));
|
|
2430
2407
|
if ($filterCol) {
|
|
@@ -2436,19 +2413,19 @@ export type TxCB = {
|
|
|
2436
2413
|
const TSTableHandlerName = escapeTSNames(tov.name);
|
|
2437
2414
|
if (tov.is_view) {
|
|
2438
2415
|
this.dbo[tov.name] = new ViewHandler(this.db, tov, this, undefined, undefined, this.joinPaths);
|
|
2439
|
-
this.dboDefinition
|
|
2416
|
+
// this.dboDefinition += ` ${TSTableHandlerName}: ViewHandler<${TSTableDataName}> \n`;
|
|
2440
2417
|
}
|
|
2441
2418
|
else {
|
|
2442
2419
|
this.dbo[tov.name] = new TableHandler(this.db, tov, this, undefined, undefined, this.joinPaths);
|
|
2443
|
-
this.dboDefinition
|
|
2420
|
+
// this.dboDefinition += ` ${TSTableHandlerName}: TableHandler<${TSTableDataName}> \n`;
|
|
2444
2421
|
}
|
|
2445
|
-
allDataDefs += `export type ${TSTableDataName} = { \n` +
|
|
2446
|
-
|
|
2447
|
-
|
|
2422
|
+
// allDataDefs += `export type ${TSTableDataName} = { \n` +
|
|
2423
|
+
// (this.dbo[tov.name] as ViewHandler).tsColumnDefs.map(str => ` ` + str).join("\n") +
|
|
2424
|
+
// `\n}\n`;
|
|
2448
2425
|
// this.dboDefinition += ` ${escapeTSNames(tov.name, false)}: ${(this.dbo[tov.name] as TableHandler).tsDboName};\n`;
|
|
2449
2426
|
if (this.joinPaths && this.joinPaths.find(jp => [jp.t1, jp.t2].includes(tov.name))) {
|
|
2450
2427
|
let table = tov.name;
|
|
2451
|
-
joinTableNames.push(table);
|
|
2428
|
+
// joinTableNames.push(table);
|
|
2452
2429
|
const makeJoin = (isLeft = true, filter, select, options) => {
|
|
2453
2430
|
return {
|
|
2454
2431
|
[isLeft ? "$leftJoin" : "$innerJoin"]: table,
|
|
@@ -2475,19 +2452,17 @@ export type TxCB = {
|
|
|
2475
2452
|
};
|
|
2476
2453
|
}
|
|
2477
2454
|
});
|
|
2478
|
-
|
|
2479
|
-
|
|
2480
|
-
|
|
2481
|
-
|
|
2482
|
-
|
|
2483
|
-
|
|
2484
|
-
|
|
2485
|
-
|
|
2486
|
-
|
|
2487
|
-
|
|
2488
|
-
|
|
2489
|
-
});
|
|
2490
|
-
}
|
|
2455
|
+
// let joinBuilderDef = "";
|
|
2456
|
+
// if(joinTableNames.length){
|
|
2457
|
+
// joinBuilderDef += "export type JoinMakerTables = {\n";
|
|
2458
|
+
// joinTableNames.map(tname => {
|
|
2459
|
+
// joinBuilderDef += ` ${escapeTSNames(tname)}: JoinMaker<${snakify(tname, true)}>;\n`
|
|
2460
|
+
// })
|
|
2461
|
+
// joinBuilderDef += "};\n";
|
|
2462
|
+
// ["leftJoin", "innerJoin", "leftJoinOne", "innerJoinOne"].map(joinType => {
|
|
2463
|
+
// this.dboDefinition += ` ${joinType}: JoinMakerTables;\n`;
|
|
2464
|
+
// });
|
|
2465
|
+
// }
|
|
2491
2466
|
if (this.prostgles.opts.transactions) {
|
|
2492
2467
|
let txKey = "tx";
|
|
2493
2468
|
if (typeof this.prostgles.opts.transactions === "string")
|
|
@@ -2589,13 +2564,13 @@ export type TxCB = {
|
|
|
2589
2564
|
}
|
|
2590
2565
|
this.dboDefinition += "};\n";
|
|
2591
2566
|
this.tsTypesDefinition = [
|
|
2592
|
-
common_types,
|
|
2567
|
+
// common_types,
|
|
2593
2568
|
`/* SCHEMA DEFINITON. Table names have been altered to work with Typescript */`,
|
|
2594
|
-
allDataDefs,
|
|
2595
|
-
joinBuilderDef,
|
|
2569
|
+
// allDataDefs,
|
|
2570
|
+
// joinBuilderDef,
|
|
2596
2571
|
`/* DBO Definition. Isomorphic */`,
|
|
2597
2572
|
this.dboDefinition,
|
|
2598
|
-
|
|
2573
|
+
(0, DBSchemaBuilder_1.getDBSchema)(this)
|
|
2599
2574
|
].join("\n");
|
|
2600
2575
|
return this.dbo;
|
|
2601
2576
|
// let dbo = makeDBO(db, allTablesViews, pubSubManager, true);
|