@nest-boot/row-level-security 7.4.7 → 8.0.0-beta.1

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.
Files changed (115) hide show
  1. package/dist/decorators/policy.decorator.d.ts +4 -14
  2. package/dist/decorators/policy.decorator.js +25 -41
  3. package/dist/decorators/policy.decorator.js.map +1 -1
  4. package/dist/enums/policy-command.enum.d.ts +0 -6
  5. package/dist/enums/policy-command.enum.js +2 -11
  6. package/dist/enums/policy-command.enum.js.map +1 -1
  7. package/dist/enums/policy-mode.enum.d.ts +0 -3
  8. package/dist/enums/policy-mode.enum.js +2 -8
  9. package/dist/enums/policy-mode.enum.js.map +1 -1
  10. package/dist/enums/row-level-security-role.enum.d.ts +0 -3
  11. package/dist/enums/row-level-security-role.enum.js +2 -8
  12. package/dist/enums/row-level-security-role.enum.js.map +1 -1
  13. package/dist/index.d.ts +11 -11
  14. package/dist/index.js +11 -27
  15. package/dist/index.js.map +1 -1
  16. package/dist/interfaces/index.d.ts +4 -4
  17. package/dist/interfaces/index.js +3 -19
  18. package/dist/interfaces/index.js.map +1 -1
  19. package/dist/interfaces/policy-metadata.interface.d.ts +2 -30
  20. package/dist/interfaces/policy-metadata.interface.js +1 -2
  21. package/dist/interfaces/policy-options.interface.d.ts +2 -11
  22. package/dist/interfaces/policy-options.interface.js +1 -2
  23. package/dist/interfaces/policy-sql-options.interface.d.ts +2 -11
  24. package/dist/interfaces/policy-sql-options.interface.js +1 -2
  25. package/dist/interfaces/row-level-security-migration-generator.interface.d.ts +2 -6
  26. package/dist/interfaces/row-level-security-migration-generator.interface.js +1 -2
  27. package/dist/row-level-security-driver.d.ts +5 -7
  28. package/dist/row-level-security-driver.js +12 -24
  29. package/dist/row-level-security-driver.js.map +1 -1
  30. package/dist/row-level-security-migration-generator.d.ts +1 -3
  31. package/dist/row-level-security-migration-generator.js +44 -45
  32. package/dist/row-level-security-migration-generator.js.map +1 -1
  33. package/dist/row-level-security-migration.d.ts +1 -4
  34. package/dist/row-level-security-migration.js +9 -16
  35. package/dist/row-level-security-migration.js.map +1 -1
  36. package/dist/row-level-security-migrator.d.ts +5 -7
  37. package/dist/row-level-security-migrator.js +11 -19
  38. package/dist/row-level-security-migrator.js.map +1 -1
  39. package/dist/row-level-security.d.ts +1 -14
  40. package/dist/row-level-security.js +19 -36
  41. package/dist/row-level-security.js.map +1 -1
  42. package/dist/utils/assert-identifier.d.ts +0 -1
  43. package/dist/utils/assert-identifier.js +1 -5
  44. package/dist/utils/assert-identifier.js.map +1 -1
  45. package/dist/utils/assert-snake-case.d.ts +0 -1
  46. package/dist/utils/assert-snake-case.js +1 -5
  47. package/dist/utils/assert-snake-case.js.map +1 -1
  48. package/dist/utils/create-policy-bootstrap-sql-statements.d.ts +0 -1
  49. package/dist/utils/create-policy-bootstrap-sql-statements.js +1 -5
  50. package/dist/utils/create-policy-bootstrap-sql-statements.js.map +1 -1
  51. package/dist/utils/create-policy-down-sql.d.ts +1 -2
  52. package/dist/utils/create-policy-down-sql.js +6 -10
  53. package/dist/utils/create-policy-down-sql.js.map +1 -1
  54. package/dist/utils/create-policy-privilege-down-sql-statements.d.ts +1 -7
  55. package/dist/utils/create-policy-privilege-down-sql-statements.js +20 -29
  56. package/dist/utils/create-policy-privilege-down-sql-statements.js.map +1 -1
  57. package/dist/utils/create-policy-role-sql-statements.d.ts +0 -3
  58. package/dist/utils/create-policy-role-sql-statements.js +8 -17
  59. package/dist/utils/create-policy-role-sql-statements.js.map +1 -1
  60. package/dist/utils/create-policy-up-sql-statements.d.ts +1 -2
  61. package/dist/utils/create-policy-up-sql-statements.js +27 -31
  62. package/dist/utils/create-policy-up-sql-statements.js.map +1 -1
  63. package/dist/utils/create-row-level-security-transaction-setup.d.ts +0 -9
  64. package/dist/utils/create-row-level-security-transaction-setup.js +16 -20
  65. package/dist/utils/create-row-level-security-transaction-setup.js.map +1 -1
  66. package/dist/utils/escape-sql-literal.d.ts +0 -1
  67. package/dist/utils/escape-sql-literal.js +1 -5
  68. package/dist/utils/escape-sql-literal.js.map +1 -1
  69. package/dist/utils/index.d.ts +12 -12
  70. package/dist/utils/index.js +11 -27
  71. package/dist/utils/index.js.map +1 -1
  72. package/dist/utils/is-postgres-keyword-requiring-quote.js +1 -6
  73. package/dist/utils/is-postgres-keyword-requiring-quote.js.map +1 -1
  74. package/dist/utils/normalize-postgres-type-alias.util.js +1 -4
  75. package/dist/utils/normalize-postgres-type-alias.util.js.map +1 -1
  76. package/dist/utils/quote-identifier.d.ts +0 -1
  77. package/dist/utils/quote-identifier.js +3 -7
  78. package/dist/utils/quote-identifier.js.map +1 -1
  79. package/dist/utils/quote-qualified-identifier.d.ts +0 -1
  80. package/dist/utils/quote-qualified-identifier.js +3 -7
  81. package/dist/utils/quote-qualified-identifier.js.map +1 -1
  82. package/dist/utils/row-level-security-context-builder.d.ts +1 -5
  83. package/dist/utils/row-level-security-context-builder.js +9 -19
  84. package/dist/utils/row-level-security-context-builder.js.map +1 -1
  85. package/dist/utils/row-level-security-context-builder.types.d.ts +0 -5
  86. package/dist/utils/row-level-security-context-builder.types.js +1 -2
  87. package/package.json +44 -32
  88. package/dist/decorators/policy.decorator.spec.d.ts +0 -1
  89. package/dist/decorators/policy.decorator.spec.js +0 -550
  90. package/dist/decorators/policy.decorator.spec.js.map +0 -1
  91. package/dist/index.spec.d.ts +0 -1
  92. package/dist/index.spec.js +0 -64
  93. package/dist/index.spec.js.map +0 -1
  94. package/dist/row-level-security-driver.spec.d.ts +0 -1
  95. package/dist/row-level-security-driver.spec.js +0 -267
  96. package/dist/row-level-security-driver.spec.js.map +0 -1
  97. package/dist/row-level-security-migration-generator.spec.d.ts +0 -1
  98. package/dist/row-level-security-migration-generator.spec.js +0 -1135
  99. package/dist/row-level-security-migration-generator.spec.js.map +0 -1
  100. package/dist/row-level-security-migration.spec.d.ts +0 -1
  101. package/dist/row-level-security-migration.spec.js +0 -32
  102. package/dist/row-level-security-migration.spec.js.map +0 -1
  103. package/dist/row-level-security.spec.d.ts +0 -1
  104. package/dist/row-level-security.spec.js +0 -52
  105. package/dist/row-level-security.spec.js.map +0 -1
  106. package/dist/tsconfig.build.tsbuildinfo +0 -1
  107. package/dist/utils/normalize-postgres-type-alias.spec.d.ts +0 -1
  108. package/dist/utils/normalize-postgres-type-alias.spec.js +0 -28
  109. package/dist/utils/normalize-postgres-type-alias.spec.js.map +0 -1
  110. package/dist/utils/policy-migration-sql.spec.d.ts +0 -1
  111. package/dist/utils/policy-migration-sql.spec.js +0 -273
  112. package/dist/utils/policy-migration-sql.spec.js.map +0 -1
  113. package/dist/utils/row-level-security-context-builder.spec.d.ts +0 -1
  114. package/dist/utils/row-level-security-context-builder.spec.js +0 -40
  115. package/dist/utils/row-level-security-context-builder.spec.js.map +0 -1
