@reprova/sdk 0.2.0 → 0.4.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/README.md +206 -11
- package/dist/context.d.ts +3 -0
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js.map +1 -1
- package/dist/drizzle.d.ts +11 -0
- package/dist/drizzle.d.ts.map +1 -0
- package/dist/drizzle.js +72 -0
- package/dist/drizzle.js.map +1 -0
- package/dist/index.d.ts +10 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/knex.d.ts +5 -0
- package/dist/knex.d.ts.map +1 -0
- package/dist/knex.js +83 -0
- package/dist/knex.js.map +1 -0
- package/dist/kysely.d.ts +22 -0
- package/dist/kysely.d.ts.map +1 -0
- package/dist/kysely.js +172 -0
- package/dist/kysely.js.map +1 -0
- package/dist/proto.gen.d.ts +65 -1
- package/dist/proto.gen.d.ts.map +1 -1
- package/dist/registry.d.ts +22 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +70 -0
- package/dist/registry.js.map +1 -0
- package/dist/sdk.d.ts +24 -4
- package/dist/sdk.d.ts.map +1 -1
- package/dist/sdk.js +424 -15
- package/dist/sdk.js.map +1 -1
- package/dist/sequelize.d.ts +5 -0
- package/dist/sequelize.d.ts.map +1 -0
- package/dist/sequelize.js +105 -0
- package/dist/sequelize.js.map +1 -0
- package/dist/typeorm.d.ts +2 -0
- package/dist/typeorm.d.ts.map +1 -0
- package/dist/typeorm.js +65 -0
- package/dist/typeorm.js.map +1 -0
- package/package.json +13 -1
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { contextStorage } from './context.js';
|
|
2
|
+
function readAttr(instance, attr) {
|
|
3
|
+
if (instance && typeof instance.get === 'function') {
|
|
4
|
+
try {
|
|
5
|
+
const v = instance.get(attr);
|
|
6
|
+
if (v !== undefined)
|
|
7
|
+
return v;
|
|
8
|
+
}
|
|
9
|
+
catch {
|
|
10
|
+
// fall through to direct property access
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
return instance?.[attr];
|
|
14
|
+
}
|
|
15
|
+
function extractPks(instances, pkAttrs) {
|
|
16
|
+
if (pkAttrs.length === 0)
|
|
17
|
+
return [];
|
|
18
|
+
const seen = new Set();
|
|
19
|
+
const pks = [];
|
|
20
|
+
for (const inst of instances) {
|
|
21
|
+
const vals = pkAttrs.map((a) => readAttr(inst, a));
|
|
22
|
+
if (vals.some((v) => v === undefined || v === null))
|
|
23
|
+
continue;
|
|
24
|
+
const pk = vals.map((v) => String(v)).join(':');
|
|
25
|
+
if (!seen.has(pk)) {
|
|
26
|
+
seen.add(pk);
|
|
27
|
+
pks.push(pk);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return pks;
|
|
31
|
+
}
|
|
32
|
+
function whereShape(options, capture) {
|
|
33
|
+
if (!capture || !options?.where)
|
|
34
|
+
return undefined;
|
|
35
|
+
const cols = Object.keys(options.where).sort(); // symbol Op keys are skipped
|
|
36
|
+
return cols.length ? cols.join(',') : undefined;
|
|
37
|
+
}
|
|
38
|
+
function push(entry) {
|
|
39
|
+
const ctx = contextStorage.getStore();
|
|
40
|
+
if (ctx)
|
|
41
|
+
ctx.footprint.push(entry);
|
|
42
|
+
}
|
|
43
|
+
function installOnModel(model, capture) {
|
|
44
|
+
const pkAttrs = () => model.primaryKeyAttributes ?? ['id'];
|
|
45
|
+
model.addHook('afterFind', (result, options) => {
|
|
46
|
+
try {
|
|
47
|
+
const items = (Array.isArray(result) ? result : result ? [result] : []);
|
|
48
|
+
const pks = extractPks(items, pkAttrs());
|
|
49
|
+
push({
|
|
50
|
+
model: model.tableName,
|
|
51
|
+
op: 'select',
|
|
52
|
+
pks,
|
|
53
|
+
where_shape: whereShape(options, capture),
|
|
54
|
+
count: items.length,
|
|
55
|
+
note: items.length === 0 ? 'returned 0 rows' : undefined,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
catch { /* never break a query */ }
|
|
59
|
+
});
|
|
60
|
+
const recordWrite = (op) => (instance) => {
|
|
61
|
+
try {
|
|
62
|
+
const pks = extractPks([instance], pkAttrs());
|
|
63
|
+
push({ model: model.tableName, op, pks, count: 1 });
|
|
64
|
+
}
|
|
65
|
+
catch { /* ignore */ }
|
|
66
|
+
};
|
|
67
|
+
model.addHook('afterCreate', recordWrite('insert'));
|
|
68
|
+
model.addHook('afterUpdate', recordWrite('update'));
|
|
69
|
+
model.addHook('afterDestroy', recordWrite('delete'));
|
|
70
|
+
model.addHook('afterBulkCreate', (instances) => {
|
|
71
|
+
try {
|
|
72
|
+
const items = (Array.isArray(instances) ? instances : []);
|
|
73
|
+
push({ model: model.tableName, op: 'insert', pks: extractPks(items, pkAttrs()), count: items.length });
|
|
74
|
+
}
|
|
75
|
+
catch { /* ignore */ }
|
|
76
|
+
});
|
|
77
|
+
// Bulk update/destroy operate by WHERE without materializing instances, so
|
|
78
|
+
// we record the touch + where_shape but no PKs.
|
|
79
|
+
const recordBulk = (op) => (options) => {
|
|
80
|
+
try {
|
|
81
|
+
push({ model: model.tableName, op, pks: [], where_shape: whereShape(options, capture), count: 0, note: `bulk ${op}` });
|
|
82
|
+
}
|
|
83
|
+
catch { /* ignore */ }
|
|
84
|
+
};
|
|
85
|
+
model.addHook('afterBulkUpdate', recordBulk('update'));
|
|
86
|
+
model.addHook('afterBulkDestroy', recordBulk('delete'));
|
|
87
|
+
}
|
|
88
|
+
// Installs footprint hooks on every model of a Sequelize instance (and any
|
|
89
|
+
// defined later). Call once after your models are defined.
|
|
90
|
+
export function installSequelizeHooks(sequelize, opts = {}) {
|
|
91
|
+
const capture = opts.captureWhereShape !== false;
|
|
92
|
+
const sq = sequelize;
|
|
93
|
+
try {
|
|
94
|
+
for (const model of Object.values(sq.models ?? {}))
|
|
95
|
+
installOnModel(model, capture);
|
|
96
|
+
sq.addHook('afterDefine', (model) => {
|
|
97
|
+
try {
|
|
98
|
+
installOnModel(model, capture);
|
|
99
|
+
}
|
|
100
|
+
catch { /* ignore */ }
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
catch { /* ignore — never throw from install */ }
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=sequelize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sequelize.js","sourceRoot":"","sources":["../src/sequelize.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typeorm.d.ts","sourceRoot":"","sources":["../src/typeorm.ts"],"names":[],"mappings":"AAiDA,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,OAAO,GAAG,IAAI,CAuBlE"}
|
package/dist/typeorm.js
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { contextStorage } from './context.js';
|
|
2
|
+
function pkOf(entity, metadata) {
|
|
3
|
+
const cols = metadata?.primaryColumns ?? [];
|
|
4
|
+
if (!entity || cols.length === 0)
|
|
5
|
+
return null;
|
|
6
|
+
const vals = cols.map((c) => entity[c.propertyName]);
|
|
7
|
+
if (vals.some((v) => v === undefined || v === null))
|
|
8
|
+
return null;
|
|
9
|
+
return vals.map((v) => String(v)).join(':');
|
|
10
|
+
}
|
|
11
|
+
// Find-or-create the (table, op) entry for this request and fold in the PK.
|
|
12
|
+
function recordPk(table, op, pk) {
|
|
13
|
+
const ctx = contextStorage.getStore();
|
|
14
|
+
if (!ctx || !table)
|
|
15
|
+
return;
|
|
16
|
+
let entry = ctx.footprint.find((f) => f.model === table && f.op === op);
|
|
17
|
+
if (!entry) {
|
|
18
|
+
entry = { model: table, op, pks: [], count: 0 };
|
|
19
|
+
ctx.footprint.push(entry);
|
|
20
|
+
}
|
|
21
|
+
if (pk !== null && !entry.pks.includes(pk))
|
|
22
|
+
entry.pks.push(pk);
|
|
23
|
+
entry.count = entry.pks.length;
|
|
24
|
+
}
|
|
25
|
+
// Installs a footprint subscriber on an initialized TypeORM DataSource. Call
|
|
26
|
+
// AFTER dataSource.initialize() — the subscribers array exists once the source
|
|
27
|
+
// is initialized. Attaches an instance directly, so the host needs no
|
|
28
|
+
// @EventSubscriber()-decorated class.
|
|
29
|
+
export function installTypeOrmSubscriber(dataSource) {
|
|
30
|
+
const subscriber = {
|
|
31
|
+
afterLoad(entity, event) {
|
|
32
|
+
try {
|
|
33
|
+
recordPk(event?.metadata?.tableName, 'select', pkOf(entity, event?.metadata));
|
|
34
|
+
}
|
|
35
|
+
catch { /* never break */ }
|
|
36
|
+
},
|
|
37
|
+
afterInsert(event) {
|
|
38
|
+
try {
|
|
39
|
+
recordPk(event?.metadata?.tableName, 'insert', pkOf(event?.entity, event?.metadata));
|
|
40
|
+
}
|
|
41
|
+
catch { /* ignore */ }
|
|
42
|
+
},
|
|
43
|
+
afterUpdate(event) {
|
|
44
|
+
try {
|
|
45
|
+
recordPk(event?.metadata?.tableName, 'update', pkOf(event?.entity, event?.metadata));
|
|
46
|
+
}
|
|
47
|
+
catch { /* ignore */ }
|
|
48
|
+
},
|
|
49
|
+
afterRemove(event) {
|
|
50
|
+
try {
|
|
51
|
+
recordPk(event?.metadata?.tableName, 'delete', pkOf(event?.databaseEntity ?? event?.entity, event?.metadata));
|
|
52
|
+
}
|
|
53
|
+
catch { /* ignore */ }
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
try {
|
|
57
|
+
const ds = dataSource;
|
|
58
|
+
if (Array.isArray(ds.subscribers))
|
|
59
|
+
ds.subscribers.push(subscriber);
|
|
60
|
+
else
|
|
61
|
+
ds.subscribers = [subscriber];
|
|
62
|
+
}
|
|
63
|
+
catch { /* never throw from install */ }
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=typeorm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typeorm.js","sourceRoot":"","sources":["../src/typeorm.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@reprova/sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "Reprova SDK for Node.js: Express error capture, Prisma data-footprint recording, and outbound HTTP call recording for locally runnable reproductions",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -44,8 +44,20 @@
|
|
|
44
44
|
"lint": "tsc --noEmit"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
|
+
"@types/better-sqlite3": "^7.6.13",
|
|
47
48
|
"@types/express": "^4.17.25",
|
|
48
49
|
"@types/node": "^22.20.0",
|
|
50
|
+
"@types/supertest": "^7.2.0",
|
|
51
|
+
"better-sqlite3": "^12.11.1",
|
|
52
|
+
"drizzle-orm": "^0.45.2",
|
|
53
|
+
"knex": "^3.3.0",
|
|
54
|
+
"kysely": "^0.29.3",
|
|
55
|
+
"objection": "^3.1.5",
|
|
56
|
+
"reflect-metadata": "^0.2.2",
|
|
57
|
+
"sequelize": "^6.37.8",
|
|
58
|
+
"sqlite3": "^6.0.1",
|
|
59
|
+
"supertest": "^7.2.2",
|
|
60
|
+
"typeorm": "^1.0.0",
|
|
49
61
|
"typescript": "^5.9.3",
|
|
50
62
|
"vitest": "^1.6.1"
|
|
51
63
|
},
|