prostgles-server 4.2.623 → 4.2.625
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/debug/client-schema-types/DBGeneratedSchema.ts +13 -1
- package/dist/Audit/AuditTable.d.ts +2 -1
- package/dist/Audit/AuditTable.d.ts.map +1 -1
- package/dist/Audit/AuditTable.js +3 -2
- package/dist/Audit/AuditTable.js.map +1 -1
- package/dist/Audit/getAuditTableRules.d.ts +7 -0
- package/dist/Audit/getAuditTableRules.d.ts.map +1 -0
- package/dist/Audit/getAuditTableRules.js +191 -0
- package/dist/Audit/getAuditTableRules.js.map +1 -0
- package/dist/Audit/getAuditTriggerConfig.d.ts.map +1 -1
- package/dist/Audit/getAuditTriggerConfig.js +14 -1
- package/dist/Audit/getAuditTriggerConfig.js.map +1 -1
- package/dist/DBSchemaBuilder/getDBGeneratedSchema.d.ts.map +1 -1
- package/dist/DBSchemaBuilder/getDBGeneratedSchema.js +1 -2
- package/dist/DBSchemaBuilder/getDBGeneratedSchema.js.map +1 -1
- package/dist/DboBuilder/DboBuilder.js +1 -1
- package/dist/DboBuilder/DboBuilder.js.map +1 -1
- package/dist/DboBuilder/QueryBuilder/QueryBuilder.d.ts +10 -5
- package/dist/DboBuilder/QueryBuilder/QueryBuilder.d.ts.map +1 -1
- package/dist/DboBuilder/QueryBuilder/QueryBuilder.js +90 -71
- package/dist/DboBuilder/QueryBuilder/QueryBuilder.js.map +1 -1
- package/dist/DboBuilder/QueryBuilder/getJoinQuery.d.ts.map +1 -1
- package/dist/DboBuilder/QueryBuilder/getJoinQuery.js +3 -2
- package/dist/DboBuilder/QueryBuilder/getJoinQuery.js.map +1 -1
- package/dist/DboBuilder/QueryBuilder/getNewQuery.d.ts +2 -2
- package/dist/DboBuilder/QueryBuilder/getNewQuery.d.ts.map +1 -1
- package/dist/DboBuilder/QueryBuilder/getNewQuery.js +53 -116
- package/dist/DboBuilder/QueryBuilder/getNewQuery.js.map +1 -1
- package/dist/DboBuilder/QueryBuilder/getQuerySource.d.ts +18 -0
- package/dist/DboBuilder/QueryBuilder/getQuerySource.d.ts.map +1 -0
- package/dist/DboBuilder/QueryBuilder/getQuerySource.js +29 -0
- package/dist/DboBuilder/QueryBuilder/getQuerySource.js.map +1 -0
- package/dist/DboBuilder/QueryBuilder/getSelectQuery.d.ts.map +1 -1
- package/dist/DboBuilder/QueryBuilder/getSelectQuery.js +6 -2
- package/dist/DboBuilder/QueryBuilder/getSelectQuery.js.map +1 -1
- package/dist/DboBuilder/QueryBuilder/parseJoinSelect.d.ts +13 -0
- package/dist/DboBuilder/QueryBuilder/parseJoinSelect.d.ts.map +1 -0
- package/dist/DboBuilder/QueryBuilder/parseJoinSelect.js +57 -0
- package/dist/DboBuilder/QueryBuilder/parseJoinSelect.js.map +1 -0
- package/dist/DboBuilder/TableHandler/TableHandler.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/TableHandler.js +2 -1
- package/dist/DboBuilder/TableHandler/TableHandler.js.map +1 -1
- package/dist/DboBuilder/TableHandler/delete.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/delete.js +2 -1
- package/dist/DboBuilder/TableHandler/delete.js.map +1 -1
- package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.js +2 -1
- package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.js.map +1 -1
- package/dist/DboBuilder/TableHandler/update.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/update.js +2 -1
- package/dist/DboBuilder/TableHandler/update.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/ViewHandler.d.ts +6 -16
- package/dist/DboBuilder/ViewHandler/ViewHandler.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/ViewHandler.js +2 -7
- package/dist/DboBuilder/ViewHandler/ViewHandler.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/find.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/find.js +1 -1
- package/dist/DboBuilder/ViewHandler/find.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/getExistsCondition.d.ts +1 -1
- package/dist/DboBuilder/ViewHandler/getExistsCondition.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/getExistsCondition.js +24 -13
- package/dist/DboBuilder/ViewHandler/getExistsCondition.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/getTableJoinQuery.d.ts +4 -1
- package/dist/DboBuilder/ViewHandler/getTableJoinQuery.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/getTableJoinQuery.js +20 -14
- package/dist/DboBuilder/ViewHandler/getTableJoinQuery.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/prepareWhere.d.ts +7 -3
- package/dist/DboBuilder/ViewHandler/prepareWhere.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/prepareWhere.js +30 -23
- package/dist/DboBuilder/ViewHandler/prepareWhere.js.map +1 -1
- package/dist/DboBuilder/getCondition.d.ts +2 -1
- package/dist/DboBuilder/getCondition.d.ts.map +1 -1
- package/dist/DboBuilder/getCondition.js +9 -8
- package/dist/DboBuilder/getCondition.js.map +1 -1
- package/dist/DboBuilder/getSubscribeRelatedTables.d.ts.map +1 -1
- package/dist/DboBuilder/getSubscribeRelatedTables.js +3 -2
- package/dist/DboBuilder/getSubscribeRelatedTables.js.map +1 -1
- package/dist/DboBuilder/parseUpdateRules.d.ts.map +1 -1
- package/dist/DboBuilder/parseUpdateRules.js +3 -2
- package/dist/DboBuilder/parseUpdateRules.js.map +1 -1
- package/dist/DboBuilder/schema/getTablesForSchemaPostgresSQL.d.ts +2 -2
- package/dist/Prostgles.d.ts.map +1 -1
- package/dist/Prostgles.js +2 -0
- package/dist/Prostgles.js.map +1 -1
- package/dist/ProstglesContext.spec.js +25 -0
- package/dist/ProstglesContext.spec.js.map +1 -1
- package/dist/PubSubManager/PubSubManager.d.ts +1 -1
- package/dist/PublishParser/PublishParser.d.ts +17 -8
- package/dist/PublishParser/PublishParser.d.ts.map +1 -1
- package/dist/PublishParser/PublishParser.js +59 -28
- package/dist/PublishParser/PublishParser.js.map +1 -1
- package/dist/PublishParser/applyScopeToTableRules.d.ts +0 -1
- package/dist/PublishParser/applyScopeToTableRules.d.ts.map +1 -1
- package/dist/PublishParser/applyScopeToTableRules.js +3 -7
- package/dist/PublishParser/applyScopeToTableRules.js.map +1 -1
- package/dist/PublishParser/getFileTableRules.d.ts +1 -1
- package/dist/PublishParser/getFileTableRules.d.ts.map +1 -1
- package/dist/PublishParser/getFileTableRules.js +52 -41
- package/dist/PublishParser/getFileTableRules.js.map +1 -1
- package/dist/PublishParser/getParsedPublishTable.d.ts +4 -0
- package/dist/PublishParser/getParsedPublishTable.d.ts.map +1 -0
- package/dist/PublishParser/{getTableRulesWithoutFileTable.js → getParsedPublishTable.js} +13 -7
- package/dist/PublishParser/getParsedPublishTable.js.map +1 -0
- package/dist/PublishParser/getPublishSchemas.d.ts +4 -0
- package/dist/PublishParser/getPublishSchemas.d.ts.map +1 -0
- package/dist/PublishParser/getPublishSchemas.js +42 -0
- package/dist/PublishParser/getPublishSchemas.js.map +1 -0
- package/dist/PublishParser/getPublishedObjectFromResult.d.ts +4 -0
- package/dist/PublishParser/getPublishedObjectFromResult.d.ts.map +1 -0
- package/dist/PublishParser/getPublishedObjectFromResult.js +77 -0
- package/dist/PublishParser/getPublishedObjectFromResult.js.map +1 -0
- package/dist/PublishParser/getPublishedTableNames.d.ts.map +1 -1
- package/dist/PublishParser/getPublishedTableNames.js +20 -1
- package/dist/PublishParser/getPublishedTableNames.js.map +1 -1
- package/dist/PublishParser/getSchemaFromPublish.d.ts.map +1 -1
- package/dist/PublishParser/getSchemaFromPublish.js +11 -5
- package/dist/PublishParser/getSchemaFromPublish.js.map +1 -1
- package/dist/PublishParser/publishTypesAndUtils.d.ts +28 -7
- package/dist/PublishParser/publishTypesAndUtils.d.ts.map +1 -1
- package/dist/PublishParser/publishTypesAndUtils.js +6 -1
- package/dist/PublishParser/publishTypesAndUtils.js.map +1 -1
- package/dist/PublishParser/validatePublishProfiles.d.ts +2 -2
- package/dist/PublishParser/validatePublishProfiles.d.ts.map +1 -1
- package/dist/PublishParser/validatePublishProfiles.js.map +1 -1
- package/dist/TableConfig/getColumnSQLDefinitionQuery.d.ts.map +1 -1
- package/dist/TableConfig/getColumnSQLDefinitionQuery.js +1 -2
- package/dist/TableConfig/getColumnSQLDefinitionQuery.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/runClientRequest.d.ts.map +1 -1
- package/dist/runClientRequest.js +6 -1
- package/dist/runClientRequest.js.map +1 -1
- package/lib/Audit/AuditTable.ts +4 -3
- package/lib/Audit/getAuditTableRules.ts +288 -0
- package/lib/Audit/getAuditTriggerConfig.ts +14 -1
- package/lib/DBSchemaBuilder/getDBGeneratedSchema.ts +1 -2
- package/lib/DboBuilder/DboBuilder.ts +1 -1
- package/lib/DboBuilder/QueryBuilder/QueryBuilder.ts +118 -90
- package/lib/DboBuilder/QueryBuilder/getJoinQuery.ts +3 -2
- package/lib/DboBuilder/QueryBuilder/getNewQuery.ts +111 -194
- package/lib/DboBuilder/QueryBuilder/getQuerySource.ts +55 -0
- package/lib/DboBuilder/QueryBuilder/getSelectQuery.ts +8 -2
- package/lib/DboBuilder/QueryBuilder/parseJoinSelect.ts +73 -0
- package/lib/DboBuilder/TableHandler/TableHandler.ts +3 -6
- package/lib/DboBuilder/TableHandler/delete.ts +2 -1
- package/lib/DboBuilder/TableHandler/runInsertUpdateQuery.ts +2 -1
- package/lib/DboBuilder/TableHandler/update.ts +2 -1
- package/lib/DboBuilder/ViewHandler/ViewHandler.ts +6 -12
- package/lib/DboBuilder/ViewHandler/find.ts +0 -1
- package/lib/DboBuilder/ViewHandler/getExistsCondition.ts +35 -28
- package/lib/DboBuilder/ViewHandler/getTableJoinQuery.ts +22 -14
- package/lib/DboBuilder/ViewHandler/prepareWhere.ts +48 -27
- package/lib/DboBuilder/getCondition.ts +11 -10
- package/lib/DboBuilder/getSubscribeRelatedTables.ts +3 -2
- package/lib/DboBuilder/parseUpdateRules.ts +3 -2
- package/lib/Prostgles.ts +1 -0
- package/lib/ProstglesContext.spec.ts +30 -0
- package/lib/PublishParser/PublishParser.ts +108 -51
- package/lib/PublishParser/applyScopeToTableRules.ts +1 -7
- package/lib/PublishParser/getFileTableRules.ts +52 -45
- package/lib/PublishParser/{getTableRulesWithoutFileTable.ts → getParsedPublishTable.ts} +16 -12
- package/lib/PublishParser/getPublishSchemas.ts +49 -0
- package/lib/PublishParser/getPublishedObjectFromResult.ts +104 -0
- package/lib/PublishParser/getPublishedTableNames.ts +28 -1
- package/lib/PublishParser/getSchemaFromPublish.ts +9 -7
- package/lib/PublishParser/publishTypesAndUtils.ts +31 -11
- package/lib/PublishParser/validatePublishProfiles.ts +1 -1
- package/lib/TableConfig/getColumnSQLDefinitionQuery.ts +8 -2
- package/lib/index.ts +14 -1
- package/lib/runClientRequest.ts +4 -3
- package/package.json +1 -1
- package/dist/DBSchemaBuilder/getPublishSchemas.d.ts +0 -4
- package/dist/DBSchemaBuilder/getPublishSchemas.d.ts.map +0 -1
- package/dist/DBSchemaBuilder/getPublishSchemas.js +0 -34
- package/dist/DBSchemaBuilder/getPublishSchemas.js.map +0 -1
- package/dist/PublishParser/getTableRulesWithoutFileTable.d.ts +0 -6
- package/dist/PublishParser/getTableRulesWithoutFileTable.d.ts.map +0 -1
- package/dist/PublishParser/getTableRulesWithoutFileTable.js.map +0 -1
- package/lib/DBSchemaBuilder/getPublishSchemas.ts +0 -41
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import {
|
|
2
|
+
fromEntries,
|
|
3
|
+
getJSONBSchemaValidationError,
|
|
4
|
+
getProperty,
|
|
5
|
+
isObject,
|
|
6
|
+
pickKeys,
|
|
7
|
+
type TableSchema,
|
|
8
|
+
} from "prostgles-types";
|
|
9
|
+
import { isArray } from "../utils/utils";
|
|
10
|
+
import type {
|
|
11
|
+
PublishContextValue,
|
|
12
|
+
PublishedResult,
|
|
13
|
+
PublishObject,
|
|
14
|
+
PublishParams,
|
|
15
|
+
} from "./publishTypesAndUtils";
|
|
16
|
+
|
|
17
|
+
export const getPublishedObjectFromResult = (
|
|
18
|
+
publish: PublishedResult | undefined,
|
|
19
|
+
tablesOrViews: TableSchema[],
|
|
20
|
+
publishParams: PublishParams | undefined,
|
|
21
|
+
): PublishObject => {
|
|
22
|
+
if (!publish) return {};
|
|
23
|
+
if (publish === "*") {
|
|
24
|
+
return Object.fromEntries(tablesOrViews.map((table) => [table.name, "*"]));
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
if (isArray(publish)) {
|
|
28
|
+
const validation = getJSONBSchemaValidationError(
|
|
29
|
+
{
|
|
30
|
+
tuple: [
|
|
31
|
+
{ enum: ["*"] },
|
|
32
|
+
{
|
|
33
|
+
record: {
|
|
34
|
+
keysEnum: ["select", "update", "insert", "delete"] as const,
|
|
35
|
+
values: { enum: ["*", false, true] },
|
|
36
|
+
partial: true,
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
],
|
|
40
|
+
} as const,
|
|
41
|
+
publish,
|
|
42
|
+
);
|
|
43
|
+
if (validation.error !== undefined) {
|
|
44
|
+
throw new Error(`Invalid publish all tables: ${validation.error}`);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
const [_, allTableRules] = validation.data;
|
|
48
|
+
return fromEntries(
|
|
49
|
+
tablesOrViews.map((table) => {
|
|
50
|
+
return [table.name, table.is_view ? pickKeys(allTableRules, ["select"]) : allTableRules];
|
|
51
|
+
}),
|
|
52
|
+
);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
return replaceContextPlaceholders(publish, publishParams);
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
const replaceContextPlaceholders = <T>(publish: T, publishParams: PublishParams | undefined): T => {
|
|
59
|
+
const context = { user: publishParams?.user };
|
|
60
|
+
if (!publishParams) return publish;
|
|
61
|
+
if (isArray(publish)) {
|
|
62
|
+
return publish.map((item) => replaceContextPlaceholders(item, publishParams)) as T;
|
|
63
|
+
}
|
|
64
|
+
if (isObject(publish) && isPlainObject(publish)) {
|
|
65
|
+
const { data } = getJSONBSchemaValidationError(
|
|
66
|
+
{
|
|
67
|
+
type: {
|
|
68
|
+
$prostglesContext: {
|
|
69
|
+
type: { objectName: { enum: ["user"] as const }, objectPropertyName: "string" },
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
},
|
|
73
|
+
publish,
|
|
74
|
+
{ allowExtraProperties: false },
|
|
75
|
+
);
|
|
76
|
+
if (data) {
|
|
77
|
+
data satisfies PublishContextValue;
|
|
78
|
+
const { objectName, objectPropertyName } = data["$prostglesContext"];
|
|
79
|
+
const contextObject = getProperty(context, objectName);
|
|
80
|
+
if (!contextObject) {
|
|
81
|
+
throw new Error(`Context object "${objectName}" not found`);
|
|
82
|
+
}
|
|
83
|
+
const contextProperty = getProperty(contextObject, objectPropertyName);
|
|
84
|
+
if (contextProperty === undefined) {
|
|
85
|
+
throw new Error(
|
|
86
|
+
`Context property "${objectPropertyName}" not found/undefined in context object "${objectName}"`,
|
|
87
|
+
);
|
|
88
|
+
}
|
|
89
|
+
return contextProperty as T;
|
|
90
|
+
}
|
|
91
|
+
return Object.fromEntries(
|
|
92
|
+
Object.entries(publish).map(([key, value]) => [
|
|
93
|
+
key,
|
|
94
|
+
replaceContextPlaceholders(value, publishParams),
|
|
95
|
+
]),
|
|
96
|
+
) as T;
|
|
97
|
+
}
|
|
98
|
+
return publish;
|
|
99
|
+
};
|
|
100
|
+
const isPlainObject = (value: unknown): value is Record<string, unknown> => {
|
|
101
|
+
if (!value || typeof value !== "object") return false;
|
|
102
|
+
const prototype = Object.getPrototypeOf(value);
|
|
103
|
+
return prototype === Object.prototype || prototype === null;
|
|
104
|
+
};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { isObject } from "prostgles-types";
|
|
1
2
|
import type { PublishParser } from "./PublishParser";
|
|
2
3
|
import { type PublishObject } from "./PublishParser";
|
|
3
4
|
|
|
@@ -6,7 +7,12 @@ export const getPublishedTableNames = (
|
|
|
6
7
|
publishObject: PublishObject,
|
|
7
8
|
) => {
|
|
8
9
|
const txKey = !publishParserInstance.prostgles.opts.transactions ? "" : "tx";
|
|
9
|
-
|
|
10
|
+
if (txKey && txKey in publishObject) {
|
|
11
|
+
throw new Error(
|
|
12
|
+
`Transactions key ${JSON.stringify(txKey)} collides with a published table name`,
|
|
13
|
+
);
|
|
14
|
+
}
|
|
15
|
+
const tableNames = Object.keys(publishObject);
|
|
10
16
|
|
|
11
17
|
/**
|
|
12
18
|
* Add file table to the list of published tables if it's referenced by other published tables.
|
|
@@ -25,5 +31,26 @@ export const getPublishedTableNames = (
|
|
|
25
31
|
tableNames.unshift(fileTableName);
|
|
26
32
|
}
|
|
27
33
|
}
|
|
34
|
+
|
|
35
|
+
const audit = publishParserInstance.prostgles.resolvedAuditConfig;
|
|
36
|
+
const publishedFileTableName =
|
|
37
|
+
fileTableName && tableNames.includes(fileTableName) ?
|
|
38
|
+
fileTableName
|
|
39
|
+
: undefined;
|
|
40
|
+
if (
|
|
41
|
+
audit &&
|
|
42
|
+
!tableNames.includes(audit.tableName) &&
|
|
43
|
+
Object.keys(audit.tables).some((tableName) => {
|
|
44
|
+
const rule = publishObject[tableName];
|
|
45
|
+
return (
|
|
46
|
+
tableName === publishedFileTableName ||
|
|
47
|
+
rule === "*" ||
|
|
48
|
+
rule === true ||
|
|
49
|
+
(isObject(rule) && Boolean(rule.select))
|
|
50
|
+
);
|
|
51
|
+
})
|
|
52
|
+
) {
|
|
53
|
+
tableNames.unshift(audit.tableName);
|
|
54
|
+
}
|
|
28
55
|
return tableNames;
|
|
29
56
|
};
|
|
@@ -27,18 +27,18 @@ export async function getSchemaFromPublish(
|
|
|
27
27
|
if (clientInfo === "new-session-redirect") {
|
|
28
28
|
throw "new-session-redirect";
|
|
29
29
|
}
|
|
30
|
-
let
|
|
30
|
+
let resolvedPublishObject: PublishObject | undefined;
|
|
31
31
|
try {
|
|
32
|
-
|
|
32
|
+
resolvedPublishObject = await this.getPublishObjectForUser(clientReq, clientInfo);
|
|
33
33
|
} catch (err) {
|
|
34
34
|
console.error("Error within then Publish function ", err);
|
|
35
35
|
throw err;
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
if (!
|
|
38
|
+
if (!resolvedPublishObject || !Object.keys(resolvedPublishObject).length) {
|
|
39
39
|
return { tables, tableSchemaErrors };
|
|
40
40
|
}
|
|
41
|
-
const tableNames = getPublishedTableNames(this,
|
|
41
|
+
const tableNames = getPublishedTableNames(this, resolvedPublishObject);
|
|
42
42
|
|
|
43
43
|
await Promise.all(
|
|
44
44
|
tableNames.map(async (tableName) => {
|
|
@@ -52,11 +52,13 @@ export async function getSchemaFromPublish(
|
|
|
52
52
|
throw errMsg;
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
-
const parsedTableRule = await this.getTableRules(
|
|
56
|
-
|
|
55
|
+
const parsedTableRule = await this.getTableRules({
|
|
56
|
+
clientReq,
|
|
57
|
+
tableName,
|
|
57
58
|
clientInfo,
|
|
58
59
|
scope,
|
|
59
|
-
|
|
60
|
+
resolvedPublishObject,
|
|
61
|
+
});
|
|
60
62
|
|
|
61
63
|
if (!parsedTableRule || isEmpty(parsedTableRule)) return;
|
|
62
64
|
if (!isObject(parsedTableRule)) {
|
|
@@ -27,6 +27,7 @@ import type {
|
|
|
27
27
|
import type { AuthClientRequest, LoginClientInfo, SessionUser } from "../Auth/AuthTypes";
|
|
28
28
|
import type { TableSchemaColumn } from "../DboBuilder/DboBuilderTypes";
|
|
29
29
|
import type { ClientHandlers } from "../WebsocketAPI/getClientHandlers";
|
|
30
|
+
import { isArray } from "../utils/utils";
|
|
30
31
|
|
|
31
32
|
export type InsertRequestData = {
|
|
32
33
|
data: object | object[];
|
|
@@ -227,11 +228,6 @@ export type SelectRule<Cols extends AnyObject = AnyObject, S extends DBSchema |
|
|
|
227
228
|
* */
|
|
228
229
|
filterFields?: FieldFilter<Cols>;
|
|
229
230
|
|
|
230
|
-
/**
|
|
231
|
-
* Validation logic to check/update data for each request
|
|
232
|
-
*/
|
|
233
|
-
validate?(args: SelectRequestData): SelectRequestData | Promise<SelectRequestData>;
|
|
234
|
-
|
|
235
231
|
subscribeThrottle?: number;
|
|
236
232
|
|
|
237
233
|
disableMethods?: Partial<Record<"sync" | "subscribe", 1>>;
|
|
@@ -556,16 +552,40 @@ export type ParsedPublishTables = {
|
|
|
556
552
|
};
|
|
557
553
|
|
|
558
554
|
type PublishAllOrNothingRoot = Exclude<PublishAllOrNothing, boolean>;
|
|
559
|
-
export type
|
|
555
|
+
export type PublishAllTables = [
|
|
556
|
+
"*",
|
|
557
|
+
Partial<{ select: boolean; update: boolean; insert: boolean; delete: boolean }>,
|
|
558
|
+
];
|
|
559
|
+
export type PublishedResult<Schema = void> =
|
|
560
|
+
PublishAllOrNothingRoot | PublishAllTables | PublishFullyTyped<Schema>;
|
|
561
|
+
|
|
560
562
|
export type PublishProfile<Schema = void> = {
|
|
561
563
|
/** Exported schema type name; defaults to Publish1Schema, Publish2Schema, etc. */
|
|
562
564
|
name?: string;
|
|
563
|
-
userTypes: readonly string[];
|
|
565
|
+
userTypes: readonly string[] | string[];
|
|
564
566
|
publish: PublishedResult<Schema>;
|
|
565
567
|
};
|
|
568
|
+
|
|
569
|
+
/**
|
|
570
|
+
* Used in PublishProfile to provide user data
|
|
571
|
+
*/
|
|
572
|
+
export type PublishContextValue<C extends { user: AnyObject } = { user: AnyObject }> = {
|
|
573
|
+
$prostglesContext: {
|
|
574
|
+
[K in keyof C]: {
|
|
575
|
+
objectName: K;
|
|
576
|
+
objectPropertyName: keyof C[K];
|
|
577
|
+
};
|
|
578
|
+
}[keyof C];
|
|
579
|
+
};
|
|
580
|
+
|
|
566
581
|
export type Publish<Schema = void, SUser extends SessionUser = SessionUser> =
|
|
567
|
-
| PublishProfile<Schema>[]
|
|
568
582
|
| PublishedResult<Schema>
|
|
569
|
-
|
|
|
570
|
-
|
|
571
|
-
|
|
583
|
+
| PublishProfile<Schema>[]
|
|
584
|
+
| readonly PublishProfile<Schema>[]
|
|
585
|
+
| ((params: PublishParams<Schema, SUser>) => Awaitable<PublishedResult<Schema>>);
|
|
586
|
+
|
|
587
|
+
export const isPublishProfiles = <const P extends Publish | undefined>(
|
|
588
|
+
publish: P,
|
|
589
|
+
): publish is Extract<P, PublishProfile[] | readonly PublishProfile[]> => {
|
|
590
|
+
return isArray(publish) && publish[0] !== "*";
|
|
591
|
+
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { validateClientSchemaName } from "../DBSchemaBuilder/getClientDBGeneratedSchemas";
|
|
2
2
|
import type { PublishProfile } from "./publishTypesAndUtils";
|
|
3
3
|
|
|
4
|
-
export const validatePublishProfiles = (profiles: PublishProfile[]) => {
|
|
4
|
+
export const validatePublishProfiles = (profiles: readonly PublishProfile[]) => {
|
|
5
5
|
const names = new Set<string>();
|
|
6
6
|
const userTypes = new Set<string>();
|
|
7
7
|
const entries = profiles.map((profile, index) => {
|
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
import type pgPromise from "pg-promise";
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
asName,
|
|
4
|
+
fromEntries,
|
|
5
|
+
getObjectEntries,
|
|
6
|
+
isObject,
|
|
7
|
+
pickKeys,
|
|
8
|
+
type JSONB,
|
|
9
|
+
} from "prostgles-types";
|
|
3
10
|
import { VALIDATE_SCHEMA_FUNCNAME } from "../JSONBSchemaValidation/validateJSONBSchemaSQL";
|
|
4
11
|
import type { DB } from "../Prostgles";
|
|
5
|
-
import { fromEntries } from "../PublishParser/applyScopeToTableRules";
|
|
6
12
|
import { asValue } from "../PubSubManager/PubSubManagerUtils";
|
|
7
13
|
import type { BaseColumnTypes, ColumnConfig } from "./TableConfigTypes";
|
|
8
14
|
|
package/lib/index.ts
CHANGED
|
@@ -20,7 +20,19 @@ export const createProstgles = <S = void, SUser extends SessionUser = SessionUse
|
|
|
20
20
|
};
|
|
21
21
|
export * from "./PublishParser/defineServerFunction";
|
|
22
22
|
export * from "./Auth/AuthTypes";
|
|
23
|
-
|
|
23
|
+
|
|
24
|
+
export type {
|
|
25
|
+
PublishContextValue,
|
|
26
|
+
Publish,
|
|
27
|
+
PublishObject,
|
|
28
|
+
PublishAllTables,
|
|
29
|
+
PublishedResult,
|
|
30
|
+
BeforeEachTsTrigger,
|
|
31
|
+
AfterAllTsTrigger,
|
|
32
|
+
AfterEachTsTrigger,
|
|
33
|
+
PublishProfile,
|
|
34
|
+
PublishParams,
|
|
35
|
+
} from "./PublishParser/publishTypesAndUtils";
|
|
24
36
|
export type { DBOFullyTyped, DBOFullyTypedClient } from "./DBSchemaBuilder/DBSchemaBuilder";
|
|
25
37
|
export type { DBHandlerServer } from "./Prostgles";
|
|
26
38
|
export type { StorageClient as CloudClient } from "./StorageClient/StorageClientTypes";
|
|
@@ -44,6 +56,7 @@ export type { FileTableRow } from "./StorageClient/getFileTableConfig";
|
|
|
44
56
|
export { defineJoin };
|
|
45
57
|
export {
|
|
46
58
|
AUDIT_TABLE_COLUMN_DEFINITIONS,
|
|
59
|
+
AUDIT_TABLE_COLUMN_NAMES,
|
|
47
60
|
AUDIT_TABLE_COLUMNS,
|
|
48
61
|
type AuditTableRow,
|
|
49
62
|
} from "./Audit/AuditTable";
|
package/lib/runClientRequest.ts
CHANGED
|
@@ -112,11 +112,12 @@ export const runClientRequest = async function (
|
|
|
112
112
|
throw clientInfo;
|
|
113
113
|
}
|
|
114
114
|
|
|
115
|
-
const parsedTableRule = await this.publishParser.getParsedTableRule(
|
|
116
|
-
|
|
115
|
+
const parsedTableRule = await this.publishParser.getParsedTableRule({
|
|
116
|
+
tableName,
|
|
117
|
+
clientReq,
|
|
117
118
|
clientInfo,
|
|
118
119
|
scope,
|
|
119
|
-
);
|
|
120
|
+
});
|
|
120
121
|
|
|
121
122
|
const sessionUser = getSessionUser(clientInfo);
|
|
122
123
|
const localParams: LocalParams = {
|
package/package.json
CHANGED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import type { PublishParser } from "../PublishParser/PublishParser";
|
|
2
|
-
import type { ClientSchemaProfiles } from "./getClientDBGeneratedSchemas";
|
|
3
|
-
export declare const getPublishSchemas: (publishParser: PublishParser) => Promise<ClientSchemaProfiles | undefined>;
|
|
4
|
-
//# sourceMappingURL=getPublishSchemas.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getPublishSchemas.d.ts","sourceRoot":"","sources":["../../lib/DBSchemaBuilder/getPublishSchemas.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAiB,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACnF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAE1E,eAAO,MAAM,iBAAiB,GAC5B,eAAe,aAAa,KAC3B,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAgC1C,CAAC"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getPublishSchemas = void 0;
|
|
4
|
-
const getColumns_1 = require("../DboBuilder/getColumns");
|
|
5
|
-
const getRawInfo_1 = require("../DboBuilder/ViewHandler/getRawInfo");
|
|
6
|
-
const getPublishedTableNames_1 = require("../PublishParser/getPublishedTableNames");
|
|
7
|
-
const getPublishSchemas = async (publishParser) => {
|
|
8
|
-
if (!Array.isArray(publishParser.publish)) {
|
|
9
|
-
return;
|
|
10
|
-
}
|
|
11
|
-
const entries = publishParser.publish;
|
|
12
|
-
const profiles = Object.fromEntries(entries.map(({ name }) => [name, { tableSchema: [] }]));
|
|
13
|
-
const { tablesOrViews = [] } = publishParser.prostgles.dboBuilder;
|
|
14
|
-
for (const { name, publish } of entries) {
|
|
15
|
-
const publishObject = publish === "*" ?
|
|
16
|
-
Object.fromEntries(tablesOrViews.map((table) => [table.name, "*"]))
|
|
17
|
-
: (publish ?? {});
|
|
18
|
-
const tableNames = (0, getPublishedTableNames_1.getPublishedTableNames)(publishParser, publishObject);
|
|
19
|
-
for (const tableName of tableNames) {
|
|
20
|
-
const rules = await publishParser.getTableRules({ tableName, clientReq: undefined }, undefined, undefined, publishObject);
|
|
21
|
-
if (!rules || !Object.values(rules).some(Boolean))
|
|
22
|
-
continue;
|
|
23
|
-
const table = publishParser.dbo[tableName];
|
|
24
|
-
profiles[name].tableSchema.push({
|
|
25
|
-
...getRawInfo_1.getRawInfo.call(table, undefined, rules),
|
|
26
|
-
name: tableName,
|
|
27
|
-
columns: await getColumns_1.getRawColumns.call(table, undefined, undefined, rules),
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
return profiles;
|
|
32
|
-
};
|
|
33
|
-
exports.getPublishSchemas = getPublishSchemas;
|
|
34
|
-
//# sourceMappingURL=getPublishSchemas.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getPublishSchemas.js","sourceRoot":"","sources":["../../lib/DBSchemaBuilder/getPublishSchemas.ts"],"names":[],"mappings":";;;AAAA,yDAAyD;AACzD,qEAAkE;AAClE,oFAAiF;AAI1E,MAAM,iBAAiB,GAAG,KAAK,EACpC,aAA4B,EACe,EAAE;IAC7C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1C,OAAO;IACT,CAAC;IACD,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC;IACtC,MAAM,QAAQ,GAAyB,MAAM,CAAC,WAAW,CACvD,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,CACvD,CAAC;IACF,MAAM,EAAE,aAAa,GAAG,EAAE,EAAE,GAAG,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC;IAClE,KAAK,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,OAAO,EAAE,CAAC;QACxC,MAAM,aAAa,GACjB,OAAO,KAAK,GAAG,CAAC,CAAC;YACf,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;YACrE,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QACpB,MAAM,UAAU,GAAG,IAAA,+CAAsB,EAAC,aAAa,EAAE,aAAa,CAAC,CAAC;QACxE,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,aAAa,CAC7C,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,EACnC,SAAS,EACT,SAAS,EACT,aAAa,CACd,CAAC;YACF,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;gBAAE,SAAS;YAC5D,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;YAC5C,QAAQ,CAAC,IAAI,CAAE,CAAC,WAAW,CAAC,IAAI,CAAC;gBAC/B,GAAG,uBAAU,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC;gBAC3C,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,MAAM,0BAAa,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC;aACtE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAlCW,QAAA,iBAAiB,qBAkC5B"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import type { AuthResultWithSID } from "../Auth/AuthTypes";
|
|
2
|
-
import type { PublishParser } from "./PublishParser";
|
|
3
|
-
import type { DboTable, ParsedPublishTable } from "./publishTypesAndUtils";
|
|
4
|
-
import { type PublishObject } from "./publishTypesAndUtils";
|
|
5
|
-
export declare function getTableRulesWithoutFileTable(this: PublishParser, { tableName, clientReq }: DboTable, clientInfo: AuthResultWithSID | undefined, overridenPublish?: PublishObject): Promise<ParsedPublishTable | undefined>;
|
|
6
|
-
//# sourceMappingURL=getTableRulesWithoutFileTable.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getTableRulesWithoutFileTable.d.ts","sourceRoot":"","sources":["../../lib/PublishParser/getTableRulesWithoutFileTable.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAG3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC3E,OAAO,EAAwB,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAElF,wBAAsB,6BAA6B,CACjD,IAAI,EAAE,aAAa,EACnB,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,QAAQ,EAClC,UAAU,EAAE,iBAAiB,GAAG,SAAS,EACzC,gBAAgB,CAAC,EAAE,aAAa,GAC/B,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAqGzC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getTableRulesWithoutFileTable.js","sourceRoot":"","sources":["../../lib/PublishParser/getTableRulesWithoutFileTable.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { getRawColumns } from "../DboBuilder/getColumns";
|
|
2
|
-
import { getRawInfo } from "../DboBuilder/ViewHandler/getRawInfo";
|
|
3
|
-
import { getPublishedTableNames } from "../PublishParser/getPublishedTableNames";
|
|
4
|
-
import type { PublishObject, PublishParser } from "../PublishParser/PublishParser";
|
|
5
|
-
import type { ClientSchemaProfiles } from "./getClientDBGeneratedSchemas";
|
|
6
|
-
|
|
7
|
-
export const getPublishSchemas = async (
|
|
8
|
-
publishParser: PublishParser,
|
|
9
|
-
): Promise<ClientSchemaProfiles | undefined> => {
|
|
10
|
-
if (!Array.isArray(publishParser.publish)) {
|
|
11
|
-
return;
|
|
12
|
-
}
|
|
13
|
-
const entries = publishParser.publish;
|
|
14
|
-
const profiles: ClientSchemaProfiles = Object.fromEntries(
|
|
15
|
-
entries.map(({ name }) => [name, { tableSchema: [] }]),
|
|
16
|
-
);
|
|
17
|
-
const { tablesOrViews = [] } = publishParser.prostgles.dboBuilder;
|
|
18
|
-
for (const { name, publish } of entries) {
|
|
19
|
-
const publishObject: PublishObject =
|
|
20
|
-
publish === "*" ?
|
|
21
|
-
Object.fromEntries(tablesOrViews.map((table) => [table.name, "*"]))
|
|
22
|
-
: (publish ?? {});
|
|
23
|
-
const tableNames = getPublishedTableNames(publishParser, publishObject);
|
|
24
|
-
for (const tableName of tableNames) {
|
|
25
|
-
const rules = await publishParser.getTableRules(
|
|
26
|
-
{ tableName, clientReq: undefined },
|
|
27
|
-
undefined,
|
|
28
|
-
undefined,
|
|
29
|
-
publishObject,
|
|
30
|
-
);
|
|
31
|
-
if (!rules || !Object.values(rules).some(Boolean)) continue;
|
|
32
|
-
const table = publishParser.dbo[tableName]!;
|
|
33
|
-
profiles[name]!.tableSchema.push({
|
|
34
|
-
...getRawInfo.call(table, undefined, rules),
|
|
35
|
-
name: tableName,
|
|
36
|
-
columns: await getRawColumns.call(table, undefined, undefined, rules),
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
return profiles;
|
|
41
|
-
};
|