@descryy/runtime-database-observation 0.5.2 → 0.5.4

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 (55) hide show
  1. package/dist/index.d.ts +8 -6
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +5 -4
  4. package/dist/index.js.map +1 -1
  5. package/dist/mysql-row-collector.d.ts +33 -19
  6. package/dist/mysql-row-collector.d.ts.map +1 -1
  7. package/dist/mysql-row-collector.js +480 -26
  8. package/dist/mysql-row-collector.js.map +1 -1
  9. package/dist/postgres-log-parser.d.ts +15 -29
  10. package/dist/postgres-log-parser.d.ts.map +1 -1
  11. package/dist/postgres-log-parser.js +103 -32
  12. package/dist/postgres-log-parser.js.map +1 -1
  13. package/dist/postgres-log-source.d.ts +4 -0
  14. package/dist/postgres-log-source.d.ts.map +1 -1
  15. package/dist/postgres-log-source.js +196 -36
  16. package/dist/postgres-log-source.js.map +1 -1
  17. package/dist/postgres-query-collector.d.ts.map +1 -1
  18. package/dist/postgres-query-collector.js +43 -13
  19. package/dist/postgres-query-collector.js.map +1 -1
  20. package/dist/postgres-row-collector.d.ts +7 -0
  21. package/dist/postgres-row-collector.d.ts.map +1 -1
  22. package/dist/postgres-row-collector.js +112 -17
  23. package/dist/postgres-row-collector.js.map +1 -1
  24. package/dist/prisma-instrumentation.d.ts +20 -0
  25. package/dist/prisma-instrumentation.d.ts.map +1 -0
  26. package/dist/prisma-instrumentation.js +99 -0
  27. package/dist/prisma-instrumentation.js.map +1 -0
  28. package/dist/query-collector.d.ts +2 -0
  29. package/dist/query-collector.d.ts.map +1 -1
  30. package/dist/query-collector.js +38 -13
  31. package/dist/query-collector.js.map +1 -1
  32. package/dist/query-line-parser.d.ts.map +1 -1
  33. package/dist/query-line-parser.js +2 -1
  34. package/dist/query-line-parser.js.map +1 -1
  35. package/dist/query-marker.d.ts +10 -1
  36. package/dist/query-marker.d.ts.map +1 -1
  37. package/dist/query-marker.js +2 -0
  38. package/dist/query-marker.js.map +1 -1
  39. package/dist/row-capture-policy.d.ts +31 -0
  40. package/dist/row-capture-policy.d.ts.map +1 -0
  41. package/dist/row-capture-policy.js +95 -0
  42. package/dist/row-capture-policy.js.map +1 -0
  43. package/dist/smoke.d.ts.map +1 -1
  44. package/dist/smoke.js +2 -0
  45. package/dist/smoke.js.map +1 -1
  46. package/dist/sqlite-instrumentation.js +9 -2
  47. package/dist/sqlite-instrumentation.js.map +1 -1
  48. package/dist/sqlite-row-snapshot.d.ts +4 -0
  49. package/dist/sqlite-row-snapshot.d.ts.map +1 -1
  50. package/dist/sqlite-row-snapshot.js +153 -25
  51. package/dist/sqlite-row-snapshot.js.map +1 -1
  52. package/dist/table-extraction.d.ts.map +1 -1
  53. package/dist/table-extraction.js +124 -5
  54. package/dist/table-extraction.js.map +1 -1
  55. package/package.json +9 -8
@@ -1 +1 @@
1
- {"version":3,"file":"table-extraction.d.ts","sourceRoot":"","sources":["../src/table-extraction.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AA8BH;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAmB7D"}
1
+ {"version":3,"file":"table-extraction.d.ts","sourceRoot":"","sources":["../src/table-extraction.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAsIH;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAqB7D"}
@@ -21,6 +21,9 @@ const INSERT_INTO = new RegExp(`^\\s*INSERT\\s+INTO\\s+(${QUALIFIED})`, "i");
21
21
  const UPDATE = new RegExp(`^\\s*UPDATE\\s+(${QUALIFIED})`, "i");
22
22
  const DELETE_FROM = new RegExp(`^\\s*DELETE\\s+FROM\\s+(${QUALIFIED})`, "i");
23
23
  const SELECT_FROM = new RegExp(`\\bFROM\\s+(${QUALIFIED})`, "i");
24
+ const FROM_KEYWORD = /\bFROM\b/i;
25
+ const DOLLAR_TAG = /^\$[A-Za-z_]*\$/;
26
+ const IDENTIFIER_CHARACTER = /[A-Za-z0-9_\])]/;
24
27
  /** Anywhere in the statement — a JOIN or a CTE makes "the" target table an unresolvable question, not a hard one. */