@@ -1,29 +1,16 @@
1
- import { RowLevelSecurityContextValue, SnakeCase } from "./utils/row-level-security-context-builder.types";
2
- /** Request-scoped row-level security execution mode. */
1
+ import { RowLevelSecurityContextValue, SnakeCase } from "./utils/row-level-security-context-builder.types.js";
3
2
  export declare enum RowLevelSecurityMode {
4
- /** Apply RLS only when a role or context value is present. */
5
3
  AUTO = "auto",
6
- /** Always apply RLS while request context is active. */
7
4
  ENABLED = "enabled",
8
- /** Never apply RLS, even when role or context values are present. */
9
5
  DISABLED = "disabled"
10
6
  }
11
- /** Request-scoped row-level security mode, role, and context helpers. */
12
7
  export declare class RowLevelSecurity {
13
- /** Stores the row-level security mode for the current request context. */
14
8
  static setMode(mode: RowLevelSecurityMode): void;
15
- /** Reads the request-scoped row-level security mode. */
16
9
  static getMode(): RowLevelSecurityMode;
17
- /** Stores the database role that should be applied to the next RLS query. */
18
10
  static setRole(role: string): void;
19
- /** Reads the request-scoped database role, if one is active. */
20
11
  static getRole(): string | undefined;
21
- /** Stores a context value that will be converted to a PostgreSQL setting. */
22
12
  static setContext<S extends string>(key: SnakeCase<S>, value: RowLevelSecurityContextValue): void;
23
- /** Reads a request-scoped context value by key. */
24
13
  static getContext<S extends string>(key: SnakeCase<S>): RowLevelSecurityContextValue;
25
- /** Returns all request-scoped context entries for RLS transaction setup. */
26
14
  static entries(): [string, RowLevelSecurityContextValue][];
27
- /** Clears request-scoped RLS mode, role, and context values. */
28
15
  static clear(): void;
29
16
  }
@@ -1,69 +1,52 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RowLevelSecurity = exports.RowLevelSecurityMode = void 0;
4
- const request_context_1 = require("@nest-boot/request-context");
1
+ import { RequestContext } from "@nest-boot/request-context";
5
2
  const ROW_LEVEL_SECURITY_CONTEXT = Symbol("ROW_LEVEL_SECURITY_CONTEXT");
6
3
  const ROW_LEVEL_SECURITY_MODE = Symbol("ROW_LEVEL_SECURITY_MODE");
7
4
  const ROW_LEVEL_SECURITY_ROLE = Symbol("ROW_LEVEL_SECURITY_ROLE");
