@dudousxd/nestjs-telescope-mikro-orm 1.12.0 → 1.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,80 @@
1
1
  # @dudousxd/nestjs-telescope-mikro-orm
2
2
 
3
+ ## 1.14.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#37](https://github.com/DavideCarvalho/nestjs-telescope/pull/37) [`3969c33`](https://github.com/DavideCarvalho/nestjs-telescope/commit/3969c338dd6c360fb08bb68e6b279f06cdf7ab77) Thanks [@DavideCarvalho](https://github.com/DavideCarvalho)! - Add `telescopeManagedTables()`, returning the three tables
8
+ (`telescope_entries`, `telescope_rollups`, `telescope_schema_meta`) the
9
+ `MikroOrmStorageProvider` boot-manages. Consumers running their own MikroORM
10
+ CLI migrations against a shared database previously had to hand-maintain a
11
+ `/^telescope_/` regex (or an explicit list) in `skipTables` so a migration
12
+ diff never tried to drop telescope's tables — including the boot fingerprint
13
+ marker, which is easy to forget. `telescopeManagedTables()` derives the list
14
+ straight from the entities' own `tableName` metadata (never a hardcoded
15
+ parallel literal), so a future rename flows through automatically:
16
+
17
+ ```ts
18
+ import { telescopeManagedTables } from "@dudousxd/nestjs-telescope-mikro-orm";
19
+
20
+ await MikroORM.init({
21
+ // ...your entities/driver config
22
+ schemaGenerator: { skipTables: telescopeManagedTables() },
23
+ });
24
+ ```
25
+
26
+ - [#37](https://github.com/DavideCarvalho/nestjs-telescope/pull/37) [`3969c33`](https://github.com/DavideCarvalho/nestjs-telescope/commit/3969c338dd6c360fb08bb68e6b279f06cdf7ab77) Thanks [@DavideCarvalho](https://github.com/DavideCarvalho)! - Add a first-class deferred record sink, `telescopeRecord`/`setTelescopeRecordSink`
27
+ (exported from core), mirroring `telescopeDump`'s pattern. It exists for
28
+ boot-time integrations — most notably a MikroORM query logger — that need to
29
+ emit Telescope entries before Nest DI has constructed `TelescopeService`:
30
+ MikroORM builds (and can start calling) its logger at `MikroORM.init()`, well
31
+ before `TelescopeModule` wires anything. `TelescopeService`'s constructor binds
32
+ the global sink automatically and `onApplicationShutdown` clears it; calls made
33
+ before binding (or after shutdown) are dropped, not buffered — there is no
34
+ unbounded queue waiting to replay boot noise.
35
+
36
+ This removes the need for host apps to hand-roll their own module-global
37
+ bridge (`let telescopeRecord; export function setTelescopeRecord()` filled in
38
+ from `onModuleInit`) just to wire the MikroORM logger before DI is ready.
39
+
40
+ `telescopeMikroOrmLogger`'s `record` parameter is now optional. When omitted,
41
+ the logger lazily resolves `telescopeRecord` from core at each `logQuery` call
42
+ (not at construction), so binding order no longer matters:
43
+
44
+ ```ts
45
+ MikroORM.init({
46
+ debug: ["query"],
47
+ loggerFactory: telescopeMikroOrmLogger(),
48
+ });
49
+ ```
50
+
51
+ An explicit `record` function, when passed, still takes precedence over the
52
+ global sink.
53
+
54
+ ## 1.13.0
55
+
56
+ ### Minor Changes
57
+
58
+ - [`df101cb`](https://github.com/DavideCarvalho/nestjs-telescope/commit/df101cba5aa5402cb87425c567412b3a9503e3af) - Gate the boot-time schema reconciliation behind a metadata fingerprint so
59
+ steady-state boots stop paying for a full-database introspection. The provider's
60
+ `init()` previously ran `schema.update({ safe: true })` on every boot, which
61
+ diffs the WHOLE database's `information_schema` against telescope's entities and
62
+ emits zero DDL once the schema is settled — ~1.5–3s of round-trips on a remote
63
+ DB, every time.
64
+
65
+ `init()` now: ensures the database exists, maintains an idempotent
66
+ `telescope_schema_meta` marker table (one row), and compares the stored
67
+ fingerprint against one computed purely in memory from entity metadata (sorted
68
+ tables/columns/indexes, plus the platform name, configured collation, and a
69
+ hand-bump `SCHEMA_REVISION`). When they match it SKIPS `ensureDatabase`'s heavy
70
+ sibling `schema.update` entirely. Only a fresh DB, an entity change, or a
71
+ `SCHEMA_REVISION` bump invalidates the fingerprint and runs the additive
72
+ `schema.update`, after which the marker is re-cached. The heal runs under a
73
+ best-effort advisory lock (MySQL `GET_LOCK` / PostgreSQL `pg_advisory_lock`,
74
+ no-op on SQLite) with a re-check so concurrent pods don't all introspect at
75
+ once. Behavior is unchanged from the caller's view: fresh databases and CI still
76
+ auto-create their schema with zero configuration.
77
+
3
78
  ## 1.12.0
4
79
 
5
80
  ### Minor Changes
package/dist/index.d.ts CHANGED
@@ -4,4 +4,5 @@ export * from './telescope-mikro-orm.logger.js';
4
4
  export * from './mikro-orm-query.watcher.js';
5
5
  export * from './telescope-entry.entity.js';
6
6
  export * from './mikro-orm-storage.provider.js';
7
+ export * from './schema.js';
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,KAAK,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClF,cAAc,iCAAiC,CAAC;AAChD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,KAAK,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClF,cAAc,iCAAiC,CAAC;AAChD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,aAAa,CAAC"}
package/dist/index.js CHANGED
@@ -4,4 +4,5 @@ export * from './telescope-mikro-orm.logger.js';
4
4
  export * from './mikro-orm-query.watcher.js';
5
5
  export * from './telescope-entry.entity.js';
6
6
  export * from './mikro-orm-storage.provider.js';
7
+ export * from './schema.js';
7
8
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAwB,MAAM,4BAA4B,CAAC;AAClF,cAAc,iCAAiC,CAAC;AAChD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAwB,MAAM,4BAA4B,CAAC;AAClF,cAAc,iCAAiC,CAAC;AAChD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,aAAa,CAAC"}
@@ -19,6 +19,21 @@ export declare class MikroOrmStorageProvider implements StorageProvider, RollupS
19
19
  });
