@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,16 +1,12 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RowLevelSecurityDriver = exports.RowLevelSecurityConnection = void 0;
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 { MikroORM as PostgreSqlMikroORM, 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
- /** PostgreSQL connection that applies RLS role and context at SQL execution time. */
10
- class RowLevelSecurityConnection extends postgresql_1.PostgreSqlConnection {
11
- /** Applies row level security setup before delegating SQL execution to MikroORM. */
7
+ export class RowLevelSecurityConnection extends PostgreSqlConnection {
12
8
  async execute(queryOrKnex, params = [], method = "all", ctx, loggerContext) {
13
- const setup = (0, create_row_level_security_transaction_setup_1.createRowLevelSecurityTransactionSetup)();
9
+ const setup = createRowLevelSecurityTransactionSetup();
14
10
  const transactionContext = getTransactionContext(queryOrKnex, ctx);
15
11
  if (transactionContext) {
16
12
  return await this.runInTransactionQueue(transactionContext.state, async () => {
@@ -83,25 +79,24 @@ class RowLevelSecurityConnection extends postgresql_1.PostgreSqlConnection {
83
79
  contextKeys.length === 0) {
84
80
  return;
85
81
  }
86
- await super.execute([/* SQL */ "SET LOCAL ROLE NONE;", createClearContextSql(contextKeys)]
82
+ await super.execute(["SET LOCAL ROLE NONE;", createClearContextSql(contextKeys)]
87
83
  .filter(Boolean)
88
84
  .join("\n"), [], "run", ctx, loggerContext);
89
85
  transactionState[ROW_LEVEL_SECURITY_TRANSACTION_SIGNATURE] = undefined;
90
86
  transactionState[ROW_LEVEL_SECURITY_TRANSACTION_CONTEXT_KEYS] = [];
91
87
  }
92
88
  }
93
- exports.RowLevelSecurityConnection = RowLevelSecurityConnection;
94
- /** MikroORM PostgreSQL driver that applies row level security per SQL query. */
95
- class RowLevelSecurityDriver extends postgresql_1.AbstractSqlDriver {
96
- /** Creates a PostgreSQL driver using the row level security connection. */
89
+ export class RowLevelSecurityDriver extends AbstractSqlDriver {
97
90
  constructor(config) {
98
- super(config, new postgresql_1.PostgreSqlPlatform(), RowLevelSecurityConnection, [
91
+ super(config, new PostgreSqlPlatform(), RowLevelSecurityConnection, [
99
92
  "knex",
100
93
  "pg",
101
94
  ]);
102
95
  }
96
+ getORMClass() {
97
+ return PostgreSqlMikroORM;
98
+ }
103
99
  }
104
- exports.RowLevelSecurityDriver = RowLevelSecurityDriver;
105
100
  function getTransactionContext(queryOrKnex, ctx) {
106
101
  if (ctx) {
107
102
  return {
@@ -112,14 +107,7 @@ function getTransactionContext(queryOrKnex, ctx) {
112
107
  if (typeof queryOrKnex === "string") {
113
108
  return undefined;
114
109
  }
115
- const knexQuery = queryOrKnex;
116
- if (!knexQuery.client?.transacting) {
117
- return undefined;
118
- }
119
- return {
120
- state: knexQuery.client,
121
- execution: queryOrKnex,
122
- };
110
+ return undefined;
123
111
  }
124
112
  function getStaleContextKeys(previousKeys, nextKeys) {
125
113
  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":"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"}
1
+ {"version":3,"file":"row-level-security-driver.js","sourceRoot":"","sources":["../src/row-level-security-driver.ts"],"names":[],"mappings":"AASA,OAAO,EACL,QAAQ,IAAI,kBAAkB,EAC9B,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAA2B,MAAM,gBAAgB,CAAC;AAE5E,OAAO,EACL,sCAAsC,GAEvC,MAAM,wDAAwD,CAAC;AAEhE,MAAM,wCAAwC,GAAG,MAAM,CACrD,sCAAsC,CACvC,CAAC;AACF,MAAM,2CAA2C,GAAG,MAAM,CACxD,wCAAwC,CACzC,CAAC;AACF,MAAM,oCAAoC,GAAG,MAAM,CACjD,kCAAkC,CACnC,CAAC;AAcF,MAAM,OAAO,0BAA2B,SAAQ,oBAAoB;IAEzD,KAAK,CAAC,OAAO,CAIpB,WAA2D,EAC3D,SAA6B,EAAE,EAC/B,SAAgC,KAAK,EACrC,GAAiB,EACjB,aAA8B;QAE9B,MAAM,KAAK,GAAG,sCAAsC,EAAE,CAAC;QACvD,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QAEnE,IAAI,kBAAkB,EAAE,CAAC;YACvB,OAAO,MAAM,IAAI,CAAC,qBAAqB,CACrC,kBAAkB,CAAC,KAAK,EACxB,KAAK,IAAI,EAAE;gBACT,MAAM,IAAI,CAAC,yBAAyB,CAClC,kBAAkB,CAAC,KAAK,EACxB,kBAAkB,CAAC,SAAS,EAC5B,KAAK,EACL,aAAa,CACd,CAAC;gBAEF,OAAO,MAAM,KAAK,CAAC,OAAO,CACxB,WAAW,EACX,MAAM,EACN,MAAM,EACN,kBAAkB,CAAC,SAAS,EAC5B,aAAa,CACd,CAAC;YACJ,CAAC,CACF,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YACvC,OAAO,MAAM,KAAK,CAAC,OAAO,CACxB,WAAW,EACX,MAAM,EACN,MAAM,EACN,GAAG,EACH,aAAa,CACd,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,IAAI,CAAC,aAAa,CAC7B,KAAK,EAAE,GAAG,EAAE,EAAE;YACZ,MAAM,gBAAgB,GAAG,GAAuC,CAAC;YAEjE,OAAO,MAAM,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,EAAE,KAAK,IAAI,EAAE;gBACnE,MAAM,IAAI,CAAC,yBAAyB,CAClC,gBAAgB,EAChB,GAAG,EACH,KAAK,EACL,aAAa,CACd,CAAC;gBAEF,OAAO,MAAM,KAAK,CAAC,OAAO,CACxB,WAAW,EACX,MAAM,EACN,MAAM,EACN,GAAG,EACH,aAAa,CACd,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC,EACD;YACE,aAAa;SACd,CACF,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,qBAAqB,CACjC,gBAAkD,EAClD,QAA0B;QAE1B,MAAM,QAAQ,GAAG,gBAAgB,CAAC,oCAAoC,CAAC,CAAC;QACxE,IAAI,OAAO,GAAe,GAAG,EAAE;YAC7B,OAAO;QACT,CAAC,CAAC;QACF,MAAM,OAAO,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAC5C,OAAO,GAAG,OAAO,CAAC;QACpB,CAAC,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,CAAC,QAAQ,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CACjD,GAAG,EAAE,CAAC,OAAO,EACb,GAAG,EAAE,CAAC,OAAO,CACd,CAAC;QAEF,gBAAgB,CAAC,oCAAoC,CAAC,GAAG,MAAM,CAAC;QAChE,MAAM,QAAQ,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAEvC,IAAI,CAAC;YACH,OAAO,MAAM,QAAQ,EAAE,CAAC;QAC1B,CAAC;gBAAS,CAAC;YACT,OAAO,EAAE,CAAC;YAEV,IAAI,gBAAgB,CAAC,oCAAoC,CAAC,KAAK,MAAM,EAAE,CAAC;gBACtE,gBAAgB,CAAC,oCAAoC,CAAC,GAAG,SAAS,CAAC;YACrE,CAAC;QACH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,yBAAyB,CACrC,gBAAkD,EAClD,GAAgB,EAChB,KAAmD,EACnD,aAA8B;QAE9B,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC;YACvE,OAAO;QACT,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YAC7B,MAAM,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC;YACvE,OAAO;QACT,CAAC;QAED,MAAM,gBAAgB,GAAG,mBAAmB,CAC1C,gBAAgB,CAAC,2CAA2C,CAAC,IAAI,EAAE,EACnE,KAAK,CAAC,WAAW,CAClB,CAAC;QACF,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;aAClE,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,IACE,gBAAgB,CAAC,wCAAwC,CAAC;YACxD,KAAK,CAAC,SAAS;YACjB,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAC7B,CAAC;YACD,OAAO;QACT,CAAC;QAED,MAAM,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC;QAC7D,gBAAgB,CAAC,wCAAwC,CAAC;YACxD,KAAK,CAAC,SAAS,CAAC;QAClB,gBAAgB,CAAC,2CAA2C,CAAC,GAAG;YAC9D,GAAG,KAAK,CAAC,WAAW;SACrB,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,qBAAqB,CACjC,gBAAkD,EAClD,GAAgB,EAChB,aAA8B;QAE9B,MAAM,WAAW,GACf,gBAAgB,CAAC,2CAA2C,CAAC,IAAI,EAAE,CAAC;QAEtE,IACE,CAAC,gBAAgB,CAAC,wCAAwC,CAAC;YAC3D,WAAW,CAAC,MAAM,KAAK,CAAC,EACxB,CAAC;YACD,OAAO;QACT,CAAC;QAED,MAAM,KAAK,CAAC,OAAO,CACjB,CAAW,sBAAsB,EAAE,qBAAqB,CAAC,WAAW,CAAC,CAAC;aACnE,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC,IAAI,CAAC,EACb,EAAE,EACF,KAAK,EACL,GAAG,EACH,aAAa,CACd,CAAC;QACF,gBAAgB,CAAC,wCAAwC,CAAC,GAAG,SAAS,CAAC;QACvE,gBAAgB,CAAC,2CAA2C,CAAC,GAAG,EAAE,CAAC;IACrE,CAAC;CACF;AAGD,MAAM,OAAO,sBAAuB,SAAQ,iBAA6C;IAEvF,YAAY,MAAqB;QAC/B,KAAK,CAAC,MAAM,EAAE,IAAI,kBAAkB,EAAE,EAAE,0BAA0B,EAAE;YAClE,MAAM;YACN,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IAGQ,WAAW;QAClB,OAAO,kBAAkB,CAAC;IAC5B,CAAC;CACF;AAED,SAAS,qBAAqB,CAC5B,WAAoB,EACpB,GAAY;IAEZ,IAAI,GAAG,EAAE,CAAC;QACR,OAAO;YACL,KAAK,EAAE,GAAuC;YAC9C,SAAS,EAAE,GAAkB;SAC9B,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;QACpC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,mBAAmB,CAAC,YAAsB,EAAE,QAAkB;IACrE,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;IAErC,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,qBAAqB,CAAC,WAAqB;IAClD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,UAAU,WAAW;SACzB,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,mBAAmB,GAAG,gBAAgB,CAAC;SACpD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAClB,CAAC"}
@@ -1,12 +1,10 @@
1
1
  import { TSMigrationGenerator } from "@mikro-orm/migrations";
2
- import type { MigrationDiff } from "./interfaces/row-level-security-migration-generator.interface";
3
- /** MikroORM TypeScript migration generator that injects generated RLS SQL. */
2
+ import type { MigrationDiff } from "./interfaces/row-level-security-migration-generator.interface.js";
4
3
  export declare class RowLevelSecurityMigrationGenerator extends TSMigrationGenerator {
5
4
  private existingPolicyDefinitions?;
6
5
  private existingPolicyRoleDefinitions?;
7
6
  private currentPolicyDefinitions?;
8
7
  generate(diff: MigrationDiff, path?: string, name?: string): Promise<[string, string]>;
9
- /** Returns whether the current metadata contains RLS policy changes not present in the database. */
10
8
  hasPendingPolicyChanges(diff: MigrationDiff): Promise<boolean>;
11
9
  private withPolicyDefinitions;
12
10
  generateMigrationFile(className: string, diff: MigrationDiff): string;
@@ -1,26 +1,24 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RowLevelSecurityMigrationGenerator = void 0;
4
- const node_crypto_1 = require("node:crypto");
5
- const migrations_1 = require("@mikro-orm/migrations");
6
- const pgsql_ast_parser_1 = require("pgsql-ast-parser");
7
- const policy_decorator_1 = require("./decorators/policy.decorator");
8
- const policy_command_enum_1 = require("./enums/policy-command.enum");
9
- const policy_mode_enum_1 = require("./enums/policy-mode.enum");
10
- const create_policy_bootstrap_sql_statements_1 = require("./utils/create-policy-bootstrap-sql-statements");
11
- const create_policy_down_sql_1 = require("./utils/create-policy-down-sql");
12
- const create_policy_privilege_down_sql_statements_1 = require("./utils/create-policy-privilege-down-sql-statements");
13
- const create_policy_role_sql_statements_1 = require("./utils/create-policy-role-sql-statements");
14
- const create_policy_up_sql_statements_1 = require("./utils/create-policy-up-sql-statements");
15
- const normalize_postgres_type_alias_util_1 = require("./utils/normalize-postgres-type-alias.util");
1
+ import { createHash } from "node:crypto";
2
+ import { TSMigrationGenerator } from "@mikro-orm/migrations";
3
+ import { parse } from "pgsql-ast-parser";
4
+ import { getPolicyDefinitions } from "./decorators/policy.decorator.js";
5
+ import { PolicyCommand } from "./enums/policy-command.enum.js";
6
+ import { PolicyMode } from "./enums/policy-mode.enum.js";
7
+ import { createPolicyBootstrapSqlStatements } from "./utils/create-policy-bootstrap-sql-statements.js";
8
+ import { createPolicyDownSql } from "./utils/create-policy-down-sql.js";
9
+ import { createPolicyPrivilegeDownSqlStatements } from "./utils/create-policy-privilege-down-sql-statements.js";
10
+ import { createPolicyRoleDownSqlStatements, createPolicyRoleUpSqlStatements, getPolicyRoleNames, } from "./utils/create-policy-role-sql-statements.js";
11
+ import { createPolicyUpSqlStatements } from "./utils/create-policy-up-sql-statements.js";
12
+ import { normalizePostgresTypeAlias } from "./utils/normalize-postgres-type-alias.util.js";
16
13
  const POSTGRES_IDENTIFIER_MAX_LENGTH = 63;
17
14
  const POLICY_IDENTIFIER_TYPE = "policy";
18
- /** MikroORM TypeScript migration generator that injects generated RLS SQL. */
19
- class RowLevelSecurityMigrationGenerator extends migrations_1.TSMigrationGenerator {
15
+ export class RowLevelSecurityMigrationGenerator extends TSMigrationGenerator {
16
+ existingPolicyDefinitions;
17
+ existingPolicyRoleDefinitions;
18
+ currentPolicyDefinitions;
20
19
  async generate(diff, path, name) {
21
20
  return await this.withPolicyDefinitions(diff, () => super.generate(diff, path, name));
22
21
  }
23
- /** Returns whether the current metadata contains RLS policy changes not present in the database. */
24
22
  async hasPendingPolicyChanges(diff) {
25
23
  return await this.withPolicyDefinitions(diff, () => {
26
24
  if (!this.existingPolicyDefinitions) {
@@ -61,28 +59,28 @@ class RowLevelSecurityMigrationGenerator extends migrations_1.TSMigrationGenerat
61
59
  }
62
60
  const policyDiff = {
63
61
  up: [
64
- ...removed.map((definition) => (0, create_policy_down_sql_1.createPolicyDownSql)(definition)),
62
+ ...removed.map((definition) => createPolicyDownSql(definition)),
65
63
  ...diff.up,
66
- ...(added.length > 0 ? (0, create_policy_bootstrap_sql_statements_1.createPolicyBootstrapSqlStatements)() : []),
64
+ ...(added.length > 0 ? createPolicyBootstrapSqlStatements() : []),
67
65
  ...(added.length > 0
68
- ? (0, create_policy_role_sql_statements_1.createPolicyRoleUpSqlStatements)(getDefinitionRoles(added))
66
+ ? createPolicyRoleUpSqlStatements(getDefinitionRoles(added))
69
67
  : []),
70
68
  ...getDefinitionBootstrapSql(added),
71
- ...added.flatMap((definition) => (0, create_policy_up_sql_statements_1.createPolicyUpSqlStatements)(definition)),
69
+ ...added.flatMap((definition) => createPolicyUpSqlStatements(definition)),
72
70
  ],
73
71
  down: [
74
- ...added.map((definition) => (0, create_policy_down_sql_1.createPolicyDownSql)(definition)),
75
- ...added.flatMap((definition) => (0, create_policy_privilege_down_sql_statements_1.createPolicyPrivilegeDownSqlStatements)(definition, preservedDefinitions)),
72
+ ...added.map((definition) => createPolicyDownSql(definition)),
73
+ ...added.flatMap((definition) => createPolicyPrivilegeDownSqlStatements(definition, preservedDefinitions)),
76
74
  ...(revocableRoleNames.length > 0
77
- ? (0, create_policy_role_sql_statements_1.createPolicyRoleDownSqlStatements)(revocableRoleNames)
75
+ ? createPolicyRoleDownSqlStatements(revocableRoleNames)
78
76
  : []),
79
77
  ...diff.down,
80
- ...(removed.length > 0 ? (0, create_policy_bootstrap_sql_statements_1.createPolicyBootstrapSqlStatements)() : []),
78
+ ...(removed.length > 0 ? createPolicyBootstrapSqlStatements() : []),
81
79
  ...(removed.length > 0
82
- ? (0, create_policy_role_sql_statements_1.createPolicyRoleUpSqlStatements)(getDefinitionRoles(removed))
80
+ ? createPolicyRoleUpSqlStatements(getDefinitionRoles(removed))
83
81
  : []),
84
82
  ...getDefinitionBootstrapSql(removed),
85
- ...removed.flatMap((definition) => (0, create_policy_up_sql_statements_1.createPolicyUpSqlStatements)(definition)),
83
+ ...removed.flatMap((definition) => createPolicyUpSqlStatements(definition)),
86
84
  ],
87
85
  };
88
86
  const migrationFile = super.generateMigrationFile(className, policyDiff);
@@ -122,7 +120,7 @@ class RowLevelSecurityMigrationGenerator extends migrations_1.TSMigrationGenerat
122
120
  tableName,
123
121
  properties: entityMetadata.properties,
124
122
  };
125
- return (0, policy_decorator_1.getPolicyDefinitions)(entityMetadata.class, policyEntityMetadata).map((policy) => {
123
+ return getPolicyDefinitions(entityMetadata.class, policyEntityMetadata).map((policy) => {
126
124
  const policyName = normalizePostgresPolicyName(policy.name, hashAlgorithm);
127
125
  return {
128
126
  entityName,
@@ -153,6 +151,9 @@ class RowLevelSecurityMigrationGenerator extends migrations_1.TSMigrationGenerat
153
151
  if (!allMetadata) {
154
152
  throw new Error("MikroORM metadata storage is not available");
155
153
  }
154
+ if (allMetadata instanceof Map) {
155
+ return [...allMetadata.values()];
156
+ }
156
157
  return Array.isArray(allMetadata)
157
158
  ? allMetadata
158
159
  : Object.values(allMetadata);
@@ -167,7 +168,7 @@ class RowLevelSecurityMigrationGenerator extends migrations_1.TSMigrationGenerat
167
168
  if (!connection) {
168
169
  return undefined;
169
170
  }
170
- const rows = await connection.execute(/* SQL */ `
171
+ const rows = await connection.execute(`
171
172
  SELECT
172
173
  p.polname AS policy_name,
173
174
  n.nspname AS schema_name,
@@ -191,7 +192,6 @@ class RowLevelSecurityMigrationGenerator extends migrations_1.TSMigrationGenerat
191
192
  return sortPolicyDefinitions(rows.map(createPolicyDefinitionFromPolicyRow));
192
193
  }
193
194
  }
194
- exports.RowLevelSecurityMigrationGenerator = RowLevelSecurityMigrationGenerator;
195
195
  function convertMigrationBaseClass(migrationFile) {
196
196
  const migrationImport = "import { Migration } from '@mikro-orm/migrations';";
197
197
  const migrationBaseClass = "extends Migration";
@@ -215,7 +215,7 @@ function getDefinitionRoleNames(definitions) {
215
215
  if (definitions.length === 0) {
216
216
  return [];
217
217
  }
218
- return (0, create_policy_role_sql_statements_1.getPolicyRoleNames)(getDefinitionRoles(definitions));
218
+ return getPolicyRoleNames(getDefinitionRoles(definitions));
219
219
  }
220
220
  function getRevocableDefinitionRoleNames(addedDefinitions, preservedDefinitions) {
221
221
  const preservedRoleNames = new Set(getDefinitionRoleNames(preservedDefinitions));
@@ -268,10 +268,10 @@ function hasSamePolicyDefinitionContent(left, right) {
268
268
  normalizePolicyRoles(right.roles).join("\n"));
269
269
  }
270
270
  function normalizePolicyMode(mode) {
271
- return mode ?? policy_mode_enum_1.PolicyMode.PERMISSIVE;
271
+ return mode ?? PolicyMode.PERMISSIVE;
272
272
  }
273
273
  function normalizePolicyCommand(command) {
274
- return command ?? policy_command_enum_1.PolicyCommand.ALL;
274
+ return command ?? PolicyCommand.ALL;
275
275
  }
276
276
  function hasSamePolicyExpression(left, right) {
277
277
  const normalizedLeft = normalizePolicyExpression(left);
@@ -313,7 +313,7 @@ function parsePolicyExpressionStatement(expression) {
313
313
  try {
314
314
  return {
315
315
  sql,
316
- statement: (0, pgsql_ast_parser_1.parse)(sql, { locationTracking: true })[0],
316
+ statement: parse(sql, { locationTracking: true })[0],
317
317
  };
318
318
  }
319
319
  catch {
@@ -323,7 +323,7 @@ function parsePolicyExpressionStatement(expression) {
323
323
  const parserCompatibleSql = `select 1 where ${parserCompatibleExpression}`;
324
324
  return {
325
325
  sql: parserCompatibleSql,
326
- statement: (0, pgsql_ast_parser_1.parse)(parserCompatibleSql, {
326
+ statement: parse(parserCompatibleSql, {
327
327
  locationTracking: true,
328
328
  })[0],
329
329
  };
@@ -336,7 +336,6 @@ function parsePolicyExpressionStatement(expression) {
336
336
  }
337
337
  }
338
338
  function getPolicyExpressionForAstParser(expression) {
339
- // pgsql-ast-parser treats these multi-word casts in select projections as ambiguous.
340
339
  return replaceSqlOutsideQuotedTokens(expression, (segment) => segment
341
340
  .replace(/::\s*character\s+varying\b/gi, "::varchar")
342
341
  .replace(/::\s*bit\s+varying\b/gi, "::varbit"));
@@ -543,7 +542,7 @@ function isPolicyExpressionAstNode(value, type) {
543
542
  value.type === type);
544
543
  }
545
544
  function normalizePolicyExpressionDataTypeName(typeName) {
546
- return (0, normalize_postgres_type_alias_util_1.normalizePostgresTypeAlias)(typeName.toLowerCase().replace(/\s+/g, " "));
545
+ return normalizePostgresTypeAlias(typeName.toLowerCase().replace(/\s+/g, " "));
547
546
  }
548
547
  function normalizePolicyExpressionOperator(operator) {
549
548
  return operator === "!=" ? "<>" : operator;
@@ -581,7 +580,7 @@ function createPolicyNameAliases(policyName, normalizedName) {
581
580
  return [...aliases];
582
581
  }
583
582
  function hashValue(value, length, hashAlgorithm) {
584
- return (0, node_crypto_1.createHash)(hashAlgorithm)
583
+ return createHash(hashAlgorithm)
585
584
  .update(value)
586
585
  .digest("hex")
587
586
  .substring(0, length);
@@ -592,7 +591,7 @@ function createPolicyDefinitionFromPolicyRow(row) {
592
591
  schemaName: row.schema_name,
593
592
  tableName: row.table_name,
594
593
  policyName: row.policy_name,
595
- mode: row.permissive === false ? policy_mode_enum_1.PolicyMode.RESTRICTIVE : policy_mode_enum_1.PolicyMode.PERMISSIVE,
594
+ mode: row.permissive === false ? PolicyMode.RESTRICTIVE : PolicyMode.PERMISSIVE,
596
595
  command: getPolicyCommandFromDatabase(row.command),
597
596
  using: row.qual ?? undefined,
598
597
  withCheck: row.with_check ?? undefined,
@@ -614,18 +613,18 @@ function normalizePolicyRowRoles(roles) {
614
613
  }
615
614
  function getPolicyCommandFromDatabase(command) {
616
615
  if (command === "r") {
617
- return policy_command_enum_1.PolicyCommand.SELECT;
616
+ return PolicyCommand.SELECT;
618
617
  }
619
618
  if (command === "a") {
620
- return policy_command_enum_1.PolicyCommand.INSERT;
619
+ return PolicyCommand.INSERT;
621
620
  }
622
621
  if (command === "w") {
623
- return policy_command_enum_1.PolicyCommand.UPDATE;
622
+ return PolicyCommand.UPDATE;
624
623
  }
625
624
  if (command === "d") {
626
- return policy_command_enum_1.PolicyCommand.DELETE;
625
+ return PolicyCommand.DELETE;
627
626
  }
628
- return policy_command_enum_1.PolicyCommand.ALL;
627
+ return PolicyCommand.ALL;
629
628
  }
630
629
  function isCreateTableStatement(sql, definition) {
631
630
  return new RegExp(`create\\s+table\\s+(?:if\\s+not\\s+exists\\s+)?${createTableReferencePattern(definition)}(?:\\s|\\()`, "i").test(sql);
@@ -1 +1 @@
1
- {"version":3,"file":"row-level-security-migration-generator.js","sourceRoot":"","sources":["../src/row-level-security-migration-generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"row-level-security-migration-generator.js","sourceRoot":"","sources":["../src/row-level-security-migration-generator.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,6 @@
1
1
  import { Migration } from "@mikro-orm/migrations";
2
- import type { PolicySqlOptions } from "./interfaces/policy-sql-options.interface";
3
- /** Base MikroORM migration with convenience helpers for row-level security SQL. */
2
+ import type { PolicySqlOptions } from "./interfaces/policy-sql-options.interface.js";
4
3
  export declare abstract class RowLevelSecurityMigration extends Migration {
5
- /** Adds shared RLS bootstrap SQL. Currently no-op; roles are managed outside migrations. */
6
4
  protected addRowLevelSecurityBootstrapSql(roles?: string[]): void;
7
- /** Adds SQL that enables RLS and creates the configured policy. */
8
5
  protected addPolicySql(options: PolicySqlOptions): void;
9
6
  }
@@ -1,30 +1,23 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RowLevelSecurityMigration = void 0;
4
- const migrations_1 = require("@mikro-orm/migrations");
5
- const create_policy_bootstrap_sql_statements_1 = require("./utils/create-policy-bootstrap-sql-statements");
6
- const create_policy_role_sql_statements_1 = require("./utils/create-policy-role-sql-statements");
7
- const create_policy_up_sql_statements_1 = require("./utils/create-policy-up-sql-statements");
8
- /** Base MikroORM migration with convenience helpers for row-level security SQL. */
9
- class RowLevelSecurityMigration extends migrations_1.Migration {
10
- /** Adds shared RLS bootstrap SQL. Currently no-op; roles are managed outside migrations. */
1
+ import { Migration } from "@mikro-orm/migrations";
2
+ import { createPolicyBootstrapSqlStatements } from "./utils/create-policy-bootstrap-sql-statements.js";
3
+ import { createPolicyRoleUpSqlStatements } from "./utils/create-policy-role-sql-statements.js";
4
+ import { createPolicyUpSqlStatements } from "./utils/create-policy-up-sql-statements.js";
5
+ export class RowLevelSecurityMigration extends Migration {
11
6
  addRowLevelSecurityBootstrapSql(roles = []) {
12
- for (const sql of (0, create_policy_bootstrap_sql_statements_1.createPolicyBootstrapSqlStatements)()) {
7
+ for (const sql of createPolicyBootstrapSqlStatements()) {
13
8
  this.addSql(sql);
14
9
  }
15
- for (const sql of (0, create_policy_role_sql_statements_1.createPolicyRoleUpSqlStatements)(roles)) {
10
+ for (const sql of createPolicyRoleUpSqlStatements(roles)) {
16
11
  this.addSql(sql);
17
12
  }
18
13
  }
19
- /** Adds SQL that enables RLS and creates the configured policy. */
20
14
  addPolicySql(options) {
21
- for (const sql of (0, create_policy_role_sql_statements_1.createPolicyRoleUpSqlStatements)(options.roles)) {
15
+ for (const sql of createPolicyRoleUpSqlStatements(options.roles)) {
22
16
  this.addSql(sql);
23
17
  }
24
- for (const sql of (0, create_policy_up_sql_statements_1.createPolicyUpSqlStatements)(options)) {
18
+ for (const sql of createPolicyUpSqlStatements(options)) {
25
19
  this.addSql(sql);
26
20
  }
27
21
  }
28
22
  }
29
- exports.RowLevelSecurityMigration = RowLevelSecurityMigration;
30
23
  //# sourceMappingURL=row-level-security-migration.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"row-level-security-migration.js","sourceRoot":"","sources":["../src/row-level-security-migration.ts"],"names":[],"mappings":";;;AAAA,sDAAkD;AAGlD,2GAAoG;AACpG,iGAA4F;AAC5F,6FAAsF;AAEtF,mFAAmF;AACnF,MAAsB,yBAA0B,SAAQ,sBAAS;IAC/D,4FAA4F;IAClF,+BAA+B,CAAC,QAAkB,EAAE;QAC5D,KAAK,MAAM,GAAG,IAAI,IAAA,2EAAkC,GAAE,EAAE,CAAC;YACvD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,IAAA,mEAA+B,EAAC,KAAK,CAAC,EAAE,CAAC;YACzD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IAED,mEAAmE;IACzD,YAAY,CAAC,OAAyB;QAC9C,KAAK,MAAM,GAAG,IAAI,IAAA,mEAA+B,EAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACjE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,IAAA,6DAA2B,EAAC,OAAO,CAAC,EAAE,CAAC;YACvD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;CACF;AAtBD,8DAsBC"}
1
+ {"version":3,"file":"row-level-security-migration.js","sourceRoot":"","sources":["../src/row-level-security-migration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGlD,OAAO,EAAE,kCAAkC,EAAE,MAAM,mDAAmD,CAAC;AACvG,OAAO,EAAE,+BAA+B,EAAE,MAAM,8CAA8C,CAAC;AAC/F,OAAO,EAAE,2BAA2B,EAAE,MAAM,4CAA4C,CAAC;AAGzF,MAAM,OAAgB,yBAA0B,SAAQ,SAAS;IAErD,+BAA+B,CAAC,QAAkB,EAAE;QAC5D,KAAK,MAAM,GAAG,IAAI,kCAAkC,EAAE,EAAE,CAAC;YACvD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,+BAA+B,CAAC,KAAK,CAAC,EAAE,CAAC;YACzD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IAGS,YAAY,CAAC,OAAyB;QAC9C,KAAK,MAAM,GAAG,IAAI,+BAA+B,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACjE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,2BAA2B,CAAC,OAAO,CAAC,EAAE,CAAC;YACvD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;CACF"}
@@ -1,13 +1,11 @@
1
1
  import type { MigrationResult, MikroORM } from "@mikro-orm/core";
2
- import { Migrator } from "@mikro-orm/migrations";
3
- /** MikroORM migrator that also creates migrations for policy-only RLS changes. */
4
- export declare class RowLevelSecurityMigrator extends Migrator {
5
- /** Registers the RLS-aware migrator extension with a MikroORM instance. */
2
+ import { Migrator as BaseMigrator } from "@mikro-orm/migrations";
3
+ declare class Migrator extends BaseMigrator {
6
4
  static register(orm: MikroORM): void;
7
- createMigration(path?: string, blank?: boolean, initial?: boolean, name?: string): Promise<MigrationResult>;
8
- /** Checks whether schema or RLS policy changes require a new migration. */
9
- checkMigrationNeeded(): Promise<boolean>;
5
+ create(path?: string, blank?: boolean, initial?: boolean, name?: string): Promise<MigrationResult>;
6
+ checkSchema(): Promise<boolean>;
10
7
  private hasPendingPolicyChanges;
11
8
  private getRowLevelSecurityGenerator;
12
9
  private getInternals;
13
10
  }
11
+ export { Migrator as RowLevelSecurityMigrator };
@@ -1,20 +1,16 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RowLevelSecurityMigrator = void 0;
4
- const migrations_1 = require("@mikro-orm/migrations");
5
- const row_level_security_migration_generator_1 = require("./row-level-security-migration-generator");
6
- /** MikroORM migrator that also creates migrations for policy-only RLS changes. */
7
- class RowLevelSecurityMigrator extends migrations_1.Migrator {
8
- /** Registers the RLS-aware migrator extension with a MikroORM instance. */
1
+ import { Migrator as BaseMigrator } from "@mikro-orm/migrations";
2
+ import { RowLevelSecurityMigrationGenerator } from "./row-level-security-migration-generator.js";
3
+ class Migrator extends BaseMigrator {
9
4
  static register(orm) {
10
- orm.config.registerExtension("@mikro-orm/migrator", () => new RowLevelSecurityMigrator(orm.em));
5
+ orm.config.registerExtension("@mikro-orm/migrator", () => new Migrator(orm.em));
11
6
  }
12
- async createMigration(path, blank = false, initial = false, name) {
7
+ async create(path, blank = false, initial = false, name) {
13
8
  if (initial) {
14
- return await super.createMigration(path, blank, initial, name);
9
+ return await super.create(path, blank, initial, name);
15
10
  }
16
11
  const internals = this.getInternals();
17
- await internals.ensureMigrationsDirExists();
12
+ const offline = await internals.hasSnapshot();
13
+ await (offline ? internals.initPaths() : internals.init());
18
14
  const diff = await internals.getSchemaDiff(blank, initial);
19
15
  if (diff.up.length === 0) {
20
16
  const hasPolicyChanges = await this.hasPendingPolicyChanges(diff);
@@ -30,10 +26,8 @@ class RowLevelSecurityMigrator extends migrations_1.Migrator {
30
26
  diff,
31
27
  };
32
28
  }
33
- /** Checks whether schema or RLS policy changes require a new migration. */
34
- async checkMigrationNeeded() {
29
+ async checkSchema() {
35
30
  const internals = this.getInternals();
36
- await internals.ensureMigrationsDirExists();
37
31
  const diff = await internals.getSchemaDiff(false, false);
38
32
  if (diff.up.length > 0) {
39
33
  return true;
@@ -42,13 +36,11 @@ class RowLevelSecurityMigrator extends migrations_1.Migrator {
42
36
  }
43
37
  async hasPendingPolicyChanges(diff) {
44
38
  const generator = this.getRowLevelSecurityGenerator();
45
- // TODO: Support MikroORM snapshot mode by comparing generated policy state
46
- // instead of only live database policies.
47
39
  return generator ? await generator.hasPendingPolicyChanges(diff) : false;
48
40
  }
49
41
  getRowLevelSecurityGenerator() {
50
42
  const generator = this.getInternals().generator;
51
- return generator instanceof row_level_security_migration_generator_1.RowLevelSecurityMigrationGenerator
43
+ return generator instanceof RowLevelSecurityMigrationGenerator
52
44
  ? generator
53
45
  : undefined;
54
46
  }
@@ -56,5 +48,5 @@ class RowLevelSecurityMigrator extends migrations_1.Migrator {
56
48
  return this;
57
49
  }
58
50
  }
59
- exports.RowLevelSecurityMigrator = RowLevelSecurityMigrator;
51
+ export { Migrator as RowLevelSecurityMigrator };
60
52
  //# sourceMappingURL=row-level-security-migrator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"row-level-security-migrator.js","sourceRoot":"","sources":["../src/row-level-security-migrator.ts"],"names":[],"mappings":";;;AACA,sDAAiD;AAEjD,qGAA8F;AAiB9F,kFAAkF;AAClF,MAAa,wBAAyB,SAAQ,qBAAQ;IACpD,2EAA2E;IAC3E,MAAM,CAAU,QAAQ,CAAC,GAAa;QACpC,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAC1B,qBAAqB,EACrB,GAAG,EAAE,CAAC,IAAI,wBAAwB,CAAC,GAAG,CAAC,EAAW,CAAC,CACpD,CAAC;IACJ,CAAC;IAEQ,KAAK,CAAC,eAAe,CAC5B,IAAa,EACb,KAAK,GAAG,KAAK,EACb,OAAO,GAAG,KAAK,EACf,IAAa;QAEb,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,MAAM,KAAK,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QACjE,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAEtC,MAAM,SAAS,CAAC,yBAAyB,EAAE,CAAC;QAE5C,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAE3D,IAAI,IAAI,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;YAElE,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtB,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;YAC1C,CAAC;QACH,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAEvE,MAAM,SAAS,CAAC,kBAAkB,EAAE,CAAC;QAErC,OAAO;YACL,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;YACtB,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;YAClB,IAAI;SACL,CAAC;IACJ,CAAC;IAED,2EAA2E;IAClE,KAAK,CAAC,oBAAoB;QACjC,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAEtC,MAAM,SAAS,CAAC,yBAAyB,EAAE,CAAC;QAE5C,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAEzD,IAAI,IAAI,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,MAAM,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC;IAEO,KAAK,CAAC,uBAAuB,CAAC,IAAmB;QACvD,MAAM,SAAS,GAAG,IAAI,CAAC,4BAA4B,EAAE,CAAC;QAEtD,2EAA2E;QAC3E,0CAA0C;QAC1C,OAAO,SAAS,CAAC,CAAC,CAAC,MAAM,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC3E,CAAC;IAEO,4BAA4B;QAClC,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC;QAEhD,OAAO,SAAS,YAAY,2EAAkC;YAC5D,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;IAEO,YAAY;QAClB,OAAO,IAAoC,CAAC;IAC9C,CAAC;CACF;AA9ED,4DA8EC"}
1
+ {"version":3,"file":"row-level-security-migrator.js","sourceRoot":"","sources":["../src/row-level-security-migrator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAEjE,OAAO,EAAE,kCAAkC,EAAE,MAAM,6CAA6C,CAAC;AAoBjG,MAAM,QAAS,SAAQ,YAAY;IAEjC,MAAM,CAAU,QAAQ,CAAC,GAAa;QACpC,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAC1B,qBAAqB,EACrB,GAAG,EAAE,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAW,CAAC,CACpC,CAAC;IACJ,CAAC;IAEQ,KAAK,CAAC,MAAM,CACnB,IAAa,EACb,KAAK,GAAG,KAAK,EACb,OAAO,GAAG,KAAK,EACf,IAAa;QAEb,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QACxD,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,WAAW,EAAE,CAAC;QAE9C,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;QAE3D,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAE3D,IAAI,IAAI,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;YAElE,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtB,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;YAC1C,CAAC;QACH,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAEvE,MAAM,SAAS,CAAC,kBAAkB,EAAE,CAAC;QAErC,OAAO;YACL,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;YACtB,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;YAClB,IAAI;SACL,CAAC;IACJ,CAAC;IAGQ,KAAK,CAAC,WAAW;QACxB,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAEzD,IAAI,IAAI,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,MAAM,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC;IAEO,KAAK,CAAC,uBAAuB,CAAC,IAAmB;QACvD,MAAM,SAAS,GAAG,IAAI,CAAC,4BAA4B,EAAE,CAAC;QAItD,OAAO,SAAS,CAAC,CAAC,CAAC,MAAM,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC3E,CAAC;IAEO,4BAA4B;QAClC,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC;QAEhD,OAAO,SAAS,YAAY,kCAAkC;YAC5D,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;IAEO,YAAY;QAClB,OAAO,IAAoC,CAAC;IAC9C,CAAC;CACF;AAID,OAAO,EAAE,QAAQ,IAAI,wBAAwB,EAAE,CAAC"}