prostgles-server 4.2.605 → 4.2.606

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.
@@ -1 +1 @@
1
- {"version":3,"file":"getInfo.d.ts","sourceRoot":"","sources":["../../../lib/DboBuilder/ViewHandler/getInfo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,wBAAsB,OAAO,CAC3B,IAAI,EAAE,WAAW,EACjB,IAAI,CAAC,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,GAAG,EACb,OAAO,CAAC,EAAE,GAAG,EACb,UAAU,CAAC,EAAE,eAAe,EAC5B,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,KAAK,CAAC,CA6EhB"}
1
+ {"version":3,"file":"getInfo.d.ts","sourceRoot":"","sources":["../../../lib/DboBuilder/ViewHandler/getInfo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAGjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,wBAAsB,OAAO,CAC3B,IAAI,EAAE,WAAW,EACjB,IAAI,CAAC,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,GAAG,EACb,OAAO,CAAC,EAAE,GAAG,EACb,UAAU,CAAC,EAAE,eAAe,EAC5B,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,KAAK,CAAC,CAsBhB"}
@@ -1,64 +1,23 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getInfo = getInfo;
4
+ const getRawInfo_1 = require("./getRawInfo");
5
+ const getColumns_1 = require("../getColumns");
4
6
  async function getInfo(lang, _param2, _param3, tableRules, localParams) {
5
- const validatedTableRules = this.getValidatedRules(tableRules, localParams);
6
- const fileTableName = this.dboBuilder.prostgles.opts.fileTable?.tableName;
7
+ const tableInfo = getRawInfo_1.getRawInfo.call(this, lang, tableRules, localParams);
7
8
  await this._log({
8
9
  command: "getInfo",
9
10
  localParams,
10
11
  data: { lang },
11
12
  duration: 0,
12
13
  });
13
- const allowedFieldsToSelect = this.parseFieldFilter(tableRules?.select?.fields);
14
- const { requiredNestedInserts, allowedNestedInserts } = tableRules?.insert ?? {};
15
- const label = this.dboBuilder.prostgles.tableConfigurator?.getTableLabel({
16
- tableName: this.name,
17
- lang,
18
- });
19
- const tableInfo = {
20
- oid: this.tableOrViewInfo.oid,
21
- comment: this.tableOrViewInfo.comment,
22
- qualifiedNameParts: this.tableOrViewInfo.qualifiedNameParts,
23
- label,
24
- isFileTable: !this.is_media ? undefined : ({
25
- allowedNestedInserts,
26
- }),
27
- isView: this.isView,
28
- hasFiles: Boolean(!this.is_media &&
29
- fileTableName &&
30
- this.columns.some((c) => c.references?.some((r) => r.ftable === fileTableName))),
31
- fileTableName,
32
- dynamicRules: {
33
- update: Boolean(tableRules?.update?.dynamicFields?.length),
34
- },
35
- /**
36
- * Only show column groups that are fully allowed to be selected by the user
37
- */
38
- uniqueColumnGroups: this.tableOrViewInfo.uniqueColumnGroups?.filter((g) => !localParams || g.every((c) => allowedFieldsToSelect.includes(c))),
39
- publishInfo: {
40
- select: validatedTableRules.select && {
41
- disabledMethods: validatedTableRules.select.disableMethods,
42
- syncConfig: this.dboBuilder.prostgles.tableConfigurator?.getTableSyncConfig(this.name),
43
- },
44
- insert: validatedTableRules.insert && {
45
- requiredNestedInserts,
46
- allowedNestedInserts: allowedNestedInserts?.map((t) => t.table),
47
- },
48
- update: validatedTableRules.update && {
49
- disabledMethods: tableRules?.update?.disableMethods,
50
- },
51
- delete: validatedTableRules.delete && {},
52
- },
53
- };
54
14
  const modifyClientSchema = this.dboBuilder.prostgles.opts.modifyClientSchema;
55
- if (!modifyClientSchema) {
15
+ if (!modifyClientSchema)
56
16
  return tableInfo;
57
- }
58
17
  const modifiedTableSchema = await modifyClientSchema({
59
18
  name: this.name,
60
19
  ...tableInfo,
61
- columns: [],
20
+ columns: await getColumns_1.getRawColumns.call(this, lang, undefined, tableRules, localParams),
62
21
  }, this.config, localParams?.isRemoteRequest?.clientInfo);
63
22
  const { columns, name, ...rest } = modifiedTableSchema;
64
23
  return rest;
@@ -1 +1 @@
1
- {"version":3,"file":"getInfo.js","sourceRoot":"","sources":["../../../lib/DboBuilder/ViewHandler/getInfo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getInfo.js","sourceRoot":"","sources":["../../../lib/DboBuilder/ViewHandler/getInfo.ts"],"names":[],"mappings":";;AAOA,0BA6BC;AAjCD,6CAA0C;AAC1C,8CAA8C;AAGvC,KAAK,UAAU,OAAO,CAE3B,IAAa,EACb,OAAa,EACb,OAAa,EACb,UAA4B,EAC5B,WAAyB;IAEzB,MAAM,SAAS,GAAG,uBAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;IACvE,MAAM,IAAI,CAAC,IAAI,CAAC;QACd,OAAO,EAAE,SAAS;QAClB,WAAW;QACX,IAAI,EAAE,EAAE,IAAI,EAAE;QACd,QAAQ,EAAE,CAAC;KACZ,CAAC,CAAC;IACH,MAAM,kBAAkB,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC;IAC7E,IAAI,CAAC,kBAAkB;QAAE,OAAO,SAAS,CAAC;IAE1C,MAAM,mBAAmB,GAAG,MAAM,kBAAkB,CAClD;QACE,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,GAAG,SAAS;QACZ,OAAO,EAAE,MAAM,0BAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,CAAC;KAClF,EACD,IAAI,CAAC,MAAM,EACX,WAAW,EAAE,eAAe,EAAE,UAAU,CACzC,CAAC;IACF,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,mBAAmB,CAAC;IACvD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { type TableInfo as TInfo } from "prostgles-types/dist";
2
+ import type { ParsedTableRule } from "../../PublishParser/PublishParser";
3
+ import type { LocalParams } from "../DboBuilder";
4
+ import type { ViewHandler } from "./ViewHandler";
5
+ /** Table metadata before client schema customisation. */
6
+ export declare function getRawInfo(this: ViewHandler, lang?: string, tableRules?: ParsedTableRule, localParams?: LocalParams): TInfo;
7
+ //# sourceMappingURL=getRawInfo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getRawInfo.d.ts","sourceRoot":"","sources":["../../../lib/DboBuilder/ViewHandler/getRawInfo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,yDAAyD;AACzD,wBAAgB,UAAU,CACxB,IAAI,EAAE,WAAW,EACjB,IAAI,CAAC,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,eAAe,EAC5B,WAAW,CAAC,EAAE,WAAW,GACxB,KAAK,CAqDP"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getRawInfo = getRawInfo;
4
+ /** Table metadata before client schema customisation. */
5
+ function getRawInfo(lang, tableRules, localParams) {
6
+ const validatedTableRules = this.getValidatedRules(tableRules, localParams);
7
+ const fileTableName = this.dboBuilder.prostgles.opts.fileTable?.tableName;
8
+ const allowedFieldsToSelect = this.parseFieldFilter(tableRules?.select?.fields);
9
+ const { requiredNestedInserts, allowedNestedInserts } = tableRules?.insert ?? {};
10
+ const label = this.dboBuilder.prostgles.tableConfigurator?.getTableLabel({
11
+ tableName: this.name,
12
+ lang,
13
+ });
14
+ const tableInfo = {
15
+ oid: this.tableOrViewInfo.oid,
16
+ comment: this.tableOrViewInfo.comment,
17
+ qualifiedNameParts: this.tableOrViewInfo.qualifiedNameParts,
18
+ label,
19
+ isFileTable: !this.is_media ? undefined : ({
20
+ allowedNestedInserts,
21
+ }),
22
+ isView: this.isView,
23
+ hasFiles: Boolean(!this.is_media &&
24
+ fileTableName &&
25
+ this.columns.some((c) => c.references?.some((r) => r.ftable === fileTableName))),
26
+ fileTableName,
27
+ dynamicRules: {
28
+ update: Boolean(tableRules?.update?.dynamicFields?.length),
29
+ },
30
+ /**
31
+ * Only show column groups that are fully allowed to be selected by the user
32
+ */
33
+ uniqueColumnGroups: this.tableOrViewInfo.uniqueColumnGroups?.filter((g) => !localParams || g.every((c) => allowedFieldsToSelect.includes(c))),
34
+ publishInfo: {
35
+ select: validatedTableRules.select && {
36
+ disabledMethods: validatedTableRules.select.disableMethods,
37
+ syncConfig: this.dboBuilder.prostgles.tableConfigurator?.getTableSyncConfig(this.name),
38
+ },
39
+ insert: validatedTableRules.insert && {
40
+ requiredNestedInserts,
41
+ allowedNestedInserts: allowedNestedInserts?.map((t) => t.table),
42
+ },
43
+ update: validatedTableRules.update && {
44
+ disabledMethods: tableRules?.update?.disableMethods,
45
+ },
46
+ delete: validatedTableRules.delete && {},
47
+ },
48
+ };
49
+ return tableInfo;
50
+ }
51
+ //# sourceMappingURL=getRawInfo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getRawInfo.js","sourceRoot":"","sources":["../../../lib/DboBuilder/ViewHandler/getRawInfo.ts"],"names":[],"mappings":";;AAMA,gCA0DC;AA3DD,yDAAyD;AACzD,SAAgB,UAAU,CAExB,IAAa,EACb,UAA4B,EAC5B,WAAyB;IAEzB,MAAM,mBAAmB,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IAC5E,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC;IAC1E,MAAM,qBAAqB,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAChF,MAAM,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,GAAG,UAAU,EAAE,MAAM,IAAI,EAAE,CAAC;IACjF,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,iBAAiB,EAAE,aAAa,CAAC;QACvE,SAAS,EAAE,IAAI,CAAC,IAAI;QACpB,IAAI;KACL,CAAC,CAAC;IACH,MAAM,SAAS,GAAU;QACvB,GAAG,EAAE,IAAI,CAAC,eAAe,CAAC,GAAG;QAC7B,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO;QACrC,kBAAkB,EAAE,IAAI,CAAC,eAAe,CAAC,kBAAkB;QAC3D,KAAK;QACL,WAAW,EACT,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAC3B;YACE,oBAAoB;SACrB,CACF;QACH,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,QAAQ,EAAE,OAAO,CACf,CAAC,IAAI,CAAC,QAAQ;YACd,aAAa;YACb,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC,CAChF;QACD,aAAa;QACb,YAAY,EAAE;YACZ,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC;SAC3D;QACD;;WAEG;QACH,kBAAkB,EAAE,IAAI,CAAC,eAAe,CAAC,kBAAkB,EAAE,MAAM,CACjE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CACzE;QACD,WAAW,EAAE;YACX,MAAM,EAAE,mBAAmB,CAAC,MAAM,IAAI;gBACpC,eAAe,EAAE,mBAAmB,CAAC,MAAM,CAAC,cAAc;gBAC1D,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;aACvF;YACD,MAAM,EAAE,mBAAmB,CAAC,MAAM,IAAI;gBACpC,qBAAqB;gBACrB,oBAAoB,EAAE,oBAAoB,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;aAChE;YACD,MAAM,EAAE,mBAAmB,CAAC,MAAM,IAAI;gBACpC,eAAe,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc;aACpD;YACD,MAAM,EAAE,mBAAmB,CAAC,MAAM,IAAI,EAAE;SACzC;KACF,CAAC;IAEF,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -8,4 +8,9 @@ export declare function getColumns(this: ViewHandler, lang?: string, params?: {
8
8
  rule: "update";
9
9
  filter: AnyObject;
10
10
  }, _param3?: undefined, tableRules?: ParsedTableRule, localParams?: LocalParams): Promise<ValidatedColumnInfo[]>;
11
+ /** Permission-filtered columns before client schema customisation. */
12
+ export declare function getRawColumns(this: ViewHandler, lang?: string, params?: {
13
+ rule: "update";
14
+ filter: AnyObject;
15
+ }, tableRules?: ParsedTableRule, localParams?: LocalParams): Promise<ValidatedColumnInfo[]>;
11
16
  //# sourceMappingURL=getColumns.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getColumns.d.ts","sourceRoot":"","sources":["../../lib/DboBuilder/getColumns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE7D,eAAO,MAAM,cAAc,GAAI,GAAG,GAAG,KAAG,CAAC,IAAI,YAAuC,CAAC;AAErF,wBAAsB,UAAU,CAC9B,IAAI,EAAE,WAAW,EACjB,IAAI,CAAC,EAAE,MAAM,EACb,MAAM,CAAC,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,SAAS,CAAA;CAAE,EAC9C,OAAO,CAAC,EAAE,SAAS,EACnB,UAAU,CAAC,EAAE,eAAe,EAC5B,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAiIhC"}
1
+ {"version":3,"file":"getColumns.d.ts","sourceRoot":"","sources":["../../lib/DboBuilder/getColumns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAG7D,eAAO,MAAM,cAAc,GAAI,GAAG,GAAG,KAAG,CAAC,IAAI,YAAuC,CAAC;AAErF,wBAAsB,UAAU,CAC9B,IAAI,EAAE,WAAW,EACjB,IAAI,CAAC,EAAE,MAAM,EACb,MAAM,CAAC,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,SAAS,CAAA;CAAE,EAC9C,OAAO,CAAC,EAAE,SAAS,EACnB,UAAU,CAAC,EAAE,eAAe,EAC5B,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAuChC;AAED,sEAAsE;AACtE,wBAAsB,aAAa,CACjC,IAAI,EAAE,WAAW,EACjB,IAAI,CAAC,EAAE,MAAM,EACb,MAAM,CAAC,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,SAAS,CAAA;CAAE,EAC9C,UAAU,CAAC,EAAE,eAAe,EAC5B,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,mBAAmB,EAAE,CAAC,CA6FhC"}
@@ -2,89 +2,19 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.isTableHandler = void 0;
4
4
  exports.getColumns = getColumns;
5
+ exports.getRawColumns = getRawColumns;
5
6
  const prostgles_types_1 = require("prostgles-types");
6
7
  const DboBuilder_1 = require("./DboBuilder");
8
+ const getRawInfo_1 = require("./ViewHandler/getRawInfo");
7
9
  const isTableHandler = (v) => "parseUpdateRules" in v;
8
10
  exports.isTableHandler = isTableHandler;
9
11
  async function getColumns(lang, params, _param3, tableRules, localParams) {
10
12
  const start = Date.now();
11
13
  try {
12
- const rules = this.getValidatedRules(tableRules, localParams);
13
- let dynamicUpdateFields = this.column_names;
14
- if (params && tableRules && (0, exports.isTableHandler)(this)) {
15
- if (!(0, prostgles_types_1.isObject)(params) ||
16
- !(0, prostgles_types_1.isObject)(params.filter) ||
17
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
18
- params.rule !== "update") {
19
- throw ("params must be { rule: 'update', filter: object } but received: " +
20
- JSON.stringify(params));
21
- }
22
- if (!tableRules.update) {
23
- dynamicUpdateFields = [];
24
- }
25
- else {
26
- const { filter } = params;
27
- const updateRules = await this.parseUpdateRules(filter, undefined, tableRules, localParams);
28
- dynamicUpdateFields = updateRules.fields;
29
- }
30
- }
31
- const rawColumns = this.columns
32
- .filter((c) => {
33
- const { insert, select, update } = rules;
34
- return [insert, select, update]
35
- .filter(prostgles_types_1.isDefined)
36
- .flatMap((rule) => rule.fields)
37
- .includes(c.name);
38
- })
39
- .map((_c) => {
40
- const c = { ..._c };
41
- const label = capitalizeFirstLetter(c.name, " ");
42
- const select = !!c.privileges.SELECT;
43
- const insert = !!c.privileges.INSERT;
44
- const _delete = !!this.tableOrViewInfo.privileges.delete;
45
- let update = !!c.privileges.UPDATE;
46
- const prostgles = this.dboBuilder.prostgles;
47
- const fileConfig = getFileColumnInfo({
48
- colName: c.name,
49
- tableHandler: this,
50
- });
51
- /** Do not allow updates to file table unless it's to delete fields */
52
- if (prostgles.opts.fileTable?.tableName === this.name) {
53
- update = false;
54
- }
55
- const nonOrderableUD_Types = [...prostgles_types_1._PG_geometric, "xml"];
56
- const result = {
57
- ...(0, prostgles_types_1.omitKeys)(c, ["privileges"]),
58
- label,
59
- tsDataType: (0, prostgles_types_1.postgresToTsType)(c.udt_name),
60
- insert: insert &&
61
- !!rules.insert?.fields.includes(c.name) &&
62
- tableRules?.insert?.forcedData?.[c.name] === undefined &&
63
- c.is_updatable,
64
- select: select && !!rules.select?.fields.includes(c.name),
65
- orderBy: select &&
66
- !!rules.select?.orderByFields.includes(c.name) &&
67
- !nonOrderableUD_Types.includes(c.udt_name),
68
- filter: !!rules.select?.filterFields.includes(c.name),
69
- update: update &&
70
- !!rules.update?.fields.includes(c.name) &&
71
- tableRules?.update?.forcedData?.[c.name] === undefined &&
72
- c.is_updatable &&
73
- dynamicUpdateFields.includes(c.name),
74
- delete: _delete && !!rules.delete?.filterFields.includes(c.name),
75
- ...(prostgles.tableConfigurator?.getColInfo({
76
- table: this.name,
77
- col: c.name,
78
- lang,
79
- }) || {}),
80
- ...(fileConfig && { file: fileConfig }),
81
- };
82
- return result;
83
- })
84
- .filter((c) => c.select || c.update || c.delete || c.insert);
14
+ const rawColumns = await getRawColumns.call(this, lang, params, tableRules, localParams);
85
15
  const modifiedTableSchema = await this.dboBuilder.prostgles.opts.modifyClientSchema?.({
86
16
  name: this.name,
87
- ...(await this.getInfo()),
17
+ ...getRawInfo_1.getRawInfo.call(this, lang, tableRules, localParams),
88
18
  columns: rawColumns,
89
19
  }, this.config, localParams?.isRemoteRequest?.clientInfo);
90
20
  const columns = modifiedTableSchema?.columns ?? rawColumns;
@@ -112,6 +42,82 @@ async function getColumns(lang, params, _param3, tableRules, localParams) {
112
42
  });
113
43
  }
114
44
  }
45
+ /** Permission-filtered columns before client schema customisation. */
46
+ async function getRawColumns(lang, params, tableRules, localParams) {
47
+ const rules = this.getValidatedRules(tableRules, localParams);
48
+ let dynamicUpdateFields = this.column_names;
49
+ if (params && tableRules && (0, exports.isTableHandler)(this)) {
50
+ if (!(0, prostgles_types_1.isObject)(params) ||
51
+ !(0, prostgles_types_1.isObject)(params.filter) ||
52
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
53
+ params.rule !== "update") {
54
+ throw ("params must be { rule: 'update', filter: object } but received: " + JSON.stringify(params));
55
+ }
56
+ if (!tableRules.update) {
57
+ dynamicUpdateFields = [];
58
+ }
59
+ else {
60
+ const { filter } = params;
61
+ const updateRules = await this.parseUpdateRules(filter, undefined, tableRules, localParams);
62
+ dynamicUpdateFields = updateRules.fields;
63
+ }
64
+ }
65
+ const rawColumns = this.columns
66
+ .filter((c) => {
67
+ const { insert, select, update } = rules;
68
+ return [insert, select, update]
69
+ .filter(prostgles_types_1.isDefined)
70
+ .flatMap((rule) => rule.fields)
71
+ .includes(c.name);
72
+ })
73
+ .map((_c) => {
74
+ const c = { ..._c };
75
+ const label = capitalizeFirstLetter(c.name, " ");
76
+ const select = !!c.privileges.SELECT;
77
+ const insert = !!c.privileges.INSERT;
78
+ const _delete = !!this.tableOrViewInfo.privileges.delete;
79
+ let update = !!c.privileges.UPDATE;
80
+ const prostgles = this.dboBuilder.prostgles;
81
+ const fileConfig = getFileColumnInfo({
82
+ colName: c.name,
83
+ tableHandler: this,
84
+ });
85
+ /** Do not allow updates to file table unless it's to delete fields */
86
+ if (prostgles.opts.fileTable?.tableName === this.name) {
87
+ update = false;
88
+ }
89
+ const nonOrderableUD_Types = [...prostgles_types_1._PG_geometric, "xml"];
90
+ const result = {
91
+ ...(0, prostgles_types_1.omitKeys)(c, ["privileges"]),
92
+ label,
93
+ tsDataType: (0, prostgles_types_1.postgresToTsType)(c.udt_name),
94
+ insert: insert &&
95
+ !!rules.insert?.fields.includes(c.name) &&
96
+ tableRules?.insert?.forcedData?.[c.name] === undefined &&
97
+ c.is_updatable,
98
+ select: select && !!rules.select?.fields.includes(c.name),
99
+ orderBy: select &&
100
+ !!rules.select?.orderByFields.includes(c.name) &&
101
+ !nonOrderableUD_Types.includes(c.udt_name),
102
+ filter: !!rules.select?.filterFields.includes(c.name),
103
+ update: update &&
104
+ !!rules.update?.fields.includes(c.name) &&
105
+ tableRules?.update?.forcedData?.[c.name] === undefined &&
106
+ c.is_updatable &&
107
+ dynamicUpdateFields.includes(c.name),
108
+ delete: _delete && !!rules.delete?.filterFields.includes(c.name),
109
+ ...(prostgles.tableConfigurator?.getColInfo({
110
+ table: this.name,
111
+ col: c.name,
112
+ lang,
113
+ }) || {}),
114
+ ...(fileConfig && { file: fileConfig }),
115
+ };
116
+ return result;
117
+ })
118
+ .filter((c) => c.select || c.update || c.delete || c.insert);
119
+ return rawColumns;
120
+ }
115
121
  const capitalizeFirstLetter = (string, nonAlphaNumericReplacement = " ") => {
116
122
  const str = string.replace(/[\W_]+/g, nonAlphaNumericReplacement);
117
123
  return str.charAt(0).toUpperCase() + str.slice(1);
@@ -1 +1 @@
1
- {"version":3,"file":"getColumns.js","sourceRoot":"","sources":["../../lib/DboBuilder/getColumns.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getColumns.js","sourceRoot":"","sources":["../../lib/DboBuilder/getColumns.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  import { type TableInfo as TInfo } from "prostgles-types/dist";
2
2
  import type { ParsedTableRule } from "../../PublishParser/PublishParser";
3
3
  import type { LocalParams } from "../DboBuilder";
4
+ import { getRawInfo } from "./getRawInfo";
5
+ import { getRawColumns } from "../getColumns";
4
6
  import type { ViewHandler } from "./ViewHandler";
5
7
 
6
8
  export async function getInfo(
@@ -11,80 +13,25 @@ export async function getInfo(
11
13
  tableRules?: ParsedTableRule,
12
14
  localParams?: LocalParams,
13
15
  ): Promise<TInfo> {
14
- const validatedTableRules = this.getValidatedRules(tableRules, localParams);
15
-
16
- const fileTableName = this.dboBuilder.prostgles.opts.fileTable?.tableName;
17
-
16
+ const tableInfo = getRawInfo.call(this, lang, tableRules, localParams);
18
17
  await this._log({
19
18
  command: "getInfo",
20
19
  localParams,
21
20
  data: { lang },
22
21
  duration: 0,
23
22
  });
24
- const allowedFieldsToSelect = this.parseFieldFilter(tableRules?.select?.fields);
25
- const { requiredNestedInserts, allowedNestedInserts } = tableRules?.insert ?? {};
26
- const label = this.dboBuilder.prostgles.tableConfigurator?.getTableLabel({
27
- tableName: this.name,
28
- lang,
29
- });
30
- const tableInfo: TInfo = {
31
- oid: this.tableOrViewInfo.oid,
32
- comment: this.tableOrViewInfo.comment,
33
- qualifiedNameParts: this.tableOrViewInfo.qualifiedNameParts,
34
- label,
35
- isFileTable:
36
- !this.is_media ? undefined : (
37
- {
38
- allowedNestedInserts,
39
- }
40
- ),
41
- isView: this.isView,
42
- hasFiles: Boolean(
43
- !this.is_media &&
44
- fileTableName &&
45
- this.columns.some((c) => c.references?.some((r) => r.ftable === fileTableName)),
46
- ),
47
- fileTableName,
48
- dynamicRules: {
49
- update: Boolean(tableRules?.update?.dynamicFields?.length),
50
- },
51
- /**
52
- * Only show column groups that are fully allowed to be selected by the user
53
- */
54
- uniqueColumnGroups: this.tableOrViewInfo.uniqueColumnGroups?.filter(
55
- (g) => !localParams || g.every((c) => allowedFieldsToSelect.includes(c)),
56
- ),
57
- publishInfo: {
58
- select: validatedTableRules.select && {
59
- disabledMethods: validatedTableRules.select.disableMethods,
60
- syncConfig: this.dboBuilder.prostgles.tableConfigurator?.getTableSyncConfig(this.name),
61
- },
62
- insert: validatedTableRules.insert && {
63
- requiredNestedInserts,
64
- allowedNestedInserts: allowedNestedInserts?.map((t) => t.table),
65
- },
66
- update: validatedTableRules.update && {
67
- disabledMethods: tableRules?.update?.disableMethods,
68
- },
69
- delete: validatedTableRules.delete && {},
70
- },
71
- };
72
-
73
23
  const modifyClientSchema = this.dboBuilder.prostgles.opts.modifyClientSchema;
74
- if (!modifyClientSchema) {
75
- return tableInfo;
76
- }
24
+ if (!modifyClientSchema) return tableInfo;
77
25
 
78
26
  const modifiedTableSchema = await modifyClientSchema(
79
27
  {
80
28
  name: this.name,
81
29
  ...tableInfo,
82
- columns: [],
30
+ columns: await getRawColumns.call(this, lang, undefined, tableRules, localParams),
83
31
  },
84
32
  this.config,
85
33
  localParams?.isRemoteRequest?.clientInfo,
86
34
  );
87
-
88
35
  const { columns, name, ...rest } = modifiedTableSchema;
89
36
  return rest;
90
37
  }
@@ -0,0 +1,65 @@
1
+ import { type TableInfo as TInfo } from "prostgles-types/dist";
2
+ import type { ParsedTableRule } from "../../PublishParser/PublishParser";
3
+ import type { LocalParams } from "../DboBuilder";
4
+ import type { ViewHandler } from "./ViewHandler";
5
+
6
+ /** Table metadata before client schema customisation. */
7
+ export function getRawInfo(
8
+ this: ViewHandler,
9
+ lang?: string,
10
+ tableRules?: ParsedTableRule,
11
+ localParams?: LocalParams,
12
+ ): TInfo {
13
+ const validatedTableRules = this.getValidatedRules(tableRules, localParams);
14
+ const fileTableName = this.dboBuilder.prostgles.opts.fileTable?.tableName;
15
+ const allowedFieldsToSelect = this.parseFieldFilter(tableRules?.select?.fields);
16
+ const { requiredNestedInserts, allowedNestedInserts } = tableRules?.insert ?? {};
17
+ const label = this.dboBuilder.prostgles.tableConfigurator?.getTableLabel({
18
+ tableName: this.name,
19
+ lang,
20
+ });
21
+ const tableInfo: TInfo = {
22
+ oid: this.tableOrViewInfo.oid,
23
+ comment: this.tableOrViewInfo.comment,
24
+ qualifiedNameParts: this.tableOrViewInfo.qualifiedNameParts,
25
+ label,
26
+ isFileTable:
27
+ !this.is_media ? undefined : (
28
+ {
29
+ allowedNestedInserts,
30
+ }
31
+ ),
32
+ isView: this.isView,
33
+ hasFiles: Boolean(
34
+ !this.is_media &&
35
+ fileTableName &&
36
+ this.columns.some((c) => c.references?.some((r) => r.ftable === fileTableName)),
37
+ ),
38
+ fileTableName,
39
+ dynamicRules: {
40
+ update: Boolean(tableRules?.update?.dynamicFields?.length),
41
+ },
42
+ /**
43
+ * Only show column groups that are fully allowed to be selected by the user
44
+ */
45
+ uniqueColumnGroups: this.tableOrViewInfo.uniqueColumnGroups?.filter(
46
+ (g) => !localParams || g.every((c) => allowedFieldsToSelect.includes(c)),
47
+ ),
48
+ publishInfo: {
49
+ select: validatedTableRules.select && {
50
+ disabledMethods: validatedTableRules.select.disableMethods,
51
+ syncConfig: this.dboBuilder.prostgles.tableConfigurator?.getTableSyncConfig(this.name),
52
+ },
53
+ insert: validatedTableRules.insert && {
54
+ requiredNestedInserts,
55
+ allowedNestedInserts: allowedNestedInserts?.map((t) => t.table),
56
+ },
57
+ update: validatedTableRules.update && {
58
+ disabledMethods: tableRules?.update?.disableMethods,
59
+ },
60
+ delete: validatedTableRules.delete && {},
61
+ },
62
+ };
63
+
64
+ return tableInfo;
65
+ }
@@ -5,6 +5,7 @@ import type { LocalParams } from "./DboBuilder";
5
5
  import { getErrorAsObject, getSerializedClientErrorFromPGError } from "./DboBuilder";
6
6
  import type { TableHandler } from "./TableHandler/TableHandler";
7
7
  import type { ViewHandler } from "./ViewHandler/ViewHandler";
8
+ import { getRawInfo } from "./ViewHandler/getRawInfo";
8
9
 
9
10
  export const isTableHandler = (v: any): v is TableHandler => "parseUpdateRules" in v;
10
11
 
@@ -18,102 +19,12 @@ export async function getColumns(
18
19
  ): Promise<ValidatedColumnInfo[]> {
19
20
  const start = Date.now();
20
21
  try {
21
- const rules = this.getValidatedRules(tableRules, localParams);
22
-
23
- let dynamicUpdateFields = this.column_names;
24
-
25
- if (params && tableRules && isTableHandler(this)) {
26
- if (
27
- !isObject(params) ||
28
- !isObject(params.filter) ||
29
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
30
- params.rule !== "update"
31
- ) {
32
- throw (
33
- "params must be { rule: 'update', filter: object } but received: " +
34
- JSON.stringify(params)
35
- );
36
- }
37
-
38
- if (!tableRules.update) {
39
- dynamicUpdateFields = [];
40
- } else {
41
- const { filter } = params;
42
- const updateRules = await this.parseUpdateRules(filter, undefined, tableRules, localParams);
43
- dynamicUpdateFields = updateRules.fields;
44
- }
45
- }
46
-
47
- const rawColumns: ValidatedColumnInfo[] = this.columns
48
- .filter((c) => {
49
- const { insert, select, update } = rules;
50
-
51
- return [insert, select, update]
52
- .filter(isDefined)
53
- .flatMap((rule) => rule.fields)
54
- .includes(c.name);
55
- })
56
- .map((_c) => {
57
- const c = { ..._c };
58
-
59
- const label = capitalizeFirstLetter(c.name, " ");
60
-
61
- const select = !!c.privileges.SELECT;
62
- const insert = !!c.privileges.INSERT;
63
- const _delete = !!this.tableOrViewInfo.privileges.delete;
64
- let update = !!c.privileges.UPDATE;
65
-
66
- const prostgles = this.dboBuilder.prostgles;
67
- const fileConfig = getFileColumnInfo({
68
- colName: c.name,
69
- tableHandler: this,
70
- });
71
-
72
- /** Do not allow updates to file table unless it's to delete fields */
73
- if (prostgles.opts.fileTable?.tableName === this.name) {
74
- update = false;
75
- }
76
-
77
- const nonOrderableUD_Types: string[] = [..._PG_geometric, "xml"];
78
-
79
- const result: ValidatedColumnInfo = {
80
- ...omitKeys(c, ["privileges"]),
81
- label,
82
- tsDataType: postgresToTsType(c.udt_name),
83
- insert:
84
- insert &&
85
- !!rules.insert?.fields.includes(c.name) &&
86
- tableRules?.insert?.forcedData?.[c.name] === undefined &&
87
- c.is_updatable,
88
- select: select && !!rules.select?.fields.includes(c.name),
89
- orderBy:
90
- select &&
91
- !!rules.select?.orderByFields.includes(c.name) &&
92
- !nonOrderableUD_Types.includes(c.udt_name),
93
- filter: !!rules.select?.filterFields.includes(c.name),
94
- update:
95
- update &&
96
- !!rules.update?.fields.includes(c.name) &&
97
- tableRules?.update?.forcedData?.[c.name] === undefined &&
98
- c.is_updatable &&
99
- dynamicUpdateFields.includes(c.name),
100
- delete: _delete && !!rules.delete?.filterFields.includes(c.name),
101
- ...(prostgles.tableConfigurator?.getColInfo({
102
- table: this.name,
103
- col: c.name,
104
- lang,
105
- }) || {}),
106
- ...(fileConfig && { file: fileConfig }),
107
- };
108
-
109
- return result;
110
- })
111
- .filter((c) => c.select || c.update || c.delete || c.insert);
22
+ const rawColumns = await getRawColumns.call(this, lang, params, tableRules, localParams);
112
23
 
113
24
  const modifiedTableSchema = await this.dboBuilder.prostgles.opts.modifyClientSchema?.(
114
25
  {
115
26
  name: this.name,
116
- ...(await this.getInfo()),
27
+ ...getRawInfo.call(this, lang, tableRules, localParams),
117
28
  columns: rawColumns,
118
29
  },
119
30
  this.config,
@@ -146,6 +57,108 @@ export async function getColumns(
146
57
  }
147
58
  }
148
59
 
60
+ /** Permission-filtered columns before client schema customisation. */
61
+ export async function getRawColumns(
62
+ this: ViewHandler,
63
+ lang?: string,
64
+ params?: { rule: "update"; filter: AnyObject },
65
+ tableRules?: ParsedTableRule,
66
+ localParams?: LocalParams,
67
+ ): Promise<ValidatedColumnInfo[]> {
68
+ const rules = this.getValidatedRules(tableRules, localParams);
69
+
70
+ let dynamicUpdateFields = this.column_names;
71
+
72
+ if (params && tableRules && isTableHandler(this)) {
73
+ if (
74
+ !isObject(params) ||
75
+ !isObject(params.filter) ||
76
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
77
+ params.rule !== "update"
78
+ ) {
79
+ throw (
80
+ "params must be { rule: 'update', filter: object } but received: " + JSON.stringify(params)
81
+ );
82
+ }
83
+
84
+ if (!tableRules.update) {
85
+ dynamicUpdateFields = [];
86
+ } else {
87
+ const { filter } = params;
88
+ const updateRules = await this.parseUpdateRules(filter, undefined, tableRules, localParams);
89
+ dynamicUpdateFields = updateRules.fields;
90
+ }
91
+ }
92
+
93
+ const rawColumns: ValidatedColumnInfo[] = this.columns
94
+ .filter((c) => {
95
+ const { insert, select, update } = rules;
96
+
97
+ return [insert, select, update]
98
+ .filter(isDefined)
99
+ .flatMap((rule) => rule.fields)
100
+ .includes(c.name);
101
+ })
102
+ .map((_c) => {
103
+ const c = { ..._c };
104
+
105
+ const label = capitalizeFirstLetter(c.name, " ");
106
+
107
+ const select = !!c.privileges.SELECT;
108
+ const insert = !!c.privileges.INSERT;
109
+ const _delete = !!this.tableOrViewInfo.privileges.delete;
110
+ let update = !!c.privileges.UPDATE;
111
+
112
+ const prostgles = this.dboBuilder.prostgles;
113
+ const fileConfig = getFileColumnInfo({
114
+ colName: c.name,
115
+ tableHandler: this,
116
+ });
117
+
118
+ /** Do not allow updates to file table unless it's to delete fields */
119
+ if (prostgles.opts.fileTable?.tableName === this.name) {
120
+ update = false;
121
+ }
122
+
123
+ const nonOrderableUD_Types: string[] = [..._PG_geometric, "xml"];
124
+
125
+ const result: ValidatedColumnInfo = {
126
+ ...omitKeys(c, ["privileges"]),
127
+ label,
128
+ tsDataType: postgresToTsType(c.udt_name),
129
+ insert:
130
+ insert &&
131
+ !!rules.insert?.fields.includes(c.name) &&
132
+ tableRules?.insert?.forcedData?.[c.name] === undefined &&
133
+ c.is_updatable,
134
+ select: select && !!rules.select?.fields.includes(c.name),
135
+ orderBy:
136
+ select &&
137
+ !!rules.select?.orderByFields.includes(c.name) &&
138
+ !nonOrderableUD_Types.includes(c.udt_name),
139
+ filter: !!rules.select?.filterFields.includes(c.name),
140
+ update:
141
+ update &&
142
+ !!rules.update?.fields.includes(c.name) &&
143
+ tableRules?.update?.forcedData?.[c.name] === undefined &&
144
+ c.is_updatable &&
145
+ dynamicUpdateFields.includes(c.name),
146
+ delete: _delete && !!rules.delete?.filterFields.includes(c.name),
147
+ ...(prostgles.tableConfigurator?.getColInfo({
148
+ table: this.name,
149
+ col: c.name,
150
+ lang,
151
+ }) || {}),
152
+ ...(fileConfig && { file: fileConfig }),
153
+ };
154
+
155
+ return result;
156
+ })
157
+ .filter((c) => c.select || c.update || c.delete || c.insert);
158
+
159
+ return rawColumns;
160
+ }
161
+
149
162
  const capitalizeFirstLetter = (string: string, nonAlphaNumericReplacement = " ") => {
150
163
  const str = string.replace(/[\W_]+/g, nonAlphaNumericReplacement);
151
164
  return str.charAt(0).toUpperCase() + str.slice(1);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prostgles-server",
3
- "version": "4.2.605",
3
+ "version": "4.2.606",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",