20
20
  private buildOrmOptions;
21
21
  init(): Promise<void>;
22
+ /**
23
+ * Fingerprint-gated schema reconciliation. Replaces a bare
24
+ * `ensureDatabase(); schema.update()` so steady-state boots skip the
25
+ * whole-database introspection (see the gate notes above the helpers).
26
+ *
27
+ * FRESH-DB ORDERING: `ensureDatabase()` runs FIRST, before the marker table is
28
+ * touched. The provider owns a DEDICATED connection, so on a brand-new DB the
29
+ * database itself may not exist yet — a `create table telescope_schema_meta`
30
+ * issued before `ensureDatabase()` would hit "unknown database" on MySQL/PG.
31
+ * `ensureDatabase()` creates it when missing and is a single cheap existence
32
+ * check when it already exists (the common case: the host app is already
33
+ * connected to that database), so paying for it every boot is negligible next
34
+ * to the multi-second `schema.update` introspection the gate eliminates.
35
+ */
36
+ private reconcileSchema;
22
37
  close(): Promise<void>;
23
38
  private forkEm;
24
39
  store(entries: Entry[]): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"mikro-orm-storage.provider.d.ts","sourceRoot":"","sources":["../src/mikro-orm-storage.provider.ts"],"names":[],"mappings":"AAmDA,OAAO,KAAK,EACV,KAAK,EACL,UAAU,EACV,cAAc,EACd,IAAI,EACJ,UAAU,EACV,YAAY,EACZ,WAAW,EACX,WAAW,EACX,eAAe,EACf,QAAQ,EACT,MAAM,4BAA4B,CAAC;AAQpC,OAAO,KAAK,EAA8B,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC3E,OAAO,EAAE,QAAQ,EAAO,MAAM,iBAAiB,CAAC;AAuChD;;;;;GAKG;AACH,MAAM,MAAM,8BAA8B,GAAG,OAAO,GAAG;IAAE,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AA8DlF,qBAAa,uBAAwB,YAAW,eAAe,EAAE,WAAW;IAC1E,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4C;IACnE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAU;IACvC,OAAO,CAAC,GAAG,CAAyB;gBAGlC,MAAM,EAAE,QAAQ,GAAG,8BAA8B,EACjD,IAAI,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE;IAYnC,OAAO,CAAC,eAAe;IAoBjB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAYrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAO5B,OAAO,CAAC,MAAM;IAOR,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAStC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAcxD,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAQhD,GAAG,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAkE5C,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAMxC,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAkB1C,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAgB1D,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAwB/C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ5B;;;;;;;;;;;;;;;OAeG;IACG,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAgCnD,YAAY,CAChB,OAAO,EAAE,MAAM,EAAE,EACjB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,YAAY,EAAE,CAAC;CAgB3B"}
1
+ {"version":3,"file":"mikro-orm-storage.provider.d.ts","sourceRoot":"","sources":["../src/mikro-orm-storage.provider.ts"],"names":[],"mappings":"AAoDA,OAAO,KAAK,EACV,KAAK,EACL,UAAU,EACV,cAAc,EACd,IAAI,EACJ,UAAU,EACV,YAAY,EACZ,WAAW,EACX,WAAW,EACX,eAAe,EACf,QAAQ,EACT,MAAM,4BAA4B,CAAC;AAQpC,OAAO,KAAK,EAA8C,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC3F,OAAO,EAAE,QAAQ,EAAO,MAAM,iBAAiB,CAAC;AAmEhD;;;;;GAKG;AACH,MAAM,MAAM,8BAA8B,GAAG,OAAO,GAAG;IAAE,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAwRlF,qBAAa,uBAAwB,YAAW,eAAe,EAAE,WAAW;IAC1E,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4C;IACnE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAU;IACvC,OAAO,CAAC,GAAG,CAAyB;gBAGlC,MAAM,EAAE,QAAQ,GAAG,8BAA8B,EACjD,IAAI,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE;IAYnC,OAAO,CAAC,eAAe;IAoBjB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ3B;;;;;;;;;;;;;OAaG;YACW,eAAe;IAmCvB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAO5B,OAAO,CAAC,MAAM;IAOR,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAStC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAcxD,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAQhD,GAAG,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAkE5C,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAMxC,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAkB1C,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAgB1D,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAwB/C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ5B;;;;;;;;;;;;;;;OAeG;IACG,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAgCnD,YAAY,CAChB,OAAO,EAAE,MAAM,EAAE,EACjB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,YAAY,EAAE,CAAC;CAgB3B"}
@@ -1,8 +1,32 @@
1
+ import { createHash } from 'node:crypto';
1
2
  import { decodeCursor, encodeCursor, isBatchOrigin, mergeHistograms, normalizeHistogram, } from '@dudousxd/nestjs-telescope';
