@vrplatform/kysely 1.3.41 → 1.3.45-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 (159) hide show
  1. package/build/.data.tar +0 -0
  2. package/build/main/camel-case/index.js +1 -1
  3. package/build/main/camel-case/index.js.map +1 -1
  4. package/build/main/control-plane/index.d.ts +368 -0
  5. package/build/main/control-plane/index.js +64 -0
  6. package/build/main/control-plane/index.js.map +1 -0
  7. package/build/main/domain.d.ts +4 -0
  8. package/build/main/domain.js +3 -0
  9. package/build/main/domain.js.map +1 -0
  10. package/build/main/error.d.ts +2 -1
  11. package/build/main/error.js +2 -1
  12. package/build/main/error.js.map +1 -1
  13. package/build/main/index.d.ts +13 -16
  14. package/build/main/index.js +145 -65
  15. package/build/main/index.js.map +1 -1
  16. package/build/main/isomorphic.d.ts +5 -5
  17. package/build/main/isomorphic.js +4 -10
  18. package/build/main/isomorphic.js.map +1 -1
  19. package/build/main/local/digest.d.ts +3 -3
  20. package/build/main/local/digest.js.map +1 -1
  21. package/build/main/local/generate.js +10 -10
  22. package/build/main/local/generate.js.map +1 -1
  23. package/build/main/local/index.d.ts +5 -1
  24. package/build/main/local/index.js +215 -6
  25. package/build/main/local/index.js.map +1 -1
  26. package/build/main/local/prune-pulled-schema.js +4 -1
  27. package/build/main/local/prune-pulled-schema.js.map +1 -1
  28. package/build/main/migration.d.ts +7 -0
  29. package/build/main/migration.js +11 -0
  30. package/build/main/migration.js.map +1 -0
  31. package/build/main/pganalyze-comment-plugin/comment-transformer.js +0 -1
  32. package/build/main/pganalyze-comment-plugin/comment-transformer.js.map +1 -1
  33. package/build/main/pganalyze-comment-plugin/index.js +16 -3
  34. package/build/main/pganalyze-comment-plugin/index.js.map +1 -1
  35. package/build/main/plugins.d.ts +2 -2
  36. package/build/main/plugins.js.map +1 -1
  37. package/build/main/postgres-error.d.ts +8 -0
  38. package/build/main/postgres-error.js +21 -0
  39. package/build/main/postgres-error.js.map +1 -0
  40. package/build/main/query/index.d.ts +1 -0
  41. package/build/main/query/index.js +1 -0
  42. package/build/main/query/index.js.map +1 -1
  43. package/build/main/query/listing/status.d.ts +2 -12
  44. package/build/main/query/listing/status.js +31 -19
  45. package/build/main/query/listing/status.js.map +1 -1
  46. package/build/main/query/tenant/billing-partner.d.ts +4 -0
  47. package/build/main/query/tenant/billing-partner.js +8 -0
  48. package/build/main/query/tenant/billing-partner.js.map +1 -0
  49. package/build/main/query/tenant/index.d.ts +2 -0
  50. package/build/main/query/tenant/index.js +19 -0
  51. package/build/main/query/tenant/index.js.map +1 -0
  52. package/build/main/query/tenant/status.d.ts +14 -0
  53. package/build/main/query/tenant/status.js +40 -0
  54. package/build/main/query/tenant/status.js.map +1 -0
  55. package/build/main/regional.d.ts +60 -0
  56. package/build/main/regional.js +205 -0
  57. package/build/main/regional.js.map +1 -0
  58. package/build/main/test/index.d.ts +3 -14
  59. package/build/main/test/index.js +0 -23
  60. package/build/main/test/index.js.map +1 -1
  61. package/build/main/transaction.d.ts +3 -3
  62. package/build/main/transaction.js.map +1 -1
  63. package/build/main/v1.generated.d.ts +593 -23
  64. package/build/main/v1.generated.js.map +1 -1
  65. package/build/migrations-v2/0000000000000-baseline.ts +5 -0
  66. package/build/migrations-v2/0000000000001-public-audit-events-v2.ts +137 -0
  67. package/build/migrations-v2/0000000000002-audit-recovery-watermarks.ts +30 -0
  68. package/build/migrations-v2/0000000000003-audit-effect-recovery-watermark.ts +13 -0
  69. package/build/migrations-v2/0000000000004-audit-event-projected-at.ts +15 -0
  70. package/build/migrations-v2/0000000000005-audit-recovery-indexes.ts +63 -0
  71. package/build/migrations-v2/0000000000006-audit-action-public-event-projected-at.ts +22 -0
  72. package/build/migrations-v2/0000000000007-audit-action-public-event-projected-at-backfill.ts +35 -0
  73. package/build/migrations-v2/0000000000008-global-user-attribution.ts +33 -0
  74. package/build/migrations-v2/0000000000008-team-issue-rule-state.ts +52 -0
  75. package/build/migrations-v2/0000000000009-reservation-issue-projections.ts +45 -0
  76. package/build/migrations-v2/0000000000010-bank-rule-application-bank-record-delete-cascade.ts +26 -0
  77. package/build/migrations-v2/0000000000011-guest-balance-journal-entry-lookup-index.ts +25 -0
  78. package/build/migrations-v2/0000000000012-trial-free-analytics-billing-status.ts +72 -0
  79. package/build/migrations-v2/0000000000013-ui-permission-bundles.ts +45 -0
  80. package/build/migrations-v2/0000000000014-ui-permission-bundle-top-up.ts +32 -0
  81. package/build/migrations-v2/0000000000016-managed-team-access.ts +34 -0
  82. package/build/migrations-v2/0000000000017-drop-trial-until.ts +42 -0
  83. package/build/migrations-v2/0000000000018-accounting-integrity-monitoring.ts +276 -0
  84. package/build/migrations-v2/0000000000019-accounting-integrity-run-shards.ts +26 -0
  85. package/build/migrations-v2/0000000000020-accounting-integrity-case-classification.ts +52 -0
  86. package/build/migrations-v2/0000000000021-payment-line-classification-monitor-indexes.ts +31 -0
  87. package/build/migrations-v2/0000000000022-accounting-integrity-controlled-repairs.ts +281 -0
  88. package/build/migrations-v2/0000000000023-line-classification-usage.ts +325 -0
  89. package/build/migrations-v2/0000000000024-tenant-region-migration.ts +108 -0
  90. package/build/migrations-v2/0000000000025-partner-ach-denial-default.ts +30 -0
  91. package/build/migrations-v2/0000000000026-line-classification-usage-capture.ts +399 -0
  92. package/build/migrations-v2/0000000000027-payout-replacement-chain.ts +27 -0
  93. package/build/migrations-v2/0000000000028-accounting-integrity-operator-workflow.ts +108 -0
  94. package/build/migrations-v2/0000000000029-accounting-integrity-definition-artifacts.ts +40 -0
  95. package/build/migrations-v2/0000000000030-accounting-integrity-review-metadata-compatibility.ts +49 -0
  96. package/build/module/camel-case/index.js +1 -1
  97. package/build/module/camel-case/index.js.map +1 -1
  98. package/build/module/control-plane/index.d.ts +368 -0
  99. package/build/module/control-plane/index.js +50 -0
  100. package/build/module/control-plane/index.js.map +1 -0
  101. package/build/module/domain.d.ts +4 -0
  102. package/build/module/domain.js +2 -0
  103. package/build/module/domain.js.map +1 -0
  104. package/build/module/error.d.ts +2 -1
  105. package/build/module/error.js +3 -1
  106. package/build/module/error.js.map +1 -1
  107. package/build/module/index.d.ts +13 -16
  108. package/build/module/index.js +146 -63
  109. package/build/module/index.js.map +1 -1
  110. package/build/module/isomorphic.d.ts +5 -5
  111. package/build/module/isomorphic.js +1 -6
  112. package/build/module/isomorphic.js.map +1 -1
  113. package/build/module/local/digest.d.ts +3 -3
  114. package/build/module/local/digest.js.map +1 -1
  115. package/build/module/local/generate.js +10 -10
  116. package/build/module/local/generate.js.map +1 -1
  117. package/build/module/local/index.d.ts +5 -1
  118. package/build/module/local/index.js +216 -7
  119. package/build/module/local/index.js.map +1 -1
  120. package/build/module/local/prune-pulled-schema.js +4 -1
  121. package/build/module/local/prune-pulled-schema.js.map +1 -1
  122. package/build/module/migration.d.ts +7 -0
  123. package/build/module/migration.js +8 -0
  124. package/build/module/migration.js.map +1 -0
  125. package/build/module/pganalyze-comment-plugin/comment-transformer.js.map +1 -1
  126. package/build/module/pganalyze-comment-plugin/index.js.map +1 -1
  127. package/build/module/plugins.d.ts +2 -2
  128. package/build/module/plugins.js.map +1 -1
  129. package/build/module/postgres-error.d.ts +8 -0
  130. package/build/module/postgres-error.js +18 -0
  131. package/build/module/postgres-error.js.map +1 -0
  132. package/build/module/query/index.d.ts +1 -0
  133. package/build/module/query/index.js +1 -0
  134. package/build/module/query/index.js.map +1 -1
  135. package/build/module/query/listing/status.d.ts +2 -12
  136. package/build/module/query/listing/status.js +31 -17
  137. package/build/module/query/listing/status.js.map +1 -1
  138. package/build/module/query/tenant/billing-partner.d.ts +4 -0
  139. package/build/module/query/tenant/billing-partner.js +5 -0
  140. package/build/module/query/tenant/billing-partner.js.map +1 -0
  141. package/build/module/query/tenant/index.d.ts +2 -0
  142. package/build/module/query/tenant/index.js +3 -0
  143. package/build/module/query/tenant/index.js.map +1 -0
  144. package/build/module/query/tenant/status.d.ts +14 -0
  145. package/build/module/query/tenant/status.js +35 -0
  146. package/build/module/query/tenant/status.js.map +1 -0
  147. package/build/module/regional.d.ts +60 -0
  148. package/build/module/regional.js +162 -0
  149. package/build/module/regional.js.map +1 -0
  150. package/build/module/test/index.d.ts +3 -14
  151. package/build/module/test/index.js +1 -23
  152. package/build/module/test/index.js.map +1 -1
  153. package/build/module/transaction.d.ts +3 -3
  154. package/build/module/transaction.js.map +1 -1
  155. package/build/module/v1.generated.d.ts +593 -23
  156. package/build/module/v1.generated.js.map +1 -1
  157. package/package.json +18 -9
  158. package/build/main/tsconfig.main.tsbuildinfo +0 -1
  159. package/build/module/tsconfig.esm.tsbuildinfo +0 -1
