@monoes/monograph 1.6.11 → 1.6.12
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/dist/src/pipeline/phases/orm-helpers.d.ts +11 -0
- package/dist/src/pipeline/phases/orm-helpers.d.ts.map +1 -0
- package/dist/src/pipeline/phases/orm-helpers.js +72 -0
- package/dist/src/pipeline/phases/orm-helpers.js.map +1 -0
- package/dist/src/pipeline/phases/orm-mongoose.d.ts +8 -0
- package/dist/src/pipeline/phases/orm-mongoose.d.ts.map +1 -0
- package/dist/src/pipeline/phases/orm-mongoose.js +51 -0
- package/dist/src/pipeline/phases/orm-mongoose.js.map +1 -0
- package/dist/src/pipeline/phases/orm-prisma.d.ts +8 -0
- package/dist/src/pipeline/phases/orm-prisma.d.ts.map +1 -0
- package/dist/src/pipeline/phases/orm-prisma.js +41 -0
- package/dist/src/pipeline/phases/orm-prisma.js.map +1 -0
- package/dist/src/pipeline/phases/orm-sequelize.d.ts +12 -0
- package/dist/src/pipeline/phases/orm-sequelize.d.ts.map +1 -0
- package/dist/src/pipeline/phases/orm-sequelize.js +97 -0
- package/dist/src/pipeline/phases/orm-sequelize.js.map +1 -0
- package/dist/src/pipeline/phases/orm-sqlalchemy.d.ts +8 -0
- package/dist/src/pipeline/phases/orm-sqlalchemy.d.ts.map +1 -0
- package/dist/src/pipeline/phases/orm-sqlalchemy.js +42 -0
- package/dist/src/pipeline/phases/orm-sqlalchemy.js.map +1 -0
- package/dist/src/pipeline/phases/orm-typeorm.d.ts +10 -0
- package/dist/src/pipeline/phases/orm-typeorm.d.ts.map +1 -0
- package/dist/src/pipeline/phases/orm-typeorm.js +52 -0
- package/dist/src/pipeline/phases/orm-typeorm.js.map +1 -0
- package/dist/src/pipeline/phases/orm.d.ts.map +1 -1
- package/dist/src/pipeline/phases/orm.js +6 -336
- package/dist/src/pipeline/phases/orm.js.map +1 -1
- package/dist/src/pipeline/phases/scope-resolution-edges.d.ts +9 -0
- package/dist/src/pipeline/phases/scope-resolution-edges.d.ts.map +1 -0
- package/dist/src/pipeline/phases/scope-resolution-edges.js +30 -0
- package/dist/src/pipeline/phases/scope-resolution-edges.js.map +1 -0
- package/dist/src/pipeline/phases/scope-resolution-function-index.d.ts +31 -0
- package/dist/src/pipeline/phases/scope-resolution-function-index.d.ts.map +1 -0
- package/dist/src/pipeline/phases/scope-resolution-function-index.js +96 -0
- package/dist/src/pipeline/phases/scope-resolution-function-index.js.map +1 -0
- package/dist/src/pipeline/phases/scope-resolution-target.d.ts +6 -0
- package/dist/src/pipeline/phases/scope-resolution-target.d.ts.map +1 -0
- package/dist/src/pipeline/phases/scope-resolution-target.js +69 -0
- package/dist/src/pipeline/phases/scope-resolution-target.js.map +1 -0
- package/dist/src/pipeline/phases/scope-resolution.d.ts.map +1 -1
- package/dist/src/pipeline/phases/scope-resolution.js +3 -189
- package/dist/src/pipeline/phases/scope-resolution.js.map +1 -1
- package/dist/src/storage/fts-store-hybrid.d.ts +17 -0
- package/dist/src/storage/fts-store-hybrid.d.ts.map +1 -0
- package/dist/src/storage/fts-store-hybrid.js +119 -0
- package/dist/src/storage/fts-store-hybrid.js.map +1 -0
- package/dist/src/storage/fts-store-search.d.ts +29 -0
- package/dist/src/storage/fts-store-search.d.ts.map +1 -0
- package/dist/src/storage/fts-store-search.js +177 -0
- package/dist/src/storage/fts-store-search.js.map +1 -0
- package/dist/src/storage/fts-store-terms.d.ts +8 -0
- package/dist/src/storage/fts-store-terms.d.ts.map +1 -0
- package/dist/src/storage/fts-store-terms.js +174 -0
- package/dist/src/storage/fts-store-terms.js.map +1 -0
- package/dist/src/storage/fts-store.d.ts +12 -46
- package/dist/src/storage/fts-store.d.ts.map +1 -1
- package/dist/src/storage/fts-store.js +11 -459
- package/dist/src/storage/fts-store.js.map +1 -1
- package/dist/src/web/api-queries.d.ts +89 -0
- package/dist/src/web/api-queries.d.ts.map +1 -0
- package/dist/src/web/api-queries.js +245 -0
- package/dist/src/web/api-queries.js.map +1 -0
- package/dist/src/web/api.d.ts +2 -87
- package/dist/src/web/api.d.ts.map +1 -1
- package/dist/src/web/api.js +3 -244
- package/dist/src/web/api.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { MonographEdge, MonographNode } from '../../types.js';
|
|
2
|
+
import type { FieldDef } from './orm.js';
|
|
3
|
+
export declare function addField(entityName: string, fieldName: string, fieldType: string, filePath: string, language: string, entityNodeId: string, fields: FieldDef[], fieldNodes: MonographNode[], edges: MonographEdge[]): void;
|
|
4
|
+
/**
|
|
5
|
+
* Extracts a balanced brace block from source starting at the position of the
|
|
6
|
+
* opening `{`. Returns the content between the braces (not including the braces).
|
|
7
|
+
*/
|
|
8
|
+
export declare function extractBraceBlock(source: string, openPos: number, maxLen: number): string | undefined;
|
|
9
|
+
export declare function safeReadSource(absPath: string, maxBytes: number): string | undefined;
|
|
10
|
+
export declare function langFromExt(ext: string): string;
|
|
11
|
+
//# sourceMappingURL=orm-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orm-helpers.d.ts","sourceRoot":"","sources":["../../../../src/pipeline/phases/orm-helpers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEnE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAIzC,wBAAgB,QAAQ,CACtB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,QAAQ,EAAE,EAClB,UAAU,EAAE,aAAa,EAAE,EAC3B,KAAK,EAAE,aAAa,EAAE,GACrB,IAAI,CA4BN;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACb,MAAM,GAAG,SAAS,CAkBpB;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAQpF;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAI/C"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { readFileSync, statSync } from 'node:fs';
|
|
2
|
+
import { makeId, toNormLabel } from '../../types.js';
|
|
3
|
+
// Split out of orm.ts (file-size sweep). Pure move: no behaviour change.
|
|
4
|
+
export function addField(entityName, fieldName, fieldType, filePath, language, entityNodeId, fields, fieldNodes, edges) {
|
|
5
|
+
const fieldNodeId = makeId('field', entityName + fieldName + filePath);
|
|
6
|
+
const fieldNode = {
|
|
7
|
+
id: fieldNodeId,
|
|
8
|
+
label: 'Field',
|
|
9
|
+
name: fieldName,
|
|
10
|
+
normLabel: toNormLabel(fieldName),
|
|
11
|
+
filePath,
|
|
12
|
+
startLine: 0,
|
|
13
|
+
endLine: 0,
|
|
14
|
+
isExported: false,
|
|
15
|
+
language,
|
|
16
|
+
properties: { declaredType: fieldType },
|
|
17
|
+
};
|
|
18
|
+
fieldNodes.push(fieldNode);
|
|
19
|
+
const edgeId = makeId(entityNodeId, fieldNodeId, 'has_field');
|
|
20
|
+
edges.push({
|
|
21
|
+
id: edgeId,
|
|
22
|
+
sourceId: entityNodeId,
|
|
23
|
+
targetId: fieldNodeId,
|
|
24
|
+
relation: 'HAS_FIELD',
|
|
25
|
+
confidence: 'EXTRACTED',
|
|
26
|
+
confidenceScore: 0.9,
|
|
27
|
+
});
|
|
28
|
+
fields.push({ name: fieldName, type: fieldType, fieldNodeId });
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Extracts a balanced brace block from source starting at the position of the
|
|
32
|
+
* opening `{`. Returns the content between the braces (not including the braces).
|
|
33
|
+
*/
|
|
34
|
+
export function extractBraceBlock(source, openPos, maxLen) {
|
|
35
|
+
// Find the opening brace at or after openPos
|
|
36
|
+
const start = source.indexOf('{', openPos);
|
|
37
|
+
if (start === -1)
|
|
38
|
+
return undefined;
|
|
39
|
+
let depth = 0;
|
|
40
|
+
let i = start;
|
|
41
|
+
const end = Math.min(start + maxLen, source.length);
|
|
42
|
+
for (; i < end; i++) {
|
|
43
|
+
if (source[i] === '{')
|
|
44
|
+
depth++;
|
|
45
|
+
else if (source[i] === '}') {
|
|
46
|
+
depth--;
|
|
47
|
+
if (depth === 0)
|
|
48
|
+
return source.slice(start + 1, i);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
// Return partial block if not closed within maxLen
|
|
52
|
+
return source.slice(start + 1, i);
|
|
53
|
+
}
|
|
54
|
+
export function safeReadSource(absPath, maxBytes) {
|
|
55
|
+
try {
|
|
56
|
+
const stat = statSync(absPath);
|
|
57
|
+
if (stat.size > maxBytes)
|
|
58
|
+
return undefined;
|
|
59
|
+
return readFileSync(absPath, 'utf-8');
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
return undefined;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
export function langFromExt(ext) {
|
|
66
|
+
if (ext === '.ts' || ext === '.tsx')
|
|
67
|
+
return 'typescript';
|
|
68
|
+
if (ext === '.js' || ext === '.jsx' || ext === '.mjs' || ext === '.cjs')
|
|
69
|
+
return 'javascript';
|
|
70
|
+
return 'unknown';
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=orm-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orm-helpers.js","sourceRoot":"","sources":["../../../../src/pipeline/phases/orm-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { MonographEdge, MonographNode } from '../../types.js';
|
|
2
|
+
import type { EntityDef } from './orm.js';
|
|
3
|
+
/** Mongoose: const XxxSchema = new Schema({ */
|
|
4
|
+
export declare const MONGOOSE_SCHEMA_RE: RegExp;
|
|
5
|
+
/** Mongoose field inside a Schema object: fieldName: { type: SomeType } or fieldName: SomeType */
|
|
6
|
+
export declare const MONGOOSE_FIELD_RE: RegExp;
|
|
7
|
+
export declare function detectMongooseEntities(source: string, filePath: string, language: string, entities: EntityDef[], entityNodes: MonographNode[], fieldNodes: MonographNode[], edges: MonographEdge[]): void;
|
|
8
|
+
//# sourceMappingURL=orm-mongoose.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orm-mongoose.d.ts","sourceRoot":"","sources":["../../../../src/pipeline/phases/orm-mongoose.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEnE,OAAO,KAAK,EAAE,SAAS,EAAY,MAAM,UAAU,CAAC;AAKpD,+CAA+C;AAC/C,eAAO,MAAM,kBAAkB,QAC+C,CAAC;AAE/E,kGAAkG;AAClG,eAAO,MAAM,iBAAiB,QAAmD,CAAC;AAElF,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,SAAS,EAAE,EACrB,WAAW,EAAE,aAAa,EAAE,EAC5B,UAAU,EAAE,aAAa,EAAE,EAC3B,KAAK,EAAE,aAAa,EAAE,GACrB,IAAI,CAwDN"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { makeId, toNormLabel } from '../../types.js';
|
|
2
|
+
import { addField, extractBraceBlock } from './orm-helpers.js';
|
|
3
|
+
// Split out of orm.ts (file-size sweep). Pure move: no behaviour change.
|
|
4
|
+
/** Mongoose: const XxxSchema = new Schema({ */
|
|
5
|
+
export const MONGOOSE_SCHEMA_RE = /(?:const|let|var)\s+(\w*[Ss]chema)\s*=\s*new\s+(?:\w+\.)?Schema\s*\(\s*\{/g;
|
|
6
|
+
/** Mongoose field inside a Schema object: fieldName: { type: SomeType } or fieldName: SomeType */
|
|
7
|
+
export const MONGOOSE_FIELD_RE = /(\w+)\s*:\s*(?:\{[^}]*type\s*:\s*(\w+)|(\w+))/g;
|
|
8
|
+
export function detectMongooseEntities(source, filePath, language, entities, entityNodes, fieldNodes, edges) {
|
|
9
|
+
const schemaRe = new RegExp(MONGOOSE_SCHEMA_RE.source, 'g');
|
|
10
|
+
let m;
|
|
11
|
+
while ((m = schemaRe.exec(source)) !== null) {
|
|
12
|
+
const schemaVarName = m[1];
|
|
13
|
+
// Remove 'Schema' suffix to get entity name
|
|
14
|
+
const entityName = schemaVarName.replace(/[Ss]chema$/, '') || schemaVarName;
|
|
15
|
+
const entityNodeId = makeId('entity', entityName + filePath);
|
|
16
|
+
const entityNode = {
|
|
17
|
+
id: entityNodeId,
|
|
18
|
+
label: 'Entity',
|
|
19
|
+
name: entityName,
|
|
20
|
+
normLabel: toNormLabel(entityName),
|
|
21
|
+
filePath,
|
|
22
|
+
startLine: 0,
|
|
23
|
+
endLine: 0,
|
|
24
|
+
isExported: true,
|
|
25
|
+
language,
|
|
26
|
+
};
|
|
27
|
+
entityNodes.push(entityNode);
|
|
28
|
+
// Extract a block after the Schema({ starting point
|
|
29
|
+
const blockStart = m.index + m[0].length;
|
|
30
|
+
const block = extractBraceBlock(source, blockStart - 1, 4000);
|
|
31
|
+
const fields = [];
|
|
32
|
+
if (block) {
|
|
33
|
+
const fieldRe = new RegExp(MONGOOSE_FIELD_RE.source, 'g');
|
|
34
|
+
let fm;
|
|
35
|
+
const seen = new Set();
|
|
36
|
+
while ((fm = fieldRe.exec(block)) !== null) {
|
|
37
|
+
const fieldName = fm[1];
|
|
38
|
+
const fieldType = fm[2] ?? fm[3] ?? 'Mixed';
|
|
39
|
+
if (seen.has(fieldName))
|
|
40
|
+
continue;
|
|
41
|
+
// Skip obvious non-field keys
|
|
42
|
+
if (['type', 'required', 'default', 'ref', 'index', 'unique', 'enum'].includes(fieldName))
|
|
43
|
+
continue;
|
|
44
|
+
seen.add(fieldName);
|
|
45
|
+
addField(entityName, fieldName, fieldType, filePath, language, entityNodeId, fields, fieldNodes, edges);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
entities.push({ name: entityName, filePath, fields, entityNodeId });
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=orm-mongoose.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orm-mongoose.js","sourceRoot":"","sources":["../../../../src/pipeline/phases/orm-mongoose.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { MonographEdge, MonographNode } from '../../types.js';
|
|
2
|
+
import type { EntityDef } from './orm.js';
|
|
3
|
+
/** Prisma model block: model Name { ... } */
|
|
4
|
+
export declare const PRISMA_MODEL_RE: RegExp;
|
|
5
|
+
/** Prisma field line inside a model block */
|
|
6
|
+
export declare const PRISMA_FIELD_RE: RegExp;
|
|
7
|
+
export declare function detectPrismaEntities(source: string, filePath: string, language: string, entities: EntityDef[], entityNodes: MonographNode[], fieldNodes: MonographNode[], edges: MonographEdge[]): void;
|
|
8
|
+
//# sourceMappingURL=orm-prisma.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orm-prisma.d.ts","sourceRoot":"","sources":["../../../../src/pipeline/phases/orm-prisma.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEnE,OAAO,KAAK,EAAE,SAAS,EAAY,MAAM,UAAU,CAAC;AAKpD,6CAA6C;AAC7C,eAAO,MAAM,eAAe,QAAmC,CAAC;AAEhE,6CAA6C;AAC7C,eAAO,MAAM,eAAe,QAAwB,CAAC;AAErD,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,SAAS,EAAE,EACrB,WAAW,EAAE,aAAa,EAAE,EAC5B,UAAU,EAAE,aAAa,EAAE,EAC3B,KAAK,EAAE,aAAa,EAAE,GACrB,IAAI,CA8CN"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { makeId, toNormLabel } from '../../types.js';
|
|
2
|
+
import { addField } from './orm-helpers.js';
|
|
3
|
+
// Split out of orm.ts (file-size sweep). Pure move: no behaviour change.
|
|
4
|
+
/** Prisma model block: model Name { ... } */
|
|
5
|
+
export const PRISMA_MODEL_RE = /^model\s+(\w+)\s*\{([^}]+)\}/gm;
|
|
6
|
+
/** Prisma field line inside a model block */
|
|
7
|
+
export const PRISMA_FIELD_RE = /^\s+(\w+)\s+(\w+)/gm;
|
|
8
|
+
export function detectPrismaEntities(source, filePath, language, entities, entityNodes, fieldNodes, edges) {
|
|
9
|
+
const modelRe = new RegExp(PRISMA_MODEL_RE.source, 'gm');
|
|
10
|
+
let m;
|
|
11
|
+
while ((m = modelRe.exec(source)) !== null) {
|
|
12
|
+
const entityName = m[1];
|
|
13
|
+
const body = m[2];
|
|
14
|
+
const entityNodeId = makeId('entity', entityName + filePath);
|
|
15
|
+
const entityNode = {
|
|
16
|
+
id: entityNodeId,
|
|
17
|
+
label: 'Entity',
|
|
18
|
+
name: entityName,
|
|
19
|
+
normLabel: toNormLabel(entityName),
|
|
20
|
+
filePath,
|
|
21
|
+
startLine: 0,
|
|
22
|
+
endLine: 0,
|
|
23
|
+
isExported: true,
|
|
24
|
+
language,
|
|
25
|
+
};
|
|
26
|
+
entityNodes.push(entityNode);
|
|
27
|
+
const fields = [];
|
|
28
|
+
const fieldRe = new RegExp(PRISMA_FIELD_RE.source, 'gm');
|
|
29
|
+
let fm;
|
|
30
|
+
while ((fm = fieldRe.exec(body)) !== null) {
|
|
31
|
+
const fieldName = fm[1];
|
|
32
|
+
const fieldType = fm[2];
|
|
33
|
+
// Skip Prisma keywords
|
|
34
|
+
if (['model', 'enum', 'type', 'datasource', 'generator'].includes(fieldName))
|
|
35
|
+
continue;
|
|
36
|
+
addField(entityName, fieldName, fieldType, filePath, language, entityNodeId, fields, fieldNodes, edges);
|
|
37
|
+
}
|
|
38
|
+
entities.push({ name: entityName, filePath, fields, entityNodeId });
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=orm-prisma.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orm-prisma.js","sourceRoot":"","sources":["../../../../src/pipeline/phases/orm-prisma.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,yEAAyE;AAEzE,6CAA6C;AAC7C,MAAM,CAAC,MAAM,eAAe,GAAG,gCAAgC,CAAC;AAEhE,6CAA6C;AAC7C,MAAM,CAAC,MAAM,eAAe,GAAG,qBAAqB,CAAC;AAErD,MAAM,UAAU,oBAAoB,CAClC,MAAc,EACd,QAAgB,EAChB,QAAgB,EAChB,QAAqB,EACrB,WAA4B,EAC5B,UAA2B,EAC3B,KAAsB;IAEtB,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACzD,IAAI,CAAyB,CAAC;IAE9B,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC3C,MAAM,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAClB,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,EAAE,UAAU,GAAG,QAAQ,CAAC,CAAC;QAE7D,MAAM,UAAU,GAAkB;YAChC,EAAE,EAAE,YAAY;YAChB,KAAK,EAAE,QAAQ;YACf,IAAI,EAAE,UAAU;YAChB,SAAS,EAAE,WAAW,CAAC,UAAU,CAAC;YAClC,QAAQ;YACR,SAAS,EAAE,CAAC;YACZ,OAAO,EAAE,CAAC;YACV,UAAU,EAAE,IAAI;YAChB,QAAQ;SACT,CAAC;QACF,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE7B,MAAM,MAAM,GAAe,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACzD,IAAI,EAA0B,CAAC;QAE/B,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAC1C,MAAM,SAAS,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;YACxB,MAAM,SAAS,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;YACxB,uBAAuB;YACvB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAAE,SAAS;YACvF,QAAQ,CACN,UAAU,EACV,SAAS,EACT,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,MAAM,EACN,UAAU,EACV,KAAK,CACN,CAAC;QACJ,CAAC;QAED,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;IACtE,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { MonographEdge, MonographNode } from '../../types.js';
|
|
2
|
+
import type { EntityDef } from './orm.js';
|
|
3
|
+
/** Sequelize: class Foo extends Model (or extends Model.Model) */
|
|
4
|
+
export declare const SEQUELIZE_CLASS_RE: RegExp;
|
|
5
|
+
/** Sequelize Model.init({ field: ... }, { sequelize }) — capture the first arg block */
|
|
6
|
+
export declare const SEQUELIZE_INIT_RE: RegExp;
|
|
7
|
+
/** Sequelize sequelize.define('ModelName', { ... }) */
|
|
8
|
+
export declare const SEQUELIZE_DEFINE_RE: RegExp;
|
|
9
|
+
/** Sequelize field inside init/define block: fieldName: DataTypes.X or fieldName: { type: DataTypes.X } */
|
|
10
|
+
export declare const SEQUELIZE_FIELD_RE: RegExp;
|
|
11
|
+
export declare function detectSequelizeEntities(source: string, filePath: string, language: string, entities: EntityDef[], entityNodes: MonographNode[], fieldNodes: MonographNode[], edges: MonographEdge[]): void;
|
|
12
|
+
//# sourceMappingURL=orm-sequelize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orm-sequelize.d.ts","sourceRoot":"","sources":["../../../../src/pipeline/phases/orm-sequelize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEnE,OAAO,KAAK,EAAE,SAAS,EAAY,MAAM,UAAU,CAAC;AAKpD,kEAAkE;AAClE,eAAO,MAAM,kBAAkB,QAAiD,CAAC;AAEjF,wFAAwF;AACxF,eAAO,MAAM,iBAAiB,QAA2B,CAAC;AAE1D,uDAAuD;AACvD,eAAO,MAAM,mBAAmB,QAA4C,CAAC;AAE7E,2GAA2G;AAC3G,eAAO,MAAM,kBAAkB,QACmD,CAAC;AAEnF,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,SAAS,EAAE,EACrB,WAAW,EAAE,aAAa,EAAE,EAC5B,UAAU,EAAE,aAAa,EAAE,EAC3B,KAAK,EAAE,aAAa,EAAE,GACrB,IAAI,CAkHN"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { makeId, toNormLabel } from '../../types.js';
|
|
2
|
+
import { addField, extractBraceBlock } from './orm-helpers.js';
|
|
3
|
+
// Split out of orm.ts (file-size sweep). Pure move: no behaviour change.
|
|
4
|
+
/** Sequelize: class Foo extends Model (or extends Model.Model) */
|
|
5
|
+
export const SEQUELIZE_CLASS_RE = /class\s+(\w+)\s+extends\s+(?:\w+\.)?Model\b/g;
|
|
6
|
+
/** Sequelize Model.init({ field: ... }, { sequelize }) — capture the first arg block */
|
|
7
|
+
export const SEQUELIZE_INIT_RE = /(\w+)\.init\s*\(\s*\{/g;
|
|
8
|
+
/** Sequelize sequelize.define('ModelName', { ... }) */
|
|
9
|
+
export const SEQUELIZE_DEFINE_RE = /\.define\s*\(\s*['"](\w+)['"]\s*,\s*\{/g;
|
|
10
|
+
/** Sequelize field inside init/define block: fieldName: DataTypes.X or fieldName: { type: DataTypes.X } */
|
|
11
|
+
export const SEQUELIZE_FIELD_RE = /(\w+)\s*:\s*(?:\{[^}]*type\s*:\s*(?:DataTypes\.)?(\w+)|(?:DataTypes\.)?(\w+))/g;
|
|
12
|
+
export function detectSequelizeEntities(source, filePath, language, entities, entityNodes, fieldNodes, edges) {
|
|
13
|
+
// Track entity names we've already registered to avoid duplicates.
|
|
14
|
+
const registeredNames = new Set();
|
|
15
|
+
function registerEntity(entityName) {
|
|
16
|
+
const entityNodeId = makeId('entity', entityName + filePath);
|
|
17
|
+
if (registeredNames.has(entityName))
|
|
18
|
+
return entityNodeId;
|
|
19
|
+
registeredNames.add(entityName);
|
|
20
|
+
const entityNode = {
|
|
21
|
+
id: entityNodeId,
|
|
22
|
+
label: 'Entity',
|
|
23
|
+
name: entityName,
|
|
24
|
+
normLabel: toNormLabel(entityName),
|
|
25
|
+
filePath,
|
|
26
|
+
startLine: 0,
|
|
27
|
+
endLine: 0,
|
|
28
|
+
isExported: true,
|
|
29
|
+
language,
|
|
30
|
+
};
|
|
31
|
+
entityNodes.push(entityNode);
|
|
32
|
+
return entityNodeId;
|
|
33
|
+
}
|
|
34
|
+
// Collect class names that extend Model so we can match them in .init() calls.
|
|
35
|
+
const modelClasses = new Set();
|
|
36
|
+
const classRe = new RegExp(SEQUELIZE_CLASS_RE.source, 'g');
|
|
37
|
+
let cm;
|
|
38
|
+
while ((cm = classRe.exec(source)) !== null) {
|
|
39
|
+
modelClasses.add(cm[1]);
|
|
40
|
+
}
|
|
41
|
+
// Handle: ClassName.init({ ... }, { sequelize })
|
|
42
|
+
const initRe = new RegExp(SEQUELIZE_INIT_RE.source, 'g');
|
|
43
|
+
let im;
|
|
44
|
+
while ((im = initRe.exec(source)) !== null) {
|
|
45
|
+
const candidateName = im[1];
|
|
46
|
+
// Only treat as Sequelize if it's a known Model subclass OR if DataTypes appears in the block.
|
|
47
|
+
const blockStart = im.index + im[0].length - 1; // position of the opening '{'
|
|
48
|
+
const block = extractBraceBlock(source, blockStart, 4000);
|
|
49
|
+
if (!block)
|
|
50
|
+
continue;
|
|
51
|
+
if (!modelClasses.has(candidateName) && !block.includes('DataTypes'))
|
|
52
|
+
continue;
|
|
53
|
+
const entityNodeId = registerEntity(candidateName);
|
|
54
|
+
const fields = [];
|
|
55
|
+
const fieldRe = new RegExp(SEQUELIZE_FIELD_RE.source, 'g');
|
|
56
|
+
let fm;
|
|
57
|
+
const seen = new Set();
|
|
58
|
+
while ((fm = fieldRe.exec(block)) !== null) {
|
|
59
|
+
const fieldName = fm[1];
|
|
60
|
+
const fieldType = fm[2] ?? fm[3] ?? 'DataType';
|
|
61
|
+
if (seen.has(fieldName))
|
|
62
|
+
continue;
|
|
63
|
+
if (['type', 'allowNull', 'defaultValue', 'primaryKey', 'unique', 'references'].includes(fieldName))
|
|
64
|
+
continue;
|
|
65
|
+
seen.add(fieldName);
|
|
66
|
+
addField(candidateName, fieldName, fieldType, filePath, language, entityNodeId, fields, fieldNodes, edges);
|
|
67
|
+
}
|
|
68
|
+
entities.push({ name: candidateName, filePath, fields, entityNodeId });
|
|
69
|
+
}
|
|
70
|
+
// Handle: sequelize.define('ModelName', { ... })
|
|
71
|
+
const defineRe = new RegExp(SEQUELIZE_DEFINE_RE.source, 'g');
|
|
72
|
+
let dm;
|
|
73
|
+
while ((dm = defineRe.exec(source)) !== null) {
|
|
74
|
+
const entityName = dm[1];
|
|
75
|
+
const blockStart = dm.index + dm[0].length - 1;
|
|
76
|
+
const block = extractBraceBlock(source, blockStart, 4000);
|
|
77
|
+
const entityNodeId = registerEntity(entityName);
|
|
78
|
+
const fields = [];
|
|
79
|
+
if (block) {
|
|
80
|
+
const fieldRe = new RegExp(SEQUELIZE_FIELD_RE.source, 'g');
|
|
81
|
+
let fm;
|
|
82
|
+
const seen = new Set();
|
|
83
|
+
while ((fm = fieldRe.exec(block)) !== null) {
|
|
84
|
+
const fieldName = fm[1];
|
|
85
|
+
const fieldType = fm[2] ?? fm[3] ?? 'DataType';
|
|
86
|
+
if (seen.has(fieldName))
|
|
87
|
+
continue;
|
|
88
|
+
if (['type', 'allowNull', 'defaultValue', 'primaryKey', 'unique', 'references'].includes(fieldName))
|
|
89
|
+
continue;
|
|
90
|
+
seen.add(fieldName);
|
|
91
|
+
addField(entityName, fieldName, fieldType, filePath, language, entityNodeId, fields, fieldNodes, edges);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
entities.push({ name: entityName, filePath, fields, entityNodeId });
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=orm-sequelize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orm-sequelize.js","sourceRoot":"","sources":["../../../../src/pipeline/phases/orm-sequelize.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { MonographEdge, MonographNode } from '../../types.js';
|
|
2
|
+
import type { EntityDef } from './orm.js';
|
|
3
|
+
/** SQLAlchemy: class Foo(Base) or class Foo(db.Model) etc. */
|
|
4
|
+
export declare const SQLALCHEMY_CLASS_RE: RegExp;
|
|
5
|
+
/** SQLAlchemy column: fieldName = Column( */
|
|
6
|
+
export declare const SQLALCHEMY_COLUMN_RE: RegExp;
|
|
7
|
+
export declare function detectSQLAlchemyEntities(source: string, filePath: string, language: string, entities: EntityDef[], entityNodes: MonographNode[], fieldNodes: MonographNode[], edges: MonographEdge[]): void;
|
|
8
|
+
//# sourceMappingURL=orm-sqlalchemy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orm-sqlalchemy.d.ts","sourceRoot":"","sources":["../../../../src/pipeline/phases/orm-sqlalchemy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEnE,OAAO,KAAK,EAAE,SAAS,EAAY,MAAM,UAAU,CAAC;AAKpD,8DAA8D;AAC9D,eAAO,MAAM,mBAAmB,QAAwC,CAAC;AAEzE,6CAA6C;AAC7C,eAAO,MAAM,oBAAoB,QAAiD,CAAC;AAEnF,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,SAAS,EAAE,EACrB,WAAW,EAAE,aAAa,EAAE,EAC5B,UAAU,EAAE,aAAa,EAAE,EAC3B,KAAK,EAAE,aAAa,EAAE,GACrB,IAAI,CAgDN"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { makeId, toNormLabel } from '../../types.js';
|
|
2
|
+
import { addField } from './orm-helpers.js';
|
|
3
|
+
// Split out of orm.ts (file-size sweep). Pure move: no behaviour change.
|
|
4
|
+
/** SQLAlchemy: class Foo(Base) or class Foo(db.Model) etc. */
|
|
5
|
+
export const SQLALCHEMY_CLASS_RE = /class\s+(\w+)\s*\([^)]*Base[^)]*\)/g;
|
|
6
|
+
/** SQLAlchemy column: fieldName = Column( */
|
|
7
|
+
export const SQLALCHEMY_COLUMN_RE = /(\w+)\s*(?::\s*[\w[\]]+)?\s*=\s*Column\s*\(/g;
|
|
8
|
+
export function detectSQLAlchemyEntities(source, filePath, language, entities, entityNodes, fieldNodes, edges) {
|
|
9
|
+
const classRe = new RegExp(SQLALCHEMY_CLASS_RE.source, 'g');
|
|
10
|
+
let m;
|
|
11
|
+
while ((m = classRe.exec(source)) !== null) {
|
|
12
|
+
const entityName = m[1];
|
|
13
|
+
const entityNodeId = makeId('entity', entityName + filePath);
|
|
14
|
+
const entityNode = {
|
|
15
|
+
id: entityNodeId,
|
|
16
|
+
label: 'Entity',
|
|
17
|
+
name: entityName,
|
|
18
|
+
normLabel: toNormLabel(entityName),
|
|
19
|
+
filePath,
|
|
20
|
+
startLine: 0,
|
|
21
|
+
endLine: 0,
|
|
22
|
+
isExported: true,
|
|
23
|
+
language,
|
|
24
|
+
};
|
|
25
|
+
entityNodes.push(entityNode);
|
|
26
|
+
const fields = [];
|
|
27
|
+
// Scope column scan to this class's body — slice from the match end to the next
|
|
28
|
+
// unindented `class ` keyword or end-of-string to avoid assigning columns from
|
|
29
|
+
// other classes to this entity.
|
|
30
|
+
const classBodyStart = m.index + m[0].length;
|
|
31
|
+
const nextClassIdx = source.indexOf('\nclass ', classBodyStart);
|
|
32
|
+
const classBody = nextClassIdx >= 0 ? source.slice(classBodyStart, nextClassIdx) : source.slice(classBodyStart);
|
|
33
|
+
const columnRe = new RegExp(SQLALCHEMY_COLUMN_RE.source, 'g');
|
|
34
|
+
let cm;
|
|
35
|
+
while ((cm = columnRe.exec(classBody)) !== null) {
|
|
36
|
+
const fieldName = cm[1];
|
|
37
|
+
addField(entityName, fieldName, 'Column', filePath, language, entityNodeId, fields, fieldNodes, edges);
|
|
38
|
+
}
|
|
39
|
+
entities.push({ name: entityName, filePath, fields, entityNodeId });
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=orm-sqlalchemy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orm-sqlalchemy.js","sourceRoot":"","sources":["../../../../src/pipeline/phases/orm-sqlalchemy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,yEAAyE;AAEzE,8DAA8D;AAC9D,MAAM,CAAC,MAAM,mBAAmB,GAAG,qCAAqC,CAAC;AAEzE,6CAA6C;AAC7C,MAAM,CAAC,MAAM,oBAAoB,GAAG,8CAA8C,CAAC;AAEnF,MAAM,UAAU,wBAAwB,CACtC,MAAc,EACd,QAAgB,EAChB,QAAgB,EAChB,QAAqB,EACrB,WAA4B,EAC5B,UAA2B,EAC3B,KAAsB;IAEtB,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,mBAAmB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5D,IAAI,CAAyB,CAAC;IAE9B,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC3C,MAAM,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,EAAE,UAAU,GAAG,QAAQ,CAAC,CAAC;QAE7D,MAAM,UAAU,GAAkB;YAChC,EAAE,EAAE,YAAY;YAChB,KAAK,EAAE,QAAQ;YACf,IAAI,EAAE,UAAU;YAChB,SAAS,EAAE,WAAW,CAAC,UAAU,CAAC;YAClC,QAAQ;YACR,SAAS,EAAE,CAAC;YACZ,OAAO,EAAE,CAAC;YACV,UAAU,EAAE,IAAI;YAChB,QAAQ;SACT,CAAC;QACF,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE7B,MAAM,MAAM,GAAe,EAAE,CAAC;QAC9B,gFAAgF;QAChF,+EAA+E;QAC/E,gCAAgC;QAChC,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAC7C,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;QAChE,MAAM,SAAS,GACb,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAChG,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,oBAAoB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC9D,IAAI,EAA0B,CAAC;QAC/B,OAAO,CAAC,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAChD,MAAM,SAAS,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;YACxB,QAAQ,CACN,UAAU,EACV,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,MAAM,EACN,UAAU,EACV,KAAK,CACN,CAAC;QACJ,CAAC;QAED,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;IACtE,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { MonographEdge, MonographNode } from '../../types.js';
|
|
2
|
+
import type { EntityDef } from './orm.js';
|
|
3
|
+
/** TypeORM: @Entity() decorator before a class */
|
|
4
|
+
export declare const TYPEORM_ENTITY_RE: RegExp;
|
|
5
|
+
/** TypeORM/MikroORM column decorator (matches the decorator line only) */
|
|
6
|
+
export declare const TYPEORM_COLUMN_DECORATOR_RE: RegExp;
|
|
7
|
+
/** Property declaration after a TypeORM column decorator */
|
|
8
|
+
export declare const TYPEORM_PROP_RE: RegExp;
|
|
9
|
+
export declare function detectTypeOrmEntities(source: string, filePath: string, language: string, entities: EntityDef[], entityNodes: MonographNode[], fieldNodes: MonographNode[], edges: MonographEdge[]): void;
|
|
10
|
+
//# sourceMappingURL=orm-typeorm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orm-typeorm.d.ts","sourceRoot":"","sources":["../../../../src/pipeline/phases/orm-typeorm.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEnE,OAAO,KAAK,EAAE,SAAS,EAAY,MAAM,UAAU,CAAC;AAKpD,kDAAkD;AAClD,eAAO,MAAM,iBAAiB,QACwC,CAAC;AAEvE,0EAA0E;AAC1E,eAAO,MAAM,2BAA2B,QAC+H,CAAC;AAExK,4DAA4D;AAC5D,eAAO,MAAM,eAAe,QAA8B,CAAC;AAE3D,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,SAAS,EAAE,EACrB,WAAW,EAAE,aAAa,EAAE,EAC5B,UAAU,EAAE,aAAa,EAAE,EAC3B,KAAK,EAAE,aAAa,EAAE,GACrB,IAAI,CAsDN"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { makeId, toNormLabel } from '../../types.js';
|
|
2
|
+
import { addField } from './orm-helpers.js';
|
|
3
|
+
// Split out of orm.ts (file-size sweep). Pure move: no behaviour change.
|
|
4
|
+
/** TypeORM: @Entity() decorator before a class */
|
|
5
|
+
export const TYPEORM_ENTITY_RE = /@Entity\s*\([^)]*\)\s*(?:export\s+)?(?:abstract\s+)?class\s+(\w+)/g;
|
|
6
|
+
/** TypeORM/MikroORM column decorator (matches the decorator line only) */
|
|
7
|
+
export const TYPEORM_COLUMN_DECORATOR_RE = /@(?:Primary(?:Generated)?Column|Column|CreateDateColumn|UpdateDateColumn|DeleteDateColumn|Property|PrimaryKey|ManyToOne|OneToMany|ManyToMany|OneToOne)\s*\([^)]*\)/g;
|
|
8
|
+
/** Property declaration after a TypeORM column decorator */
|
|
9
|
+
export const TYPEORM_PROP_RE = /(\w+)\s*[!?]?\s*:\s*(\w+)/;
|
|
10
|
+
export function detectTypeOrmEntities(source, filePath, language, entities, entityNodes, fieldNodes, edges) {
|
|
11
|
+
const entityRe = new RegExp(TYPEORM_ENTITY_RE.source, 'g');
|
|
12
|
+
const lines = source.split('\n');
|
|
13
|
+
let m;
|
|
14
|
+
while ((m = entityRe.exec(source)) !== null) {
|
|
15
|
+
const entityName = m[1];
|
|
16
|
+
const entityNodeId = makeId('entity', entityName + filePath);
|
|
17
|
+
const entityNode = {
|
|
18
|
+
id: entityNodeId,
|
|
19
|
+
label: 'Entity',
|
|
20
|
+
name: entityName,
|
|
21
|
+
normLabel: toNormLabel(entityName),
|
|
22
|
+
filePath,
|
|
23
|
+
startLine: 0,
|
|
24
|
+
endLine: 0,
|
|
25
|
+
isExported: true,
|
|
26
|
+
language,
|
|
27
|
+
};
|
|
28
|
+
entityNodes.push(entityNode);
|
|
29
|
+
const fields = [];
|
|
30
|
+
const colDecRe = new RegExp(TYPEORM_COLUMN_DECORATOR_RE.source, 'g');
|
|
31
|
+
for (let i = 0; i < lines.length; i++) {
|
|
32
|
+
const line = lines[i];
|
|
33
|
+
if (colDecRe.test(line)) {
|
|
34
|
+
colDecRe.lastIndex = 0; // reset after test
|
|
35
|
+
// Look at the next non-empty line for the property declaration
|
|
36
|
+
for (let j = i + 1; j < Math.min(i + 4, lines.length); j++) {
|
|
37
|
+
const propLine = lines[j].trim();
|
|
38
|
+
if (!propLine || propLine.startsWith('@') || propLine.startsWith('//'))
|
|
39
|
+
continue;
|
|
40
|
+
const pm = TYPEORM_PROP_RE.exec(propLine);
|
|
41
|
+
if (pm) {
|
|
42
|
+
addField(entityName, pm[1], pm[2], filePath, language, entityNodeId, fields, fieldNodes, edges);
|
|
43
|
+
}
|
|
44
|
+
break;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
colDecRe.lastIndex = 0; // always reset
|
|
48
|
+
}
|
|
49
|
+
entities.push({ name: entityName, filePath, fields, entityNodeId });
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=orm-typeorm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orm-typeorm.js","sourceRoot":"","sources":["../../../../src/pipeline/phases/orm-typeorm.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orm.d.ts","sourceRoot":"","sources":["../../../../src/pipeline/phases/orm.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"orm.d.ts","sourceRoot":"","sources":["../../../../src/pipeline/phases/orm.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAWjD,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,SAAS,EAAE,CAAC;CACvB;AAQD,eAAO,MAAM,QAAQ,EAAE,aAAa,CAAC,SAAS,CAwF7C,CAAC"}
|