2
3
  import { MikroORM, raw } from '@mikro-orm/core';
3
4
  import { TelescopeEntry } from './telescope-entry.entity.js';
4
5
  import { TelescopeRollup } from './telescope-rollup.entity.js';
6
+ import { TelescopeSchemaMeta } from './telescope-schema-meta.entity.js';
5
7
  const DEFAULT_LIMIT = 50;
8
+ /**
9
+ * Hand-bump escape hatch for DDL changes that are NOT visible in entity metadata
10
+ * (e.g. a collation tweak, an index expression, anything `schema.update` would
11
+ * emit but the fingerprint inputs below can't see). Incrementing this forces
12
+ * every pod to re-run the additive `schema.update` once, then re-cache.
13
+ */
14
+ const SCHEMA_REVISION = 1;
15
+ /** Stable PK of the single fingerprint marker row. */
16
+ const SCHEMA_META_ID = 'mikro-orm';
17
+ /**
18
+ * Cross-driver DDL for the fingerprint marker table. `if not exists` keeps it
19
+ * idempotent and introspection-free (no `information_schema` round-trip), and
20
+ * the unquoted lowercase identifiers + portable `varchar`/`bigint` types parse
21
+ * on MySQL, PostgreSQL, and SQLite alike. Mirrors `TelescopeSchemaMeta`.
22
+ */
23
+ const CREATE_SCHEMA_META_TABLE_SQL = 'create table if not exists telescope_schema_meta (' +
24
+ 'id varchar(32) not null, ' +
25
+ 'fingerprint varchar(64) not null, ' +
26
+ 'applied_at bigint not null, ' +
27
+ 'primary key (id))';
28
+ /** A shared advisory-lock name/key both lock dialects derive from. */
29
+ const SCHEMA_LOCK_NAME = 'telescope_schema';
6
30
  /**
7
31
  * Every persisted column EXCEPT `content`, used as the MikroORM `fields`
8
32
  * projection for content-less aggregate scans (omitContent). Selecting these
@@ -99,6 +123,169 @@ function pickHostConnection(hostConfig) {
99
123
  connection.timezone = hostConfig.timezone;
100
124
  return connection;
101
125
  }
126
+ /**
127
+ * Table names the gate owns and fingerprints — `telescope_entries` and
128
+ * `telescope_rollups`. Derived from metadata (never hardcoded) so a future
129
+ * tableName rename flows through automatically. Deliberately EXCLUDES the marker
130
+ * table, whose own shape must never invalidate the gate.
131
+ */
132
+ function collectOwnedTableNames(orm) {
133
+ const metadata = orm.getMetadata();
134
+ return [metadata.get(TelescopeEntry).tableName, metadata.get(TelescopeRollup).tableName];
135
+ }
136
+ function compareStrings(left, right) {
137
+ if (left < right)
138
+ return -1;
139
+ if (left > right)
140
+ return 1;
141
+ return 0;
142
+ }
143
+ /** Maps an entity's properties to per-column fingerprints, expanding any
144
+ * multi-column property by its `fieldNames`. Columns are sorted by name. */
145
+ function columnsOf(meta) {
146
+ const columns = [];
147
+ for (const prop of meta.props) {
148
+ prop.fieldNames.forEach((fieldName, index) => {
149
+ columns.push({
150
+ autoincrement: prop.autoincrement === true,
151
+ default: prop.default ?? null,
152
+ name: fieldName,
153
+ nullable: prop.nullable === true,
154
+ primary: prop.primary === true,
155
+ type: prop.columnTypes[index] ?? prop.columnTypes[0] ?? prop.type,
156
+ });
157
+ });
158
+ }
159
+ return columns.sort((left, right) => compareStrings(left.name, right.name));
160
+ }
161
+ function indexNameFromFlag(flag) {
162
+ return typeof flag === 'string' ? flag : '';
163
+ }
164
+ /**
165
+ * Index fingerprints from BOTH property-level flags (`{ index: true }` /
166
+ * `{ unique: true }`, which is how the telescope entities declare every index)
167
+ * AND any entity-level `meta.indexes`. Without the property-level pass, flipping
168
+ * an existing column to indexed (no new column) would slip past the gate. Sorted
169
+ * by name then properties for determinism.
170
+ */
171
+ function indexesOf(meta) {
172
+ const indexes = [];
173
+ for (const prop of meta.props) {
174
+ if (prop.index) {
175
+ indexes.push({
176
+ name: indexNameFromFlag(prop.index),
177
+ properties: [...prop.fieldNames].sort(),
178
+ });
179
+ }
180
+ if (prop.unique) {
181
+ indexes.push({
182
+ name: indexNameFromFlag(prop.unique),
183
+ properties: [...prop.fieldNames].sort(),
184
+ });
185
+ }
186
+ }
187
+ for (const index of meta.indexes) {
188
+ const declared = index.properties;
189
+ const properties = Array.isArray(declared)
190
+ ? [...declared]
191
+ : declared !== undefined
192
+ ? [declared]
193
+ : [];
194
+ indexes.push({ name: index.name ?? '', properties: properties.map(String).sort() });
195
+ }
196
+ return indexes.sort((left, right) => compareStrings(left.name, right.name) ||
197
+ compareStrings(left.properties.join(','), right.properties.join(',')));
198
+ }
199
+ /**
200
+ * Pure, in-memory sha256 of a CANONICAL serialization of the owned tables' shape
201
+ * (sorted tables, sorted columns, sorted indexes; object keys authored
202
+ * alphabetically so `JSON.stringify` is order-stable). The platform name is
203
+ * folded in so a SQLite CI marker can never satisfy a MySQL boot, the configured
204
+ * collation so a collation change re-heals, and SCHEMA_REVISION as the manual
205
+ * escape hatch. Never reads enumeration order — everything is sorted.
206
+ */
207
+ function computeExpectedFingerprint(orm, ownedTableNames) {
208
+ const owned = new Set(ownedTableNames);
209
+ const tables = [];
210
+ for (const meta of orm.getMetadata()) {
211
+ if (!owned.has(meta.tableName))
212
+ continue;
213
+ tables.push({ columns: columnsOf(meta), indexes: indexesOf(meta), tableName: meta.tableName });
214
+ }
215
+ tables.sort((left, right) => compareStrings(left.tableName, right.tableName));
216
+ const collate = orm.config.get('collate');
217
+ const payload = {
218
+ collate: collate ?? null,
219
+ platform: orm.em.getPlatform().constructor.name,
220
+ revision: SCHEMA_REVISION,
221
+ tables,
222
+ };
223
+ return createHash('sha256').update(JSON.stringify(payload)).digest('hex');
224
+ }
225
+ /** Reads the single stored fingerprint, or null when the marker row is absent. */
226
+ async function readStoredFingerprint(orm) {
227
+ const em = orm.em.fork();
228
+ const row = await em.findOne(TelescopeSchemaMeta, { id: SCHEMA_META_ID });
229
+ return row ? row.fingerprint : null;
230
+ }
231
+ /** Driver-agnostic upsert of the single marker row with the reconciled fingerprint. */
232
+ async function writeStoredFingerprint(orm, fingerprint) {
233
+ const em = orm.em.fork();
234
+ await em.upsert(TelescopeSchemaMeta, {
235
+ id: SCHEMA_META_ID,
236
+ fingerprint,
237
+ appliedAt: Date.now(),
238
+ });
239
+ }
240
+ /**
241
+ * Best-effort advisory lock so concurrent pods serialize the one-time heal
242
+ * instead of all introspecting at once. MySQL/MariaDB use `GET_LOCK`,
243
+ * PostgreSQL `pg_advisory_lock(hashtext(...))`; SQLite and unknown drivers get a
244
+ * no-op (single-writer or unsupported). Acquisition failures (permissions,
245
+ * timeout) degrade to a no-op so the heal still proceeds — the re-SELECT after
246
+ * locking is what actually prevents duplicate work, the lock just reduces it.
247
+ */
248
+ async function acquireSchemaLock(orm) {
249
+ const platform = orm.em.getPlatform().constructor.name.toLowerCase();
250
+ const connection = orm.em.getConnection();
251
+ const noop = {
252
+ release: async () => {
253
+ /* nothing acquired */
254
+ },
255
+ };
256
+ try {
257
+ if (platform.includes('mysql') || platform.includes('maria')) {
258
+ await connection.execute(`select get_lock('${SCHEMA_LOCK_NAME}', 10) as locked`);
259
+ return {
260
+ release: async () => {
261
+ try {
262
+ await connection.execute(`select release_lock('${SCHEMA_LOCK_NAME}')`);
263
+ }
264
+ catch {
265
+ /* lock auto-releases on connection close */
266
+ }
267
+ },
268
+ };
269
+ }
270
+ if (platform.includes('postgre')) {
271
+ await connection.execute(`select pg_advisory_lock(hashtext('${SCHEMA_LOCK_NAME}'))`);
272
+ return {
273
+ release: async () => {
274
+ try {
275
+ await connection.execute(`select pg_advisory_unlock(hashtext('${SCHEMA_LOCK_NAME}'))`);
276
+ }
277
+ catch {
278
+ /* lock auto-releases on connection close */
279
+ }
280
+ },
281
+ };
282
+ }
283
+ }
284
+ catch {
285
+ /* advisory lock unavailable → proceed without it */
286
+ }
287
+ return noop;
288
+ }
102
289
  export class MikroOrmStorageProvider {
103
290
  source;
104
291
  ensureSchema;
@@ -120,7 +307,7 @@ export class MikroOrmStorageProvider {
120
307
  const connection = pickHostConnection(this.source.config.getAll());
121
308
  return {
122
309
  ...connection,
123
- entities: [TelescopeEntry, TelescopeRollup],
310
+ entities: [TelescopeEntry, TelescopeRollup, TelescopeSchemaMeta],
124
311
  contextName: TELESCOPE_CONTEXT_NAME,
125
312
  allowGlobalContext: true,
126
313
  };
@@ -128,7 +315,7 @@ export class MikroOrmStorageProvider {
128
315
  const { ensureSchema: _ensureSchema, entities: _entities, ...rest } = this.source;
129
316
  return {
130
317
  ...rest,
131
- entities: [TelescopeEntry, TelescopeRollup],
318
+ entities: [TelescopeEntry, TelescopeRollup, TelescopeSchemaMeta],
132
319
  contextName: TELESCOPE_CONTEXT_NAME,
133
320
  allowGlobalContext: true,
134
321
  };
@@ -138,11 +325,52 @@ export class MikroOrmStorageProvider {
138
325
  return;
139
326
  this.orm = await MikroORM.init(this.buildOrmOptions());
140
327
  if (this.ensureSchema) {
141
- await this.orm.schema.ensureDatabase();
328
+ await this.reconcileSchema(this.orm);
329
+ }
330
+ }
331
+ /**
332
+ * Fingerprint-gated schema reconciliation. Replaces a bare
333
+ * `ensureDatabase(); schema.update()` so steady-state boots skip the
334
+ * whole-database introspection (see the gate notes above the helpers).
335
+ *
336
+ * FRESH-DB ORDERING: `ensureDatabase()` runs FIRST, before the marker table is
337
+ * touched. The provider owns a DEDICATED connection, so on a brand-new DB the
338
+ * database itself may not exist yet — a `create table telescope_schema_meta`
339
+ * issued before `ensureDatabase()` would hit "unknown database" on MySQL/PG.
340
+ * `ensureDatabase()` creates it when missing and is a single cheap existence
341
+ * check when it already exists (the common case: the host app is already
342
+ * connected to that database), so paying for it every boot is negligible next
343
+ * to the multi-second `schema.update` introspection the gate eliminates.
344
+ */
345
+ async reconcileSchema(orm) {
346
+ // (0) Create the database if the owned connection points at one that does
347
+ // not exist yet. MUST precede any statement on the connection.
348
+ await orm.schema.ensureDatabase();
349
+ const ownedTableNames = collectOwnedTableNames(orm);
350
+ // (1) Idempotent, introspection-free marker table (empty-DB safe).
351
+ await orm.em.getConnection().execute(CREATE_SCHEMA_META_TABLE_SQL);
352
+ // (2) One PK read + (3) in-memory expected fingerprint.
353
+ const stored = await readStoredFingerprint(orm);
354
+ const expected = computeExpectedFingerprint(orm, ownedTableNames);
355
+ // (4) Steady state: identical fingerprint ⇒ skip the whole-DB schema.update.
356
+ if (stored === expected)
357
+ return;
358
+ // (5) Absent/mismatch ⇒ heal once, under a best-effort advisory lock so
359
+ // concurrent pods don't all introspect.
360
+ const lock = await acquireSchemaLock(orm);
361
+ try {
362
+ // Another pod may have healed between our SELECT and the lock; re-check.
363
+ const reStored = await readStoredFingerprint(orm);
364
+ if (reStored === expected)
365
+ return;
142
366
  // `{ safe: true }` disables BOTH table and column dropping, so the update
143
- // is additive-only: it creates the table and adds missing columns/indexes
144
- // but never drops anything that already exists.
145
- await this.orm.schema.update({ safe: true });
367
+ // is additive-only: it creates tables and adds missing columns/indexes but
368
+ // never drops anything that already exists.
369
+ await orm.schema.update({ safe: true });
370
+ await writeStoredFingerprint(orm, expected);
371
+ }
372
+ finally {
373
+ await lock.release();
146
374
  }
147
375
  }
148
376
  async close() {
@@ -1 +1 @@
1
- {"version":3,"file":"mikro-orm-storage.provider.js","sourceRoot":"","sources":["../src/mikro-orm-storage.provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mikro-orm-storage.provider.js","sourceRoot":"","sources":["../src/mikro-orm-storage.provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Tables this package creates and manages at boot (autoSchema). Feed to your
3
+ * ORM's migration differ skip/exclude list so it never tries to drop them.
4
+ *
5
+ * DERIVED from the three entities' own `tableName` — never a hardcoded
6
+ * parallel literal list — so a future rename flows through automatically.
7
+ * Includes `telescope_schema_meta` (the boot fingerprint marker): a migration
8
+ * differ that doesn't know about it would try to drop it too.
9
+ *
10
+ * ```ts
11
+ * await MikroORM.init({
12
+ * // ...your entities/driver config
13
+ * schemaGenerator: { skipTables: telescopeManagedTables() },
14
+ * });
15
+ * ```
16
+ */
17
+ export declare function telescopeManagedTables(): string[];
18
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAaA;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,EAAE,CAEjD"}
package/dist/schema.js ADDED
@@ -0,0 +1,32 @@
1
+ // packages/mikro-orm/src/schema.ts
2
+ //
3
+ // The tables the `MikroOrmStorageProvider` boot-manages: `telescope_entries`,
4
+ // `telescope_rollups`, and `telescope_schema_meta` (see
5
+ // mikro-orm-storage.provider.ts for the fingerprint-gated `schema.update`
6
+ // that reconciles them). A host that runs its OWN MikroORM CLI migrations
7
+ // against a shared database needs to keep its migration differ from ever
8
+ // trying to drop these — this module gives it that denylist without hand-
9
+ // maintaining a parallel string list that can drift from the entities.
10
+ import { TelescopeEntry } from './telescope-entry.entity.js';
11
+ import { TelescopeRollup } from './telescope-rollup.entity.js';
12
+ import { TelescopeSchemaMeta } from './telescope-schema-meta.entity.js';
13
+ /**
14
+ * Tables this package creates and manages at boot (autoSchema). Feed to your
15
+ * ORM's migration differ skip/exclude list so it never tries to drop them.
16
+ *
17
+ * DERIVED from the three entities' own `tableName` — never a hardcoded
18
+ * parallel literal list — so a future rename flows through automatically.
19
+ * Includes `telescope_schema_meta` (the boot fingerprint marker): a migration
20
+ * differ that doesn't know about it would try to drop it too.
21
+ *
22
+ * ```ts
23
+ * await MikroORM.init({
24
+ * // ...your entities/driver config
25
+ * schemaGenerator: { skipTables: telescopeManagedTables() },
26
+ * });
27
+ * ```
28
+ */
29
+ export function telescopeManagedTables() {
30
+ return [TelescopeEntry.tableName, TelescopeRollup.tableName, TelescopeSchemaMeta.tableName];
31
+ }
32
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,EAAE;AACF,8EAA8E;AAC9E,wDAAwD;AACxD,0EAA0E;AAC1E,0EAA0E;AAC1E,yEAAyE;AACzE,0EAA0E;AAC1E,uEAAuE;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAExE;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,eAAe,CAAC,SAAS,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAC;AAC9F,CAAC"}
@@ -11,11 +11,13 @@ export interface TelescopeLoggerOptions {
11
11
  silent?: boolean;
12
12
  }
13
13
  /** A MikroORM DefaultLogger subclass that tees every executed query into
14
- * `record`, while preserving MikroORM's own logging behavior via super. */
14
+ * `record`, while preserving MikroORM's own logging behavior via super.
15
+ * When `record` is omitted, each `logQuery` lazily resolves the boot-time
16
+ * `telescopeRecord` global sink instead — see {@link telescopeMikroOrmLogger}. */
15
17
  export declare class TelescopeMikroOrmLogger extends DefaultLogger {
16
18
  private readonly _record;
17
19
  private readonly slowMs;
18
- constructor(options: LoggerOptions, _record: (input: RecordInput) => void, slowMs: number);
20
+ constructor(options: LoggerOptions, _record: ((input: RecordInput) => void) | undefined, slowMs: number);
19
21
  logQuery(context: {
20
22
  query: string;
21
23
  } & LogContext): void;
@@ -30,6 +32,17 @@ export declare class TelescopeMikroOrmLogger extends DefaultLogger {
30
32
  * loggerFactory: telescopeMikroOrmLogger(record, { slowMs: 100, silent: true }),
31
33
  * });
32
34
  * ```
35
+ *
36
+ * Zero-config usage — omit `record` entirely and the logger resolves the
37
+ * boot-time global sink (`telescopeRecord`) at call time, so it works even
38
+ * when `MikroORM.init()` runs before `TelescopeModule` has wired anything
39
+ * (entries are simply dropped until it does):
40
+ * ```ts
41
+ * MikroORM.init({
42
+ * debug: ['query'],
43
+ * loggerFactory: telescopeMikroOrmLogger(),
44
+ * });
45
+ * ```
33
46
  */
34
- export declare function telescopeMikroOrmLogger(record: (input: RecordInput) => void, options?: TelescopeLoggerOptions): (loggerOptions: LoggerOptions) => TelescopeMikroOrmLogger;
47
+ export declare function telescopeMikroOrmLogger(record?: (input: RecordInput) => void, options?: TelescopeLoggerOptions): (loggerOptions: LoggerOptions) => TelescopeMikroOrmLogger;
35
48
  //# sourceMappingURL=telescope-mikro-orm.logger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"telescope-mikro-orm.logger.d.ts","sourceRoot":"","sources":["../src/telescope-mikro-orm.logger.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,KAAK,WAAW,EAAmB,MAAM,4BAA4B,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAE,KAAK,UAAU,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErF,MAAM,WAAW,sBAAsB;IACrC,mEAAmE;IACnE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;4EAC4E;AAC5E,qBAAa,uBAAwB,SAAQ,aAAa;IAGtD,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAFvB,OAAO,EAAE,aAAa,EACL,OAAO,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,EACrC,MAAM,EAAE,MAAM;IAMxB,QAAQ,CAAC,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,UAAU,GAAG,IAAI;CAmBjE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,EACpC,OAAO,GAAE,sBAA2B,GACnC,CAAC,aAAa,EAAE,aAAa,KAAK,uBAAuB,CAY3D"}
1
+ {"version":3,"file":"telescope-mikro-orm.logger.d.ts","sourceRoot":"","sources":["../src/telescope-mikro-orm.logger.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,WAAW,EAGjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,KAAK,UAAU,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErF,MAAM,WAAW,sBAAsB;IACrC,mEAAmE;IACnE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;mFAGmF;AACnF,qBAAa,uBAAwB,SAAQ,aAAa;IAGtD,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAFvB,OAAO,EAAE,aAAa,EACL,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC,GAAG,SAAS,EACnD,MAAM,EAAE,MAAM;IAMxB,QAAQ,CAAC,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,UAAU,GAAG,IAAI;CAwBjE;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,EACrC,OAAO,GAAE,sBAA2B,GACnC,CAAC,aAAa,EAAE,aAAa,KAAK,uBAAuB,CAY3D"}
@@ -1,8 +1,10 @@
1
1
  // packages/mikro-orm/src/telescope-mikro-orm.logger.ts
2
- import { EntryType, queryFamilyHash } from '@dudousxd/nestjs-telescope';
2
+ import { EntryType, queryFamilyHash, telescopeRecord, } from '@dudousxd/nestjs-telescope';
3
3
  import { DefaultLogger } from '@mikro-orm/core';
4
4
  /** A MikroORM DefaultLogger subclass that tees every executed query into
5
- * `record`, while preserving MikroORM's own logging behavior via super. */
5
+ * `record`, while preserving MikroORM's own logging behavior via super.
6
+ * When `record` is omitted, each `logQuery` lazily resolves the boot-time
7
+ * `telescopeRecord` global sink instead — see {@link telescopeMikroOrmLogger}. */
6
8
  export class TelescopeMikroOrmLogger extends DefaultLogger {
7
9
  _record;
8
10
  slowMs;
@@ -17,7 +19,12 @@ export class TelescopeMikroOrmLogger extends DefaultLogger {
17
19
  if (sql) {
18
20
  const took = typeof context.took === 'number' ? context.took : null;
19
21
  const tags = took !== null && took >= this.slowMs ? ['slow'] : [];
20
- this._record({
22
+ // Resolved AT CALL TIME (not captured at construction) so that when no
23
+ // explicit `record` was supplied, binding order doesn't matter: MikroORM
24
+ // can construct this logger (via `MikroORM.init()`) before Nest DI has
25
+ // wired `TelescopeService`, and `telescopeRecord` is a no-op until then.
26
+ const record = this._record ?? telescopeRecord;
27
+ record({
21
28
  type: EntryType.Query,
22
29
  content: {
23
30
  sql,
@@ -42,6 +49,17 @@ export class TelescopeMikroOrmLogger extends DefaultLogger {
42
49
  * loggerFactory: telescopeMikroOrmLogger(record, { slowMs: 100, silent: true }),
43
50
  * });
44
51
  * ```
52
+ *
53
+ * Zero-config usage — omit `record` entirely and the logger resolves the
54
+ * boot-time global sink (`telescopeRecord`) at call time, so it works even
55
+ * when `MikroORM.init()` runs before `TelescopeModule` has wired anything
56
+ * (entries are simply dropped until it does):
57
+ * ```ts
58
+ * MikroORM.init({
59
+ * debug: ['query'],
60
+ * loggerFactory: telescopeMikroOrmLogger(),
61
+ * });
62
+ * ```
45
63
  */
46
64
  export function telescopeMikroOrmLogger(record, options = {}) {
47
65
  const slowMs = options.slowMs ?? 100;
@@ -1 +1 @@
1
- {"version":3,"file":"telescope-mikro-orm.logger.js","sourceRoot":"","sources":["../src/telescope-mikro-orm.logger.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,OAAO,EAAE,SAAS,EAAoB,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAuC,MAAM,iBAAiB,CAAC;AAarF;4EAC4E;AAC5E,MAAM,OAAO,uBAAwB,SAAQ,aAAa;IAGrC;IACA;IAHnB,YACE,OAAsB,EACL,OAAqC,EACrC,MAAc;QAE/B,KAAK,CAAC,OAAO,CAAC,CAAC;QAHE,YAAO,GAAP,OAAO,CAA8B;QACrC,WAAM,GAAN,MAAM,CAAQ;IAGjC,CAAC;IAED,+DAA+D;IACtD,QAAQ,CAAC,OAAuC;QACvD,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC;QAC1B,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,IAAI,GAAG,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YACpE,MAAM,IAAI,GAAa,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5E,IAAI,CAAC,OAAO,CAAC;gBACX,IAAI,EAAE,SAAS,CAAC,KAAK;gBACrB,OAAO,EAAE;oBACP,GAAG;oBACH,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;oBAClE,IAAI;iBACL;gBACD,UAAU,EAAE,eAAe,CAAC,GAAG,CAAC;gBAChC,UAAU,EAAE,IAAI;gBAChB,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACrC,CAAC,CAAC;QACL,CAAC;QACD,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC1B,CAAC;CACF;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,uBAAuB,CACrC,MAAoC,EACpC,UAAkC,EAAE;IAEpC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,GAAG,CAAC;IACrC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC;IACvC,8EAA8E;IAC9E,4EAA4E;IAC5E,mEAAmE;IACnE,OAAO,CAAC,aAA4B,EAAE,EAAE,CACtC,IAAI,uBAAuB,CACzB,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,aAAa,EACtE,MAAM,EACN,MAAM,CACP,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"telescope-mikro-orm.logger.js","sourceRoot":"","sources":["../src/telescope-mikro-orm.logger.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,OAAO,EACL,SAAS,EAET,eAAe,EACf,eAAe,GAChB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,aAAa,EAAuC,MAAM,iBAAiB,CAAC;AAarF;;;mFAGmF;AACnF,MAAM,OAAO,uBAAwB,SAAQ,aAAa;IAGrC;IACA;IAHnB,YACE,OAAsB,EACL,OAAmD,EACnD,MAAc;QAE/B,KAAK,CAAC,OAAO,CAAC,CAAC;QAHE,YAAO,GAAP,OAAO,CAA4C;QACnD,WAAM,GAAN,MAAM,CAAQ;IAGjC,CAAC;IAED,+DAA+D;IACtD,QAAQ,CAAC,OAAuC;QACvD,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC;QAC1B,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,IAAI,GAAG,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YACpE,MAAM,IAAI,GAAa,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5E,uEAAuE;YACvE,yEAAyE;YACzE,uEAAuE;YACvE,yEAAyE;YACzE,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,IAAI,eAAe,CAAC;YAC/C,MAAM,CAAC;gBACL,IAAI,EAAE,SAAS,CAAC,KAAK;gBACrB,OAAO,EAAE;oBACP,GAAG;oBACH,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;oBAClE,IAAI;iBACL;gBACD,UAAU,EAAE,eAAe,CAAC,GAAG,CAAC;gBAChC,UAAU,EAAE,IAAI;gBAChB,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACrC,CAAC,CAAC;QACL,CAAC;QACD,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC1B,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,uBAAuB,CACrC,MAAqC,EACrC,UAAkC,EAAE;IAEpC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,GAAG,CAAC;IACrC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC;IACvC,8EAA8E;IAC9E,4EAA4E;IAC5E,mEAAmE;IACnE,OAAO,CAAC,aAA4B,EAAE,EAAE,CACtC,IAAI,uBAAuB,CACzB,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,aAAa,EACtE,MAAM,EACN,MAAM,CACP,CAAC;AACN,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { EntitySchema } from '@mikro-orm/core';
2
+ export interface TelescopeSchemaMetaRow {
3
+ /** Fixed key for the single marker row; always `'mikro-orm'`. */
4
+ id: string;
5
+ /** sha256 hex of the reconciled schema fingerprint. */
6
+ fingerprint: string;
7
+ /** Epoch-ms the fingerprint was last applied. */
8
+ appliedAt: number;
9
+ }
10
+ export declare const TelescopeSchemaMeta: EntitySchema<TelescopeSchemaMetaRow, never, import("@mikro-orm/core").EntityCtor<TelescopeSchemaMetaRow>>;
11
+ //# sourceMappingURL=telescope-schema-meta.entity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telescope-schema-meta.entity.d.ts","sourceRoot":"","sources":["../src/telescope-schema-meta.entity.ts"],"names":[],"mappings":"AAeA,OAAO,EAAc,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE3D,MAAM,WAAW,sBAAsB;IACrC,iEAAiE;IACjE,EAAE,EAAE,MAAM,CAAC;IACX,uDAAuD;IACvD,WAAW,EAAE,MAAM,CAAC;IACpB,iDAAiD;IACjD,SAAS,EAAE,MAAM,CAAC;CACnB;AAUD,eAAO,MAAM,mBAAmB,2GAQ9B,CAAC"}
@@ -0,0 +1,33 @@
1
+ // packages/mikro-orm/src/telescope-schema-meta.entity.ts
2
+ //
3
+ // Marker table backing the schema fingerprint gate. A SINGLE row keyed
4
+ // `id = 'mikro-orm'` records the fingerprint of the schema the provider last
5
+ // reconciled, plus the epoch-ms it was applied. On boot the provider compares
6
+ // the stored fingerprint against the one freshly computed from entity metadata;
7
+ // when they match it SKIPS the expensive whole-database `schema.update`
8
+ // introspection entirely (see mikro-orm-storage.provider.ts).
9
+ //
10
+ // Defined via EntitySchema (NOT decorators), like the other telescope entities,
11
+ // so the host needs no emitDecoratorMetadata. It is registered in the provider's
12
+ // OWNED single-purpose ORM so `em.upsert` can write the marker driver-agnostically.
13
+ // It is deliberately EXCLUDED from the fingerprint payload itself (the gate only
14
+ // fingerprints `telescope_entries` + `telescope_rollups`), so the marker's own
15
+ // shape never invalidates the gate.
16
+ import { BigIntType, EntitySchema } from '@mikro-orm/core';
17
+ // `applied_at` is an epoch-ms timestamp, so a true SQL BIGINT is the right width
18
+ // on MySQL. Pinned to `number` mode (instead of the default `bigint`) so the
19
+ // JS-side value is a plain number and the row interface stays cast-free —
20
+ // matching the rollup entity's bigint columns.
21
+ function bigintNumber() {
22
+ return new BigIntType('number');
23
+ }
24
+ export const TelescopeSchemaMeta = new EntitySchema({
25
+ name: 'TelescopeSchemaMeta',
26
+ tableName: 'telescope_schema_meta',
27
+ properties: {
28
+ id: { type: 'string', primary: true, length: 32 },
29
+ fingerprint: { type: 'string', length: 64 },
30
+ appliedAt: { type: bigintNumber(), fieldName: 'applied_at' },
31
+ },
32
+ });
33
+ //# sourceMappingURL=telescope-schema-meta.entity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telescope-schema-meta.entity.js","sourceRoot":"","sources":["../src/telescope-schema-meta.entity.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,EAAE;AACF,uEAAuE;AACvE,6EAA6E;AAC7E,8EAA8E;AAC9E,gFAAgF;AAChF,wEAAwE;AACxE,8DAA8D;AAC9D,EAAE;AACF,gFAAgF;AAChF,iFAAiF;AACjF,oFAAoF;AACpF,iFAAiF;AACjF,+EAA+E;AAC/E,oCAAoC;AACpC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAW3D,iFAAiF;AACjF,6EAA6E;AAC7E,0EAA0E;AAC1E,+CAA+C;AAC/C,SAAS,YAAY;IACnB,OAAO,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,YAAY,CAAyB;IAC1E,IAAI,EAAE,qBAAqB;IAC3B,SAAS,EAAE,uBAAuB;IAClC,UAAU,EAAE;QACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE;QACjD,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE;QAC3C,SAAS,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE;KAC7D;CACF,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dudousxd/nestjs-telescope-mikro-orm",
3
- "version": "1.12.0",
3
+ "version": "1.14.0",
4
4
  "description": "MikroORM query watcher for @dudousxd/nestjs-telescope.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -32,7 +32,7 @@
32
32
  "@nestjs/common": ">=10.0.0",
33
33
  "@nestjs/core": ">=10.0.0",
34
34
  "reflect-metadata": ">=0.1.13",
35
- "@dudousxd/nestjs-telescope": "^1.12.0"
35
+ "@dudousxd/nestjs-telescope": "^1.16.0"
36
36
  },
37
37
  "devDependencies": {
38
38
  "@mikro-orm/core": "^7.0.0",
@@ -50,7 +50,7 @@
50
50
  "supertest": "^7.0.0",
51
51
  "typescript": "^5.4.0",
52
52
  "vitest": "^3.0.0",
53
- "@dudousxd/nestjs-telescope": "1.12.0"
53
+ "@dudousxd/nestjs-telescope": "1.16.0"
54
54
  },
55
55
  "engines": {
56
56
  "node": ">=20"