pg-introspection 0.0.0

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/acl.js ADDED
@@ -0,0 +1,400 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolvePermissions = exports.aclContainsRole = exports.expandRoles = exports.aclsForTable = exports.Permission = exports.parseAcls = exports.OBJECT_TYPE = exports.OBJECT_DOMAIN = exports.OBJECT_FOREIGN_SERVER = exports.OBJECT_FDW = exports.OBJECT_TABLESPACE = exports.OBJECT_SCHEMA = exports.OBJECT_LARGEOBJECT = exports.OBJECT_LANGUAGE = exports.OBJECT_FUNCTION = exports.OBJECT_DATABASE = exports.OBJECT_SEQUENCE = exports.OBJECT_TABLE = exports.OBJECT_COLUMN = exports.emptyAclObject = exports.serializeAcl = exports.parseAcl = exports.PUBLIC_ROLE = void 0;
4
+ /**
5
+ * A fake 'pg_roles' record representing the 'public' meta-role.
6
+ */
7
+ exports.PUBLIC_ROLE = Object.freeze({
8
+ rolname: "public",
9
+ rolsuper: false,
10
+ rolinherit: false,
11
+ rolcreaterole: false,
12
+ rolcreatedb: false,
13
+ rolcanlogin: false,
14
+ rolreplication: false,
15
+ rolconnlimit: null,
16
+ rolpassword: null,
17
+ rolbypassrls: false,
18
+ rolconfig: null,
19
+ rolvaliduntil: null,
20
+ _id: "0",
21
+ });
22
+ /**
23
+ * Gets a role given an OID; throws an error if the role is not found.
24
+ */
25
+ function getRole(introspection, oid) {
26
+ if (oid === "0") {
27
+ return exports.PUBLIC_ROLE;
28
+ }
29
+ const role = introspection.roles.find((r) => r._id === oid);
30
+ if (!role) {
31
+ throw new Error(`Could not find role with identifier '${oid}'`);
32
+ }
33
+ return role;
34
+ }
35
+ /**
36
+ * Gets a role given its name; throws an error if the role is not found.
37
+ */
38
+ function getRoleByName(introspection, name) {
39
+ if (name === "public") {
40
+ return exports.PUBLIC_ROLE;
41
+ }
42
+ const role = introspection.roles.find((r) => r.rolname === name);
43
+ if (!role) {
44
+ throw new Error(`Could not find role with name '${name}'`);
45
+ }
46
+ return role;
47
+ }
48
+ /**
49
+ * Parses a role identifier from an ACL string.
50
+ *
51
+ * 'foo' becomes 'foo'
52
+ * '"foo""mcbrew"' becomes 'foo"mcbrew'
53
+ */
54
+ const parseIdentifier = (str) => str.startsWith('"') ? str.replace(/"("?)/g, "$1") : str;
55
+ /**
56
+ * Accepts an ACL string such as `foo=arwdDxt/bar` and converts it into
57
+ * a parsed AclObject.
58
+ */
59
+ function parseAcl(aclString) {
60
+ // https://www.postgresql.org/docs/current/ddl-priv.html#PRIVILEGE-ABBREVS-TABLE
61
+ const matches = aclString.match(/^([^=]*)=([rwadDxtXUCcT*]*)\/([^=]+)$/);
62
+ if (!matches) {
63
+ throw new Error(`Could not parse ACL string '${aclString}'`);
64
+ }
65
+ const [, rawRole, permissions, rawGranter] = matches;
66
+ const role = parseIdentifier(rawRole);
67
+ const granter = parseIdentifier(rawGranter);
68
+ const select = permissions.includes("r");
69
+ const selectGrant = permissions.includes("r*");
70
+ const update = permissions.includes("w");
71
+ const updateGrant = permissions.includes("w*");
72
+ const insert = permissions.includes("a");
73
+ const insertGrant = permissions.includes("a*");
74
+ const del = permissions.includes("d");
75
+ const deleteGrant = permissions.includes("d*");
76
+ const truncate = permissions.includes("D");
77
+ const truncateGrant = permissions.includes("D*");
78
+ const references = permissions.includes("x");
79
+ const referencesGrant = permissions.includes("x*");
80
+ const trigger = permissions.includes("t");
81
+ const triggerGrant = permissions.includes("t*");
82
+ const execute = permissions.includes("X");
83
+ const executeGrant = permissions.includes("X*");
84
+ const usage = permissions.includes("U");
85
+ const usageGrant = permissions.includes("U*");
86
+ const create = permissions.includes("C");
87
+ const createGrant = permissions.includes("C*");
88
+ const connect = permissions.includes("c");
89
+ const connectGrant = permissions.includes("c*");
90
+ const temporary = permissions.includes("T");
91
+ const temporaryGrant = permissions.includes("T*");
92
+ const acl = {
93
+ role: role || "public",
94
+ granter,
95
+ select,
96
+ selectGrant,
97
+ update,
98
+ updateGrant,
99
+ insert,
100
+ insertGrant,
101
+ delete: del,
102
+ deleteGrant,
103
+ truncate,
104
+ truncateGrant,
105
+ references,
106
+ referencesGrant,
107
+ trigger,
108
+ triggerGrant,
109
+ execute,
110
+ executeGrant,
111
+ usage,
112
+ usageGrant,
113
+ create,
114
+ createGrant,
115
+ connect,
116
+ connectGrant,
117
+ temporary,
118
+ temporaryGrant,
119
+ };
120
+ return acl;
121
+ }
122
+ exports.parseAcl = parseAcl;
123
+ /**
124
+ * Takes an `AclObject` and converts it back into a Postgres ACL string such as
125
+ * `foo=arwdDxt/bar`
126
+ */
127
+ function serializeAcl(acl) {
128
+ let permissions = (acl.role === "public" ? "" : acl.role) + "=";
129
+ if (acl.selectGrant)
130
+ permissions += "r*";
131
+ else if (acl.select)
132
+ permissions += "r";
133
+ if (acl.updateGrant)
134
+ permissions += "w*";
135
+ else if (acl.update)
136
+ permissions += "w";
137
+ if (acl.insertGrant)
138
+ permissions += "a*";
139
+ else if (acl.insert)
140
+ permissions += "a";
141
+ if (acl.deleteGrant)
142
+ permissions += "d*";
143
+ else if (acl.delete)
144
+ permissions += "d";
145
+ if (acl.truncateGrant)
146
+ permissions += "D*";
147
+ else if (acl.truncate)
148
+ permissions += "D";
149
+ if (acl.referencesGrant)
150
+ permissions += "x*";
151
+ else if (acl.references)
152
+ permissions += "x";
153
+ if (acl.triggerGrant)
154
+ permissions += "t*";
155
+ else if (acl.trigger)
156
+ permissions += "t";
157
+ if (acl.executeGrant)
158
+ permissions += "X*";
159
+ else if (acl.execute)
160
+ permissions += "X";
161
+ if (acl.usageGrant)
162
+ permissions += "U*";
163
+ else if (acl.usage)
164
+ permissions += "U";
165
+ if (acl.createGrant)
166
+ permissions += "C*";
167
+ else if (acl.create)
168
+ permissions += "C";
169
+ if (acl.connectGrant)
170
+ permissions += "c*";
171
+ else if (acl.connect)
172
+ permissions += "c";
173
+ if (acl.temporaryGrant)
174
+ permissions += "T*";
175
+ else if (acl.temporary)
176
+ permissions += "T";
177
+ permissions += `/${acl.granter}`;
178
+ return permissions;
179
+ }
180
+ exports.serializeAcl = serializeAcl;
181
+ exports.emptyAclObject = parseAcl("=/postgres");
182
+ exports.OBJECT_COLUMN = "OBJECT_COLUMN";
183
+ exports.OBJECT_TABLE = "OBJECT_TABLE";
184
+ exports.OBJECT_SEQUENCE = "OBJECT_SEQUENCE";
185
+ exports.OBJECT_DATABASE = "OBJECT_DATABASE";
186
+ exports.OBJECT_FUNCTION = "OBJECT_FUNCTION";
187
+ exports.OBJECT_LANGUAGE = "OBJECT_LANGUAGE";
188
+ exports.OBJECT_LARGEOBJECT = "OBJECT_LARGEOBJECT";
189
+ exports.OBJECT_SCHEMA = "OBJECT_SCHEMA";
190
+ exports.OBJECT_TABLESPACE = "OBJECT_TABLESPACE";
191
+ exports.OBJECT_FDW = "OBJECT_FDW";
192
+ exports.OBJECT_FOREIGN_SERVER = "OBJECT_FOREIGN_SERVER";
193
+ exports.OBJECT_DOMAIN = "OBJECT_DOMAIN";
194
+ exports.OBJECT_TYPE = "OBJECT_TYPE";
195
+ /**
196
+ * Returns a list of AclObject by parsing the given input ACL strings. If no
197
+ * ACL strings are present then it will return the default (implied) ACL for
198
+ * the given `type` of entity owned by `ownerId`.
199
+ *
200
+ * See:
201
+ *
202
+ * https://github.com/postgres/postgres/blob/14aec03502302eff6c67981d8fd121175c436ce9/src/backend/utils/adt/acl.c#L748-L854
203
+ *
204
+ * and:
205
+ *
206
+ * https://github.com/postgres/postgres/blob/fb3b098fe88441f9531a5169008ea17eac01301f/src/include/utils/acl.h#L153-L167
207
+ */
208
+ function parseAcls(introspection, inAcls, ownerId, type) {
209
+ const aclStrings = inAcls ||
210
+ (() => {
211
+ const owner = getRole(introspection, ownerId);
212
+ switch (type) {
213
+ case exports.OBJECT_TABLE:
214
+ return [`${owner.rolname}=arwdDxt/${owner.rolname}`];
215
+ case exports.OBJECT_SEQUENCE:
216
+ return [`${owner.rolname}=Urw/${owner.rolname}`];
217
+ case exports.OBJECT_DATABASE:
218
+ return [
219
+ `=Tc/${owner.rolname}`,
220
+ `${owner.rolname}=CTc/${owner.rolname}`,
221
+ ];
222
+ case exports.OBJECT_FUNCTION:
223
+ return [`=X/${owner.rolname}`, `${owner.rolname}=X/${owner.rolname}`];
224
+ case exports.OBJECT_LANGUAGE:
225
+ return [`=U/${owner.rolname}`, `${owner.rolname}=U/${owner.rolname}`];
226
+ case exports.OBJECT_LARGEOBJECT:
227
+ return [`${owner.rolname}=rw/${owner.rolname}`];
228
+ case exports.OBJECT_SCHEMA:
229
+ return [`${owner.rolname}=UC/${owner.rolname}`];
230
+ case exports.OBJECT_TABLESPACE:
231
+ return [`${owner.rolname}=C/${owner.rolname}`];
232
+ case exports.OBJECT_FDW:
233
+ return [`${owner.rolname}=U/${owner.rolname}`];
234
+ case exports.OBJECT_FOREIGN_SERVER:
235
+ return [`${owner.rolname}=U/${owner.rolname}`];
236
+ case exports.OBJECT_DOMAIN:
237
+ case exports.OBJECT_TYPE:
238
+ return [`=U/${owner.rolname}`, `${owner.rolname}=U/${owner.rolname}`];
239
+ default:
240
+ return [];
241
+ }
242
+ })();
243
+ const acls = aclStrings.map((aclString) => parseAcl(aclString));
244
+ return acls;
245
+ }
246
+ exports.parseAcls = parseAcls;
247
+ // Forewarning: I hate TypeScript enums. Your PR to convert this to a
248
+ // TypeScript enum will be rejected.
249
+ exports.Permission = {
250
+ select: "select",
251
+ selectGrant: "selectGrant",
252
+ update: "update",
253
+ updateGrant: "updateGrant",
254
+ insert: "insert",
255
+ insertGrant: "insertGrant",
256
+ delete: "delete",
257
+ deleteGrant: "deleteGrant",
258
+ truncate: "truncate",
259
+ truncateGrant: "truncateGrant",
260
+ references: "references",
261
+ referencesGrant: "referencesGrant",
262
+ trigger: "trigger",
263
+ triggerGrant: "triggerGrant",
264
+ execute: "execute",
265
+ executeGrant: "executeGrant",
266
+ usage: "usage",
267
+ usageGrant: "usageGrant",
268
+ create: "create",
269
+ createGrant: "createGrant",
270
+ connect: "connect",
271
+ connectGrant: "connectGrant",
272
+ temporary: "temporary",
273
+ temporaryGrant: "temporaryGrant",
274
+ };
275
+ /*
276
+ * For default permissions, see:
277
+ * https://github.com/postgres/postgres/blob/14aec03502302eff6c67981d8fd121175c436ce9/src/backend/utils/adt/acl.c#L748-L854
278
+ *
279
+ * For what the privileges mean, see:
280
+ * https://www.postgresql.org/docs/current/ddl-priv.html#PRIVILEGE-ABBREVS-TABLE
281
+ */
282
+ function aclsForTable(introspection, table) {
283
+ const dbOwner = getRole(introspection, introspection.database.datdba);
284
+ const isSequence = table.relkind === "S";
285
+ const tableOwner = getRole(introspection, table.relowner);
286
+ const defaultAcl = isSequence
287
+ ? [`${tableOwner.rolname}=/${dbOwner.rolname}`]
288
+ : [`=/${dbOwner.rolname}`, `${dbOwner.rolname}=/${dbOwner.rolname}`];
289
+ const acls = (table.relacl || defaultAcl).map((aclString) => parseAcl(aclString));
290
+ return acls;
291
+ }
292
+ exports.aclsForTable = aclsForTable;
293
+ /**
294
+ * Returns all the roles role has been granted (including PUBLIC),
295
+ * respecting `NOINHERIT`
296
+ */
297
+ function expandRoles(introspection, roles, includeNoInherit = false) {
298
+ const allRoles = [exports.PUBLIC_ROLE];
299
+ const addRole = (member) => {
300
+ if (!allRoles.includes(member)) {
301
+ allRoles.push(member);
302
+ if (includeNoInherit || member.rolinherit !== false) {
303
+ introspection.auth_members.forEach((am) => {
304
+ // auth_members - role `am.member` gains the privileges of
305
+ // `am.roleid`
306
+ if (am.member === member._id) {
307
+ const rol = getRole(introspection, am.roleid);
308
+ addRole(rol);
309
+ }
310
+ });
311
+ }
312
+ }
313
+ };
314
+ roles.forEach(addRole);
315
+ return allRoles;
316
+ }
317
+ exports.expandRoles = expandRoles;
318
+ /**
319
+ * Returns true if ACL was applied to this role, or a role that this role
320
+ * inherits from (including public).
321
+ *
322
+ * i.e. does this ACL grant privileges to this role (directly or indirectly)?
323
+ *
324
+ * In Venn diagram terms, it asks if the 'role' is contained within (or equal to)
325
+ * the acl.role.
326
+ */
327
+ function aclContainsRole(introspection, acl, role, includeNoInherit = false) {
328
+ const aclRole = getRoleByName(introspection, acl.role);
329
+ const expandedRoles = expandRoles(introspection, [role], includeNoInherit);
330
+ return expandedRoles.includes(aclRole);
331
+ }
332
+ exports.aclContainsRole = aclContainsRole;
333
+ /**
334
+ * Filters the ACL objects to only those that apply to `role`, then calculates
335
+ * the `OR` of all the permissions to see what permissions the role has.
336
+ */
337
+ function resolvePermissions(introspection, acls, role, includeNoInherit = false) {
338
+ // Just as in life, you start with nothing...
339
+ const permissions = {
340
+ select: false,
341
+ selectGrant: false,
342
+ update: false,
343
+ updateGrant: false,
344
+ insert: false,
345
+ insertGrant: false,
346
+ delete: false,
347
+ deleteGrant: false,
348
+ truncate: false,
349
+ truncateGrant: false,
350
+ references: false,
351
+ referencesGrant: false,
352
+ trigger: false,
353
+ triggerGrant: false,
354
+ execute: false,
355
+ executeGrant: false,
356
+ usage: false,
357
+ usageGrant: false,
358
+ create: false,
359
+ createGrant: false,
360
+ connect: false,
361
+ connectGrant: false,
362
+ temporary: false,
363
+ temporaryGrant: false,
364
+ };
365
+ for (const acl of acls) {
366
+ const appliesToRole = aclContainsRole(introspection, acl, role, includeNoInherit);
367
+ if (appliesToRole) {
368
+ permissions.select = permissions.select || acl.select;
369
+ permissions.selectGrant = permissions.selectGrant || acl.selectGrant;
370
+ permissions.update = permissions.update || acl.update;
371
+ permissions.updateGrant = permissions.updateGrant || acl.updateGrant;
372
+ permissions.insert = permissions.insert || acl.insert;
373
+ permissions.insertGrant = permissions.insertGrant || acl.insertGrant;
374
+ permissions.delete = permissions.delete || acl.delete;
375
+ permissions.deleteGrant = permissions.deleteGrant || acl.deleteGrant;
376
+ permissions.truncate = permissions.truncate || acl.truncate;
377
+ permissions.truncateGrant =
378
+ permissions.truncateGrant || acl.truncateGrant;
379
+ permissions.references = permissions.references || acl.references;
380
+ permissions.referencesGrant =
381
+ permissions.referencesGrant || acl.referencesGrant;
382
+ permissions.trigger = permissions.trigger || acl.trigger;
383
+ permissions.triggerGrant = permissions.triggerGrant || acl.triggerGrant;
384
+ permissions.execute = permissions.execute || acl.execute;
385
+ permissions.executeGrant = permissions.executeGrant || acl.executeGrant;
386
+ permissions.usage = permissions.usage || acl.usage;
387
+ permissions.usageGrant = permissions.usageGrant || acl.usageGrant;
388
+ permissions.create = permissions.create || acl.create;
389
+ permissions.createGrant = permissions.createGrant || acl.createGrant;
390
+ permissions.connect = permissions.connect || acl.connect;
391
+ permissions.connectGrant = permissions.connectGrant || acl.connectGrant;
392
+ permissions.temporary = permissions.temporary || acl.temporary;
393
+ permissions.temporaryGrant =
394
+ permissions.temporaryGrant || acl.temporaryGrant;
395
+ }
396
+ }
397
+ return permissions;
398
+ }
399
+ exports.resolvePermissions = resolvePermissions;
400
+ //# sourceMappingURL=acl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acl.js","sourceRoot":"","sources":["../src/acl.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { Introspection } from "./introspection.js";
2
+ /**
3
+ * Adds helpers to the introspection results.
4
+ */
5
+ export declare function augmentIntrospection(introspectionResultsString: string, includeExtensionResources?: boolean): Introspection;
6
+ //# sourceMappingURL=augmentIntrospection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"augmentIntrospection.d.ts","sourceRoot":"","sources":["../src/augmentIntrospection.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,aAAa,EAWd,MAAM,oBAAoB,CAAC;AAgC5B;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,0BAA0B,EAAE,MAAM,EAClC,yBAAyB,UAAQ,GAChC,aAAa,CA+Yf"}