@nest-boot/row-level-security 7.3.1 → 8.0.0-beta.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/decorators/policy.decorator.d.ts +4 -4
- package/dist/decorators/policy.decorator.js +25 -31
- package/dist/decorators/policy.decorator.js.map +1 -1
- package/dist/enums/policy-command.enum.js +2 -5
- package/dist/enums/policy-command.enum.js.map +1 -1
- package/dist/enums/policy-mode.enum.js +2 -5
- package/dist/enums/policy-mode.enum.js.map +1 -1
- package/dist/enums/row-level-security-role.enum.js +2 -5
- package/dist/enums/row-level-security-role.enum.js.map +1 -1
- package/dist/index.d.ts +11 -11
- package/dist/index.js +11 -27
- package/dist/index.js.map +1 -1
- package/dist/interfaces/index.d.ts +4 -4
- package/dist/interfaces/index.js +3 -19
- package/dist/interfaces/index.js.map +1 -1
- package/dist/interfaces/policy-metadata.interface.d.ts +2 -2
- package/dist/interfaces/policy-metadata.interface.js +1 -2
- package/dist/interfaces/policy-options.interface.d.ts +2 -2
- package/dist/interfaces/policy-options.interface.js +1 -2
- package/dist/interfaces/policy-sql-options.interface.d.ts +2 -2
- package/dist/interfaces/policy-sql-options.interface.js +1 -2
- package/dist/interfaces/row-level-security-migration-generator.interface.d.ts +1 -1
- package/dist/interfaces/row-level-security-migration-generator.interface.js +1 -2
- package/dist/row-level-security-driver.d.ts +4 -3
- package/dist/row-level-security-driver.js +8 -19
- package/dist/row-level-security-driver.js.map +1 -1
- package/dist/row-level-security-migration-generator.d.ts +1 -1
- package/dist/row-level-security-migration-generator.js +40 -41
- package/dist/row-level-security-migration-generator.js.map +1 -1
- package/dist/row-level-security-migration.d.ts +1 -1
- package/dist/row-level-security-migration.js +9 -13
- package/dist/row-level-security-migration.js.map +1 -1
- package/dist/row-level-security-migrator.d.ts +2 -2
- package/dist/row-level-security-migrator.js +9 -13
- package/dist/row-level-security-migrator.js.map +1 -1
- package/dist/row-level-security.d.ts +1 -1
- package/dist/row-level-security.js +19 -23
- package/dist/row-level-security.js.map +1 -1
- package/dist/utils/assert-identifier.js +1 -4
- package/dist/utils/assert-identifier.js.map +1 -1
- package/dist/utils/assert-snake-case.js +1 -4
- package/dist/utils/assert-snake-case.js.map +1 -1
- package/dist/utils/create-policy-bootstrap-sql-statements.js +1 -4
- package/dist/utils/create-policy-bootstrap-sql-statements.js.map +1 -1
- package/dist/utils/create-policy-down-sql.d.ts +1 -1
- package/dist/utils/create-policy-down-sql.js +5 -8
- package/dist/utils/create-policy-down-sql.js.map +1 -1
- package/dist/utils/create-policy-privilege-down-sql-statements.d.ts +1 -1
- package/dist/utils/create-policy-privilege-down-sql-statements.js +19 -22
- package/dist/utils/create-policy-privilege-down-sql-statements.js.map +1 -1
- package/dist/utils/create-policy-role-sql-statements.js +8 -13
- package/dist/utils/create-policy-role-sql-statements.js.map +1 -1
- package/dist/utils/create-policy-up-sql-statements.d.ts +1 -1
- package/dist/utils/create-policy-up-sql-statements.js +26 -29
- package/dist/utils/create-policy-up-sql-statements.js.map +1 -1
- package/dist/utils/create-row-level-security-transaction-setup.js +15 -18
- package/dist/utils/create-row-level-security-transaction-setup.js.map +1 -1
- package/dist/utils/escape-sql-literal.js +1 -4
- package/dist/utils/escape-sql-literal.js.map +1 -1
- package/dist/utils/index.d.ts +12 -12
- package/dist/utils/index.js +11 -27
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/is-postgres-keyword-requiring-quote.js +1 -4
- package/dist/utils/is-postgres-keyword-requiring-quote.js.map +1 -1
- package/dist/utils/normalize-postgres-type-alias.util.js +1 -4
- package/dist/utils/normalize-postgres-type-alias.util.js.map +1 -1
- package/dist/utils/quote-identifier.js +3 -6
- package/dist/utils/quote-identifier.js.map +1 -1
- package/dist/utils/quote-qualified-identifier.js +3 -6
- package/dist/utils/quote-qualified-identifier.js.map +1 -1
- package/dist/utils/row-level-security-context-builder.d.ts +1 -1
- package/dist/utils/row-level-security-context-builder.js +7 -13
- package/dist/utils/row-level-security-context-builder.js.map +1 -1
- package/dist/utils/row-level-security-context-builder.types.js +1 -2
- package/package.json +31 -31
- package/dist/decorators/policy.decorator.spec.d.ts +0 -1
- package/dist/decorators/policy.decorator.spec.js +0 -550
- package/dist/decorators/policy.decorator.spec.js.map +0 -1
- package/dist/index.spec.d.ts +0 -1
- package/dist/index.spec.js +0 -64
- package/dist/index.spec.js.map +0 -1
- package/dist/row-level-security-driver.spec.d.ts +0 -1
- package/dist/row-level-security-driver.spec.js +0 -267
- package/dist/row-level-security-driver.spec.js.map +0 -1
- package/dist/row-level-security-migration-generator.spec.d.ts +0 -1
- package/dist/row-level-security-migration-generator.spec.js +0 -1135
- package/dist/row-level-security-migration-generator.spec.js.map +0 -1
- package/dist/row-level-security-migration.spec.d.ts +0 -1
- package/dist/row-level-security-migration.spec.js +0 -32
- package/dist/row-level-security-migration.spec.js.map +0 -1
- package/dist/row-level-security.spec.d.ts +0 -1
- package/dist/row-level-security.spec.js +0 -52
- package/dist/row-level-security.spec.js.map +0 -1
- package/dist/tsconfig.build.tsbuildinfo +0 -1
- package/dist/utils/normalize-postgres-type-alias.spec.d.ts +0 -1
- package/dist/utils/normalize-postgres-type-alias.spec.js +0 -28
- package/dist/utils/normalize-postgres-type-alias.spec.js.map +0 -1
- package/dist/utils/policy-migration-sql.spec.d.ts +0 -1
- package/dist/utils/policy-migration-sql.spec.js +0 -273
- package/dist/utils/policy-migration-sql.spec.js.map +0 -1
- package/dist/utils/row-level-security-context-builder.spec.d.ts +0 -1
- package/dist/utils/row-level-security-context-builder.spec.js +0 -40
- package/dist/utils/row-level-security-context-builder.spec.js.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { PolicyEntityMetadata, PolicyMetadata, PolicyMetadataEntry } from "../interfaces/policy-metadata.interface";
|
|
2
|
-
import type { PolicyOptions } from "../interfaces/policy-options.interface";
|
|
3
|
-
export type { PolicyEntityMetadata, PolicyEntityPropertyMetadata, PolicyEntityTargetMetadata, PolicyMetadata, PolicyMetadataEntry, PolicyMetadataFactory, } from "../interfaces/policy-metadata.interface";
|
|
4
|
-
export type { PolicyOptions } from "../interfaces/policy-options.interface";
|
|
1
|
+
import type { PolicyEntityMetadata, PolicyMetadata, PolicyMetadataEntry } from "../interfaces/policy-metadata.interface.js";
|
|
2
|
+
import type { PolicyOptions } from "../interfaces/policy-options.interface.js";
|
|
3
|
+
export type { PolicyEntityMetadata, PolicyEntityPropertyMetadata, PolicyEntityTargetMetadata, PolicyMetadata, PolicyMetadataEntry, PolicyMetadataFactory, } from "../interfaces/policy-metadata.interface.js";
|
|
4
|
+
export type { PolicyOptions } from "../interfaces/policy-options.interface.js";
|
|
5
5
|
/**
|
|
6
6
|
* Attaches PostgreSQL row-level security policy metadata to an entity class.
|
|
7
7
|
*
|
|
@@ -1,16 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const policy_mode_enum_1 = require("../enums/policy-mode.enum");
|
|
9
|
-
const assert_identifier_1 = require("../utils/assert-identifier");
|
|
10
|
-
const escape_sql_literal_1 = require("../utils/escape-sql-literal");
|
|
11
|
-
const is_postgres_keyword_requiring_quote_1 = require("../utils/is-postgres-keyword-requiring-quote");
|
|
12
|
-
const normalize_postgres_type_alias_util_1 = require("../utils/normalize-postgres-type-alias.util");
|
|
13
|
-
const quote_identifier_1 = require("../utils/quote-identifier");
|
|
1
|
+
import { PolicyCommand } from "../enums/policy-command.enum.js";
|
|
2
|
+
import { PolicyMode } from "../enums/policy-mode.enum.js";
|
|
3
|
+
import { assertIdentifier } from "../utils/assert-identifier.js";
|
|
4
|
+
import { escapeSqlLiteral } from "../utils/escape-sql-literal.js";
|
|
5
|
+
import { isPostgresKeywordRequiringQuote } from "../utils/is-postgres-keyword-requiring-quote.js";
|
|
6
|
+
import { normalizePostgresTypeAlias } from "../utils/normalize-postgres-type-alias.util.js";
|
|
7
|
+
import { quoteIdentifier } from "../utils/quote-identifier.js";
|
|
14
8
|
const policyMetadata = new WeakMap();
|
|
15
9
|
/**
|
|
16
10
|
* Attaches PostgreSQL row-level security policy metadata to an entity class.
|
|
@@ -19,9 +13,9 @@ const policyMetadata = new WeakMap();
|
|
|
19
13
|
* `USING` and `WITH CHECK` expressions that compare the mapped database column
|
|
20
14
|
* against a transaction-local PostgreSQL setting read via `current_setting`.
|
|
21
15
|
*/
|
|
22
|
-
function Policy(options) {
|
|
16
|
+
export function Policy(options) {
|
|
23
17
|
const name = normalizeOption(options.name, "Policy name is required");
|
|
24
|
-
const command = options.command ??
|
|
18
|
+
const command = options.command ?? PolicyCommand.ALL;
|
|
25
19
|
const property = normalizeOption(options.property, "Policy property is required");
|
|
26
20
|
const context = normalizeOption(options.context, "Policy context is required");
|
|
27
21
|
const using = normalizeExpression(options.using);
|
|
@@ -33,7 +27,7 @@ function Policy(options) {
|
|
|
33
27
|
return (target) => {
|
|
34
28
|
const roles = options.roles ?? [];
|
|
35
29
|
const metadata = {
|
|
36
|
-
mode: options.mode ??
|
|
30
|
+
mode: options.mode ?? PolicyMode.PERMISSIVE,
|
|
37
31
|
command,
|
|
38
32
|
roles,
|
|
39
33
|
};
|
|
@@ -58,15 +52,15 @@ function Policy(options) {
|
|
|
58
52
|
};
|
|
59
53
|
}
|
|
60
54
|
/** Returns static policy metadata entries already attached to a class. */
|
|
61
|
-
function getPolicyMetadata(target) {
|
|
55
|
+
export function getPolicyMetadata(target) {
|
|
62
56
|
return getPolicyMetadataEntries(target).filter(isPolicyMetadata);
|
|
63
57
|
}
|
|
64
58
|
/** Resolves all policy metadata entries for a class using concrete entity metadata. */
|
|
65
|
-
function getPolicyDefinitions(target, entityMetadata) {
|
|
59
|
+
export function getPolicyDefinitions(target, entityMetadata) {
|
|
66
60
|
return getPolicyMetadataEntries(target).map((metadata) => typeof metadata === "function" ? metadata(entityMetadata) : metadata);
|
|
67
61
|
}
|
|
68
62
|
/** Adds a raw policy metadata entry to a class. */
|
|
69
|
-
function addPolicyMetadata(target, metadata) {
|
|
63
|
+
export function addPolicyMetadata(target, metadata) {
|
|
70
64
|
policyMetadata.set(target, [...getPolicyMetadataEntries(target), metadata]);
|
|
71
65
|
}
|
|
72
66
|
function normalizeExpression(expression) {
|
|
@@ -93,12 +87,12 @@ function assertPolicyContextOptions(property, context) {
|
|
|
93
87
|
}
|
|
94
88
|
function assertPolicyPredicates(command, using, withCheck, hasGeneratedExpression) {
|
|
95
89
|
const hasUsing = Boolean(using) ||
|
|
96
|
-
(hasGeneratedExpression && command !==
|
|
90
|
+
(hasGeneratedExpression && command !== PolicyCommand.INSERT);
|
|
97
91
|
const hasWithCheck = Boolean(withCheck) ||
|
|
98
92
|
(hasGeneratedExpression &&
|
|
99
|
-
command !==
|
|
100
|
-
command !==
|
|
101
|
-
if (command ===
|
|
93
|
+
command !== PolicyCommand.SELECT &&
|
|
94
|
+
command !== PolicyCommand.DELETE);
|
|
95
|
+
if (command === PolicyCommand.SELECT || command === PolicyCommand.DELETE) {
|
|
102
96
|
if (!hasUsing) {
|
|
103
97
|
throw new Error("Policy using expression is required");
|
|
104
98
|
}
|
|
@@ -107,7 +101,7 @@ function assertPolicyPredicates(command, using, withCheck, hasGeneratedExpressio
|
|
|
107
101
|
}
|
|
108
102
|
return;
|
|
109
103
|
}
|
|
110
|
-
if (command ===
|
|
104
|
+
if (command === PolicyCommand.INSERT) {
|
|
111
105
|
if (using) {
|
|
112
106
|
throw new Error("Policy using is not allowed for insert");
|
|
113
107
|
}
|
|
@@ -121,10 +115,10 @@ function assertPolicyPredicates(command, using, withCheck, hasGeneratedExpressio
|
|
|
121
115
|
}
|
|
122
116
|
}
|
|
123
117
|
function getGeneratedPolicyPredicates(command, expression) {
|
|
124
|
-
if (command ===
|
|
118
|
+
if (command === PolicyCommand.SELECT || command === PolicyCommand.DELETE) {
|
|
125
119
|
return { using: expression };
|
|
126
120
|
}
|
|
127
|
-
if (command ===
|
|
121
|
+
if (command === PolicyCommand.INSERT) {
|
|
128
122
|
return { withCheck: expression };
|
|
129
123
|
}
|
|
130
124
|
return {
|
|
@@ -156,15 +150,15 @@ function createPolicyContextExpression(entityMetadata, propertyName, contextName
|
|
|
156
150
|
const property = getPropertyMetadata(entityMetadata, propertyName);
|
|
157
151
|
const columnName = getPropertyColumnName(entityMetadata, propertyName, property);
|
|
158
152
|
const contextType = getPropertyContextType(entityMetadata, propertyName, property);
|
|
159
|
-
return `((select current_setting('app.${
|
|
153
|
+
return `((select current_setting('app.${escapeSqlLiteral(contextName)}', true)::${contextType}) = ${formatDeparsedIdentifier(columnName)})`;
|
|
160
154
|
}
|
|
161
155
|
function formatDeparsedIdentifier(identifier) {
|
|
162
|
-
|
|
156
|
+
assertIdentifier(identifier);
|
|
163
157
|
if (/^[a-z_][a-z0-9_]*$/.test(identifier) &&
|
|
164
|
-
!
|
|
158
|
+
!isPostgresKeywordRequiringQuote(identifier)) {
|
|
165
159
|
return identifier;
|
|
166
160
|
}
|
|
167
|
-
return
|
|
161
|
+
return quoteIdentifier(identifier);
|
|
168
162
|
}
|
|
169
163
|
function getPropertyMetadata(entityMetadata, propertyName) {
|
|
170
164
|
const property = entityMetadata.properties?.[propertyName];
|
|
@@ -227,7 +221,7 @@ function normalizePostgresType(entityMetadata, propertyName, postgresType) {
|
|
|
227
221
|
if (!/^[A-Za-z0-9_."()[\],\s[\]]+$/.test(normalized)) {
|
|
228
222
|
throw new Error(`Policy property "${propertyName}" on entity ${entityMetadata.entityName} has an unsupported database column type: ${postgresType}`);
|
|
229
223
|
}
|
|
230
|
-
return
|
|
224
|
+
return normalizePostgresTypeAlias(normalized);
|
|
231
225
|
}
|
|
232
226
|
function mapPropertyTypeToPostgresType(propertyType) {
|
|
233
227
|
const normalized = propertyType?.trim().toLowerCase();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policy.decorator.js","sourceRoot":"","sources":["../../src/decorators/policy.decorator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"policy.decorator.js","sourceRoot":"","sources":["../../src/decorators/policy.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAO1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,+BAA+B,EAAE,MAAM,iDAAiD,CAAC;AAClG,OAAO,EAAE,0BAA0B,EAAE,MAAM,gDAAgD,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAY/D,MAAM,cAAc,GAAG,IAAI,OAAO,EAAiC,CAAC;AAEpE;;;;;;GAMG;AACH,MAAM,UAAU,MAAM,CAAC,OAAsB;IAC3C,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAAC;IACtE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,aAAa,CAAC,GAAG,CAAC;IACrD,MAAM,QAAQ,GAAG,eAAe,CAC9B,OAAO,CAAC,QAAQ,EAChB,6BAA6B,CAC9B,CAAC;IACF,MAAM,OAAO,GAAG,eAAe,CAC7B,OAAO,CAAC,OAAO,EACf,4BAA4B,CAC7B,CAAC;IACF,MAAM,KAAK,GAAG,mBAAmB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjD,MAAM,SAAS,GAAG,mBAAmB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACzD,MAAM,0BAA0B,GAC9B,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1D,MAAM,sBAAsB,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC;IAEnE,0BAA0B,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC9C,sBAAsB,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,sBAAsB,CAAC,CAAC;IAE1E,OAAO,CAAC,MAAM,EAAE,EAAE;QAChB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG;YACf,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,UAAU,CAAC,UAAU;YAC3C,OAAO;YACP,KAAK;SACN,CAAC;QACF,MAAM,sBAAsB,GAAG,CAAC,cAAoC,EAAE,EAAE,CAAC,CAAC;YACxE,IAAI,EACF,IAAI;gBACJ,uBAAuB,CAAC,cAAc,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC;YACnE,GAAG,QAAQ;YACX,GAAG,CAAC,0BAA0B;gBAC5B,CAAC,CAAC,4BAA4B,CAC1B,OAAO,EACP,6BAA6B,CAC3B,cAAc,EACd,0BAA0B,CAAC,QAAQ,EACnC,0BAA0B,CAAC,OAAO,CACnC,CACF;gBACH,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3B,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACpC,CAAC,CAAC;QAEH,iBAAiB,CACf,MAAM,EACN,CAAC,IAAI,IAAI,sBAAsB;YAC7B,CAAC,CAAC,sBAAsB;YACxB,CAAC,CAAC;gBACE,IAAI;gBACJ,GAAG,QAAQ;gBACX,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3B,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACpC,CACN,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,iBAAiB,CAAC,MAAc;IAC9C,OAAO,wBAAwB,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;AACnE,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,oBAAoB,CAClC,MAAc,EACd,cAAoC;IAEpC,OAAO,wBAAwB,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CACvD,OAAO,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,QAAQ,CACrE,CAAC;AACJ,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,iBAAiB,CAC/B,MAAc,EACd,QAA6B;IAE7B,cAAc,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,wBAAwB,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,mBAAmB,CAAC,UAA8B;IACzD,MAAM,UAAU,GAAG,UAAU,EAAE,IAAI,EAAE,CAAC;IAEtC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,eAAe,CAAC,KAAyB,EAAE,YAAoB;IACtE,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAEhC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,0BAA0B,CACjC,QAA4B,EAC5B,OAA2B;IAE3B,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAC7B,OAAsB,EACtB,KAAyB,EACzB,SAA6B,EAC7B,sBAA+B;IAE/B,MAAM,QAAQ,GACZ,OAAO,CAAC,KAAK,CAAC;QACd,CAAC,sBAAsB,IAAI,OAAO,KAAK,aAAa,CAAC,MAAM,CAAC,CAAC;IAC/D,MAAM,YAAY,GAChB,OAAO,CAAC,SAAS,CAAC;QAClB,CAAC,sBAAsB;YACrB,OAAO,KAAK,aAAa,CAAC,MAAM;YAChC,OAAO,KAAK,aAAa,CAAC,MAAM,CAAC,CAAC;IAEtC,IAAI,OAAO,KAAK,aAAa,CAAC,MAAM,IAAI,OAAO,KAAK,aAAa,CAAC,MAAM,EAAE,CAAC;QACzE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;QAED,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,uCAAuC,OAAO,EAAE,CAAC,CAAC;QACpE,CAAC;QAED,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,aAAa,CAAC,MAAM,EAAE,CAAC;QACrC,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC7D,CAAC;QAED,OAAO;IACT,CAAC;IAED,IAAI,CAAC,QAAQ,IAAI,CAAC,YAAY,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;AACH,CAAC;AAED,SAAS,4BAA4B,CACnC,OAAsB,EACtB,UAAkB;IAElB,IAAI,OAAO,KAAK,aAAa,CAAC,MAAM,IAAI,OAAO,KAAK,aAAa,CAAC,MAAM,EAAE,CAAC;QACzE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;IAC/B,CAAC;IAED,IAAI,OAAO,KAAK,aAAa,CAAC,MAAM,EAAE,CAAC;QACrC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;IACnC,CAAC;IAED,OAAO;QACL,KAAK,EAAE,UAAU;QACjB,SAAS,EAAE,UAAU;KACtB,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB,CAC9B,cAAoC,EACpC,OAAsB,EACtB,YAAgC,EAChC,KAAe;IAEf,OAAO;QACL,cAAc,CAAC,SAAS;QACxB,YAAY;QACZ,OAAO;QACP,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE;QACpB,QAAQ;KACT;SACE,MAAM,CAAC,OAAO,CAAC;SACf,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;SAClD,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAa;IAC1C,OAAO,KAAK;SACT,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC;SACtC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC;SAC/B,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,WAAW,EAAE,CAAC;AACnB,CAAC;AAED,SAAS,6BAA6B,CACpC,cAAoC,EACpC,YAAoB,EACpB,WAAmB;IAEnB,MAAM,QAAQ,GAAG,mBAAmB,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;IACnE,MAAM,UAAU,GAAG,qBAAqB,CACtC,cAAc,EACd,YAAY,EACZ,QAAQ,CACT,CAAC;IACF,MAAM,WAAW,GAAG,sBAAsB,CACxC,cAAc,EACd,YAAY,EACZ,QAAQ,CACT,CAAC;IAEF,OAAO,iCAAiC,gBAAgB,CAAC,WAAW,CAAC,aAAa,WAAW,OAAO,wBAAwB,CAAC,UAAU,CAAC,GAAG,CAAC;AAC9I,CAAC;AAED,SAAS,wBAAwB,CAAC,UAAkB;IAClD,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAE7B,IACE,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC;QACrC,CAAC,+BAA+B,CAAC,UAAU,CAAC,EAC5C,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,OAAO,eAAe,CAAC,UAAU,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,mBAAmB,CAC1B,cAAoC,EACpC,YAAoB;IAEpB,MAAM,QAAQ,GAAG,cAAc,CAAC,UAAU,EAAE,CAAC,YAAY,CAAC,CAAC;IAE3D,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CACb,oBAAoB,YAAY,6BAA6B,cAAc,CAAC,UAAU,EAAE,CACzF,CAAC;IACJ,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,qBAAqB,CAC5B,cAAoC,EACpC,YAAoB,EACpB,QAAiE;IAEjE,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,IAAI,EAAE,CAAC;IAC7C,MAAM,UAAU,GAAG,QAAQ,CAAC,SAAS,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;IAEvD,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CACb,oBAAoB,YAAY,eAAe,cAAc,CAAC,UAAU,8CAA8C,CACvH,CAAC;IACJ,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,sBAAsB,CAC7B,cAAoC,EACpC,YAAoB,EACpB,QAAiE;IAEjE,MAAM,wBAAwB,GAAG,2BAA2B,CAC1D,cAAc,EACd,YAAY,EACZ,QAAQ,CACT,CAAC;IAEF,IAAI,wBAAwB,EAAE,CAAC;QAC7B,OAAO,4BAA4B,CACjC,cAAc,EACd,YAAY,EACZ,wBAAwB,CACzB,CAAC;IACJ,CAAC;IAED,OAAO,4BAA4B,CAAC,cAAc,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,2BAA2B,CAClC,cAAoC,EACpC,YAAoB,EACpB,QAAiE;IAEjE,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;IAEvC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,WAAW,GACf,UAAU,CAAC,WAAW;QACtB,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,IAAI,EAAE,CAAC;aACxC,MAAM,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC;aACtD,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC;IAEvD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CACb,oBAAoB,YAAY,eAAe,cAAc,CAAC,UAAU,qDAAqD,CAC9H,CAAC;IACJ,CAAC;IAED,MAAM,kBAAkB,GAAG,UAAU,CAAC,UAAU,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAEnE,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CACb,oBAAoB,YAAY,eAAe,cAAc,CAAC,UAAU,0CAA0C,CACnH,CAAC;IACJ,CAAC;IAED,OAAO,kBAAkB,CAAC;AAC5B,CAAC;AAED,SAAS,4BAA4B,CACnC,cAAoC,EACpC,YAAoB,EACpB,QAAiE;IAEjE,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,IAAI,EAAE,CAAC;IAC/C,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;IAE1C,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CACb,oBAAoB,YAAY,eAAe,cAAc,CAAC,UAAU,mDAAmD,CAC5H,CAAC;IACJ,CAAC;IAED,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,qBAAqB,CAAC,cAAc,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;IACzE,CAAC;IAED,MAAM,YAAY,GAChB,6BAA6B,CAAC,QAAQ,CAAC,IAAI,CAAC;QAC5C,6BAA6B,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAEtD,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,MAAM,IAAI,KAAK,CACb,oBAAoB,YAAY,eAAe,cAAc,CAAC,UAAU,qCAAqC,CAC9G,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAC5B,cAAoC,EACpC,YAAoB,EACpB,YAAoB;IAEpB,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAE5D,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACrD,MAAM,IAAI,KAAK,CACb,oBAAoB,YAAY,eAAe,cAAc,CAAC,UAAU,6CAA6C,YAAY,EAAE,CACpI,CAAC;IACJ,CAAC;IAED,OAAO,0BAA0B,CAAC,UAAU,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,6BAA6B,CAAC,YAAgC;IACrE,MAAM,UAAU,GAAG,YAAY,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAEtD,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,QAAQ,CAAC;QACd,KAAK,YAAY;YACf,OAAO,QAAQ,CAAC;QAClB,KAAK,SAAS,CAAC;QACf,KAAK,aAAa;YAChB,OAAO,SAAS,CAAC;QACnB,KAAK,MAAM,CAAC;QACZ,KAAK,UAAU,CAAC;QAChB,KAAK,cAAc;YACjB,OAAO,0BAA0B,CAAC;QACpC,KAAK,KAAK,CAAC;QACX,KAAK,SAAS,CAAC;QACf,KAAK,QAAQ,CAAC;QACd,KAAK,YAAY;YACf,OAAO,SAAS,CAAC;QACnB,KAAK,QAAQ,CAAC;QACd,KAAK,YAAY,CAAC;QAClB,KAAK,MAAM,CAAC;QACZ,KAAK,UAAU;YACb,OAAO,MAAM,CAAC;QAChB,KAAK,MAAM,CAAC;QACZ,KAAK,UAAU;YACb,OAAO,MAAM,CAAC;QAChB;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,SAAS,wBAAwB,CAAC,MAAc;IAC9C,OAAO,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AAC1C,CAAC;AAED,SAAS,gBAAgB,CACvB,QAA6B;IAE7B,OAAO,OAAO,QAAQ,KAAK,UAAU,CAAC;AACxC,CAAC"}
|
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PolicyCommand = void 0;
|
|
4
1
|
/** PostgreSQL row-level security policy command targets. */
|
|
5
|
-
var PolicyCommand;
|
|
2
|
+
export var PolicyCommand;
|
|
6
3
|
(function (PolicyCommand) {
|
|
7
4
|
/** Applies the policy to all supported commands. */
|
|
8
5
|
PolicyCommand["ALL"] = "all";
|
|
@@ -14,5 +11,5 @@ var PolicyCommand;
|
|
|
14
11
|
PolicyCommand["UPDATE"] = "update";
|
|
15
12
|
/** Applies the policy to DELETE statements. */
|
|
16
13
|
PolicyCommand["DELETE"] = "delete";
|
|
17
|
-
})(PolicyCommand || (
|
|
14
|
+
})(PolicyCommand || (PolicyCommand = {}));
|
|
18
15
|
//# sourceMappingURL=policy-command.enum.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policy-command.enum.js","sourceRoot":"","sources":["../../src/enums/policy-command.enum.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"policy-command.enum.js","sourceRoot":"","sources":["../../src/enums/policy-command.enum.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,MAAM,CAAN,IAAY,aAWX;AAXD,WAAY,aAAa;IACvB,oDAAoD;IACpD,4BAAW,CAAA;IACX,+CAA+C;IAC/C,kCAAiB,CAAA;IACjB,+CAA+C;IAC/C,kCAAiB,CAAA;IACjB,+CAA+C;IAC/C,kCAAiB,CAAA;IACjB,+CAA+C;IAC/C,kCAAiB,CAAA;AACnB,CAAC,EAXW,aAAa,KAAb,aAAa,QAWxB"}
|
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PolicyMode = void 0;
|
|
4
1
|
/** PostgreSQL policy combination mode. */
|
|
5
|
-
var PolicyMode;
|
|
2
|
+
export var PolicyMode;
|
|
6
3
|
(function (PolicyMode) {
|
|
7
4
|
/** Allows access when any permissive policy grants it. */
|
|
8
5
|
PolicyMode["PERMISSIVE"] = "permissive";
|
|
9
6
|
/** Requires this policy to pass in addition to permissive policies. */
|
|
10
7
|
PolicyMode["RESTRICTIVE"] = "restrictive";
|
|
11
|
-
})(PolicyMode || (
|
|
8
|
+
})(PolicyMode || (PolicyMode = {}));
|
|
12
9
|
//# sourceMappingURL=policy-mode.enum.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policy-mode.enum.js","sourceRoot":"","sources":["../../src/enums/policy-mode.enum.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"policy-mode.enum.js","sourceRoot":"","sources":["../../src/enums/policy-mode.enum.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,MAAM,CAAN,IAAY,UAKX;AALD,WAAY,UAAU;IACpB,0DAA0D;IAC1D,uCAAyB,CAAA;IACzB,uEAAuE;IACvE,yCAA2B,CAAA;AAC7B,CAAC,EALW,UAAU,KAAV,UAAU,QAKrB"}
|
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.RowLevelSecurityRole = void 0;
|
|
4
1
|
/** Built-in database roles used by row-level security helpers. */
|
|
5
|
-
var RowLevelSecurityRole;
|
|
2
|
+
export var RowLevelSecurityRole;
|
|
6
3
|
(function (RowLevelSecurityRole) {
|
|
7
4
|
/** Role used for unauthenticated or public RLS access. */
|
|
8
5
|
RowLevelSecurityRole["ANONYMOUS"] = "anonymous";
|
|
9
6
|
/** Role used for authenticated RLS access. */
|
|
10
7
|
RowLevelSecurityRole["AUTHENTICATED"] = "authenticated";
|
|
11
|
-
})(RowLevelSecurityRole || (
|
|
8
|
+
})(RowLevelSecurityRole || (RowLevelSecurityRole = {}));
|
|
12
9
|
//# sourceMappingURL=row-level-security-role.enum.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"row-level-security-role.enum.js","sourceRoot":"","sources":["../../src/enums/row-level-security-role.enum.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"row-level-security-role.enum.js","sourceRoot":"","sources":["../../src/enums/row-level-security-role.enum.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,MAAM,CAAN,IAAY,oBAKX;AALD,WAAY,oBAAoB;IAC9B,0DAA0D;IAC1D,+CAAuB,CAAA;IACvB,8CAA8C;IAC9C,uDAA+B,CAAA;AACjC,CAAC,EALW,oBAAoB,KAApB,oBAAoB,QAK/B"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
export * from "./decorators/policy.decorator";
|
|
2
|
-
export * from "./enums/policy-command.enum";
|
|
3
|
-
export * from "./enums/policy-mode.enum";
|
|
4
|
-
export * from "./enums/row-level-security-role.enum";
|
|
5
|
-
export * from "./interfaces";
|
|
6
|
-
export * from "./row-level-security";
|
|
7
|
-
export * from "./row-level-security-driver";
|
|
8
|
-
export * from "./row-level-security-migration";
|
|
9
|
-
export * from "./row-level-security-migration-generator";
|
|
10
|
-
export * from "./row-level-security-migrator";
|
|
11
|
-
export * from "./utils";
|
|
1
|
+
export * from "./decorators/policy.decorator.js";
|
|
2
|
+
export * from "./enums/policy-command.enum.js";
|
|
3
|
+
export * from "./enums/policy-mode.enum.js";
|
|
4
|
+
export * from "./enums/row-level-security-role.enum.js";
|
|
5
|
+
export * from "./interfaces/index.js";
|
|
6
|
+
export * from "./row-level-security.js";
|
|
7
|
+
export * from "./row-level-security-driver.js";
|
|
8
|
+
export * from "./row-level-security-migration.js";
|
|
9
|
+
export * from "./row-level-security-migration-generator.js";
|
|
10
|
+
export * from "./row-level-security-migrator.js";
|
|
11
|
+
export * from "./utils/index.js";
|
package/dist/index.js
CHANGED
|
@@ -1,28 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./decorators/policy.decorator"), exports);
|
|
18
|
-
__exportStar(require("./enums/policy-command.enum"), exports);
|
|
19
|
-
__exportStar(require("./enums/policy-mode.enum"), exports);
|
|
20
|
-
__exportStar(require("./enums/row-level-security-role.enum"), exports);
|
|
21
|
-
__exportStar(require("./interfaces"), exports);
|
|
22
|
-
__exportStar(require("./row-level-security"), exports);
|
|
23
|
-
__exportStar(require("./row-level-security-driver"), exports);
|
|
24
|
-
__exportStar(require("./row-level-security-migration"), exports);
|
|
25
|
-
__exportStar(require("./row-level-security-migration-generator"), exports);
|
|
26
|
-
__exportStar(require("./row-level-security-migrator"), exports);
|
|
27
|
-
__exportStar(require("./utils"), exports);
|
|
1
|
+
export * from "./decorators/policy.decorator.js";
|
|
2
|
+
export * from "./enums/policy-command.enum.js";
|
|
3
|
+
export * from "./enums/policy-mode.enum.js";
|
|
4
|
+
export * from "./enums/row-level-security-role.enum.js";
|
|
5
|
+
export * from "./interfaces/index.js";
|
|
6
|
+
export * from "./row-level-security.js";
|
|
7
|
+
export * from "./row-level-security-driver.js";
|
|
8
|
+
export * from "./row-level-security-migration.js";
|
|
9
|
+
export * from "./row-level-security-migration-generator.js";
|
|
10
|
+
export * from "./row-level-security-migrator.js";
|
|
11
|
+
export * from "./utils/index.js";
|
|
28
12
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAC;AACjD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yCAAyC,CAAC;AACxD,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mCAAmC,CAAC;AAClD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,kCAAkC,CAAC;AACjD,cAAc,kBAAkB,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export * from "./policy-metadata.interface";
|
|
2
|
-
export * from "./policy-options.interface";
|
|
3
|
-
export * from "./policy-sql-options.interface";
|
|
4
|
-
export type { MigrationDiff } from "./row-level-security-migration-generator.interface";
|
|
1
|
+
export * from "./policy-metadata.interface.js";
|
|
2
|
+
export * from "./policy-options.interface.js";
|
|
3
|
+
export * from "./policy-sql-options.interface.js";
|
|
4
|
+
export type { MigrationDiff } from "./row-level-security-migration-generator.interface.js";
|
package/dist/interfaces/index.js
CHANGED
|
@@ -1,20 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./policy-metadata.interface"), exports);
|
|
18
|
-
__exportStar(require("./policy-options.interface"), exports);
|
|
19
|
-
__exportStar(require("./policy-sql-options.interface"), exports);
|
|
1
|
+
export * from "./policy-metadata.interface.js";
|
|
2
|
+
export * from "./policy-options.interface.js";
|
|
3
|
+
export * from "./policy-sql-options.interface.js";
|
|
20
4
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/interfaces/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/interfaces/index.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mCAAmC,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { PolicyCommand } from "../enums/policy-command.enum";
|
|
2
|
-
import { PolicyMode } from "../enums/policy-mode.enum";
|
|
1
|
+
import { PolicyCommand } from "../enums/policy-command.enum.js";
|
|
2
|
+
import { PolicyMode } from "../enums/policy-mode.enum.js";
|
|
3
3
|
/** Normalized policy metadata stored by the {@link Policy} decorator. */
|
|
4
4
|
export interface PolicyMetadata {
|
|
5
5
|
/** PostgreSQL policy name. */
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { PolicyCommand } from "../enums/policy-command.enum";
|
|
2
|
-
import { PolicyMode } from "../enums/policy-mode.enum";
|
|
1
|
+
import { PolicyCommand } from "../enums/policy-command.enum.js";
|
|
2
|
+
import { PolicyMode } from "../enums/policy-mode.enum.js";
|
|
3
3
|
/** Options accepted by the {@link Policy} decorator. */
|
|
4
4
|
export interface PolicyOptions {
|
|
5
5
|
/** Explicit PostgreSQL policy name. If omitted, a stable name is generated from entity metadata. */
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { PolicyCommand } from "../enums/policy-command.enum";
|
|
2
|
-
import { PolicyMode } from "../enums/policy-mode.enum";
|
|
1
|
+
import { PolicyCommand } from "../enums/policy-command.enum.js";
|
|
2
|
+
import { PolicyMode } from "../enums/policy-mode.enum.js";
|
|
3
3
|
/** Low-level inputs used to generate PostgreSQL policy SQL. */
|
|
4
4
|
export interface PolicySqlOptions {
|
|
5
5
|
/** Database schema containing the protected table. */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { PolicySqlOptions } from "./policy-sql-options.interface";
|
|
1
|
+
import type { PolicySqlOptions } from "./policy-sql-options.interface.js";
|
|
2
2
|
/** SQL diff shape passed from MikroORM to migration generators. */
|
|
3
3
|
export interface MigrationDiff {
|
|
4
4
|
/** SQL statements applied by the generated migration. */
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import type { AnyEntity, Configuration, EntityData, LoggingOptions, QueryResult, Transaction } from "@mikro-orm/core";
|
|
2
|
-
import {
|
|
1
|
+
import type { AnyEntity, Configuration, EntityData, LoggingOptions, QueryResult, RawQueryFragment, Transaction } from "@mikro-orm/core";
|
|
2
|
+
import { PostgreSqlConnection } from "@mikro-orm/postgresql";
|
|
3
|
+
import { AbstractSqlDriver, type NativeQueryBuilder } from "@mikro-orm/sql";
|
|
3
4
|
/** PostgreSQL connection that applies RLS role and context at SQL execution time. */
|
|
4
5
|
export declare class RowLevelSecurityConnection extends PostgreSqlConnection {
|
|
5
6
|
/** Applies row level security setup before delegating SQL execution to MikroORM. */
|
|
6
|
-
execute<T extends QueryResult | EntityData<AnyEntity> | EntityData<AnyEntity>[] = EntityData<AnyEntity>[]>(queryOrKnex: string |
|
|
7
|
+
execute<T extends QueryResult | EntityData<AnyEntity> | EntityData<AnyEntity>[] = EntityData<AnyEntity>[]>(queryOrKnex: string | NativeQueryBuilder | RawQueryFragment, params?: readonly unknown[], method?: "all" | "get" | "run", ctx?: Transaction, loggerContext?: LoggingOptions): Promise<T>;
|
|
7
8
|
private runInTransactionQueue;
|
|
8
9
|
private configureRowLevelSecurity;
|
|
9
10
|
private clearRowLevelSecurity;
|
|
@@ -1,16 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const postgresql_1 = require("@mikro-orm/postgresql");
|
|
5
|
-
const create_row_level_security_transaction_setup_1 = require("./utils/create-row-level-security-transaction-setup");
|
|
1
|
+
import { PostgreSqlConnection, PostgreSqlPlatform, } from "@mikro-orm/postgresql";
|
|
2
|
+
import { AbstractSqlDriver } from "@mikro-orm/sql";
|
|
3
|
+
import { createRowLevelSecurityTransactionSetup, } from "./utils/create-row-level-security-transaction-setup.js";
|
|
6
4
|
const ROW_LEVEL_SECURITY_TRANSACTION_SIGNATURE = Symbol("rowLevelSecurityTransactionSignature");
|
|
7
5
|
const ROW_LEVEL_SECURITY_TRANSACTION_CONTEXT_KEYS = Symbol("rowLevelSecurityTransactionContextKeys");
|
|
8
6
|
const ROW_LEVEL_SECURITY_TRANSACTION_QUEUE = Symbol("rowLevelSecurityTransactionQueue");
|
|
9
7
|
/** PostgreSQL connection that applies RLS role and context at SQL execution time. */
|
|
10
|
-
class RowLevelSecurityConnection extends
|
|
8
|
+
export class RowLevelSecurityConnection extends PostgreSqlConnection {
|
|
11
9
|
/** Applies row level security setup before delegating SQL execution to MikroORM. */
|
|
12
10
|
async execute(queryOrKnex, params = [], method = "all", ctx, loggerContext) {
|
|
13
|
-
const setup =
|
|
11
|
+
const setup = createRowLevelSecurityTransactionSetup();
|
|
14
12
|
const transactionContext = getTransactionContext(queryOrKnex, ctx);
|
|
15
13
|
if (transactionContext) {
|
|
16
14
|
return await this.runInTransactionQueue(transactionContext.state, async () => {
|
|
@@ -90,18 +88,16 @@ class RowLevelSecurityConnection extends postgresql_1.PostgreSqlConnection {
|
|
|
90
88
|
transactionState[ROW_LEVEL_SECURITY_TRANSACTION_CONTEXT_KEYS] = [];
|
|
91
89
|
}
|
|
92
90
|
}
|
|
93
|
-
exports.RowLevelSecurityConnection = RowLevelSecurityConnection;
|
|
94
91
|
/** MikroORM PostgreSQL driver that applies row level security per SQL query. */
|
|
95
|
-
class RowLevelSecurityDriver extends
|
|
92
|
+
export class RowLevelSecurityDriver extends AbstractSqlDriver {
|
|
96
93
|
/** Creates a PostgreSQL driver using the row level security connection. */
|
|
97
94
|
constructor(config) {
|
|
98
|
-
super(config, new
|
|
95
|
+
super(config, new PostgreSqlPlatform(), RowLevelSecurityConnection, [
|
|
99
96
|
"knex",
|
|
100
97
|
"pg",
|
|
101
98
|
]);
|
|
102
99
|
}
|
|
103
100
|
}
|
|
104
|
-
exports.RowLevelSecurityDriver = RowLevelSecurityDriver;
|
|
105
101
|
function getTransactionContext(queryOrKnex, ctx) {
|
|
106
102
|
if (ctx) {
|
|
107
103
|
return {
|
|
@@ -112,14 +108,7 @@ function getTransactionContext(queryOrKnex, ctx) {
|
|
|
112
108
|
if (typeof queryOrKnex === "string") {
|
|
113
109
|
return undefined;
|
|
114
110
|
}
|
|
115
|
-
|
|
116
|
-
if (!knexQuery.client?.transacting) {
|
|
117
|
-
return undefined;
|
|
118
|
-
}
|
|
119
|
-
return {
|
|
120
|
-
state: knexQuery.client,
|
|
121
|
-
execution: queryOrKnex,
|
|
122
|
-
};
|
|
111
|
+
return undefined;
|
|
123
112
|
}
|
|
124
113
|
function getStaleContextKeys(previousKeys, nextKeys) {
|
|
125
114
|
const nextKeySet = new Set(nextKeys);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"row-level-security-driver.js","sourceRoot":"","sources":["../src/row-level-security-driver.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"row-level-security-driver.js","sourceRoot":"","sources":["../src/row-level-security-driver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { TSMigrationGenerator } from "@mikro-orm/migrations";
|
|
2
|
-
import type { MigrationDiff } from "./interfaces/row-level-security-migration-generator.interface";
|
|
2
|
+
import type { MigrationDiff } from "./interfaces/row-level-security-migration-generator.interface.js";
|
|
3
3
|
/** MikroORM TypeScript migration generator that injects generated RLS SQL. */
|
|
4
4
|
export declare class RowLevelSecurityMigrationGenerator extends TSMigrationGenerator {
|
|
5
5
|
private existingPolicyDefinitions?;
|