8
- /** Request-scoped row-level security execution mode. */
9
- var RowLevelSecurityMode;
5
+ export var RowLevelSecurityMode;
10
6
  (function (RowLevelSecurityMode) {
11
- /** Apply RLS only when a role or context value is present. */
12
7
  RowLevelSecurityMode["AUTO"] = "auto";
13
- /** Always apply RLS while request context is active. */
14
8
  RowLevelSecurityMode["ENABLED"] = "enabled";
15
- /** Never apply RLS, even when role or context values are present. */
16
9
  RowLevelSecurityMode["DISABLED"] = "disabled";
17
- })(RowLevelSecurityMode || (exports.RowLevelSecurityMode = RowLevelSecurityMode = {}));
18
- /** Request-scoped row-level security mode, role, and context helpers. */
19
- class RowLevelSecurity {
20
- /** Stores the row-level security mode for the current request context. */
10
+ })(RowLevelSecurityMode || (RowLevelSecurityMode = {}));
11
+ export class RowLevelSecurity {
21
12
  static setMode(mode) {
22
- request_context_1.RequestContext.set(ROW_LEVEL_SECURITY_MODE, mode);
13
+ RequestContext.set(ROW_LEVEL_SECURITY_MODE, mode);
23
14
  }
24
- /** Reads the request-scoped row-level security mode. */
25
15
  static getMode() {
26
- return request_context_1.RequestContext.isActive()
27
- ? (request_context_1.RequestContext.get(ROW_LEVEL_SECURITY_MODE) ??
16
+ return RequestContext.isActive()
17
+ ? (RequestContext.get(ROW_LEVEL_SECURITY_MODE) ??
28
18
  RowLevelSecurityMode.AUTO)
29
19
  : RowLevelSecurityMode.AUTO;
30
20
  }
31
- /** Stores the database role that should be applied to the next RLS query. */
32
21
  static setRole(role) {
33
- request_context_1.RequestContext.set(ROW_LEVEL_SECURITY_ROLE, role);
22
+ RequestContext.set(ROW_LEVEL_SECURITY_ROLE, role);
34
23
  }
35
- /** Reads the request-scoped database role, if one is active. */
36
24
  static getRole() {
37
- return request_context_1.RequestContext.isActive()
38
- ? request_context_1.RequestContext.get(ROW_LEVEL_SECURITY_ROLE)
25
+ return RequestContext.isActive()
26
+ ? RequestContext.get(ROW_LEVEL_SECURITY_ROLE)
39
27
  : undefined;
40
28
  }
41
- /** Stores a context value that will be converted to a PostgreSQL setting. */
42
29
  static setContext(key, value) {
43
- const context = request_context_1.RequestContext.getOrSet(ROW_LEVEL_SECURITY_CONTEXT, new Map());
30
+ const context = RequestContext.getOrSet(ROW_LEVEL_SECURITY_CONTEXT, new Map());
44
31
  context.set(key, value);
45
32
  }
46
- /** Reads a request-scoped context value by key. */
47
33
  static getContext(key) {
48
- return request_context_1.RequestContext.isActive()
49
- ? request_context_1.RequestContext.get(ROW_LEVEL_SECURITY_CONTEXT)?.get(key)
34
+ return RequestContext.isActive()
35
+ ? RequestContext.get(ROW_LEVEL_SECURITY_CONTEXT)?.get(key)
50
36
  : undefined;
51
37
  }
52
- /** Returns all request-scoped context entries for RLS transaction setup. */
53
38
  static entries() {
54
- return request_context_1.RequestContext.isActive()
55
- ? Array.from(request_context_1.RequestContext.get(ROW_LEVEL_SECURITY_CONTEXT) ?? [])
39
+ return RequestContext.isActive()
40
+ ? Array.from(RequestContext.get(ROW_LEVEL_SECURITY_CONTEXT) ?? [])
56
41
  : [];
57
42
  }
58
- /** Clears request-scoped RLS mode, role, and context values. */
59
43
  static clear() {
60
- if (!request_context_1.RequestContext.isActive()) {
44
+ if (!RequestContext.isActive()) {
61
45
  return;
62
46
  }
63
- request_context_1.RequestContext.set(ROW_LEVEL_SECURITY_MODE, RowLevelSecurityMode.AUTO);
64
- request_context_1.RequestContext.set(ROW_LEVEL_SECURITY_ROLE, undefined);
65
- request_context_1.RequestContext.set(ROW_LEVEL_SECURITY_CONTEXT, new Map());
47
+ RequestContext.set(ROW_LEVEL_SECURITY_MODE, RowLevelSecurityMode.AUTO);
48
+ RequestContext.set(ROW_LEVEL_SECURITY_ROLE, undefined);
49
+ RequestContext.set(ROW_LEVEL_SECURITY_CONTEXT, new Map());
66
50
  }
67
51
  }
68
- exports.RowLevelSecurity = RowLevelSecurity;
69
52
  //# sourceMappingURL=row-level-security.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"row-level-security.js","sourceRoot":"","sources":["../src/row-level-security.ts"],"names":[],"mappings":";;;AAAA,gEAA4D;AAS5D,MAAM,0BAA0B,GAAG,MAAM,CAAC,4BAA4B,CAAC,CAAC;AACxE,MAAM,uBAAuB,GAAG,MAAM,CAAC,yBAAyB,CAAC,CAAC;AAClE,MAAM,uBAAuB,GAAG,MAAM,CAAC,yBAAyB,CAAC,CAAC;AAElE,wDAAwD;AACxD,IAAY,oBAOX;AAPD,WAAY,oBAAoB;IAC9B,8DAA8D;IAC9D,qCAAa,CAAA;IACb,wDAAwD;IACxD,2CAAmB,CAAA;IACnB,qEAAqE;IACrE,6CAAqB,CAAA;AACvB,CAAC,EAPW,oBAAoB,oCAApB,oBAAoB,QAO/B;AAED,yEAAyE;AACzE,MAAa,gBAAgB;IAC3B,0EAA0E;IAC1E,MAAM,CAAC,OAAO,CAAC,IAA0B;QACvC,gCAAc,CAAC,GAAG,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,wDAAwD;IACxD,MAAM,CAAC,OAAO;QACZ,OAAO,gCAAc,CAAC,QAAQ,EAAE;YAC9B,CAAC,CAAC,CAAC,gCAAc,CAAC,GAAG,CAAuB,uBAAuB,CAAC;gBAChE,oBAAoB,CAAC,IAAI,CAAC;YAC9B,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC;IAChC,CAAC;IAED,6EAA6E;IAC7E,MAAM,CAAC,OAAO,CAAC,IAAY;QACzB,gCAAc,CAAC,GAAG,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,gEAAgE;IAChE,MAAM,CAAC,OAAO;QACZ,OAAO,gCAAc,CAAC,QAAQ,EAAE;YAC9B,CAAC,CAAC,gCAAc,CAAC,GAAG,CAAS,uBAAuB,CAAC;YACrD,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;IAED,6EAA6E;IAC7E,MAAM,CAAC,UAAU,CACf,GAAiB,EACjB,KAAmC;QAEnC,MAAM,OAAO,GAAG,gCAAc,CAAC,QAAQ,CACrC,0BAA0B,EAC1B,IAAI,GAAG,EAAE,CACV,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED,mDAAmD;IACnD,MAAM,CAAC,UAAU,CACf,GAAiB;QAEjB,OAAO,gCAAc,CAAC,QAAQ,EAAE;YAC9B,CAAC,CAAC,gCAAc,CAAC,GAAG,CAChB,0BAA0B,CAC3B,EAAE,GAAG,CAAC,GAAG,CAAC;YACb,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;IAED,4EAA4E;IAC5E,MAAM,CAAC,OAAO;QACZ,OAAO,gCAAc,CAAC,QAAQ,EAAE;YAC9B,CAAC,CAAC,KAAK,CAAC,IAAI,CACR,gCAAc,CAAC,GAAG,CAChB,0BAA0B,CAC3B,IAAI,EAAE,CACR;YACH,CAAC,CAAC,EAAE,CAAC;IACT,CAAC;IAED,gEAAgE;IAChE,MAAM,CAAC,KAAK;QACV,IAAI,CAAC,gCAAc,CAAC,QAAQ,EAAE,EAAE,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,gCAAc,CAAC,GAAG,CAAC,uBAAuB,EAAE,oBAAoB,CAAC,IAAI,CAAC,CAAC;QACvE,gCAAc,CAAC,GAAG,CAAqB,uBAAuB,EAAE,SAAS,CAAC,CAAC;QAC3E,gCAAc,CAAC,GAAG,CAChB,0BAA0B,EAC1B,IAAI,GAAG,EAAE,CACV,CAAC;IACJ,CAAC;CACF;AA1ED,4CA0EC"}
1
+ {"version":3,"file":"row-level-security.js","sourceRoot":"","sources":["../src/row-level-security.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAS5D,MAAM,0BAA0B,GAAG,MAAM,CAAC,4BAA4B,CAAC,CAAC;AACxE,MAAM,uBAAuB,GAAG,MAAM,CAAC,yBAAyB,CAAC,CAAC;AAClE,MAAM,uBAAuB,GAAG,MAAM,CAAC,yBAAyB,CAAC,CAAC;AAGlE,MAAM,CAAN,IAAY,oBAOX;AAPD,WAAY,oBAAoB;IAE9B,qCAAa,CAAA;IAEb,2CAAmB,CAAA;IAEnB,6CAAqB,CAAA;AACvB,CAAC,EAPW,oBAAoB,KAApB,oBAAoB,QAO/B;AAGD,MAAM,OAAO,gBAAgB;IAE3B,MAAM,CAAC,OAAO,CAAC,IAA0B;QACvC,cAAc,CAAC,GAAG,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC;IACpD,CAAC;IAGD,MAAM,CAAC,OAAO;QACZ,OAAO,cAAc,CAAC,QAAQ,EAAE;YAC9B,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAuB,uBAAuB,CAAC;gBAChE,oBAAoB,CAAC,IAAI,CAAC;YAC9B,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC;IAChC,CAAC;IAGD,MAAM,CAAC,OAAO,CAAC,IAAY;QACzB,cAAc,CAAC,GAAG,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC;IACpD,CAAC;IAGD,MAAM,CAAC,OAAO;QACZ,OAAO,cAAc,CAAC,QAAQ,EAAE;YAC9B,CAAC,CAAC,cAAc,CAAC,GAAG,CAAS,uBAAuB,CAAC;YACrD,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;IAGD,MAAM,CAAC,UAAU,CACf,GAAiB,EACjB,KAAmC;QAEnC,MAAM,OAAO,GAAG,cAAc,CAAC,QAAQ,CACrC,0BAA0B,EAC1B,IAAI,GAAG,EAAE,CACV,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC1B,CAAC;IAGD,MAAM,CAAC,UAAU,CACf,GAAiB;QAEjB,OAAO,cAAc,CAAC,QAAQ,EAAE;YAC9B,CAAC,CAAC,cAAc,CAAC,GAAG,CAChB,0BAA0B,CAC3B,EAAE,GAAG,CAAC,GAAG,CAAC;YACb,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;IAGD,MAAM,CAAC,OAAO;QACZ,OAAO,cAAc,CAAC,QAAQ,EAAE;YAC9B,CAAC,CAAC,KAAK,CAAC,IAAI,CACR,cAAc,CAAC,GAAG,CAChB,0BAA0B,CAC3B,IAAI,EAAE,CACR;YACH,CAAC,CAAC,EAAE,CAAC;IACT,CAAC;IAGD,MAAM,CAAC,KAAK;QACV,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,EAAE,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,cAAc,CAAC,GAAG,CAAC,uBAAuB,EAAE,oBAAoB,CAAC,IAAI,CAAC,CAAC;QACvE,cAAc,CAAC,GAAG,CAAqB,uBAAuB,EAAE,SAAS,CAAC,CAAC;QAC3E,cAAc,CAAC,GAAG,CAChB,0BAA0B,EAC1B,IAAI,GAAG,EAAE,CACV,CAAC;IACJ,CAAC;CACF"}
@@ -1,2 +1 @@
1
- /** Asserts that a value is a safe unquoted PostgreSQL identifier. */
2
1
  export declare function assertIdentifier(identifier: string): string;
@@ -1,8 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.assertIdentifier = assertIdentifier;
4
- /** Asserts that a value is a safe unquoted PostgreSQL identifier. */
5
- function assertIdentifier(identifier) {
1
+ export function assertIdentifier(identifier) {
6
2
  if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(identifier)) {
7
3
  throw new Error(`Invalid SQL identifier: ${identifier}`);
8
4
  }
@@ -1 +1 @@
1
- {"version":3,"file":"assert-identifier.js","sourceRoot":"","sources":["../../src/utils/assert-identifier.ts"],"names":[],"mappings":";;AACA,4CAMC;AAPD,qEAAqE;AACrE,SAAgB,gBAAgB,CAAC,UAAkB;IACjD,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CAAC,2BAA2B,UAAU,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC"}
1
+ {"version":3,"file":"assert-identifier.js","sourceRoot":"","sources":["../../src/utils/assert-identifier.ts"],"names":[],"mappings":"AACA,MAAM,UAAU,gBAAgB,CAAC,UAAkB;IACjD,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CAAC,2BAA2B,UAAU,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC"}
@@ -1,2 +1 @@
1
- /** Asserts that a value is snake_case for use in roles or context keys. */
2
1
  export declare function assertSnakeCase(value: string, label: string): void;
@@ -1,8 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.assertSnakeCase = assertSnakeCase;
4
- /** Asserts that a value is snake_case for use in roles or context keys. */
5
- function assertSnakeCase(value, label) {
1
+ export function assertSnakeCase(value, label) {
6
2
  if (!/^[a-z]+(_[a-z]+)*$/.test(value)) {
7
3
  throw new Error(`${label} must be snake_case: ${value}`);
8
4
  }
@@ -1 +1 @@
1
- {"version":3,"file":"assert-snake-case.js","sourceRoot":"","sources":["../../src/utils/assert-snake-case.ts"],"names":[],"mappings":";;AACA,0CAIC;AALD,2EAA2E;AAC3E,SAAgB,eAAe,CAAC,KAAa,EAAE,KAAa;IAC1D,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,wBAAwB,KAAK,EAAE,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"assert-snake-case.js","sourceRoot":"","sources":["../../src/utils/assert-snake-case.ts"],"names":[],"mappings":"AACA,MAAM,UAAU,eAAe,CAAC,KAAa,EAAE,KAAa;IAC1D,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,wBAAwB,KAAK,EAAE,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC"}
@@ -1,2 +1 @@
1
- /** Creates SQL statements for shared RLS bootstrap infrastructure. */
2
1
  export declare function createPolicyBootstrapSqlStatements(): never[];
@@ -1,8 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createPolicyBootstrapSqlStatements = createPolicyBootstrapSqlStatements;
4
- /** Creates SQL statements for shared RLS bootstrap infrastructure. */
5
- function createPolicyBootstrapSqlStatements() {
1
+ export function createPolicyBootstrapSqlStatements() {
6
2
  return [];
7
3
  }
8
4
  //# sourceMappingURL=create-policy-bootstrap-sql-statements.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-policy-bootstrap-sql-statements.js","sourceRoot":"","sources":["../../src/utils/create-policy-bootstrap-sql-statements.ts"],"names":[],"mappings":";;AACA,gFAEC;AAHD,sEAAsE;AACtE,SAAgB,kCAAkC;IAChD,OAAO,EAAE,CAAC;AACZ,CAAC"}
1
+ {"version":3,"file":"create-policy-bootstrap-sql-statements.js","sourceRoot":"","sources":["../../src/utils/create-policy-bootstrap-sql-statements.ts"],"names":[],"mappings":"AACA,MAAM,UAAU,kCAAkC;IAChD,OAAO,EAAE,CAAC;AACZ,CAAC"}
@@ -1,3 +1,2 @@
1
- import type { PolicySqlOptions } from "../interfaces/policy-sql-options.interface";
2
- /** Creates guarded SQL for dropping a policy and disabling RLS when no policies remain. */
1
+ import type { PolicySqlOptions } from "../interfaces/policy-sql-options.interface.js";
3
2
  export declare function createPolicyDownSql(options: PolicySqlOptions): string;
@@ -1,13 +1,9 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createPolicyDownSql = createPolicyDownSql;
4
- const assert_identifier_1 = require("./assert-identifier");
5
- const quote_qualified_identifier_1 = require("./quote-qualified-identifier");
6
- /** Creates guarded SQL for dropping a policy and disabling RLS when no policies remain. */
7
- function createPolicyDownSql(options) {
8
- const tableIdentifier = (0, quote_qualified_identifier_1.quoteQualifiedIdentifier)(options.schemaName, options.tableName);
9
- const policyName = (0, assert_identifier_1.assertIdentifier)(options.policyName);
10
- return /* SQL */ `
1
+ import { assertIdentifier } from "./assert-identifier.js";
2
+ import { quoteQualifiedIdentifier } from "./quote-qualified-identifier.js";
3
+ export function createPolicyDownSql(options) {
4
+ const tableIdentifier = quoteQualifiedIdentifier(options.schemaName, options.tableName);
5
+ const policyName = assertIdentifier(options.policyName);
6
+ return `
11
7
  do $$
12
8
  declare
13
9
  policy_count integer;
@@ -1 +1 @@
1
- {"version":3,"file":"create-policy-down-sql.js","sourceRoot":"","sources":["../../src/utils/create-policy-down-sql.ts"],"names":[],"mappings":";;AAKA,kDA0BC;AA9BD,2DAAuD;AACvD,6EAAwE;AAExE,2FAA2F;AAC3F,SAAgB,mBAAmB,CAAC,OAAyB;IAC3D,MAAM,eAAe,GAAG,IAAA,qDAAwB,EAC9C,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,SAAS,CAClB,CAAC;IACF,MAAM,UAAU,GAAG,IAAA,oCAAgB,EAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAExD,OAAO,SAAS,CAAC;;;;;oBAKC,eAAe;qCACE,UAAU,OAAO,eAAe;;;;0BAI3C,OAAO,CAAC,UAAU,sBAAsB,OAAO,CAAC,SAAS;;;6BAGtD,eAAe;;;;;CAK3C,CAAC,IAAI,EAAE,CAAC;AACT,CAAC"}
1
+ {"version":3,"file":"create-policy-down-sql.js","sourceRoot":"","sources":["../../src/utils/create-policy-down-sql.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAG3E,MAAM,UAAU,mBAAmB,CAAC,OAAyB;IAC3D,MAAM,eAAe,GAAG,wBAAwB,CAC9C,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,SAAS,CAClB,CAAC;IACF,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAExD,OAAiB;;;;;oBAKC,eAAe;qCACE,UAAU,OAAO,eAAe;;;;0BAI3C,OAAO,CAAC,UAAU,sBAAsB,OAAO,CAAC,SAAS;;;6BAGtD,eAAe;;;;;CAK3C,CAAC,IAAI,EAAE,CAAC;AACT,CAAC"}
@@ -1,8 +1,2 @@
1
- import type { PolicySqlOptions } from "../interfaces/policy-sql-options.interface";
2
- /**
3
- * Creates SQL that revokes table and sequence privileges emitted for a policy.
4
- *
5
- * Preserved policies keep overlapping privileges for the same schema, table,
6
- * and role from being revoked during rollback.
7
- */
1
+ import type { PolicySqlOptions } from "../interfaces/policy-sql-options.interface.js";
8
2
  export declare function createPolicyPrivilegeDownSqlStatements(options: PolicySqlOptions, preservedPolicies?: PolicySqlOptions[]): string[];
@@ -1,23 +1,14 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createPolicyPrivilegeDownSqlStatements = createPolicyPrivilegeDownSqlStatements;
4
- const policy_command_enum_1 = require("../enums/policy-command.enum");
5
- const assert_identifier_1 = require("./assert-identifier");
6
- const escape_sql_literal_1 = require("./escape-sql-literal");
7
- const quote_qualified_identifier_1 = require("./quote-qualified-identifier");
8
- /**
9
- * Creates SQL that revokes table and sequence privileges emitted for a policy.
10
- *
11
- * Preserved policies keep overlapping privileges for the same schema, table,
12
- * and role from being revoked during rollback.
13
- */
14
- function createPolicyPrivilegeDownSqlStatements(options, preservedPolicies = []) {
1
+ import { PolicyCommand } from "../enums/policy-command.enum.js";
2
+ import { assertIdentifier } from "./assert-identifier.js";
3
+ import { escapeSqlLiteral } from "./escape-sql-literal.js";
4
+ import { quoteQualifiedIdentifier } from "./quote-qualified-identifier.js";
5
+ export function createPolicyPrivilegeDownSqlStatements(options, preservedPolicies = []) {
15
6
  const roles = getPolicySqlRoleNames(options.roles);
16
7
  if (roles.length === 0) {
17
8
  return [];
18
9
  }
19
- const tableIdentifier = (0, quote_qualified_identifier_1.quoteQualifiedIdentifier)(options.schemaName, options.tableName);
20
- const command = options.command ?? policy_command_enum_1.PolicyCommand.ALL;
10
+ const tableIdentifier = quoteQualifiedIdentifier(options.schemaName, options.tableName);
11
+ const command = options.command ?? PolicyCommand.ALL;
21
12
  const statements = createTablePrivilegeRevokeSqlStatements(options, tableIdentifier, roles, preservedPolicies);
22
13
  if (requiresSequencePrivileges(command)) {
23
14
  const sequenceRevokeRoles = roles.filter((role) => !hasPreservedSequencePrivileges(options, role, preservedPolicies));
@@ -28,7 +19,7 @@ function createPolicyPrivilegeDownSqlStatements(options, preservedPolicies = [])
28
19
  return statements;
29
20
  }
30
21
  function createTablePrivilegeRevokeSqlStatements(options, tableIdentifier, roles, preservedPolicies) {
31
- const command = options.command ?? policy_command_enum_1.PolicyCommand.ALL;
22
+ const command = options.command ?? PolicyCommand.ALL;
32
23
  const privileges = getTablePrivileges(command);
33
24
  const rolesByPrivileges = new Map();
34
25
  for (const role of roles) {
@@ -45,49 +36,49 @@ function createTablePrivilegeRevokeSqlStatements(options, tableIdentifier, roles
45
36
  return [...rolesByPrivileges].map(([privilegeSql, groupedRoles]) => `revoke ${privilegeSql} on table ${tableIdentifier} from ${groupedRoles.join(", ")};`);
46
37
  }
47
38
  function getTablePrivileges(command) {
48
- if (command === policy_command_enum_1.PolicyCommand.SELECT) {
39
+ if (command === PolicyCommand.SELECT) {
49
40
  return ["select"];
50
41
  }
51
- if (command === policy_command_enum_1.PolicyCommand.INSERT) {
42
+ if (command === PolicyCommand.INSERT) {
52
43
  return ["insert"];
53
44
  }
54
- if (command === policy_command_enum_1.PolicyCommand.UPDATE) {
45
+ if (command === PolicyCommand.UPDATE) {
55
46
  return ["select", "update"];
56
47
  }
57
- if (command === policy_command_enum_1.PolicyCommand.DELETE) {
48
+ if (command === PolicyCommand.DELETE) {
58
49
  return ["select", "delete"];
59
50
  }
60
51
  return ["select", "insert", "update", "delete"];
61
52
  }
62
53
  function requiresSequencePrivileges(command) {
63
- return command === policy_command_enum_1.PolicyCommand.INSERT || command === policy_command_enum_1.PolicyCommand.ALL;
54
+ return command === PolicyCommand.INSERT || command === PolicyCommand.ALL;
64
55
  }
65
56
  function getPreservedTablePrivileges(options, role, preservedPolicies) {
66
57
  const privileges = new Set();
67
58
  for (const preservedPolicy of getPreservedPoliciesForRole(options, role, preservedPolicies)) {
68
- for (const privilege of getTablePrivileges(preservedPolicy.command ?? policy_command_enum_1.PolicyCommand.ALL)) {
59
+ for (const privilege of getTablePrivileges(preservedPolicy.command ?? PolicyCommand.ALL)) {
69
60
  privileges.add(privilege);
70
61
  }
71
62
  }
72
63
  return privileges;
73
64
  }
74
65
  function hasPreservedSequencePrivileges(options, role, preservedPolicies) {
75
- return getPreservedPoliciesForRole(options, role, preservedPolicies).some((preservedPolicy) => requiresSequencePrivileges(preservedPolicy.command ?? policy_command_enum_1.PolicyCommand.ALL));
66
+ return getPreservedPoliciesForRole(options, role, preservedPolicies).some((preservedPolicy) => requiresSequencePrivileges(preservedPolicy.command ?? PolicyCommand.ALL));
76
67
  }
77
68
  function getPreservedPoliciesForRole(options, role, preservedPolicies) {
78
69
  return preservedPolicies.filter((preservedPolicy) => isSamePolicyTarget(options, preservedPolicy) &&
79
70
  getPolicySqlRoleNames(preservedPolicy.roles).includes(role));
80
71
  }
81
72
  function getPolicySqlRoleNames(roles) {
82
- return [...new Set((roles ?? []).map((role) => (0, assert_identifier_1.assertIdentifier)(role)))];
73
+ return [...new Set((roles ?? []).map((role) => assertIdentifier(role)))];
83
74
  }
84
75
  function isSamePolicyTarget(left, right) {
85
76
  return (left.schemaName === right.schemaName && left.tableName === right.tableName);
86
77
  }
87
78
  function createSequenceRevokeSql(options, tableIdentifier, roleSql) {
88
- const tableLiteral = (0, escape_sql_literal_1.escapeSqlLiteral)(tableIdentifier);
89
- const schemaName = (0, escape_sql_literal_1.escapeSqlLiteral)(options.schemaName);
90
- const tableName = (0, escape_sql_literal_1.escapeSqlLiteral)(options.tableName);
91
- return /* SQL */ `do $$ declare sequence_identifier text; begin for sequence_identifier in select pg_get_serial_sequence('${tableLiteral}', columns.column_name) from information_schema.columns where columns.table_schema = '${schemaName}' and columns.table_name = '${tableName}' and pg_get_serial_sequence('${tableLiteral}', columns.column_name) is not null loop execute format('revoke usage, select on sequence %s from ${roleSql}', sequence_identifier); end loop; end $$;`;
79
+ const tableLiteral = escapeSqlLiteral(tableIdentifier);
80
+ const schemaName = escapeSqlLiteral(options.schemaName);
81
+ const tableName = escapeSqlLiteral(options.tableName);
82
+ return `do $$ declare sequence_identifier text; begin for sequence_identifier in select pg_get_serial_sequence('${tableLiteral}', columns.column_name) from information_schema.columns where columns.table_schema = '${schemaName}' and columns.table_name = '${tableName}' and pg_get_serial_sequence('${tableLiteral}', columns.column_name) is not null loop execute format('revoke usage, select on sequence %s from ${roleSql}', sequence_identifier); end loop; end $$;`;
92
83
  }
93
84
  //# sourceMappingURL=create-policy-privilege-down-sql-statements.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-policy-privilege-down-sql-statements.js","sourceRoot":"","sources":["../../src/utils/create-policy-privilege-down-sql-statements.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-policy-privilege-down-sql-statements.js","sourceRoot":"","sources":["../../src/utils/create-policy-privilege-down-sql-statements.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,3 @@
1
- /** Creates SQL for pre-created RLS roles. Roles are managed outside migrations. */
2
1
  export declare function createPolicyRoleUpSqlStatements(roles?: Iterable<string>): never[];
3
- /** Creates SQL for rolling back role bootstrap. Roles are managed outside migrations. */
4
2
  export declare function createPolicyRoleDownSqlStatements(roles?: Iterable<string>): never[];
5
- /** Returns unique policy roles, always including the anonymous fallback role. */
6
3
  export declare function getPolicyRoleNames(roles?: Iterable<string>): string[];
@@ -1,34 +1,25 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createPolicyRoleUpSqlStatements = createPolicyRoleUpSqlStatements;
4
- exports.createPolicyRoleDownSqlStatements = createPolicyRoleDownSqlStatements;
5
- exports.getPolicyRoleNames = getPolicyRoleNames;
6
- const row_level_security_role_enum_1 = require("../enums/row-level-security-role.enum");
7
- const assert_identifier_1 = require("./assert-identifier");
8
- /** Creates SQL for pre-created RLS roles. Roles are managed outside migrations. */
9
- function createPolicyRoleUpSqlStatements(roles = []) {
1
+ import { RowLevelSecurityRole } from "../enums/row-level-security-role.enum.js";
2
+ import { assertIdentifier } from "./assert-identifier.js";
3
+ export function createPolicyRoleUpSqlStatements(roles = []) {
10
4
  getPolicyRoleNames(roles);
11
5
  return [];
12
6
  }
13
- /** Creates SQL for rolling back role bootstrap. Roles are managed outside migrations. */
14
- function createPolicyRoleDownSqlStatements(roles = []) {
7
+ export function createPolicyRoleDownSqlStatements(roles = []) {
15
8
  [...getExplicitPolicyRoleNames(roles)].sort();
16
9
  return [];
17
10
  }
18
- /** Returns unique policy roles, always including the anonymous fallback role. */
19
- function getPolicyRoleNames(roles = []) {
11
+ export function getPolicyRoleNames(roles = []) {
20
12
  const roleNames = getExplicitPolicyRoleNames(roles);
21
- roleNames.delete(row_level_security_role_enum_1.RowLevelSecurityRole.ANONYMOUS);
22
- return [row_level_security_role_enum_1.RowLevelSecurityRole.ANONYMOUS, ...[...roleNames].sort()];
13
+ roleNames.delete(RowLevelSecurityRole.ANONYMOUS);
14
+ return [RowLevelSecurityRole.ANONYMOUS, ...[...roleNames].sort()];
23
15
  }
24
- /** Returns unique explicit policy roles without adding fallback roles. */
25
16
  function getExplicitPolicyRoleNames(roles) {
26
17
  const roleNames = new Set();
27
18
  for (const role of roles) {
28
19
  if (role.toLowerCase() === "public") {
29
20
  continue;
30
21
  }
31
- roleNames.add((0, assert_identifier_1.assertIdentifier)(role));
22
+ roleNames.add(assertIdentifier(role));
32
23
  }
33
24
  return roleNames;
34
25
  }
@@ -1 +1 @@
1
- {"version":3,"file":"create-policy-role-sql-statements.js","sourceRoot":"","sources":["../../src/utils/create-policy-role-sql-statements.ts"],"names":[],"mappings":";;AAIA,0EAIC;AAGD,8EAMC;AAGD,gDAMC;AA1BD,wFAA6E;AAC7E,2DAAuD;AAEvD,mFAAmF;AACnF,SAAgB,+BAA+B,CAAC,QAA0B,EAAE;IAC1E,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAE1B,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,yFAAyF;AACzF,SAAgB,iCAAiC,CAC/C,QAA0B,EAAE;IAE5B,CAAC,GAAG,0BAA0B,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAE9C,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,iFAAiF;AACjF,SAAgB,kBAAkB,CAAC,QAA0B,EAAE;IAC7D,MAAM,SAAS,GAAG,0BAA0B,CAAC,KAAK,CAAC,CAAC;IAEpD,SAAS,CAAC,MAAM,CAAC,mDAAoB,CAAC,SAAS,CAAC,CAAC;IAEjD,OAAO,CAAC,mDAAoB,CAAC,SAAS,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AACpE,CAAC;AAED,0EAA0E;AAC1E,SAAS,0BAA0B,CAAC,KAAuB;IACzD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IAEpC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,QAAQ,EAAE,CAAC;YACpC,SAAS;QACX,CAAC;QAED,SAAS,CAAC,GAAG,CAAC,IAAA,oCAAgB,EAAC,IAAI,CAAC,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"create-policy-role-sql-statements.js","sourceRoot":"","sources":["../../src/utils/create-policy-role-sql-statements.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG1D,MAAM,UAAU,+BAA+B,CAAC,QAA0B,EAAE;IAC1E,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAE1B,OAAO,EAAE,CAAC;AACZ,CAAC;AAGD,MAAM,UAAU,iCAAiC,CAC/C,QAA0B,EAAE;IAE5B,CAAC,GAAG,0BAA0B,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAE9C,OAAO,EAAE,CAAC;AACZ,CAAC;AAGD,MAAM,UAAU,kBAAkB,CAAC,QAA0B,EAAE;IAC7D,MAAM,SAAS,GAAG,0BAA0B,CAAC,KAAK,CAAC,CAAC;IAEpD,SAAS,CAAC,MAAM,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAEjD,OAAO,CAAC,oBAAoB,CAAC,SAAS,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AACpE,CAAC;AAGD,SAAS,0BAA0B,CAAC,KAAuB;IACzD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IAEpC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,QAAQ,EAAE,CAAC;YACpC,SAAS;QACX,CAAC;QAED,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -1,3 +1,2 @@
1
- import type { PolicySqlOptions } from "../interfaces/policy-sql-options.interface";
2
- /** Creates SQL statements that enable RLS and recreate a PostgreSQL policy. */
1
+ import type { PolicySqlOptions } from "../interfaces/policy-sql-options.interface.js";
3
2
  export declare function createPolicyUpSqlStatements(options: PolicySqlOptions): string[];
@@ -1,19 +1,15 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createPolicyUpSqlStatements = createPolicyUpSqlStatements;
4
- const policy_command_enum_1 = require("../enums/policy-command.enum");
5
- const policy_mode_enum_1 = require("../enums/policy-mode.enum");
6
- const assert_identifier_1 = require("./assert-identifier");
7
- const escape_sql_literal_1 = require("./escape-sql-literal");
8
- const quote_qualified_identifier_1 = require("./quote-qualified-identifier");
9
- /** Creates SQL statements that enable RLS and recreate a PostgreSQL policy. */
10
- function createPolicyUpSqlStatements(options) {
11
- const tableIdentifier = (0, quote_qualified_identifier_1.quoteQualifiedIdentifier)(options.schemaName, options.tableName);
12
- const policyName = (0, assert_identifier_1.assertIdentifier)(options.policyName);
13
- const mode = options.mode ?? policy_mode_enum_1.PolicyMode.PERMISSIVE;
14
- const command = options.command ?? policy_command_enum_1.PolicyCommand.ALL;
1
+ import { PolicyCommand } from "../enums/policy-command.enum.js";
2
+ import { PolicyMode } from "../enums/policy-mode.enum.js";
3
+ import { assertIdentifier } from "./assert-identifier.js";
4
+ import { escapeSqlLiteral } from "./escape-sql-literal.js";
5
+ import { quoteQualifiedIdentifier } from "./quote-qualified-identifier.js";
6
+ export function createPolicyUpSqlStatements(options) {
7
+ const tableIdentifier = quoteQualifiedIdentifier(options.schemaName, options.tableName);
8
+ const policyName = assertIdentifier(options.policyName);
9
+ const mode = options.mode ?? PolicyMode.PERMISSIVE;
10
+ const command = options.command ?? PolicyCommand.ALL;
15
11
  const roles = options.roles ?? [];
16
- const roleSql = roles.map((role) => (0, assert_identifier_1.assertIdentifier)(role)).join(", ");
12
+ const roleSql = roles.map((role) => assertIdentifier(role)).join(", ");
17
13
  const predicates = getPolicyPredicates(options);
18
14
  return [
19
15
  `alter table ${tableIdentifier} enable row level security;`,
@@ -26,7 +22,7 @@ function createPrivilegeGrantSqlStatements(options, tableIdentifier, roleSql) {
26
22
  if (!roleSql) {
27
23
  return [];
28
24
  }
29
- const command = options.command ?? policy_command_enum_1.PolicyCommand.ALL;
25
+ const command = options.command ?? PolicyCommand.ALL;
30
26
  const privileges = getTablePrivileges(command).join(", ");
31
27
  const statements = [
32
28
  `grant ${privileges} on table ${tableIdentifier} to ${roleSql};`,
@@ -37,31 +33,31 @@ function createPrivilegeGrantSqlStatements(options, tableIdentifier, roleSql) {
37
33
  return statements;
38
34
  }
39
35
  function getTablePrivileges(command) {
40
- if (command === policy_command_enum_1.PolicyCommand.SELECT) {
36
+ if (command === PolicyCommand.SELECT) {
41
37
  return ["select"];
42
38
  }
43
- if (command === policy_command_enum_1.PolicyCommand.INSERT) {
39
+ if (command === PolicyCommand.INSERT) {
44
40
  return ["insert"];
45
41
  }
46
- if (command === policy_command_enum_1.PolicyCommand.UPDATE) {
42
+ if (command === PolicyCommand.UPDATE) {
47
43
  return ["select", "update"];
48
44
  }
49
- if (command === policy_command_enum_1.PolicyCommand.DELETE) {
45
+ if (command === PolicyCommand.DELETE) {
50
46
  return ["select", "delete"];
51
47
  }
52
48
  return ["select", "insert", "update", "delete"];
53
49
  }
54
50
  function requiresSequencePrivileges(command) {
55
- return command === policy_command_enum_1.PolicyCommand.INSERT || command === policy_command_enum_1.PolicyCommand.ALL;
51
+ return command === PolicyCommand.INSERT || command === PolicyCommand.ALL;
56
52
  }
57
53
  function createSequenceGrantSql(options, tableIdentifier, roleSql) {
58
- const tableLiteral = (0, escape_sql_literal_1.escapeSqlLiteral)(tableIdentifier);
59
- const schemaName = (0, escape_sql_literal_1.escapeSqlLiteral)(options.schemaName);
60
- const tableName = (0, escape_sql_literal_1.escapeSqlLiteral)(options.tableName);
61
- return /* SQL */ `do $$ declare sequence_identifier text; begin for sequence_identifier in select pg_get_serial_sequence('${tableLiteral}', columns.column_name) from information_schema.columns where columns.table_schema = '${schemaName}' and columns.table_name = '${tableName}' and pg_get_serial_sequence('${tableLiteral}', columns.column_name) is not null loop execute format('grant usage, select on sequence %s to ${roleSql}', sequence_identifier); end loop; end $$;`;
54
+ const tableLiteral = escapeSqlLiteral(tableIdentifier);
55
+ const schemaName = escapeSqlLiteral(options.schemaName);
56
+ const tableName = escapeSqlLiteral(options.tableName);
57
+ return `do $$ declare sequence_identifier text; begin for sequence_identifier in select pg_get_serial_sequence('${tableLiteral}', columns.column_name) from information_schema.columns where columns.table_schema = '${schemaName}' and columns.table_name = '${tableName}' and pg_get_serial_sequence('${tableLiteral}', columns.column_name) is not null loop execute format('grant usage, select on sequence %s to ${roleSql}', sequence_identifier); end loop; end $$;`;
62
58
  }
63
59
  function getPolicyPredicates(options) {
64
- const command = options.command ?? policy_command_enum_1.PolicyCommand.ALL;
60
+ const command = options.command ?? PolicyCommand.ALL;
65
61
  const predicates = {
66
62
  using: normalizeExpression(options.using),
67
63
  withCheck: normalizeExpression(options.withCheck),
@@ -77,7 +73,7 @@ function normalizeExpression(expression) {
77
73
  return normalized;
78
74
  }
79
75
  function assertPolicyPredicates(command, predicates) {
80
- if (command === policy_command_enum_1.PolicyCommand.SELECT || command === policy_command_enum_1.PolicyCommand.DELETE) {
76
+ if (command === PolicyCommand.SELECT || command === PolicyCommand.DELETE) {
81
77
  if (!predicates.using) {
82
78
  throw new Error("Policy using expression is required");
83
79
  }
@@ -86,7 +82,7 @@ function assertPolicyPredicates(command, predicates) {
86
82
  }
87
83
  return;
88
84
  }
89
- if (command === policy_command_enum_1.PolicyCommand.INSERT) {
85
+ if (command === PolicyCommand.INSERT) {
90
86
  if (predicates.using) {
91
87
  throw new Error("Policy using is not allowed for insert");
92
88
  }
@@ -101,11 +97,11 @@ function assertPolicyPredicates(command, predicates) {
101
97
  }
102
98
  function getPolicyPredicateSql(command, predicates) {
103
99
  const fragments = [];
104
- if (command !== policy_command_enum_1.PolicyCommand.INSERT && predicates.using) {
100
+ if (command !== PolicyCommand.INSERT && predicates.using) {
105
101
  fragments.push(`using ${createPredicateExpressionSql(predicates.using)}`);
106
102
  }
107
- if (command !== policy_command_enum_1.PolicyCommand.SELECT &&
108
- command !== policy_command_enum_1.PolicyCommand.DELETE &&
103
+ if (command !== PolicyCommand.SELECT &&
104
+ command !== PolicyCommand.DELETE &&
109
105
  predicates.withCheck) {
110
106
  fragments.push(`with check ${createPredicateExpressionSql(predicates.withCheck)}`);
111
107
  }
@@ -1 +1 @@
1
- {"version":3,"file":"create-policy-up-sql-statements.js","sourceRoot":"","sources":["../../src/utils/create-policy-up-sql-statements.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-policy-up-sql-statements.js","sourceRoot":"","sources":["../../src/utils/create-policy-up-sql-statements.ts"],"names":[],"mappings":"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"}
@@ -1,20 +1,11 @@
1
- /** Instruction for row level security transaction setup. */
2
1
  export type RowLevelSecurityTransactionSetup = RowLevelSecurityApplyTransactionSetup | RowLevelSecurityClearTransactionSetup;
3
- /** SQL and cache key for applying row level security on a transaction. */
4
2
  export interface RowLevelSecurityApplyTransactionSetup {
5
- /** Applies row level security state to the transaction. */
6
3
  action: "apply";
7
- /** Transaction-local SQL that applies the PostgreSQL role and context settings. */
8
4
  sql: string;
9
- /** Stable cache key used to skip repeated setup on the same transaction. */
10
5
  signature: string;
11
- /** Context setting keys emitted by this setup. */
12
6
  contextKeys: string[];
13
7
  }
14
- /** Instruction to clear previously applied row level security state. */
15
8
  export interface RowLevelSecurityClearTransactionSetup {
16
- /** Clears row level security state previously applied to the transaction. */
17
9
  action: "clear";
18
10
  }
19
- /** Creates transaction-local SQL for the current row level security context. */
20
11
  export declare function createRowLevelSecurityTransactionSetup(): RowLevelSecurityTransactionSetup | undefined;