@@ -40,6 +40,8 @@ const path = __importStar(require("node:path"));
40
40
  const pglite_1 = require("@electric-sql/pglite");
41
41
  const kysely_1 = require("kysely");
42
42
  const kysely_pglite_dialect_1 = require("kysely-pglite-dialect");
43
+ const control_plane_1 = require("../control-plane");
44
+ const migration_1 = require("../migration");
43
45
  const plugins_1 = require("../plugins");
44
46
  const digest_1 = require("./digest");
45
47
  exports.root = path.join(__dirname, '../..');
@@ -47,13 +49,13 @@ exports.dumpPath = path.join(exports.root, '.data.tar');
47
49
  async function migrateToLatest(kysely) {
48
50
  const migrator = new kysely_1.Migrator({
49
51
  db: kysely,
50
- migrationTableSchema: 'core',
51
- migrationTableName: 'kysely_migration',
52
- migrationLockTableName: 'kysely_migration_lock',
52
+ migrationTableSchema: migration_1.appMigrationEpoch.tableSchema,
53
+ migrationTableName: migration_1.appMigrationEpoch.tableName,
54
+ migrationLockTableName: migration_1.appMigrationEpoch.lockTableName,
53
55
  provider: new kysely_1.FileMigrationProvider({
54
56
  fs: node_fs_1.promises,
55
57
  path,
56
- migrationFolder: path.join(exports.root, 'migrations'),
58
+ migrationFolder: path.join(exports.root, migration_1.appMigrationEpoch.folder),
57
59
  }),
58
60
  });
59
61
  const { error } = await migrator.migrateToLatest();
@@ -76,14 +78,221 @@ async function useLocalKysely(args = {}) {
76
78
  await (0, digest_1.ensureDigestFunction)(kysely);
77
79
  await (0, digest_1.ensureGenRandomBytesFunction)(kysely);
78
80
  await migrateToLatest(kysely);
81
+ await (0, kysely_1.sql) `alter schema public rename to regional_public`.execute(kysely);
82
+ await (0, kysely_1.sql) `alter schema core rename to regional_core`.execute(kysely);
83
+ await (0, kysely_1.sql) `create schema public`.execute(kysely);
84
+ await (0, kysely_1.sql) `create schema core`.execute(kysely);
85
+ const controlPlaneBootstrapKysely = (0, plugins_1.getKysely)(dialect, {
86
+ repositoryName: `${args.repositoryName ?? 'localTesting'}/control-plane-bootstrap`,
87
+ });
88
+ const controlPlaneMigrator = new kysely_1.Migrator({
89
+ db: controlPlaneBootstrapKysely,
90
+ migrationTableSchema: 'public',
91
+ migrationTableName: 'control_plane_kysely_migration',
92
+ migrationLockTableName: 'control_plane_kysely_migration_lock',
93
+ provider: new kysely_1.FileMigrationProvider({
94
+ fs: node_fs_1.promises,
95
+ path,
96
+ migrationFolder: path.join(exports.root, 'control-plane-migrations'),
97
+ }),
98
+ });
99
+ const { error: controlPlaneMigrationError } = await controlPlaneMigrator.migrateToLatest();
100
+ if (controlPlaneMigrationError) {
101
+ throw controlPlaneMigrationError;
102
+ }
103
+ await (0, kysely_1.sql) `alter table core.flow set schema public`.execute(controlPlaneBootstrapKysely);
104
+ await (0, kysely_1.sql) `alter table core.issue_message_overwrite set schema public`.execute(controlPlaneBootstrapKysely);
105
+ await (0, kysely_1.sql) `drop schema core`.execute(controlPlaneBootstrapKysely);
106
+ await (0, kysely_1.sql) `alter schema public rename to control_plane`.execute(controlPlaneBootstrapKysely);
107
+ await (0, kysely_1.sql) `alter schema regional_public rename to public`.execute(controlPlaneBootstrapKysely);
108
+ await (0, kysely_1.sql) `alter schema regional_core rename to core`.execute(controlPlaneBootstrapKysely);
109
+ await (0, kysely_1.sql) `
110
+ do $$
111
+ declare
112
+ definition text;
113
+ begin
114
+ select pg_get_functiondef(
115
+ 'control_plane.normalize_tenant_slug(text)'::regprocedure
116
+ ) into definition;
117
+ execute replace(definition, 'public.', 'control_plane.');
118
+
119
+ select pg_get_functiondef(
120
+ 'control_plane.build_unique_tenant_slug(text,uuid)'::regprocedure
121
+ ) into definition;
122
+ execute replace(definition, 'public.', 'control_plane.');
123
+ end;
124
+ $$;
125
+ `.execute(controlPlaneBootstrapKysely);
126
+ await (0, kysely_1.sql) `
127
+ insert into control_plane.app (
128
+ authentication,
129
+ category,
130
+ color,
131
+ created_at,
132
+ icon,
133
+ icon_round,
134
+ id,
135
+ info,
136
+ name,
137
+ type,
138
+ version
139
+ )
140
+ select
141
+ authentication,
142
+ category,
143
+ color,
144
+ created_at,
145
+ icon,
146
+ icon_round,
147
+ id,
148
+ info,
149
+ name,
150
+ type,
151
+ version
152
+ from public.app
153
+ on conflict (id) do nothing;
154
+ `.execute(controlPlaneBootstrapKysely);
155
+ await (0, kysely_1.sql) `
156
+ insert into control_plane.currency (name)
157
+ select name
158
+ from public.currency
159
+ on conflict (name) do nothing;
160
+ `.execute(controlPlaneBootstrapKysely);
161
+ await (0, kysely_1.sql) `
162
+ insert into control_plane.booking_channel (
163
+ channel_ref,
164
+ color,
165
+ created_at,
166
+ icon,
167
+ icon_provider,
168
+ id,
169
+ last_generate_run,
170
+ logo,
171
+ logo_provider,
172
+ selected_booking_channel_icon_candidate_id,
173
+ selected_booking_channel_logo_candidate_id,
174
+ unique_ref,
175
+ updated_at
176
+ )
177
+ select
178
+ channel_ref,
179
+ color,
180
+ created_at,
181
+ icon,
182
+ icon_provider,
183
+ id,
184
+ last_generate_run,
185
+ logo,
186
+ logo_provider,
187
+ selected_booking_channel_icon_candidate_id,
188
+ selected_booking_channel_logo_candidate_id,
189
+ unique_ref,
190
+ updated_at
191
+ from public.booking_channel
192
+ on conflict (id) do nothing;
193
+ `.execute(controlPlaneBootstrapKysely);
194
+ await (0, kysely_1.sql) `
195
+ insert into control_plane.booking_channel_icon_candidate (
196
+ booking_channel_id,
197
+ cloudflare_image_id,
198
+ color,
199
+ comment,
200
+ created_at,
201
+ external_icon,
202
+ height,
203
+ id,
204
+ provider,
205
+ source,
206
+ updated_at,
207
+ width
208
+ )
209
+ select
210
+ booking_channel_id,
211
+ cloudflare_image_id,
212
+ color,
213
+ comment,
214
+ created_at,
215
+ external_icon,
216
+ height,
217
+ id,
218
+ provider,
219
+ source,
220
+ updated_at,
221
+ width
222
+ from public.booking_channel_icon_candidate
223
+ on conflict (id) do nothing;
224
+ `.execute(controlPlaneBootstrapKysely);
225
+ await (0, kysely_1.sql) `
226
+ insert into control_plane.tenant (
227
+ billing_partner_id,
228
+ billing_plan,
229
+ created_at,
230
+ data_region,
231
+ id,
232
+ name,
233
+ partner_id,
234
+ slug,
235
+ status,
236
+ storage_realm,
237
+ type,
238
+ unique_ref,
239
+ updated_at
240
+ )
241
+ select
242
+ billing_partner_id,
243
+ billing_plan,
244
+ created_at,
245
+ data_region,
246
+ id,
247
+ name,
248
+ partner_id,
249
+ slug,
250
+ status,
251
+ storage_realm,
252
+ type,
253
+ unique_ref,
254
+ updated_at
255
+ from public.tenant
256
+ on conflict (id) do nothing;
257
+ `.execute(controlPlaneBootstrapKysely);
258
+ await (0, kysely_1.sql) `
259
+ insert into control_plane.token (
260
+ created_at,
261
+ expires_at,
262
+ id,
263
+ nano_id,
264
+ payload,
265
+ tenant_id,
266
+ type,
267
+ user_id
268
+ )
269
+ select
270
+ created_at,
271
+ expires_at,
272
+ id,
273
+ nano_id,
274
+ payload,
275
+ tenant_id,
276
+ type,
277
+ user_id
278
+ from public.token
279
+ on conflict (id) do nothing;
280
+ `.execute(controlPlaneBootstrapKysely);
281
+ const controlPlaneKysely = (0, control_plane_1.withControlPlaneSchema)((0, plugins_1.getKysely)(dialect, {
282
+ repositoryName: `${args.repositoryName ?? 'localTesting'}/control-plane`,
283
+ log: args.log,
284
+ }), 'control_plane', 'control_plane');
285
+ controlPlaneKysely.destroy = async () => { };
286
+ Object.defineProperty(kysely, 'controlPlaneKysely', {
287
+ value: controlPlaneKysely,
288
+ });
79
289
  const originalDestroy = kysely.destroy.bind(kysely);
80
290
  kysely.destroy = async () => {
81
291
  if (isDestroyed)
82
292
  return;
83
293
  isDestroyed = true;
84
294
  //const destroyTime = performance.now();
85
- await originalDestroy().catch(() => undefined);
86
- await pglite.close().catch(() => undefined);
295
+ await originalDestroy();
87
296
  //console.log(
88
297
  // `Database destroyed: ${Math.round(performance.now() - destroyTime)}ms`
89
298
  //);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"src/","sources":["local/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qCAAyC;AACzC,MAAY,IAAI,sCAAkB;AAClC,iDAA8C;AAC9C,mCAAyE;AACzE,iEAAsD;AACtD,wCAAuC;AAEvC,qCAA8E;AAEjE,QAAA,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACrC,QAAA,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAA,IAAI,EAAE,WAAW,CAAC,CAAC;AAOrD,KAAK,UAAU,eAAe,CAAC,MAAmC,EAAE;IAClE,MAAM,QAAQ,GAAG,IAAI,iBAAQ,CAAC;QAC5B,EAAE,EAAE,MAAM;QACV,oBAAoB,EAAE,MAAM;QAC5B,kBAAkB,EAAE,kBAAkB;QACtC,sBAAsB,EAAE,uBAAuB;QAC/C,QAAQ,EAAE,IAAI,8BAAqB,CAAC;YAClC,EAAE,EAAF,kBAAE;YACF,IAAI;YACJ,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,QAAA,IAAI,EAAE,YAAY,CAAC;SAC/C,CAAC;KACH,CAAC,CAAC;IAEH,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ,CAAC,eAAe,EAAE,CAAC;IACnD,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,KAAK,CAAC;IACd,CAAC;AAAA,CACF;AAEM,KAAK,yBAAyB,IAAI,GAA0B,EAAE,EAAE;IACrE,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,iCAAiC;IAEjC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,QAAA,QAAQ,CAAC,CAAC;IAEhC,MAAM,MAAM,GAAG,IAAI,eAAM,CAAC;QACxB,WAAW,EAAE,IAAI;KAClB,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,IAAI,qCAAa,CAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,IAAA,mBAAS,EAAC,OAAO,EAAE;QAChC,cAAc,EAAE,IAAI,EAAE,cAAc,IAAI,cAAc;QACtD,GAAG,EAAE,IAAI,EAAE,GAAG;KACf,CAAC,CAAC;IACH,MAAM,IAAA,6BAAoB,EAAC,MAAM,CAAC,CAAC;IACnC,MAAM,IAAA,qCAA4B,EAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,eAAe,CAAC,MAAqC,CAAC,CAAC;IAE7D,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpD,MAAM,CAAC,OAAO,GAAG,KAAK,IAAI,EAAE,CAAC;QAC3B,IAAI,WAAW;YAAE,OAAO;QACxB,WAAW,GAAG,IAAI,CAAC;QACnB,wCAAwC;QACxC,MAAM,eAAe,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC/C,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC5C,cAAc;QACd,0EAA0E;QAC1E,IAAI;IAHwC,CAI7C,CAAC;IAEF,iFAAiF;IAEjF,OAAO,MAAM,CAAC;AAAA,CACf","sourcesContent":["import { promises as fs } from 'node:fs';\nimport * as path from 'node:path';\nimport { PGlite } from '@electric-sql/pglite';\nimport { FileMigrationProvider, type LogConfig, Migrator } from 'kysely';\nimport { PGliteDialect } from 'kysely-pglite-dialect';\nimport { getKysely } from '../plugins';\nimport type { DB } from '../v1.generated';\nimport { ensureDigestFunction, ensureGenRandomBytesFunction } from './digest';\n\nexport const root = path.join(__dirname, '../..');\nexport const dumpPath = path.join(root, '.data.tar');\n\nexport type UseLocalKyselyOptions = {\n repositoryName?: string;\n log?: true | LogConfig;\n};\n\nasync function migrateToLatest(kysely: import('kysely').Kysely<DB>) {\n const migrator = new Migrator({\n db: kysely,\n migrationTableSchema: 'core',\n migrationTableName: 'kysely_migration',\n migrationLockTableName: 'kysely_migration_lock',\n provider: new FileMigrationProvider({\n fs,\n path,\n migrationFolder: path.join(root, 'migrations'),\n }),\n });\n\n const { error } = await migrator.migrateToLatest();\n if (error) {\n throw error;\n }\n}\n\nexport async function useLocalKysely(args: UseLocalKyselyOptions = {}) {\n let isDestroyed = false;\n // const now = performance.now();\n\n const dump = Bun.file(dumpPath);\n\n const pglite = new PGlite({\n loadDataDir: dump,\n });\n const dialect = new PGliteDialect(pglite);\n const kysely = getKysely(dialect, {\n repositoryName: args?.repositoryName ?? 'localTesting',\n log: args?.log,\n });\n await ensureDigestFunction(kysely);\n await ensureGenRandomBytesFunction(kysely);\n await migrateToLatest(kysely as import('kysely').Kysely<DB>);\n\n const originalDestroy = kysely.destroy.bind(kysely);\n kysely.destroy = async () => {\n if (isDestroyed) return;\n isDestroyed = true;\n //const destroyTime = performance.now();\n await originalDestroy().catch(() => undefined);\n await pglite.close().catch(() => undefined);\n //console.log(\n // `Database destroyed: ${Math.round(performance.now() - destroyTime)}ms`\n //);\n };\n\n // console.log(`Database initialized: ${Math.round(performance.now() - now)}ms`);\n\n return kysely;\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"src/","sources":["local/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { promises as fs } from 'node:fs';\nimport * as path from 'node:path';\nimport { PGlite } from '@electric-sql/pglite';\nimport { FileMigrationProvider, type LogConfig, Migrator, sql } from 'kysely';\nimport { PGliteDialect } from 'kysely-pglite-dialect';\nimport { type ControlPlaneDB, withControlPlaneSchema } from '../control-plane';\nimport type { ControlPlaneKysely } from '../index';\nimport { appMigrationEpoch } from '../migration';\nimport { getKysely } from '../plugins';\nimport type { DB } from '../v1.generated';\nimport { ensureDigestFunction, ensureGenRandomBytesFunction } from './digest';\n\nexport const root = path.join(__dirname, '../..');\nexport const dumpPath = path.join(root, '.data.tar');\n\nexport type UseLocalKyselyOptions = {\n repositoryName?: string;\n log?: true | LogConfig;\n};\n\nexport type LocalKysely = import('kysely').Kysely<DB> & {\n controlPlaneKysely: ControlPlaneKysely;\n};\n\nasync function migrateToLatest<Database>(\n kysely: import('kysely').Kysely<Database>\n) {\n const migrator = new Migrator({\n db: kysely,\n migrationTableSchema: appMigrationEpoch.tableSchema,\n migrationTableName: appMigrationEpoch.tableName,\n migrationLockTableName: appMigrationEpoch.lockTableName,\n provider: new FileMigrationProvider({\n fs,\n path,\n migrationFolder: path.join(root, appMigrationEpoch.folder),\n }),\n });\n\n const { error } = await migrator.migrateToLatest();\n if (error) {\n throw error;\n }\n}\n\nexport async function useLocalKysely(\n args: UseLocalKyselyOptions = {}\n): Promise<LocalKysely> {\n let isDestroyed = false;\n // const now = performance.now();\n\n const dump = Bun.file(dumpPath);\n\n const pglite = new PGlite({\n loadDataDir: dump,\n });\n const dialect = new PGliteDialect(pglite);\n const kysely = getKysely<DB>(dialect, {\n repositoryName: args?.repositoryName ?? 'localTesting',\n log: args?.log,\n });\n await ensureDigestFunction(kysely);\n await ensureGenRandomBytesFunction(kysely);\n await migrateToLatest(kysely);\n\n await sql`alter schema public rename to regional_public`.execute(kysely);\n await sql`alter schema core rename to regional_core`.execute(kysely);\n await sql`create schema public`.execute(kysely);\n await sql`create schema core`.execute(kysely);\n\n const controlPlaneBootstrapKysely = getKysely<ControlPlaneDB>(dialect, {\n repositoryName: `${args.repositoryName ?? 'localTesting'}/control-plane-bootstrap`,\n });\n const controlPlaneMigrator = new Migrator({\n db: controlPlaneBootstrapKysely,\n migrationTableSchema: 'public',\n migrationTableName: 'control_plane_kysely_migration',\n migrationLockTableName: 'control_plane_kysely_migration_lock',\n provider: new FileMigrationProvider({\n fs,\n path,\n migrationFolder: path.join(root, 'control-plane-migrations'),\n }),\n });\n const { error: controlPlaneMigrationError } =\n await controlPlaneMigrator.migrateToLatest();\n if (controlPlaneMigrationError) {\n throw controlPlaneMigrationError;\n }\n\n await sql`alter table core.flow set schema public`.execute(\n controlPlaneBootstrapKysely\n );\n await sql`alter table core.issue_message_overwrite set schema public`.execute(\n controlPlaneBootstrapKysely\n );\n await sql`drop schema core`.execute(controlPlaneBootstrapKysely);\n await sql`alter schema public rename to control_plane`.execute(\n controlPlaneBootstrapKysely\n );\n await sql`alter schema regional_public rename to public`.execute(\n controlPlaneBootstrapKysely\n );\n await sql`alter schema regional_core rename to core`.execute(\n controlPlaneBootstrapKysely\n );\n await sql`\n do $$\n declare\n definition text;\n begin\n select pg_get_functiondef(\n 'control_plane.normalize_tenant_slug(text)'::regprocedure\n ) into definition;\n execute replace(definition, 'public.', 'control_plane.');\n\n select pg_get_functiondef(\n 'control_plane.build_unique_tenant_slug(text,uuid)'::regprocedure\n ) into definition;\n execute replace(definition, 'public.', 'control_plane.');\n end;\n $$;\n `.execute(controlPlaneBootstrapKysely);\n await sql`\n insert into control_plane.app (\n authentication,\n category,\n color,\n created_at,\n icon,\n icon_round,\n id,\n info,\n name,\n type,\n version\n )\n select\n authentication,\n category,\n color,\n created_at,\n icon,\n icon_round,\n id,\n info,\n name,\n type,\n version\n from public.app\n on conflict (id) do nothing;\n `.execute(controlPlaneBootstrapKysely);\n await sql`\n insert into control_plane.currency (name)\n select name\n from public.currency\n on conflict (name) do nothing;\n `.execute(controlPlaneBootstrapKysely);\n await sql`\n insert into control_plane.booking_channel (\n channel_ref,\n color,\n created_at,\n icon,\n icon_provider,\n id,\n last_generate_run,\n logo,\n logo_provider,\n selected_booking_channel_icon_candidate_id,\n selected_booking_channel_logo_candidate_id,\n unique_ref,\n updated_at\n )\n select\n channel_ref,\n color,\n created_at,\n icon,\n icon_provider,\n id,\n last_generate_run,\n logo,\n logo_provider,\n selected_booking_channel_icon_candidate_id,\n selected_booking_channel_logo_candidate_id,\n unique_ref,\n updated_at\n from public.booking_channel\n on conflict (id) do nothing;\n `.execute(controlPlaneBootstrapKysely);\n await sql`\n insert into control_plane.booking_channel_icon_candidate (\n booking_channel_id,\n cloudflare_image_id,\n color,\n comment,\n created_at,\n external_icon,\n height,\n id,\n provider,\n source,\n updated_at,\n width\n )\n select\n booking_channel_id,\n cloudflare_image_id,\n color,\n comment,\n created_at,\n external_icon,\n height,\n id,\n provider,\n source,\n updated_at,\n width\n from public.booking_channel_icon_candidate\n on conflict (id) do nothing;\n `.execute(controlPlaneBootstrapKysely);\n await sql`\n insert into control_plane.tenant (\n billing_partner_id,\n billing_plan,\n created_at,\n data_region,\n id,\n name,\n partner_id,\n slug,\n status,\n storage_realm,\n type,\n unique_ref,\n updated_at\n )\n select\n billing_partner_id,\n billing_plan,\n created_at,\n data_region,\n id,\n name,\n partner_id,\n slug,\n status,\n storage_realm,\n type,\n unique_ref,\n updated_at\n from public.tenant\n on conflict (id) do nothing;\n `.execute(controlPlaneBootstrapKysely);\n await sql`\n insert into control_plane.token (\n created_at,\n expires_at,\n id,\n nano_id,\n payload,\n tenant_id,\n type,\n user_id\n )\n select\n created_at,\n expires_at,\n id,\n nano_id,\n payload,\n tenant_id,\n type,\n user_id\n from public.token\n on conflict (id) do nothing;\n `.execute(controlPlaneBootstrapKysely);\n\n const controlPlaneKysely = withControlPlaneSchema(\n getKysely<ControlPlaneDB>(dialect, {\n repositoryName: `${args.repositoryName ?? 'localTesting'}/control-plane`,\n log: args.log,\n }),\n 'control_plane',\n 'control_plane'\n );\n controlPlaneKysely.destroy = async () => {};\n Object.defineProperty(kysely, 'controlPlaneKysely', {\n value: controlPlaneKysely,\n });\n\n const originalDestroy = kysely.destroy.bind(kysely);\n kysely.destroy = async () => {\n if (isDestroyed) return;\n isDestroyed = true;\n //const destroyTime = performance.now();\n await originalDestroy();\n //console.log(\n // `Database destroyed: ${Math.round(performance.now() - destroyTime)}ms`\n //);\n };\n\n // console.log(`Database initialized: ${Math.round(performance.now() - now)}ms`);\n\n return kysely as LocalKysely;\n}\n"]}
@@ -9,6 +9,7 @@ exports.prunePulledSchemaFile = prunePulledSchemaFile;
9
9
  exports.prunePulledSchema = prunePulledSchema;
10
10
  const promises_1 = require("node:fs/promises");
11
11
  const node_path_1 = require("node:path");
12
+ const error_1 = require("../error");
12
13
  const START_MARKER = '-- VRP legacy-column-prune:start';
13
14
  const END_MARKER = '-- VRP legacy-column-prune:end';
14
15
  const hasuraAuditTriggerPattern = /^CREATE TRIGGER "(notify_hasura_audit_[^"]+)" [\s\S]*? ON ([^\s;]+) FOR EACH ROW EXECUTE FUNCTION hdb_catalog\."notify_hasura_audit_[^"]+"\(\);$/gm;
@@ -118,7 +119,9 @@ function applyPruneBlock(sql, columns) {
118
119
  if (startAt !== -1) {
119
120
  const endAt = sql.indexOf(END_MARKER, startAt);
120
121
  if (endAt === -1) {
121
- throw new Error(`Malformed legacy prune block in initial SQL: missing "${END_MARKER}".`);
122
+ throw new error_1.KyselyError('Malformed legacy prune block in initial SQL', {
123
+ missingMarker: END_MARKER,
124
+ });
122
125
  }
123
126
  const tailStart = endAt + END_MARKER.length;
124
127
  const afterTail = sql.slice(tailStart).replace(/^\s*\n/, '');
@@ -1 +1 @@
1
- {"version":3,"file":"prune-pulled-schema.js","sourceRoot":"src/","sources":["local/prune-pulled-schema.ts"],"names":[],"mappings":"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","sourcesContent":["import { readFile, writeFile } from 'node:fs/promises';\nimport { join } from 'node:path';\n\nconst START_MARKER = '-- VRP legacy-column-prune:start';\nconst END_MARKER = '-- VRP legacy-column-prune:end';\n\nexport type LegacyColumnPrune = {\n table: `${string}.${string}`;\n column: string;\n issue: string;\n};\n\nconst hasuraAuditTriggerPattern =\n /^CREATE TRIGGER \"(notify_hasura_audit_[^\"]+)\" [\\s\\S]*? ON ([^\\s;]+) FOR EACH ROW EXECUTE FUNCTION hdb_catalog\\.\"notify_hasura_audit_[^\"]+\"\\(\\);$/gm;\n\nexport type HasuraAuditTrigger = {\n name: string;\n table: `${string}.${string}`;\n};\n\n/**\n * Active removals currently validated by runtime + type usage.\n * Add new entries here incrementally to surface compile/runtime callers.\n */\nexport const activeLegacyColumnPrunes: LegacyColumnPrune[] = [\n {\n issue: 'VRI-45',\n table: 'public.app',\n column: 'fly_app',\n },\n {\n issue: 'VRI-45',\n table: 'public.app',\n column: 'default_machine_size',\n },\n {\n issue: 'VRI-45',\n table: 'public.app',\n column: 'endpoint',\n },\n {\n issue: 'VRI-45',\n table: 'public.app',\n column: 'uid',\n },\n {\n issue: 'VRI-45',\n table: 'public.app',\n column: 'plugin_data',\n },\n {\n issue: 'VRI-45',\n table: 'public.app',\n column: 'config',\n },\n {\n issue: 'VRI-45',\n table: 'public.app',\n column: 'flows',\n },\n {\n issue: 'PRO-12855',\n table: 'public.owner_statement',\n column: 'cent_accounting_balance_start',\n },\n {\n issue: 'PRO-12855',\n table: 'public.owner_statement',\n column: 'cent_accounting_balance_end',\n },\n {\n issue: 'PRO-12855',\n table: 'accounting.contact',\n column: 'pms_status',\n },\n {\n issue: 'PRO-12855',\n table: 'public.owner',\n column: 'pms_status',\n },\n];\n\nexport function extractHasuraAuditTriggers(sql: string): HasuraAuditTrigger[] {\n const unique = new Map<string, HasuraAuditTrigger>();\n\n for (const match of sql.matchAll(hasuraAuditTriggerPattern)) {\n const name = match[1];\n const table = match[2] as `${string}.${string}`;\n const key = `${name}::${table}`;\n\n if (!unique.has(key)) {\n unique.set(key, { name, table });\n }\n }\n\n return [...unique.values()];\n}\n\nexport function buildPruneBlock(\n columns: readonly LegacyColumnPrune[],\n hasuraAuditTriggers: readonly HasuraAuditTrigger[] = []\n): string {\n const columnStatements = columns.map(\n (item) =>\n `ALTER TABLE ${item.table} DROP COLUMN IF EXISTS ${item.column}; -- ${item.issue}`\n );\n const triggerStatements = hasuraAuditTriggers.map(\n (trigger) =>\n `DROP TRIGGER IF EXISTS \"${trigger.name}\" ON ${trigger.table}; -- hasura-audit`\n );\n\n return [\n START_MARKER,\n '-- Managed by src/local/prune-pulled-schema.ts',\n ...columnStatements,\n ...(triggerStatements.length > 0\n ? [\n '',\n '-- Disable Hasura audit triggers in local bootstrap',\n ...triggerStatements,\n ]\n : []),\n END_MARKER,\n ].join('\\n');\n}\n\nexport function buildPruneReminderLog(columns: readonly LegacyColumnPrune[]) {\n const lines = [\n `[kysely] Legacy column prune reminder (${columns.length} columns). Remove these from production schema when ready:`,\n ];\n\n for (const item of columns) {\n lines.push(` - ${item.table}.${item.column} [${item.issue}]`);\n }\n\n return lines;\n}\n\nexport function applyPruneBlock(\n sql: string,\n columns: readonly LegacyColumnPrune[]\n): string {\n const hasuraAuditTriggers = extractHasuraAuditTriggers(sql);\n const startAt = sql.indexOf(START_MARKER);\n\n let base = sql;\n if (startAt !== -1) {\n const endAt = sql.indexOf(END_MARKER, startAt);\n if (endAt === -1) {\n throw new Error(\n `Malformed legacy prune block in initial SQL: missing \"${END_MARKER}\".`\n );\n }\n const tailStart = endAt + END_MARKER.length;\n const afterTail = sql.slice(tailStart).replace(/^\\s*\\n/, '');\n base = `${sql.slice(0, startAt).trimEnd()}\\n${afterTail}`;\n }\n\n const next = base.trimEnd();\n if (columns.length === 0) {\n return `${next}\\n`;\n }\n\n return `${next}\\n\\n${buildPruneBlock(columns, hasuraAuditTriggers)}\\n`;\n}\n\nexport async function prunePulledSchemaFile(filePath: string) {\n const original = await readFile(filePath, 'utf8');\n const updated = applyPruneBlock(original, activeLegacyColumnPrunes);\n const changed = updated !== original;\n if (changed) {\n await writeFile(filePath, updated, 'utf8');\n }\n\n const status = changed ? 'applied' : 'already up to date';\n console.log(`[kysely] Legacy column prune block ${status}.`);\n for (const line of buildPruneReminderLog(activeLegacyColumnPrunes)) {\n console.log(line);\n }\n}\n\nexport async function prunePulledSchema(root: string) {\n const filePath = join(root, 'initial/0000000000000-init.sql');\n await prunePulledSchemaFile(filePath);\n}\n\nasync function run() {\n await prunePulledSchema(process.cwd());\n}\n\nfunction isDirectExecution() {\n const entryPath = process.argv[1];\n if (!entryPath) {\n return false;\n }\n\n return (\n entryPath.endsWith('prune-pulled-schema.ts') ||\n entryPath.endsWith('prune-pulled-schema.js')\n );\n}\n\n(async () => {\n if (isDirectExecution()) {\n await run();\n }\n})();\n"]}
1
+ {"version":3,"file":"prune-pulled-schema.js","sourceRoot":"src/","sources":["local/prune-pulled-schema.ts"],"names":[],"mappings":"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","sourcesContent":["import { readFile, writeFile } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport { KyselyError } from '../error';\n\nconst START_MARKER = '-- VRP legacy-column-prune:start';\nconst END_MARKER = '-- VRP legacy-column-prune:end';\n\nexport type LegacyColumnPrune = {\n table: `${string}.${string}`;\n column: string;\n issue: string;\n};\n\nconst hasuraAuditTriggerPattern =\n /^CREATE TRIGGER \"(notify_hasura_audit_[^\"]+)\" [\\s\\S]*? ON ([^\\s;]+) FOR EACH ROW EXECUTE FUNCTION hdb_catalog\\.\"notify_hasura_audit_[^\"]+\"\\(\\);$/gm;\n\nexport type HasuraAuditTrigger = {\n name: string;\n table: `${string}.${string}`;\n};\n\n/**\n * Active removals currently validated by runtime + type usage.\n * Add new entries here incrementally to surface compile/runtime callers.\n */\nexport const activeLegacyColumnPrunes: LegacyColumnPrune[] = [\n {\n issue: 'VRI-45',\n table: 'public.app',\n column: 'fly_app',\n },\n {\n issue: 'VRI-45',\n table: 'public.app',\n column: 'default_machine_size',\n },\n {\n issue: 'VRI-45',\n table: 'public.app',\n column: 'endpoint',\n },\n {\n issue: 'VRI-45',\n table: 'public.app',\n column: 'uid',\n },\n {\n issue: 'VRI-45',\n table: 'public.app',\n column: 'plugin_data',\n },\n {\n issue: 'VRI-45',\n table: 'public.app',\n column: 'config',\n },\n {\n issue: 'VRI-45',\n table: 'public.app',\n column: 'flows',\n },\n {\n issue: 'PRO-12855',\n table: 'public.owner_statement',\n column: 'cent_accounting_balance_start',\n },\n {\n issue: 'PRO-12855',\n table: 'public.owner_statement',\n column: 'cent_accounting_balance_end',\n },\n {\n issue: 'PRO-12855',\n table: 'accounting.contact',\n column: 'pms_status',\n },\n {\n issue: 'PRO-12855',\n table: 'public.owner',\n column: 'pms_status',\n },\n];\n\nexport function extractHasuraAuditTriggers(sql: string): HasuraAuditTrigger[] {\n const unique = new Map<string, HasuraAuditTrigger>();\n\n for (const match of sql.matchAll(hasuraAuditTriggerPattern)) {\n const name = match[1];\n const table = match[2] as `${string}.${string}`;\n const key = `${name}::${table}`;\n\n if (!unique.has(key)) {\n unique.set(key, { name, table });\n }\n }\n\n return [...unique.values()];\n}\n\nexport function buildPruneBlock(\n columns: readonly LegacyColumnPrune[],\n hasuraAuditTriggers: readonly HasuraAuditTrigger[] = []\n): string {\n const columnStatements = columns.map(\n (item) =>\n `ALTER TABLE ${item.table} DROP COLUMN IF EXISTS ${item.column}; -- ${item.issue}`\n );\n const triggerStatements = hasuraAuditTriggers.map(\n (trigger) =>\n `DROP TRIGGER IF EXISTS \"${trigger.name}\" ON ${trigger.table}; -- hasura-audit`\n );\n\n return [\n START_MARKER,\n '-- Managed by src/local/prune-pulled-schema.ts',\n ...columnStatements,\n ...(triggerStatements.length > 0\n ? [\n '',\n '-- Disable Hasura audit triggers in local bootstrap',\n ...triggerStatements,\n ]\n : []),\n END_MARKER,\n ].join('\\n');\n}\n\nexport function buildPruneReminderLog(columns: readonly LegacyColumnPrune[]) {\n const lines = [\n `[kysely] Legacy column prune reminder (${columns.length} columns). Remove these from production schema when ready:`,\n ];\n\n for (const item of columns) {\n lines.push(` - ${item.table}.${item.column} [${item.issue}]`);\n }\n\n return lines;\n}\n\nexport function applyPruneBlock(\n sql: string,\n columns: readonly LegacyColumnPrune[]\n): string {\n const hasuraAuditTriggers = extractHasuraAuditTriggers(sql);\n const startAt = sql.indexOf(START_MARKER);\n\n let base = sql;\n if (startAt !== -1) {\n const endAt = sql.indexOf(END_MARKER, startAt);\n if (endAt === -1) {\n throw new KyselyError('Malformed legacy prune block in initial SQL', {\n missingMarker: END_MARKER,\n });\n }\n const tailStart = endAt + END_MARKER.length;\n const afterTail = sql.slice(tailStart).replace(/^\\s*\\n/, '');\n base = `${sql.slice(0, startAt).trimEnd()}\\n${afterTail}`;\n }\n\n const next = base.trimEnd();\n if (columns.length === 0) {\n return `${next}\\n`;\n }\n\n return `${next}\\n\\n${buildPruneBlock(columns, hasuraAuditTriggers)}\\n`;\n}\n\nexport async function prunePulledSchemaFile(filePath: string) {\n const original = await readFile(filePath, 'utf8');\n const updated = applyPruneBlock(original, activeLegacyColumnPrunes);\n const changed = updated !== original;\n if (changed) {\n await writeFile(filePath, updated, 'utf8');\n }\n\n const status = changed ? 'applied' : 'already up to date';\n console.log(`[kysely] Legacy column prune block ${status}.`);\n for (const line of buildPruneReminderLog(activeLegacyColumnPrunes)) {\n console.log(line);\n }\n}\n\nexport async function prunePulledSchema(root: string) {\n const filePath = join(root, 'initial/0000000000000-init.sql');\n await prunePulledSchemaFile(filePath);\n}\n\nasync function run() {\n await prunePulledSchema(process.cwd());\n}\n\nfunction isDirectExecution() {\n const entryPath = process.argv[1];\n if (!entryPath) {\n return false;\n }\n\n return (\n entryPath.endsWith('prune-pulled-schema.ts') ||\n entryPath.endsWith('prune-pulled-schema.js')\n );\n}\n\n(async () => {\n if (isDirectExecution()) {\n await run();\n }\n})();\n"]}
@@ -0,0 +1,7 @@
1
+ export declare const appMigrationEpoch: {
2
+ readonly baseline: "0000000000000-baseline";
3
+ readonly folder: "migrations-v2";
4
+ readonly lockTableName: "kysely_migration_lock";
5
+ readonly tableName: "kysely_migration";
6
+ readonly tableSchema: "kysely_v2";
7
+ };
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.appMigrationEpoch = void 0;
4
+ exports.appMigrationEpoch = {
5
+ baseline: '0000000000000-baseline',
6
+ folder: 'migrations-v2',
7
+ lockTableName: 'kysely_migration_lock',
8
+ tableName: 'kysely_migration',
9
+ tableSchema: 'kysely_v2',
10
+ };
11
+ //# sourceMappingURL=migration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration.js","sourceRoot":"src/","sources":["migration.ts"],"names":[],"mappings":";;;AAAa,QAAA,iBAAiB,GAAG;IAC/B,QAAQ,EAAE,wBAAwB;IAClC,MAAM,EAAE,eAAe;IACvB,aAAa,EAAE,uBAAuB;IACtC,SAAS,EAAE,kBAAkB;IAC7B,WAAW,EAAE,WAAW;CAChB,CAAC","sourcesContent":["export const appMigrationEpoch = {\n baseline: '0000000000000-baseline',\n folder: 'migrations-v2',\n lockTableName: 'kysely_migration_lock',\n tableName: 'kysely_migration',\n tableSchema: 'kysely_v2',\n} as const;\n"]}
@@ -13,7 +13,6 @@ function createCommentNode(repositoryName) {
13
13
  * similar to how modifyEnd works.
14
14
  */
15
15
  class CommentTransformer extends kysely_1.OperationNodeTransformer {
16
- _repositoryName;
17
16
  constructor(_repositoryName) {
18
17
  super();
19
18
  this._repositoryName = _repositoryName;
@@ -1 +1 @@
1
- {"version":3,"file":"comment-transformer.js","sourceRoot":"src/","sources":["pganalyze-comment-plugin/comment-transformer.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n type DeleteQueryNode,\n type InsertQueryNode,\n OperationNodeTransformer,\n type RootOperationNode,\n SelectModifierNode,\n type SelectQueryNode,\n sql,\n type UpdateQueryNode,\n} from 'kysely';\n\nfunction createCommentNode(repositoryName: string): SelectModifierNode {\n return SelectModifierNode.createWithExpression(\n sql.raw(`/* repository: ${repositoryName} */`).toOperationNode()\n );\n}\n/**\n * Transformer that adds a SQL comment to queries for pganalyze tracking.\n * The comment format is: repository: REPOSITORY_NAME\n *\n * This works by appending the comment to queries using the endModifiers property,\n * similar to how modifyEnd works.\n */\nexport class CommentTransformer extends OperationNodeTransformer {\n constructor(readonly _repositoryName: string) {\n super();\n }\n\n transformRootNode(node: RootOperationNode): RootOperationNode {\n if (node.kind === 'SelectQueryNode') {\n return this.transformSelectQuery(node);\n }\n if (node.kind === 'InsertQueryNode') {\n return this.transformInsertQuery(node);\n }\n if (node.kind === 'UpdateQueryNode') {\n return this.transformUpdateQuery(node);\n }\n if (node.kind === 'DeleteQueryNode') {\n return this.transformDeleteQuery(node);\n }\n return node;\n }\n\n protected override transformSelectQuery(\n node: SelectQueryNode\n ): SelectQueryNode {\n const transformed = super.transformSelectQuery(node);\n return this.addCommentToSelectQuery(transformed);\n }\n\n protected override transformInsertQuery(\n node: InsertQueryNode\n ): InsertQueryNode {\n const transformed = super.transformInsertQuery(node);\n return this.addCommentToInsertQuery(transformed);\n }\n\n protected override transformUpdateQuery(\n node: UpdateQueryNode\n ): UpdateQueryNode {\n const transformed = super.transformUpdateQuery(node);\n return this.addCommentToUpdateQuery(transformed);\n }\n\n protected override transformDeleteQuery(\n node: DeleteQueryNode\n ): DeleteQueryNode {\n const transformed = super.transformDeleteQuery(node);\n return this.addCommentToDeleteQuery(transformed);\n }\n\n private addCommentToSelectQuery(node: SelectQueryNode): SelectQueryNode {\n // Append comment using endModifiers property, similar to modifyEnd\n const commentNode = createCommentNode(this._repositoryName);\n\n return {\n ...node,\n endModifiers: node.endModifiers\n ? [...node.endModifiers, commentNode]\n : [commentNode],\n };\n }\n\n private addCommentToInsertQuery(node: InsertQueryNode): InsertQueryNode {\n const commentNode = createCommentNode(this._repositoryName);\n\n return {\n ...node,\n endModifiers: node.endModifiers\n ? [...node.endModifiers, commentNode]\n : [commentNode],\n };\n }\n\n private addCommentToUpdateQuery(node: UpdateQueryNode): UpdateQueryNode {\n const commentNode = createCommentNode(this._repositoryName);\n\n return {\n ...node,\n endModifiers: node.endModifiers\n ? [...node.endModifiers, commentNode]\n : [commentNode],\n };\n }\n\n private addCommentToDeleteQuery(node: DeleteQueryNode): DeleteQueryNode {\n const commentNode = createCommentNode(this._repositoryName);\n\n return {\n ...node,\n endModifiers: node.endModifiers\n ? [...node.endModifiers, commentNode]\n : [commentNode],\n };\n }\n}\n"]}
1
+ {"version":3,"file":"comment-transformer.js","sourceRoot":"src/","sources":["pganalyze-comment-plugin/comment-transformer.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n type DeleteQueryNode,\n type InsertQueryNode,\n OperationNodeTransformer,\n type RootOperationNode,\n SelectModifierNode,\n type SelectQueryNode,\n sql,\n type UpdateQueryNode,\n} from 'kysely';\n\nfunction createCommentNode(repositoryName: string): SelectModifierNode {\n return SelectModifierNode.createWithExpression(\n sql.raw(`/* repository: ${repositoryName} */`).toOperationNode()\n );\n}\n/**\n * Transformer that adds a SQL comment to queries for pganalyze tracking.\n * The comment format is: repository: REPOSITORY_NAME\n *\n * This works by appending the comment to queries using the endModifiers property,\n * similar to how modifyEnd works.\n */\nexport class CommentTransformer extends OperationNodeTransformer {\n constructor(readonly _repositoryName: string) {\n super();\n }\n\n transformRootNode(node: RootOperationNode): RootOperationNode {\n if (node.kind === 'SelectQueryNode') {\n return this.transformSelectQuery(node);\n }\n if (node.kind === 'InsertQueryNode') {\n return this.transformInsertQuery(node);\n }\n if (node.kind === 'UpdateQueryNode') {\n return this.transformUpdateQuery(node);\n }\n if (node.kind === 'DeleteQueryNode') {\n return this.transformDeleteQuery(node);\n }\n return node;\n }\n\n protected override transformSelectQuery(\n node: SelectQueryNode\n ): SelectQueryNode {\n const transformed = super.transformSelectQuery(node);\n return this.addCommentToSelectQuery(transformed);\n }\n\n protected override transformInsertQuery(\n node: InsertQueryNode\n ): InsertQueryNode {\n const transformed = super.transformInsertQuery(node);\n return this.addCommentToInsertQuery(transformed);\n }\n\n protected override transformUpdateQuery(\n node: UpdateQueryNode\n ): UpdateQueryNode {\n const transformed = super.transformUpdateQuery(node);\n return this.addCommentToUpdateQuery(transformed);\n }\n\n protected override transformDeleteQuery(\n node: DeleteQueryNode\n ): DeleteQueryNode {\n const transformed = super.transformDeleteQuery(node);\n return this.addCommentToDeleteQuery(transformed);\n }\n\n private addCommentToSelectQuery(node: SelectQueryNode): SelectQueryNode {\n // Append comment using endModifiers property, similar to modifyEnd\n const commentNode = createCommentNode(this._repositoryName);\n\n return {\n ...node,\n endModifiers: node.endModifiers\n ? [...node.endModifiers, commentNode]\n : [commentNode],\n };\n }\n\n private addCommentToInsertQuery(node: InsertQueryNode): InsertQueryNode {\n const commentNode = createCommentNode(this._repositoryName);\n\n return {\n ...node,\n endModifiers: node.endModifiers\n ? [...node.endModifiers, commentNode]\n : [commentNode],\n };\n }\n\n private addCommentToUpdateQuery(node: UpdateQueryNode): UpdateQueryNode {\n const commentNode = createCommentNode(this._repositoryName);\n\n return {\n ...node,\n endModifiers: node.endModifiers\n ? [...node.endModifiers, commentNode]\n : [commentNode],\n };\n }\n\n private addCommentToDeleteQuery(node: DeleteQueryNode): DeleteQueryNode {\n const commentNode = createCommentNode(this._repositoryName);\n\n return {\n ...node,\n endModifiers: node.endModifiers\n ? [...node.endModifiers, commentNode]\n : [commentNode],\n };\n }\n}\n"]}
@@ -1,18 +1,31 @@
1
1
  "use strict";
2
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
3
+ if (kind === "m") throw new TypeError("Private method is not writable");
4
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
5
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
6
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
7
+ };
8
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
9
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
10
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
11
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
12
+ };
13
+ var _KyselyPganalyzeCommentPlugin_transformer;
2
14
  Object.defineProperty(exports, "__esModule", { value: true });
3
15
  exports.KyselyPganalyzeCommentPlugin = void 0;
4
16
  const comment_transformer_1 = require("./comment-transformer");
5
17
  class KyselyPganalyzeCommentPlugin {
6
- #transformer;
7
18
  constructor(options) {
8
- this.#transformer = new comment_transformer_1.CommentTransformer(options.repository);
19
+ _KyselyPganalyzeCommentPlugin_transformer.set(this, void 0);
20
+ __classPrivateFieldSet(this, _KyselyPganalyzeCommentPlugin_transformer, new comment_transformer_1.CommentTransformer(options.repository), "f");
9
21
  }
10
22
  transformQuery(args) {
11
- return this.#transformer.transformRootNode(args.node);
23
+ return __classPrivateFieldGet(this, _KyselyPganalyzeCommentPlugin_transformer, "f").transformRootNode(args.node);
12
24
  }
13
25
  async transformResult(args) {
14
26
  return args.result;
15
27
  }
16
28
  }
17
29
  exports.KyselyPganalyzeCommentPlugin = KyselyPganalyzeCommentPlugin;
30
+ _KyselyPganalyzeCommentPlugin_transformer = new WeakMap();
18
31
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"src/","sources":["pganalyze-comment-plugin/index.ts"],"names":[],"mappings":";;;AAQA,+DAA2D;AAE3D;IACW,YAAY,CAAqB;IAE1C,YAAY,OAA+B,EAAE;QAC3C,IAAI,CAAC,YAAY,GAAG,IAAI,wCAAkB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAAA,CAChE;IAED,cAAc,CAAC,IAA8B,EAAqB;QAChE,OAAO,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAAA,CACvD;IAED,KAAK,CAAC,eAAe,CACnB,IAA+B,EACG;QAClC,OAAO,IAAI,CAAC,MAAM,CAAC;IAAA,CACpB;CACF","sourcesContent":["import type {\n KyselyPlugin,\n PluginTransformQueryArgs,\n PluginTransformResultArgs,\n QueryResult,\n RootOperationNode,\n UnknownRow,\n} from 'kysely';\nimport { CommentTransformer } from './comment-transformer';\n\nexport class KyselyPganalyzeCommentPlugin implements KyselyPlugin {\n readonly #transformer: CommentTransformer;\n\n constructor(options: { repository: string }) {\n this.#transformer = new CommentTransformer(options.repository);\n }\n\n transformQuery(args: PluginTransformQueryArgs): RootOperationNode {\n return this.#transformer.transformRootNode(args.node);\n }\n\n async transformResult(\n args: PluginTransformResultArgs\n ): Promise<QueryResult<UnknownRow>> {\n return args.result;\n }\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"src/","sources":["pganalyze-comment-plugin/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAQA,+DAA2D;AAE3D,MAAa,4BAA4B;IAGvC,YAAY,OAA+B;QAFlC,4DAAiC;QAGxC,uBAAA,IAAI,6CAAgB,IAAI,wCAAkB,CAAC,OAAO,CAAC,UAAU,CAAC,MAAA,CAAC;IACjE,CAAC;IAED,cAAc,CAAC,IAA8B;QAC3C,OAAO,uBAAA,IAAI,iDAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,IAA+B;QAE/B,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF;AAhBD,oEAgBC","sourcesContent":["import type {\n KyselyPlugin,\n PluginTransformQueryArgs,\n PluginTransformResultArgs,\n QueryResult,\n RootOperationNode,\n UnknownRow,\n} from 'kysely';\nimport { CommentTransformer } from './comment-transformer';\n\nexport class KyselyPganalyzeCommentPlugin implements KyselyPlugin {\n readonly #transformer: CommentTransformer;\n\n constructor(options: { repository: string }) {\n this.#transformer = new CommentTransformer(options.repository);\n }\n\n transformQuery(args: PluginTransformQueryArgs): RootOperationNode {\n return this.#transformer.transformRootNode(args.node);\n }\n\n async transformResult(\n args: PluginTransformResultArgs\n ): Promise<QueryResult<UnknownRow>> {\n return args.result;\n }\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import { type Dialect, Kysely as K, type LogConfig } from 'kysely';
2
2
  import type { DB } from './v1.generated';
3
- export declare function getKysely(dialect: Dialect, options: {
3
+ export declare function getKysely<Database = DB>(dialect: Dialect, options: {
4
4
  repositoryName?: string;
5
5
  log?: true | LogConfig;
6
- }): K<DB>;
6
+ }): K<Database>;
@@ -1 +1 @@
1
- {"version":3,"file":"plugins.js","sourceRoot":"src/","sources":["plugins.ts"],"names":[],"mappings":";;;AAAA,mCAKgB;AAChB,6CAAgD;AAChD,yEAA0E;AAG1E,mBACE,OAAgB,EAChB,OAA4D,EAC5D;IACA,MAAM,OAAO,GAAmB,CAAC,IAAI,6BAAgB,EAAE,CAAC,CAAC;IAEzD,IAAI,OAAO,EAAE,cAAc,EAAE,CAAC;QAC5B,OAAO,CAAC,IAAI,CACV,IAAI,uDAA4B,CAAC;YAC/B,UAAU,EAAE,OAAO,CAAC,cAAc;SACnC,CAAC,CACH,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,eAAC,CAAK;QACvB,OAAO;QACP,OAAO;QACP,GAAG,EAAE,OAAO,EAAE,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG;KAC/D,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAAA,CACf","sourcesContent":["import {\n type Dialect,\n Kysely as K,\n type KyselyPlugin,\n type LogConfig,\n} from 'kysely';\nimport { CustomCasePlugin } from './camel-case';\nimport { KyselyPganalyzeCommentPlugin } from './pganalyze-comment-plugin';\nimport type { DB } from './v1.generated';\n\nexport function getKysely(\n dialect: Dialect,\n options: { repositoryName?: string; log?: true | LogConfig }\n) {\n const plugins: KyselyPlugin[] = [new CustomCasePlugin()];\n\n if (options?.repositoryName) {\n plugins.push(\n new KyselyPganalyzeCommentPlugin({\n repository: options.repositoryName,\n })\n );\n }\n const kysely = new K<DB>({\n dialect,\n plugins,\n log: options?.log === true ? ['query', 'error'] : options?.log,\n });\n return kysely;\n}\n"]}
1
+ {"version":3,"file":"plugins.js","sourceRoot":"src/","sources":["plugins.ts"],"names":[],"mappings":";;AAUA,8BAmBC;AA7BD,mCAKgB;AAChB,6CAAgD;AAChD,yEAA0E;AAG1E,SAAgB,SAAS,CACvB,OAAgB,EAChB,OAA4D;IAE5D,MAAM,OAAO,GAAmB,CAAC,IAAI,6BAAgB,EAAE,CAAC,CAAC;IAEzD,IAAI,OAAO,EAAE,cAAc,EAAE,CAAC;QAC5B,OAAO,CAAC,IAAI,CACV,IAAI,uDAA4B,CAAC;YAC/B,UAAU,EAAE,OAAO,CAAC,cAAc;SACnC,CAAC,CACH,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,eAAC,CAAW;QAC7B,OAAO;QACP,OAAO;QACP,GAAG,EAAE,OAAO,EAAE,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG;KAC/D,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["import {\n type Dialect,\n Kysely as K,\n type KyselyPlugin,\n type LogConfig,\n} from 'kysely';\nimport { CustomCasePlugin } from './camel-case';\nimport { KyselyPganalyzeCommentPlugin } from './pganalyze-comment-plugin';\nimport type { DB } from './v1.generated';\n\nexport function getKysely<Database = DB>(\n dialect: Dialect,\n options: { repositoryName?: string; log?: true | LogConfig }\n) {\n const plugins: KyselyPlugin[] = [new CustomCasePlugin()];\n\n if (options?.repositoryName) {\n plugins.push(\n new KyselyPganalyzeCommentPlugin({\n repository: options.repositoryName,\n })\n );\n }\n const kysely = new K<Database>({\n dialect,\n plugins,\n log: options?.log === true ? ['query', 'error'] : options?.log,\n });\n return kysely;\n}\n"]}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Matches PostgreSQL errors from both production's postgres.js driver and
3
+ * PGlite, which expose constraint names under different property names.
4
+ */
5
+ export declare function isPostgresError(error: unknown, expected: {
6
+ code: string;
7
+ constraint: string;
8
+ }): boolean;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isPostgresError = isPostgresError;
4
+ /**
5
+ * Matches PostgreSQL errors from both production's postgres.js driver and
6
+ * PGlite, which expose constraint names under different property names.
7
+ */
8
+ function isPostgresError(error, expected) {
9
+ if (!(error instanceof Error) ||
10
+ !('code' in error) ||
11
+ typeof error.code !== 'string') {
12
+ return false;
13
+ }
14
+ const constraint = 'constraint' in error && typeof error.constraint === 'string'
15
+ ? error.constraint
16
+ : 'constraint_name' in error && typeof error.constraint_name === 'string'
17
+ ? error.constraint_name
18
+ : undefined;
19
+ return error.code === expected.code && constraint === expected.constraint;
20
+ }
21
+ //# sourceMappingURL=postgres-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres-error.js","sourceRoot":"src/","sources":["postgres-error.ts"],"names":[],"mappings":";;AAIA,0CAoBC;AAxBD;;;GAGG;AACH,SAAgB,eAAe,CAC7B,KAAc,EACd,QAA8C;IAE9C,IACE,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC;QACzB,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC;QAClB,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAC9B,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,UAAU,GACd,YAAY,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ;QAC3D,CAAC,CAAC,KAAK,CAAC,UAAU;QAClB,CAAC,CAAC,iBAAiB,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,eAAe,KAAK,QAAQ;YACvE,CAAC,CAAC,KAAK,CAAC,eAAe;YACvB,CAAC,CAAC,SAAS,CAAC;IAElB,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,IAAI,UAAU,KAAK,QAAQ,CAAC,UAAU,CAAC;AAC5E,CAAC","sourcesContent":["/**\n * Matches PostgreSQL errors from both production's postgres.js driver and\n * PGlite, which expose constraint names under different property names.\n */\nexport function isPostgresError(\n error: unknown,\n expected: { code: string; constraint: string }\n): boolean {\n if (\n !(error instanceof Error) ||\n !('code' in error) ||\n typeof error.code !== 'string'\n ) {\n return false;\n }\n\n const constraint =\n 'constraint' in error && typeof error.constraint === 'string'\n ? error.constraint\n : 'constraint_name' in error && typeof error.constraint_name === 'string'\n ? error.constraint_name\n : undefined;\n\n return error.code === expected.code && constraint === expected.constraint;\n}\n"]}
@@ -1 +1,2 @@
1
1
  export * from './listing';
2
+ export * from './tenant';
@@ -15,4 +15,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./listing"), exports);
18
+ __exportStar(require("./tenant"), exports);
18
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"src/","sources":["query/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B","sourcesContent":["export * from './listing';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"src/","sources":["query/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B;AAC1B,2CAAyB","sourcesContent":["export * from './listing';\nexport * from './tenant';\n"]}
@@ -3,22 +3,12 @@ export declare function whereListingIsInactive(eb: ExpressionBuilder<DB & {
3
3
  l: PublicListing;
4
4
  }, 'l'>, today?: string): import("kysely").ExpressionWrapper<DB & {
5
5
  l: PublicListing;
6
- }, "l", import("kysely").SqlBool>;
6
+ }, "l", import("kysely/dist/cjs/util/type-utils").SqlBool>;
7
7
  export declare function whereListingIsActive(eb: ExpressionBuilder<DB & {
8
8
  l: PublicListing;
9
9
  }, 'l'>, today?: string): import("kysely").ExpressionWrapper<DB & {
10
10
  l: PublicListing;
11
- }, "l", import("kysely").SqlBool>;
12
- export declare function selectListingIsInactive(eb: ExpressionBuilder<DB & {
13
- l: PublicListing;
14
- }, 'l'>, today?: string): import("kysely").ExpressionWrapper<DB & {
15
- l: PublicListing;
16
- }, "l", import("kysely").SqlBool>;
17
- export declare function selectListingIsActive(eb: ExpressionBuilder<DB & {
18
- l: PublicListing;
19
- }, 'l'>, today?: string): import("kysely").ExpressionWrapper<DB & {
20
- l: PublicListing;
21
- }, "l", import("kysely").SqlBool>;
11
+ }, "l", import("kysely/dist/cjs/util/type-utils").SqlBool>;
22
12
  export declare function selectListingStatus(eb: ExpressionBuilder<DB & {
23
13
  l: PublicListing;
24
14
  }, 'l'>, today?: string): import("kysely").ExpressionWrapper<DB & {