25
28
  const AMBIGUOUS = /\bJOIN\b|\bWITH\b\s+[\w"`[]/i;
26
29
  function unquote(identifier) {
@@ -37,13 +40,125 @@ function hasCommaJoinAfter(sql, matchEnd) {
37
40
  const nextKeyword = /^\s*(,|WHERE|GROUP|ORDER|LIMIT|JOIN|;|$)/i.exec(rest);
38
41
  return nextKeyword !== null && nextKeyword[1] === ",";
39
42
  }
43
+ function closingIndex(sql, from, closer, doubledEscapes) {
44
+ for (let i = from; i < sql.length; i += 1) {
45
+ if (sql[i] !== closer)
46
+ continue;
47
+ if (doubledEscapes && sql[i + 1] === closer) {
48
+ i += 1;
49
+ continue;
50
+ }
51
+ return i;
52
+ }
53
+ return -1;
54
+ }
55
+ function previousSignificant(sql, index) {
56
+ for (let i = index - 1; i >= 0; i -= 1) {
57
+ if (!/\s/.test(sql[i]))
58
+ return sql[i];
59
+ }
60
+ return "";
61
+ }
62
+ function scanStatement(sql) {
63
+ let top = "";
64
+ let nested = "";
65
+ let nestedFromAt = null;
66
+ let depth = 0;
67
+ const append = (text) => {
68
+ if (depth === 0)
69
+ top += text;
70
+ else
71
+ nested += text;
72
+ };
73
+ for (let i = 0; i < sql.length; i += 1) {
74
+ const ch = sql[i];
75
+ if (ch === "-" && sql[i + 1] === "-") {
76
+ const end = sql.indexOf("\n", i);
77
+ i = end === -1 ? sql.length : end;
78
+ append(" ");
79
+ continue;
80
+ }
81
+ if (ch === "/" && sql[i + 1] === "*") {
82
+ const end = sql.indexOf("*/", i + 2);
83
+ if (end === -1)
84
+ return null;
85
+ i = end + 1;
86
+ append(" ");
87
+ continue;
88
+ }
89
+ if (ch === "'") {
90
+ const end = closingIndex(sql, i + 1, "'", true);
91
+ if (end === -1 || sql.slice(i + 1, end).includes("\\"))
92
+ return null;
93
+ i = end;
94
+ append("''");
95
+ continue;
96
+ }
97
+ if (ch === '"' || ch === "`") {
98
+ const end = closingIndex(sql, i + 1, ch, true);
99
+ if (end === -1)
100
+ return null;
101
+ append(sql.slice(i, end + 1));
102
+ i = end;
103
+ continue;
104
+ }
105
+ if (ch === "[" && !IDENTIFIER_CHARACTER.test(previousSignificant(sql, i))) {
106
+ const end = sql.indexOf("]", i + 1);
107
+ if (end === -1)
108
+ return null;
109
+ append(sql.slice(i, end + 1));
110
+ i = end;
111
+ continue;
112
+ }
113
+ if (ch === "$") {
114
+ const tag = DOLLAR_TAG.exec(sql.slice(i));
115
+ if (tag !== null) {
116
+ const end = sql.indexOf(tag[0], i + tag[0].length);
117
+ if (end === -1)
118
+ return null;
119
+ i = end + tag[0].length - 1;
120
+ append("''");
121
+ continue;
122
+ }
123
+ }
124
+ if (ch === "(") {
125
+ depth += 1;
126
+ if (depth === 1)
127
+ top += "(";
128
+ else
129
+ nested += ch;
130
+ continue;
131
+ }
132
+ if (ch === ")") {
133
+ if (depth === 0)
134
+ return null;
135
+ depth -= 1;
136
+ if (depth === 0) {
137
+ if (nestedFromAt === null && FROM_KEYWORD.test(nested))
138
+ nestedFromAt = top.length;
139
+ nested = "";
140
+ top += ")";
141
+ }
142
+ else
143
+ nested += ch;
144
+ continue;
145
+ }
146
+ append(ch);
147
+ }
148
+ if (depth !== 0)
149
+ return null;
150
+ return { top, nestedFromAt };
151
+ }
40
152
  /**
41
153
  * `null` for anything not recognised as exactly one of INSERT/UPDATE/
42
154
  * DELETE/SELECT with a single, unambiguous target table. Never a partial
43
155
  * or best-effort name.
44
156
  */
45
157
  export function extractTargetTable(sql) {
46
- const trimmed = sql.trim();
158
+ const shape = scanStatement(sql);
159
+ if (shape === null)
160
+ return null;
161
+ const trimmed = shape.top.trim();
47
162
  if (AMBIGUOUS.test(trimmed))
48
163
  return null;
49
164
  const insert = INSERT_INTO.exec(trimmed);
@@ -56,9 +171,13 @@ export function extractTargetTable(sql) {
56
171
  if (del !== null)
57
172
  return unqualify(del[1]);
58
173
  const select = SELECT_FROM.exec(trimmed);
59
- if (select !== null && !hasCommaJoinAfter(trimmed, select.index + select[0].length)) {
60
- return unqualify(select[1]);
61
- }
62
- return null;
174
+ if (select === null)
175
+ return null;
176
+ const leadingNestedFrom = shape.nestedFromAt !== null && shape.nestedFromAt - (shape.top.length - shape.top.trimStart().length) <= select.index;
177
+ if (leadingNestedFrom)
178
+ return null;
179
+ if (hasCommaJoinAfter(trimmed, select.index + select[0].length))
180
+ return null;
181
+ return unqualify(select[1]);
63
182
  }
64
183
  //# sourceMappingURL=table-extraction.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"table-extraction.js","sourceRoot":"","sources":["../src/table-extraction.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAA,wBAAwB,GAAG,SAAS,GAAG,MAAM,CAAC,GAAG,CAAA,0BAA0B,CAAC;AACzG,MAAM,SAAS,GAAG,GAAG,UAAU,SAAS,UAAU,IAAI,CAAC;AAEvD,MAAM,WAAW,GAAG,IAAI,MAAM,CAAC,2BAA2B,SAAS,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7E,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,mBAAmB,SAAS,GAAG,EAAE,GAAG,CAAC,CAAC;AAChE,MAAM,WAAW,GAAG,IAAI,MAAM,CAAC,2BAA2B,SAAS,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7E,MAAM,WAAW,GAAG,IAAI,MAAM,CAAC,eAAe,SAAS,GAAG,EAAE,GAAG,CAAC,CAAC;AAEjE,qHAAqH;AACrH,MAAM,SAAS,GAAG,8BAA8B,CAAC;AAEjD,SAAS,OAAO,CAAC,UAAkB;IACjC,OAAO,UAAU,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,qJAAqJ;AACrJ,SAAS,SAAS,CAAC,GAAW;IAC5B,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC1C,OAAO,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;AAC7B,CAAC;AAED,2JAA2J;AAC3J,SAAS,iBAAiB,CAAC,GAAW,EAAE,QAAgB;IACtD,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACjC,MAAM,WAAW,GAAG,2CAA2C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3E,OAAO,WAAW,KAAK,IAAI,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;AACxD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IAEzC,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACzC,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC;IAElD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpC,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC;IAElD,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtC,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,CAAC;IAE5C,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACzC,IAAI,MAAM,KAAK,IAAI,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;QACpF,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"table-extraction.js","sourceRoot":"","sources":["../src/table-extraction.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@descryy/runtime-database-observation",
3
- "version": "0.5.2",
3
+ "version": "0.5.4",
4
4
  "type": "module",
5
- "description": "Database observation (plan §18, checklist §14): real DATABASE_QUERY capture via driver instrumentation, never parsed application logs, plus row-level before/after state where the driver honestly supports it (Postgres logical decoding, SQLite before/after snapshot; MySQL refuses by name pending an installed driver). Driver #1 is node:sqlite.",
5
+ "description": "Database observation (plan §18, checklist §14): real DATABASE_QUERY capture via driver instrumentation, never parsed application logs, plus row-level before/after state where the driver honestly supports it (Postgres logical decoding; SQLite and MySQL/MariaDB before/after snapshot keyed by primary key). Driver #1 is node:sqlite.",
6
6
  "license": "UNLICENSED",
7
7
  "repository": {
8
8
  "type": "git",
@@ -27,16 +27,17 @@
27
27
  },
28
28
  "descrySmoke": "dist/smoke.js",
29
29
  "dependencies": {
30
- "@descryy/runtime-contracts": "0.4.0",
31
- "@descryy/runtime-backend-observation": "0.3.7",
32
- "@descryy/runtime-graph-correlator": "0.5.1"
30
+ "@descryy/runtime-contracts": "0.4.1",
31
+ "@descryy/runtime-backend-observation": "0.3.9",
32
+ "@descryy/runtime-graph-correlator": "0.5.2"
33
33
  },
34
34
  "devDependencies": {
35
- "@descryy/ir": "0.11.0",
36
- "@descryy/runtime-controller": "0.4.0",
37
- "@descryy/runtime-orchestrator": "0.5.0"
35
+ "@descryy/ir": "0.12.0",
36
+ "@descryy/runtime-controller": "0.4.2",
37
+ "@descryy/runtime-orchestrator": "0.5.2"
38
38
  },
39
39
  "optionalDependencies": {
40
+ "mysql2": "^3.15.0",
40
41
  "pg": "^8.13.0"
41
42
  },
42
43
  "scripts": {