@l-v-yonsama/multi-platform-database-drivers 1.3.0 → 2.0.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 +40 -0
- package/built/src/drivers/Auth0Driver.js +9 -9
- package/built/src/drivers/Auth0Driver.js.map +1 -1
- package/built/src/drivers/AwsDriver.js +3 -3
- package/built/src/drivers/AwsDriver.js.map +1 -1
- package/built/src/drivers/BaseDriver.d.ts +1 -1
- package/built/src/drivers/BaseDriver.js +4 -6
- package/built/src/drivers/BaseDriver.js.map +1 -1
- package/built/src/drivers/DBDriverResolver.js.map +1 -1
- package/built/src/drivers/DBError.js.map +1 -1
- package/built/src/drivers/KeycloakDriver.d.ts +2 -3
- package/built/src/drivers/KeycloakDriver.js +27 -262
- package/built/src/drivers/KeycloakDriver.js.map +1 -1
- package/built/src/drivers/MemcacheDriver.d.ts +0 -1
- package/built/src/drivers/MemcacheDriver.js +5 -5
- package/built/src/drivers/MemcacheDriver.js.map +1 -1
- package/built/src/drivers/MqttDriver.d.ts +0 -1
- package/built/src/drivers/MqttDriver.js +4 -4
- package/built/src/drivers/MqttDriver.js.map +1 -1
- package/built/src/drivers/MySQLDriver.js +12 -12
- package/built/src/drivers/MySQLDriver.js.map +1 -1
- package/built/src/drivers/OracleDriver.js +13 -13
- package/built/src/drivers/OracleDriver.js.map +1 -1
- package/built/src/drivers/PostgresDriver.js +22 -2
- package/built/src/drivers/PostgresDriver.js.map +1 -1
- package/built/src/drivers/RDSBaseDriver.d.ts +1 -1
- package/built/src/drivers/RDSBaseDriver.js +6 -6
- package/built/src/drivers/RDSBaseDriver.js.map +1 -1
- package/built/src/drivers/RedisDriver.js +2 -2
- package/built/src/drivers/RedisDriver.js.map +1 -1
- package/built/src/drivers/SQLServerDriver.js +7 -7
- package/built/src/drivers/SQLServerDriver.js.map +1 -1
- package/built/src/drivers/SQLiteDriver.d.ts +1 -1
- package/built/src/drivers/SQLiteDriver.js +7 -7
- package/built/src/drivers/SQLiteDriver.js.map +1 -1
- package/built/src/drivers/aws/AwsCloudFormationServiceClient.js +2 -2
- package/built/src/drivers/aws/AwsCloudFormationServiceClient.js.map +1 -1
- package/built/src/drivers/aws/AwsCloudwatchServiceClient.js +3 -3
- package/built/src/drivers/aws/AwsCloudwatchServiceClient.js.map +1 -1
- package/built/src/drivers/aws/AwsDynamoServiceClient.js +7 -7
- package/built/src/drivers/aws/AwsDynamoServiceClient.js.map +1 -1
- package/built/src/drivers/aws/AwsS3ServiceClient.js +24 -24
- package/built/src/drivers/aws/AwsS3ServiceClient.js.map +1 -1
- package/built/src/drivers/aws/AwsSESServiceClient.js.map +1 -1
- package/built/src/drivers/aws/AwsSQSServiceClient.js +8 -8
- package/built/src/drivers/aws/AwsSQSServiceClient.js.map +1 -1
- package/built/src/drivers/aws/AwsSecretsManagerServiceClient.js +1 -1
- package/built/src/drivers/aws/AwsSecretsManagerServiceClient.js.map +1 -1
- package/built/src/drivers/aws/AwsServiceClient.js +2 -2
- package/built/src/drivers/aws/AwsServiceClient.js.map +1 -1
- package/built/src/drivers/aws/AwsSsmServiceClient.js +1 -1
- package/built/src/drivers/aws/AwsSsmServiceClient.js.map +1 -1
- package/built/src/drivers/keycloak/resourceTreeBuilder.d.ts +5 -0
- package/built/src/drivers/keycloak/resourceTreeBuilder.js +37 -0
- package/built/src/drivers/keycloak/resourceTreeBuilder.js.map +1 -0
- package/built/src/drivers/keycloak/scanResultBuilder.d.ts +8 -0
- package/built/src/drivers/keycloak/scanResultBuilder.js +212 -0
- package/built/src/drivers/keycloak/scanResultBuilder.js.map +1 -0
- package/built/src/drivers/memcache/helper.d.ts +0 -1
- package/built/src/drivers/memcache/helper.js +13 -14
- package/built/src/drivers/memcache/helper.js.map +1 -1
- package/built/src/helpers/ProposalHelper.js +3 -3
- package/built/src/helpers/ProposalHelper.js.map +1 -1
- package/built/src/helpers/RdhRecordRuleHelper.js.map +1 -1
- package/built/src/helpers/RuleEngine.d.ts +5 -5
- package/built/src/helpers/RuleEngine.js +14 -14
- package/built/src/helpers/RuleEngine.js.map +1 -1
- package/built/src/helpers/SQLHelper.d.ts +8 -115
- package/built/src/helpers/SQLHelper.js +35 -1084
- package/built/src/helpers/SQLHelper.js.map +1 -1
- package/built/src/helpers/prompts/Auth0PromptHelper.js.map +1 -1
- package/built/src/helpers/prompts/AwsPromptHelper.js.map +1 -1
- package/built/src/helpers/prompts/KeycloakPromptHelper.js.map +1 -1
- package/built/src/helpers/prompts/MemcachePromptHelper.js.map +1 -1
- package/built/src/helpers/prompts/MqttPromptHelper.js.map +1 -1
- package/built/src/helpers/prompts/RdsPromptHelper.js +1 -1
- package/built/src/helpers/prompts/RdsPromptHelper.js.map +1 -1
- package/built/src/helpers/prompts/RedisPromptHelper.js.map +1 -1
- package/built/src/helpers/prompts/SchemaPromptHelper.js.map +1 -1
- package/built/src/helpers/sql/dynamoConversion.d.ts +2 -0
- package/built/src/helpers/sql/dynamoConversion.js +27 -0
- package/built/src/helpers/sql/dynamoConversion.js.map +1 -0
- package/built/src/helpers/sql/formatQuery.d.ts +6 -0
- package/built/src/helpers/sql/formatQuery.js +45 -0
- package/built/src/helpers/sql/formatQuery.js.map +1 -0
- package/built/src/helpers/sql/mutationQuery.d.ts +54 -0
- package/built/src/helpers/sql/mutationQuery.js +250 -0
- package/built/src/helpers/sql/mutationQuery.js.map +1 -0
- package/built/src/helpers/sql/parameterNormalizer.d.ts +16 -0
- package/built/src/helpers/sql/parameterNormalizer.js +166 -0
- package/built/src/helpers/sql/parameterNormalizer.js.map +1 -0
- package/built/src/helpers/sql/queryParser.d.ts +6 -0
- package/built/src/helpers/sql/queryParser.js +239 -0
- package/built/src/helpers/sql/queryParser.js.map +1 -0
- package/built/src/helpers/sql/quote.d.ts +17 -0
- package/built/src/helpers/sql/quote.js +140 -0
- package/built/src/helpers/sql/quote.js.map +1 -0
- package/built/src/helpers/sql/selectQuery.d.ts +24 -0
- package/built/src/helpers/sql/selectQuery.js +262 -0
- package/built/src/helpers/sql/selectQuery.js.map +1 -0
- package/built/src/resource/aws.d.ts +106 -0
- package/built/src/resource/aws.js +219 -0
- package/built/src/resource/aws.js.map +1 -0
- package/built/src/resource/base.d.ts +28 -0
- package/built/src/resource/base.js +76 -0
- package/built/src/resource/base.js.map +1 -0
- package/built/src/resource/connection.d.ts +35 -0
- package/built/src/resource/connection.js +52 -0
- package/built/src/resource/connection.js.map +1 -0
- package/built/src/resource/fromJson.d.ts +2 -0
- package/built/src/resource/fromJson.js +125 -0
- package/built/src/resource/fromJson.js.map +1 -0
- package/built/src/resource/iam.d.ts +70 -0
- package/built/src/resource/iam.js +175 -0
- package/built/src/resource/iam.js.map +1 -0
- package/built/src/resource/index.d.ts +8 -1
- package/built/src/resource/index.js +8 -1
- package/built/src/resource/index.js.map +1 -1
- package/built/src/resource/keyValue.d.ts +85 -0
- package/built/src/resource/keyValue.js +74 -0
- package/built/src/resource/keyValue.js.map +1 -0
- package/built/src/resource/rdb.d.ts +49 -0
- package/built/src/resource/rdb.js +155 -0
- package/built/src/resource/rdb.js.map +1 -0
- package/built/src/resource/types.d.ts +18 -0
- package/built/src/resource/types.js +3 -0
- package/built/src/resource/types.js.map +1 -0
- package/built/src/types/drivers/Keycloak.js +1 -1
- package/built/src/types/drivers/Keycloak.js.map +1 -1
- package/built/src/types/drivers/MemcachedParams.d.ts +0 -1
- package/built/src/types/helpers/index.js +1 -1
- package/built/src/types/helpers/index.js.map +1 -1
- package/built/src/types/resource/AwsCfnStackAttributes.d.ts +1 -1
- package/built/src/types/resource/MySQLColumnType.js +2 -2
- package/built/src/types/resource/MySQLColumnType.js.map +1 -1
- package/built/src/types/resource/OracleColumnType.js +2 -2
- package/built/src/types/resource/OracleColumnType.js.map +1 -1
- package/built/src/types/resource/PartiQLAttrType.js.map +1 -1
- package/built/src/types/resource/PostgresColumnType.js +2 -2
- package/built/src/types/resource/PostgresColumnType.js.map +1 -1
- package/built/src/types/resource/SQLServerColumnType.js +2 -2
- package/built/src/types/resource/SQLServerColumnType.js.map +1 -1
- package/built/src/types/utils/index.js +2 -2
- package/built/src/types/utils/index.js.map +1 -1
- package/built/src/utils/base.js +1 -1
- package/built/src/utils/base.js.map +1 -1
- package/built/src/utils/cfn/applicationDiagram.js +52 -12
- package/built/src/utils/cfn/applicationDiagram.js.map +1 -1
- package/built/src/utils/cfn/applicationRelations.d.ts +1 -1
- package/built/src/utils/cfn/applicationRelations.js +107 -15
- package/built/src/utils/cfn/applicationRelations.js.map +1 -1
- package/built/src/utils/cfn/cfnDependencyGraphDiagram.js.map +1 -1
- package/built/src/utils/cfn/{architectureTopology.d.ts → deploymentTopology.d.ts} +5 -1
- package/built/src/utils/cfn/{architectureTopology.js → deploymentTopology.js} +127 -13
- package/built/src/utils/cfn/deploymentTopology.js.map +1 -0
- package/built/src/utils/cfn/diagramFileModel.js.map +1 -1
- package/built/src/utils/cfn/drawio/cfnDependencyGraphDiagram.d.ts +3 -0
- package/built/src/utils/cfn/drawio/cfnDependencyGraphDiagram.js +174 -0
- package/built/src/utils/cfn/drawio/cfnDependencyGraphDiagram.js.map +1 -0
- package/built/src/utils/cfn/drawio/commonCells.d.ts +22 -0
- package/built/src/utils/cfn/drawio/commonCells.js +83 -0
- package/built/src/utils/cfn/drawio/commonCells.js.map +1 -0
- package/built/src/utils/cfn/drawio/edgeRouting.d.ts +34 -0
- package/built/src/utils/cfn/drawio/edgeRouting.js +77 -0
- package/built/src/utils/cfn/drawio/edgeRouting.js.map +1 -0
- package/built/src/utils/cfn/drawio/multiAzInfrastructureDiagram.d.ts +3 -0
- package/built/src/utils/cfn/drawio/multiAzInfrastructureDiagram.js +812 -0
- package/built/src/utils/cfn/drawio/multiAzInfrastructureDiagram.js.map +1 -0
- package/built/src/utils/cfn/drawioApplicationDiagram.d.ts +1 -0
- package/built/src/utils/cfn/drawioApplicationDiagram.js +290 -32
- package/built/src/utils/cfn/drawioApplicationDiagram.js.map +1 -1
- package/built/src/utils/cfn/drawioInfrastructureDiagrams.d.ts +2 -4
- package/built/src/utils/cfn/drawioInfrastructureDiagrams.js +7 -441
- package/built/src/utils/cfn/drawioInfrastructureDiagrams.js.map +1 -1
- package/built/src/utils/cfn/drawioXml.d.ts +0 -24
- package/built/src/utils/cfn/drawioXml.js +5 -47
- package/built/src/utils/cfn/drawioXml.js.map +1 -1
- package/built/src/utils/cfn/generateDiagram.js +3 -4
- package/built/src/utils/cfn/generateDiagram.js.map +1 -1
- package/built/src/utils/cfn/icons.js.map +1 -1
- package/built/src/utils/cfn/index.d.ts +4 -4
- package/built/src/utils/cfn/index.js +9 -8
- package/built/src/utils/cfn/index.js.map +1 -1
- package/built/src/utils/cfn/intrinsics.d.ts +1 -1
- package/built/src/utils/cfn/intrinsics.js.map +1 -1
- package/built/src/utils/cfn/multiAzDeploymentTrafficPathsAndProtection.d.ts +27 -0
- package/built/src/utils/cfn/{multiAzDeploymentDataPaths.js → multiAzDeploymentTrafficPathsAndProtection.js} +162 -10
- package/built/src/utils/cfn/multiAzDeploymentTrafficPathsAndProtection.js.map +1 -0
- package/built/src/utils/cfn/multiAzDeploymentTrafficPathsAndProtectionDiagram.d.ts +2 -0
- package/built/src/utils/cfn/{architectureDiagram.js → multiAzDeploymentTrafficPathsAndProtectionDiagram.js} +82 -34
- package/built/src/utils/cfn/multiAzDeploymentTrafficPathsAndProtectionDiagram.js.map +1 -0
- package/built/src/utils/cfn/naming.d.ts +2 -1
- package/built/src/utils/cfn/naming.js +3 -3
- package/built/src/utils/cfn/naming.js.map +1 -1
- package/built/src/utils/cfn/resourceDependencies.js.map +1 -1
- package/built/src/utils/cfn/templateParsing.js +11 -26
- package/built/src/utils/cfn/templateParsing.js.map +1 -1
- package/built/src/utils/csv.js.map +1 -1
- package/built/src/utils/dbType.js.map +1 -1
- package/built/src/utils/diagramLayout/elkLayoutEngine.d.ts +3 -0
- package/built/src/utils/diagramLayout/elkLayoutEngine.js +199 -0
- package/built/src/utils/diagramLayout/elkLayoutEngine.js.map +1 -0
- package/built/src/utils/diagramLayout/index.d.ts +4 -0
- package/built/src/utils/diagramLayout/index.js +13 -0
- package/built/src/utils/diagramLayout/index.js.map +1 -0
- package/built/src/utils/diagramLayout/normalizeLayout.d.ts +33 -0
- package/built/src/utils/diagramLayout/normalizeLayout.js +116 -0
- package/built/src/utils/diagramLayout/normalizeLayout.js.map +1 -0
- package/built/src/utils/diagramLayout/types.d.ts +64 -0
- package/built/src/utils/diagramLayout/types.js +3 -0
- package/built/src/utils/diagramLayout/types.js.map +1 -0
- package/built/src/utils/drawio/drawioXml.d.ts +24 -0
- package/built/src/utils/drawio/drawioXml.js +47 -0
- package/built/src/utils/drawio/drawioXml.js.map +1 -0
- package/built/src/utils/drawio/index.d.ts +2 -0
- package/built/src/utils/drawio/index.js +10 -0
- package/built/src/utils/drawio/index.js.map +1 -0
- package/built/src/utils/driverUtil.d.ts +1 -1
- package/built/src/utils/driverUtil.js.map +1 -1
- package/built/src/utils/er/erDiagramDrawioGenerator.d.ts +26 -0
- package/built/src/utils/er/erDiagramDrawioGenerator.js +99 -0
- package/built/src/utils/er/erDiagramDrawioGenerator.js.map +1 -0
- package/built/src/utils/er/erDiagramDrawioGeneratorAuto.d.ts +2 -0
- package/built/src/utils/er/erDiagramDrawioGeneratorAuto.js +103 -0
- package/built/src/utils/er/erDiagramDrawioGeneratorAuto.js.map +1 -0
- package/built/src/utils/er/erDiagramGenerator.d.ts +7 -0
- package/built/src/utils/er/erDiagramGenerator.js +321 -0
- package/built/src/utils/er/erDiagramGenerator.js.map +1 -0
- package/built/src/utils/er/index.d.ts +4 -0
- package/built/src/utils/er/index.js +13 -0
- package/built/src/utils/er/index.js.map +1 -0
- package/built/src/utils/er/types.d.ts +31 -0
- package/built/src/utils/er/types.js +3 -0
- package/built/src/utils/er/types.js.map +1 -0
- package/built/src/utils/index.d.ts +1 -0
- package/built/src/utils/index.js +1 -0
- package/built/src/utils/index.js.map +1 -1
- package/built/src/utils/log/LogParser.js.map +1 -1
- package/built/src/utils/log/buildSqlExecutions.js +3 -4
- package/built/src/utils/log/buildSqlExecutions.js.map +1 -1
- package/built/src/utils/log/classify/classifyEvent.js +2 -3
- package/built/src/utils/log/classify/classifyEvent.js.map +1 -1
- package/built/src/utils/log/detect/presetDetector.js +4 -5
- package/built/src/utils/log/detect/presetDetector.js.map +1 -1
- package/built/src/utils/log/extract/runExtractors.js +1 -2
- package/built/src/utils/log/extract/runExtractors.js.map +1 -1
- package/built/src/utils/log/logSummary.js +5 -5
- package/built/src/utils/log/logSummary.js.map +1 -1
- package/built/src/utils/log/pattern/logEventPattern.js +2 -3
- package/built/src/utils/log/pattern/logEventPattern.js.map +1 -1
- package/built/src/utils/log/rdh/convertExtractedSqlRdhResult.js +2 -3
- package/built/src/utils/log/rdh/convertExtractedSqlRdhResult.js.map +1 -1
- package/built/src/utils/log/split/splitLogEvents.js +1 -2
- package/built/src/utils/log/split/splitLogEvents.js.map +1 -1
- package/built/src/utils/log/sql/removeSqlComments.js +2 -3
- package/built/src/utils/log/sql/removeSqlComments.js.map +1 -1
- package/built/src/utils/log/validator.js +8 -5
- package/built/src/utils/log/validator.js.map +1 -1
- package/package.json +13 -9
- package/built/src/resource/DbResource.d.ts +0 -373
- package/built/src/resource/DbResource.js +0 -836
- package/built/src/resource/DbResource.js.map +0 -1
- package/built/src/utils/cfn/architectureDiagram.d.ts +0 -3
- package/built/src/utils/cfn/architectureDiagram.js.map +0 -1
- package/built/src/utils/cfn/architectureTopology.js.map +0 -1
- package/built/src/utils/cfn/multiAzDeploymentDataPaths.d.ts +0 -27
- package/built/src/utils/cfn/multiAzDeploymentDataPaths.js.map +0 -1
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { LayoutGraph, LayoutResult } from './types';
|
|
2
|
+
export declare const estimateLabelSize: (text: string, fontSizePx?: number) => {
|
|
3
|
+
width: number;
|
|
4
|
+
height: number;
|
|
5
|
+
};
|
|
6
|
+
export declare const anchorFraction: (point: {
|
|
7
|
+
x: number;
|
|
8
|
+
y: number;
|
|
9
|
+
}, box: {
|
|
10
|
+
x: number;
|
|
11
|
+
y: number;
|
|
12
|
+
width: number;
|
|
13
|
+
height: number;
|
|
14
|
+
}) => {
|
|
15
|
+
x: number;
|
|
16
|
+
y: number;
|
|
17
|
+
};
|
|
18
|
+
export declare const stableSortGraph: (graph: LayoutGraph) => LayoutGraph;
|
|
19
|
+
export type ContainmentViolation = {
|
|
20
|
+
nodeId: string;
|
|
21
|
+
parentId: string;
|
|
22
|
+
reason: 'out-of-bounds';
|
|
23
|
+
};
|
|
24
|
+
export type OverlapViolation = {
|
|
25
|
+
nodeId: string;
|
|
26
|
+
otherNodeId: string;
|
|
27
|
+
};
|
|
28
|
+
export type LayoutValidationReport = {
|
|
29
|
+
containmentViolations: ContainmentViolation[];
|
|
30
|
+
siblingOverlaps: OverlapViolation[];
|
|
31
|
+
};
|
|
32
|
+
export declare const validateLayoutResult: (graph: LayoutGraph, result: LayoutResult) => LayoutValidationReport;
|
|
33
|
+
export declare const gridFallbackLayout: (graph: LayoutGraph) => LayoutResult;
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.gridFallbackLayout = exports.validateLayoutResult = exports.stableSortGraph = exports.anchorFraction = exports.estimateLabelSize = void 0;
|
|
4
|
+
const estimateLabelSize = (text, fontSizePx = 12) => ({
|
|
5
|
+
width: Math.ceil(text.length * fontSizePx * 0.62) + 16,
|
|
6
|
+
height: Math.ceil(fontSizePx * 1.6),
|
|
7
|
+
});
|
|
8
|
+
exports.estimateLabelSize = estimateLabelSize;
|
|
9
|
+
const anchorFraction = (point, box) => ({
|
|
10
|
+
x: Math.min(1, Math.max(0, box.width === 0 ? 0.5 : (point.x - box.x) / box.width)),
|
|
11
|
+
y: Math.min(1, Math.max(0, box.height === 0 ? 0.5 : (point.y - box.y) / box.height)),
|
|
12
|
+
});
|
|
13
|
+
exports.anchorFraction = anchorFraction;
|
|
14
|
+
const stableSortGraph = (graph) => (Object.assign(Object.assign({}, graph), { nodes: [...graph.nodes].sort((a, b) => a.id.localeCompare(b.id)), edges: [...graph.edges].sort((a, b) => a.id.localeCompare(b.id)) }));
|
|
15
|
+
exports.stableSortGraph = stableSortGraph;
|
|
16
|
+
const validateLayoutResult = (graph, result) => {
|
|
17
|
+
const containmentViolations = [];
|
|
18
|
+
const siblingOverlaps = [];
|
|
19
|
+
const childrenByParent = new Map();
|
|
20
|
+
graph.nodes.forEach((node) => {
|
|
21
|
+
var _a, _b;
|
|
22
|
+
const key = (_a = node.parentId) !== null && _a !== void 0 ? _a : '';
|
|
23
|
+
childrenByParent.set(key, [...((_b = childrenByParent.get(key)) !== null && _b !== void 0 ? _b : []), node]);
|
|
24
|
+
});
|
|
25
|
+
childrenByParent.forEach((siblings, parentKey) => {
|
|
26
|
+
const parentBox = parentKey ? result.nodes.get(parentKey) : undefined;
|
|
27
|
+
for (let i = 0; i < siblings.length; i++) {
|
|
28
|
+
const a = result.nodes.get(siblings[i].id);
|
|
29
|
+
if (!a)
|
|
30
|
+
continue;
|
|
31
|
+
if (parentBox) {
|
|
32
|
+
const withinX = a.x >= parentBox.x - 0.01 && a.x + a.width <= parentBox.x + parentBox.width + 0.01;
|
|
33
|
+
const withinY = a.y >= parentBox.y - 0.01 && a.y + a.height <= parentBox.y + parentBox.height + 0.01;
|
|
34
|
+
if (!withinX || !withinY) {
|
|
35
|
+
containmentViolations.push({
|
|
36
|
+
nodeId: siblings[i].id,
|
|
37
|
+
parentId: parentKey,
|
|
38
|
+
reason: 'out-of-bounds',
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
for (let j = i + 1; j < siblings.length; j++) {
|
|
43
|
+
const b = result.nodes.get(siblings[j].id);
|
|
44
|
+
if (!b)
|
|
45
|
+
continue;
|
|
46
|
+
const overlapsX = a.x < b.x + b.width && b.x < a.x + a.width;
|
|
47
|
+
const overlapsY = a.y < b.y + b.height && b.y < a.y + a.height;
|
|
48
|
+
if (overlapsX && overlapsY) {
|
|
49
|
+
siblingOverlaps.push({ nodeId: siblings[i].id, otherNodeId: siblings[j].id });
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
return { containmentViolations, siblingOverlaps };
|
|
55
|
+
};
|
|
56
|
+
exports.validateLayoutResult = validateLayoutResult;
|
|
57
|
+
const gridFallbackLayout = (graph) => {
|
|
58
|
+
const nodes = new Map();
|
|
59
|
+
const sorted = (0, exports.stableSortGraph)(graph);
|
|
60
|
+
const childrenByParent = new Map();
|
|
61
|
+
sorted.nodes.forEach((node) => {
|
|
62
|
+
var _a, _b;
|
|
63
|
+
const key = (_a = node.parentId) !== null && _a !== void 0 ? _a : '';
|
|
64
|
+
childrenByParent.set(key, [...((_b = childrenByParent.get(key)) !== null && _b !== void 0 ? _b : []), node]);
|
|
65
|
+
});
|
|
66
|
+
const GAP = 40;
|
|
67
|
+
const COLUMNS = 3;
|
|
68
|
+
const layoutGroup = (parentKey, originX, originY) => {
|
|
69
|
+
var _a;
|
|
70
|
+
const children = (_a = childrenByParent.get(parentKey)) !== null && _a !== void 0 ? _a : [];
|
|
71
|
+
let cursorX = 0;
|
|
72
|
+
let cursorY = 0;
|
|
73
|
+
let rowHeight = 0;
|
|
74
|
+
let maxX = 0;
|
|
75
|
+
children.forEach((child, index) => {
|
|
76
|
+
var _a;
|
|
77
|
+
if (index > 0 && index % COLUMNS === 0) {
|
|
78
|
+
cursorX = 0;
|
|
79
|
+
cursorY += rowHeight + GAP;
|
|
80
|
+
rowHeight = 0;
|
|
81
|
+
}
|
|
82
|
+
const childHasChildren = ((_a = childrenByParent.get(child.id)) !== null && _a !== void 0 ? _a : []).length > 0;
|
|
83
|
+
const size = childHasChildren
|
|
84
|
+
? layoutGroup(child.id, originX + cursorX, originY + cursorY)
|
|
85
|
+
: { width: child.width, height: child.height };
|
|
86
|
+
nodes.set(child.id, {
|
|
87
|
+
id: child.id,
|
|
88
|
+
x: originX + cursorX,
|
|
89
|
+
y: originY + cursorY,
|
|
90
|
+
width: size.width,
|
|
91
|
+
height: size.height,
|
|
92
|
+
});
|
|
93
|
+
cursorX += size.width + GAP;
|
|
94
|
+
rowHeight = Math.max(rowHeight, size.height);
|
|
95
|
+
maxX = Math.max(maxX, cursorX - GAP);
|
|
96
|
+
});
|
|
97
|
+
return { width: Math.max(maxX, 1), height: cursorY + rowHeight };
|
|
98
|
+
};
|
|
99
|
+
layoutGroup('', 0, 0);
|
|
100
|
+
const edges = new Map();
|
|
101
|
+
graph.edges.forEach((edge) => {
|
|
102
|
+
const source = nodes.get(edge.source.nodeId);
|
|
103
|
+
const target = nodes.get(edge.target.nodeId);
|
|
104
|
+
if (!source || !target)
|
|
105
|
+
return;
|
|
106
|
+
edges.set(edge.id, {
|
|
107
|
+
id: edge.id,
|
|
108
|
+
sourcePoint: { x: source.x + source.width / 2, y: source.y + source.height / 2 },
|
|
109
|
+
targetPoint: { x: target.x + target.width / 2, y: target.y + target.height / 2 },
|
|
110
|
+
bendPoints: [],
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
return { nodes, edges, usedAutoLayout: false };
|
|
114
|
+
};
|
|
115
|
+
exports.gridFallbackLayout = gridFallbackLayout;
|
|
116
|
+
//# sourceMappingURL=normalizeLayout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalizeLayout.js","sourceRoot":"","sources":["../../../../src/utils/diagramLayout/normalizeLayout.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
export type LayoutPort = {
|
|
2
|
+
id: string;
|
|
3
|
+
x: number;
|
|
4
|
+
y: number;
|
|
5
|
+
width?: number;
|
|
6
|
+
height?: number;
|
|
7
|
+
};
|
|
8
|
+
export type LayoutNode = {
|
|
9
|
+
id: string;
|
|
10
|
+
width: number;
|
|
11
|
+
height: number;
|
|
12
|
+
parentId?: string;
|
|
13
|
+
ports?: LayoutPort[];
|
|
14
|
+
layoutOptions?: Record<string, string>;
|
|
15
|
+
};
|
|
16
|
+
export type LayoutEndpoint = {
|
|
17
|
+
nodeId: string;
|
|
18
|
+
portId?: string;
|
|
19
|
+
};
|
|
20
|
+
export type LayoutEdge = {
|
|
21
|
+
id: string;
|
|
22
|
+
source: LayoutEndpoint;
|
|
23
|
+
target: LayoutEndpoint;
|
|
24
|
+
label?: string;
|
|
25
|
+
labelSize?: {
|
|
26
|
+
width: number;
|
|
27
|
+
height: number;
|
|
28
|
+
};
|
|
29
|
+
layoutOptions?: Record<string, string>;
|
|
30
|
+
};
|
|
31
|
+
export type LayoutDirection = 'DOWN' | 'RIGHT' | 'UP' | 'LEFT';
|
|
32
|
+
export type LayoutGraph = {
|
|
33
|
+
id: string;
|
|
34
|
+
direction: LayoutDirection;
|
|
35
|
+
nodes: LayoutNode[];
|
|
36
|
+
edges: LayoutEdge[];
|
|
37
|
+
layoutOptions?: Record<string, string>;
|
|
38
|
+
};
|
|
39
|
+
export type LayoutPoint = {
|
|
40
|
+
x: number;
|
|
41
|
+
y: number;
|
|
42
|
+
};
|
|
43
|
+
export type ComputedNodeLayout = {
|
|
44
|
+
id: string;
|
|
45
|
+
x: number;
|
|
46
|
+
y: number;
|
|
47
|
+
width: number;
|
|
48
|
+
height: number;
|
|
49
|
+
};
|
|
50
|
+
export type ComputedEdgeLayout = {
|
|
51
|
+
id: string;
|
|
52
|
+
sourcePoint: LayoutPoint;
|
|
53
|
+
targetPoint: LayoutPoint;
|
|
54
|
+
bendPoints: LayoutPoint[];
|
|
55
|
+
};
|
|
56
|
+
export type LayoutResult = {
|
|
57
|
+
nodes: Map<string, ComputedNodeLayout>;
|
|
58
|
+
edges: Map<string, ComputedEdgeLayout>;
|
|
59
|
+
usedAutoLayout: boolean;
|
|
60
|
+
};
|
|
61
|
+
export type LayoutEngineOptions = {
|
|
62
|
+
timeoutMs?: number;
|
|
63
|
+
useWorker?: boolean;
|
|
64
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/utils/diagramLayout/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export declare const xmlEscape: (value: string) => string;
|
|
2
|
+
export declare const drawioPage: (id: string, name: string, cells: string[], rootId?: string, layerId?: string) => string;
|
|
3
|
+
export declare const wrapDrawioPages: (pages: string[]) => string;
|
|
4
|
+
export declare const pageLink: (pageId: string) => string;
|
|
5
|
+
export type DrawioLineLegendItem = {
|
|
6
|
+
id: string;
|
|
7
|
+
label: string;
|
|
8
|
+
color: string;
|
|
9
|
+
width: number;
|
|
10
|
+
dashed?: boolean;
|
|
11
|
+
bidirectional?: boolean;
|
|
12
|
+
};
|
|
13
|
+
type DrawioLineLegendParams = {
|
|
14
|
+
id?: string;
|
|
15
|
+
title: string;
|
|
16
|
+
x: number;
|
|
17
|
+
y: number;
|
|
18
|
+
width: number;
|
|
19
|
+
items: DrawioLineLegendItem[];
|
|
20
|
+
parent?: string;
|
|
21
|
+
jumpSize?: number;
|
|
22
|
+
};
|
|
23
|
+
export declare const drawioLineLegendCells: ({ id, title, x, y, width, items, parent, jumpSize, }: DrawioLineLegendParams) => string[];
|
|
24
|
+
export {};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.drawioLineLegendCells = exports.pageLink = exports.wrapDrawioPages = exports.drawioPage = exports.xmlEscape = void 0;
|
|
4
|
+
const xmlEscape = (value) => value
|
|
5
|
+
.replace(/&/g, '&')
|
|
6
|
+
.replace(/</g, '<')
|
|
7
|
+
.replace(/>/g, '>')
|
|
8
|
+
.replace(/"/g, '"')
|
|
9
|
+
.replace(/'/g, ''');
|
|
10
|
+
exports.xmlEscape = xmlEscape;
|
|
11
|
+
const drawioPage = (id, name, cells, rootId = '0', layerId = '1') => [
|
|
12
|
+
`<diagram id="${(0, exports.xmlEscape)(id)}" name="${(0, exports.xmlEscape)(name)}">`,
|
|
13
|
+
'<mxGraphModel dx="1600" dy="1000" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1600" pageHeight="1000" math="0" shadow="0">',
|
|
14
|
+
`<root><mxCell id="${rootId}"/><mxCell id="${layerId}" parent="${rootId}"/>${cells.join('')}</root>`,
|
|
15
|
+
'</mxGraphModel>',
|
|
16
|
+
'</diagram>',
|
|
17
|
+
].join('');
|
|
18
|
+
exports.drawioPage = drawioPage;
|
|
19
|
+
const wrapDrawioPages = (pages) => [
|
|
20
|
+
'<?xml version="1.0" encoding="UTF-8"?>',
|
|
21
|
+
'<mxfile host="app.diagrams.net" modified="2026-08-07T00:00:00.000Z" agent="db-drivers" version="24.7.17">',
|
|
22
|
+
...pages,
|
|
23
|
+
'</mxfile>',
|
|
24
|
+
].join('');
|
|
25
|
+
exports.wrapDrawioPages = wrapDrawioPages;
|
|
26
|
+
const pageLink = (pageId) => ` link="#${(0, exports.xmlEscape)(pageId)}"`;
|
|
27
|
+
exports.pageLink = pageLink;
|
|
28
|
+
const drawioLineLegendCells = ({ id = 'legend', title, x, y, width, items, parent = '1', jumpSize = 12, }) => {
|
|
29
|
+
const height = 135;
|
|
30
|
+
const horizontalPadding = 15;
|
|
31
|
+
const slotWidth = (width - horizontalPadding * 2) / items.length;
|
|
32
|
+
const lineStartOffset = 10;
|
|
33
|
+
const lineLength = Math.min(85, slotWidth * 0.38);
|
|
34
|
+
const labelGap = 10;
|
|
35
|
+
const labelWidth = slotWidth - lineStartOffset - lineLength - labelGap - 5;
|
|
36
|
+
const cells = [
|
|
37
|
+
`<mxCell id="${id}" value="${(0, exports.xmlEscape)(title)}" style="swimlane;html=1;rounded=1;horizontal=1;startSize=30;fillColor=#f8fafc;strokeColor=#94a3b8;fontStyle=1;" vertex="1" parent="${parent}"><mxGeometry x="${x}" y="${y}" width="${width}" height="${height}" as="geometry"/></mxCell>`,
|
|
38
|
+
];
|
|
39
|
+
items.forEach((item, index) => {
|
|
40
|
+
const slotX = horizontalPadding + index * slotWidth;
|
|
41
|
+
cells.push(`<mxCell id="${id}_${item.id}_line" value="" style="edgeStyle=none;rounded=0;jumpStyle=arc;jumpSize=${jumpSize};html=1;strokeColor=${item.color};strokeWidth=${item.width};${item.dashed ? 'dashed=1;dashPattern=8 8;' : ''}${item.bidirectional ? 'startArrow=block;' : ''}endArrow=block;" edge="1" parent="${id}"><mxGeometry relative="1" as="geometry"><mxPoint x="${slotX + lineStartOffset}" y="70" as="sourcePoint"/><mxPoint x="${slotX + lineStartOffset + lineLength}" y="70" as="targetPoint"/></mxGeometry></mxCell>`);
|
|
42
|
+
cells.push(`<mxCell id="${id}_${item.id}_label" value="${(0, exports.xmlEscape)(item.label)}" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;" vertex="1" parent="${id}"><mxGeometry x="${slotX + lineStartOffset + lineLength + labelGap}" y="45" width="${labelWidth}" height="50" as="geometry"/></mxCell>`);
|
|
43
|
+
});
|
|
44
|
+
return cells;
|
|
45
|
+
};
|
|
46
|
+
exports.drawioLineLegendCells = drawioLineLegendCells;
|
|
47
|
+
//# sourceMappingURL=drawioXml.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drawioXml.js","sourceRoot":"","sources":["../../../../src/utils/drawio/drawioXml.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.xmlEscape = exports.wrapDrawioPages = exports.pageLink = exports.drawioPage = exports.drawioLineLegendCells = void 0;
|
|
4
|
+
var drawioXml_1 = require("./drawioXml");
|
|
5
|
+
Object.defineProperty(exports, "drawioLineLegendCells", { enumerable: true, get: function () { return drawioXml_1.drawioLineLegendCells; } });
|
|
6
|
+
Object.defineProperty(exports, "drawioPage", { enumerable: true, get: function () { return drawioXml_1.drawioPage; } });
|
|
7
|
+
Object.defineProperty(exports, "pageLink", { enumerable: true, get: function () { return drawioXml_1.pageLink; } });
|
|
8
|
+
Object.defineProperty(exports, "wrapDrawioPages", { enumerable: true, get: function () { return drawioXml_1.wrapDrawioPages; } });
|
|
9
|
+
Object.defineProperty(exports, "xmlEscape", { enumerable: true, get: function () { return drawioXml_1.xmlEscape; } });
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utils/drawio/index.ts"],"names":[],"mappings":";;;AAGA,yCAMqB;AALnB,kHAAA,qBAAqB,OAAA;AACrB,uGAAA,UAAU,OAAA;AACV,qGAAA,QAAQ,OAAA;AACR,4GAAA,eAAe,OAAA;AACf,sGAAA,SAAS,OAAA"}
|
|
@@ -7,7 +7,7 @@ export declare const setRdhMetaAndStatement: ({ connectionName, useDatabase, par
|
|
|
7
7
|
useDatabase?: string;
|
|
8
8
|
params: QueryParams;
|
|
9
9
|
rdb: ResultSetDataBuilder;
|
|
10
|
-
type: Statement[
|
|
10
|
+
type: Statement["type"];
|
|
11
11
|
qst: QStatement;
|
|
12
12
|
tableComment?: string;
|
|
13
13
|
dbTable?: ITableComparable;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"driverUtil.js","sourceRoot":"","sources":["../../../src/utils/driverUtil.ts"],"names":[],"mappings":";;;;AAAA,0CAU0B;AAC1B,oCAKkB;AAClB,0DAA0B;AAG1B,wCAA4E;AAC5E,wCAA0C;AAEnC,MAAM,sBAAsB,GAAG,CAAC,EACrC,cAAc,EACd,WAAW,EACX,MAAM,EACN,GAAG,EACH,IAAI,EACJ,GAAG,EACH,YAAY,EACZ,OAAO,GAUR,EAAQ,EAAE;;IACT,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IACzC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;IACzB,IAAI,UAAU,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,UAAU,CAAC;IAClC,IAAI,SAAS,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,SAAS,CAAC;IAChC,MAAM,OAAO,GAAG,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,mCAAI,YAAY,CAAC;IAC9C,IAAI,WAAW,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,WAAW,CAAC;IAEpC,IAAI,CAAC,UAAU,EAAE;
|
|
1
|
+
{"version":3,"file":"driverUtil.js","sourceRoot":"","sources":["../../../src/utils/driverUtil.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { xmlEscape } from '../drawio';
|
|
2
|
+
import { ERDiagramParams, TableRelation } from './types';
|
|
3
|
+
export { xmlEscape };
|
|
4
|
+
export declare const relationLabel: (relation: TableRelation) => string;
|
|
5
|
+
export declare const erRelationshipLegendCells: (legendY: number) => string[];
|
|
6
|
+
export declare const wrapErDiagramPage: (cells: string[]) => string;
|
|
7
|
+
export declare const tableCell: (id: string, tableName: string, comment: string, columns: {
|
|
8
|
+
name: string;
|
|
9
|
+
key: string;
|
|
10
|
+
type: string;
|
|
11
|
+
nullable: boolean;
|
|
12
|
+
}[], x: number, y: number, width: number, height: number) => string;
|
|
13
|
+
export type ErTableColumnLayout = {
|
|
14
|
+
name: string;
|
|
15
|
+
key: string;
|
|
16
|
+
type: string;
|
|
17
|
+
nullable: boolean;
|
|
18
|
+
};
|
|
19
|
+
export type ErTableLayout = {
|
|
20
|
+
item: ERDiagramParams['tableItems'][number];
|
|
21
|
+
index: number;
|
|
22
|
+
columnsData: ErTableColumnLayout[];
|
|
23
|
+
height: number;
|
|
24
|
+
};
|
|
25
|
+
export declare const buildTableLayouts: (params: ERDiagramParams) => ErTableLayout[];
|
|
26
|
+
export declare const createDrawioErDiagram: (params: ERDiagramParams) => string;
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createDrawioErDiagram = exports.buildTableLayouts = exports.tableCell = exports.wrapErDiagramPage = exports.erRelationshipLegendCells = exports.relationLabel = exports.xmlEscape = void 0;
|
|
4
|
+
const rdh_1 = require("@l-v-yonsama/rdh");
|
|
5
|
+
const drawio_1 = require("../drawio");
|
|
6
|
+
Object.defineProperty(exports, "xmlEscape", { enumerable: true, get: function () { return drawio_1.xmlEscape; } });
|
|
7
|
+
const relationLabel = (relation) => `${relation.name}: ${relation.referencedFrom.columnName} ${relation.referencedFrom.cardinality} → ${relation.referenceTo.columnName} ${relation.referenceTo.cardinality}`;
|
|
8
|
+
exports.relationLabel = relationLabel;
|
|
9
|
+
const erRelationshipLegendCells = (legendY) => [
|
|
10
|
+
`<mxCell id="legend_title" value="Relationship legend" style="text;html=1;align=left;verticalAlign=middle;fontSize=12;fontStyle=1;fontColor=#475569;" vertex="1" parent="1"><mxGeometry x="40" y="${legendY}" width="180" height="22" as="geometry"/></mxCell>`,
|
|
11
|
+
`<mxCell id="legend_solid_line" style="shape=line;html=1;rounded=0;strokeColor=#64748b;strokeWidth=2;" vertex="1" parent="1"><mxGeometry x="40" y="${legendY + 30}" width="42" height="2" as="geometry"/></mxCell>`,
|
|
12
|
+
`<mxCell id="legend_solid_text" value="Solid: identifying relationship" style="text;html=1;align=left;verticalAlign=middle;fontSize=12;fontColor=#64748b;" vertex="1" parent="1"><mxGeometry x="92" y="${legendY + 19}" width="240" height="22" as="geometry"/></mxCell>`,
|
|
13
|
+
`<mxCell id="legend_dashed_line" style="shape=line;html=1;rounded=0;strokeColor=#64748b;strokeWidth=2;dashed=1;dashPattern=6 6;" vertex="1" parent="1"><mxGeometry x="40" y="${legendY + 60}" width="42" height="2" as="geometry"/></mxCell>`,
|
|
14
|
+
`<mxCell id="legend_dashed_text" value="Dashed: non-identifying relationship" style="text;html=1;align=left;verticalAlign=middle;fontSize=12;fontColor=#64748b;" vertex="1" parent="1"><mxGeometry x="92" y="${legendY + 49}" width="260" height="22" as="geometry"/></mxCell>`,
|
|
15
|
+
];
|
|
16
|
+
exports.erRelationshipLegendCells = erRelationshipLegendCells;
|
|
17
|
+
const wrapErDiagramPage = (cells) => (0, drawio_1.wrapDrawioPages)([(0, drawio_1.drawioPage)('er-diagram', 'ER Diagram', cells)]);
|
|
18
|
+
exports.wrapErDiagramPage = wrapErDiagramPage;
|
|
19
|
+
const tableCell = (id, tableName, comment, columns, x, y, width, height) => {
|
|
20
|
+
const header = comment ? `${tableName} — ${comment}` : tableName;
|
|
21
|
+
const headerHeight = 32;
|
|
22
|
+
const keyWidth = 68;
|
|
23
|
+
const rowHeight = 24;
|
|
24
|
+
const cells = columns.map((column, index) => {
|
|
25
|
+
const value = `${column.name}: ${column.type}`;
|
|
26
|
+
const rowY = headerHeight + index * rowHeight;
|
|
27
|
+
return [
|
|
28
|
+
`<mxCell id="${id}_key_${index}" value="${(0, drawio_1.xmlEscape)(column.key)}" style="text;html=1;align=left;verticalAlign=middle;strokeColor=#c9d7d7;fillColor=none;spacingLeft=8;fontStyle=1;fontSize=12;" vertex="1" parent="${id}"><mxGeometry x="0" y="${rowY}" width="${keyWidth}" height="${rowHeight}" as="geometry"/></mxCell>`,
|
|
29
|
+
`<mxCell id="${id}_column_${index}" value="${(0, drawio_1.xmlEscape)(value)}" style="text;html=1;align=left;verticalAlign=middle;strokeColor=#c9d7d7;fillColor=none;spacingLeft=8;" vertex="1" parent="${id}"><mxGeometry x="${keyWidth}" y="${rowY}" width="${width - keyWidth}" height="${rowHeight}" as="geometry"/></mxCell>`,
|
|
30
|
+
].join('');
|
|
31
|
+
}).join('');
|
|
32
|
+
return `<mxCell id="${id}" value="${(0, drawio_1.xmlEscape)(header)}" style="swimlane;html=1;rounded=1;horizontal=1;startSize=${headerHeight};fillColor=#2aaea7;swimlaneFillColor=#f5fbfa;fontColor=#ffffff;strokeColor=#4b8f8d;fontStyle=1;align=center;verticalAlign=middle;whiteSpace=nowrap;overflow=hidden;spacing=8;" vertex="1" parent="1"><mxGeometry x="${x}" y="${y}" width="${width}" height="${height}" as="geometry"/></mxCell>${cells}`;
|
|
33
|
+
};
|
|
34
|
+
exports.tableCell = tableCell;
|
|
35
|
+
const buildTableLayouts = (params) => params.tableItems.map((item, index) => {
|
|
36
|
+
const selectedColumns = item.tableRes.children.filter((column) => item.columnNames.includes(column.name));
|
|
37
|
+
const columnsData = selectedColumns.map((column) => {
|
|
38
|
+
var _a, _b;
|
|
39
|
+
const isForeignKey = Boolean((_b = (_a = item.tableRes.foreignKeys) === null || _a === void 0 ? void 0 : _a.referenceTo) === null || _b === void 0 ? void 0 : _b[column.name]);
|
|
40
|
+
const key = column.primaryKey ? 'PK' : isForeignKey ? `FK${column.nullable ? '' : ' NN'}` : column.nullable ? '' : 'NN';
|
|
41
|
+
return {
|
|
42
|
+
name: column.name,
|
|
43
|
+
key,
|
|
44
|
+
type: (0, rdh_1.displayGeneralColumnType)(column.colType),
|
|
45
|
+
nullable: column.nullable,
|
|
46
|
+
};
|
|
47
|
+
});
|
|
48
|
+
return {
|
|
49
|
+
item,
|
|
50
|
+
index,
|
|
51
|
+
columnsData,
|
|
52
|
+
height: Math.max(90, 32 + columnsData.length * 24),
|
|
53
|
+
};
|
|
54
|
+
});
|
|
55
|
+
exports.buildTableLayouts = buildTableLayouts;
|
|
56
|
+
const createDrawioErDiagram = (params) => {
|
|
57
|
+
const tableWidth = 280;
|
|
58
|
+
const columnGap = 45;
|
|
59
|
+
const rowGap = 35;
|
|
60
|
+
const tableX = 40;
|
|
61
|
+
const tableY = 70;
|
|
62
|
+
const columns = 3;
|
|
63
|
+
const cells = [];
|
|
64
|
+
const tableIds = new Map();
|
|
65
|
+
const tableLayouts = (0, exports.buildTableLayouts)(params);
|
|
66
|
+
const rowHeights = [];
|
|
67
|
+
tableLayouts.forEach((layout) => {
|
|
68
|
+
var _a;
|
|
69
|
+
const rowIndex = Math.floor(layout.index / columns);
|
|
70
|
+
rowHeights[rowIndex] = Math.max((_a = rowHeights[rowIndex]) !== null && _a !== void 0 ? _a : 0, layout.height);
|
|
71
|
+
});
|
|
72
|
+
const rowOffsets = rowHeights.reduce((offsets, height, index) => {
|
|
73
|
+
offsets[index] = index === 0 ? tableY : offsets[index - 1] + rowHeights[index - 1] + rowGap;
|
|
74
|
+
return offsets;
|
|
75
|
+
}, []);
|
|
76
|
+
tableLayouts.forEach((layout) => {
|
|
77
|
+
var _a;
|
|
78
|
+
const tableId = `table_${layout.index}`;
|
|
79
|
+
tableIds.set(layout.item.tableRes.name, tableId);
|
|
80
|
+
const x = tableX + (layout.index % columns) * (tableWidth + columnGap);
|
|
81
|
+
const y = rowOffsets[Math.floor(layout.index / columns)];
|
|
82
|
+
cells.push((0, exports.tableCell)(tableId, layout.item.tableRes.name, (_a = layout.item.tableRes.comment) !== null && _a !== void 0 ? _a : '', layout.columnsData, x, y, tableWidth, layout.height));
|
|
83
|
+
});
|
|
84
|
+
params.relations.forEach((relation, index) => {
|
|
85
|
+
const source = tableIds.get(relation.referencedFrom.tableName);
|
|
86
|
+
const target = tableIds.get(relation.referenceTo.tableName);
|
|
87
|
+
if (!source || !target)
|
|
88
|
+
return;
|
|
89
|
+
const label = (0, exports.relationLabel)(relation);
|
|
90
|
+
const dashed = relation.dotted ? 'dashed=1;dashPattern=6 6;' : '';
|
|
91
|
+
cells.push(`<mxCell id="edge_${index}" value="${(0, drawio_1.xmlEscape)(label)}" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#64748b;strokeWidth=2;${dashed}endArrow=block;" edge="1" parent="1" source="${source}" target="${target}"><mxGeometry relative="1" as="geometry"/></mxCell>`);
|
|
92
|
+
});
|
|
93
|
+
const diagramHeight = rowHeights.reduce((total, height) => total + height, 0) + Math.max(0, rowHeights.length - 1) * rowGap;
|
|
94
|
+
const legendY = tableY + diagramHeight + 20;
|
|
95
|
+
cells.push(...(0, exports.erRelationshipLegendCells)(legendY));
|
|
96
|
+
return (0, exports.wrapErDiagramPage)(cells);
|
|
97
|
+
};
|
|
98
|
+
exports.createDrawioErDiagram = createDrawioErDiagram;
|
|
99
|
+
//# sourceMappingURL=erDiagramDrawioGenerator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"erDiagramDrawioGenerator.js","sourceRoot":"","sources":["../../../../src/utils/er/erDiagramDrawioGenerator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createDrawioErDiagramAsync = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const diagramLayout_1 = require("../diagramLayout");
|
|
6
|
+
const erDiagramDrawioGenerator_1 = require("./erDiagramDrawioGenerator");
|
|
7
|
+
const tableWidth = 280;
|
|
8
|
+
const headerHeight = 32;
|
|
9
|
+
const rowHeight = 24;
|
|
10
|
+
const columnPorts = (tableIndex, columnsData) => columnsData.flatMap((column, rowIndex) => {
|
|
11
|
+
const y = headerHeight + rowIndex * rowHeight + rowHeight / 2;
|
|
12
|
+
return [
|
|
13
|
+
{ id: `table_${tableIndex}_${column.name}_left`, x: 0, y },
|
|
14
|
+
{ id: `table_${tableIndex}_${column.name}_right`, x: tableWidth, y },
|
|
15
|
+
];
|
|
16
|
+
});
|
|
17
|
+
const createDrawioErDiagramAsync = (params) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
18
|
+
const tableLayouts = (0, erDiagramDrawioGenerator_1.buildTableLayouts)(params);
|
|
19
|
+
const tableIds = new Map();
|
|
20
|
+
const tableIndexByName = new Map();
|
|
21
|
+
const displayedColumnNamesByIndex = new Map();
|
|
22
|
+
tableLayouts.forEach((layout) => {
|
|
23
|
+
tableIds.set(layout.item.tableRes.name, `table_${layout.index}`);
|
|
24
|
+
tableIndexByName.set(layout.item.tableRes.name, layout.index);
|
|
25
|
+
displayedColumnNamesByIndex.set(layout.index, new Set(layout.columnsData.map((c) => c.name)));
|
|
26
|
+
});
|
|
27
|
+
const layoutNodes = tableLayouts.map((layout) => ({
|
|
28
|
+
id: `table_${layout.index}`,
|
|
29
|
+
width: tableWidth,
|
|
30
|
+
height: layout.height,
|
|
31
|
+
ports: columnPorts(layout.index, layout.columnsData),
|
|
32
|
+
}));
|
|
33
|
+
const layoutEdges = params.relations
|
|
34
|
+
.map((relation, index) => {
|
|
35
|
+
var _a, _b;
|
|
36
|
+
const fromIndex = tableIndexByName.get(relation.referencedFrom.tableName);
|
|
37
|
+
const toIndex = tableIndexByName.get(relation.referenceTo.tableName);
|
|
38
|
+
if (fromIndex === undefined || toIndex === undefined)
|
|
39
|
+
return undefined;
|
|
40
|
+
const label = (0, erDiagramDrawioGenerator_1.relationLabel)(relation);
|
|
41
|
+
const fromColumnShown = (_a = displayedColumnNamesByIndex.get(fromIndex)) === null || _a === void 0 ? void 0 : _a.has(relation.referencedFrom.columnName);
|
|
42
|
+
const toColumnShown = (_b = displayedColumnNamesByIndex.get(toIndex)) === null || _b === void 0 ? void 0 : _b.has(relation.referenceTo.columnName);
|
|
43
|
+
return {
|
|
44
|
+
id: `edge_${index}`,
|
|
45
|
+
source: {
|
|
46
|
+
nodeId: `table_${fromIndex}`,
|
|
47
|
+
portId: fromColumnShown ? `table_${fromIndex}_${relation.referencedFrom.columnName}_right` : undefined,
|
|
48
|
+
},
|
|
49
|
+
target: {
|
|
50
|
+
nodeId: `table_${toIndex}`,
|
|
51
|
+
portId: toColumnShown ? `table_${toIndex}_${relation.referenceTo.columnName}_left` : undefined,
|
|
52
|
+
},
|
|
53
|
+
label,
|
|
54
|
+
labelSize: (0, diagramLayout_1.estimateLabelSize)(label),
|
|
55
|
+
};
|
|
56
|
+
})
|
|
57
|
+
.filter((edge) => edge !== undefined);
|
|
58
|
+
const layout = yield (0, diagramLayout_1.computeAutoLayout)({
|
|
59
|
+
id: 'er-diagram',
|
|
60
|
+
direction: 'RIGHT',
|
|
61
|
+
nodes: layoutNodes,
|
|
62
|
+
edges: layoutEdges,
|
|
63
|
+
layoutOptions: {
|
|
64
|
+
'elk.layered.spacing.nodeNodeBetweenLayers': '30',
|
|
65
|
+
},
|
|
66
|
+
});
|
|
67
|
+
const cells = [];
|
|
68
|
+
tableLayouts.forEach((tableLayout) => {
|
|
69
|
+
var _a;
|
|
70
|
+
const box = layout.nodes.get(`table_${tableLayout.index}`);
|
|
71
|
+
if (!box)
|
|
72
|
+
return;
|
|
73
|
+
cells.push((0, erDiagramDrawioGenerator_1.tableCell)(`table_${tableLayout.index}`, tableLayout.item.tableRes.name, (_a = tableLayout.item.tableRes.comment) !== null && _a !== void 0 ? _a : '', tableLayout.columnsData, box.x, box.y, tableWidth, box.height));
|
|
74
|
+
});
|
|
75
|
+
params.relations.forEach((relation, index) => {
|
|
76
|
+
const source = tableIds.get(relation.referencedFrom.tableName);
|
|
77
|
+
const target = tableIds.get(relation.referenceTo.tableName);
|
|
78
|
+
const edge = layout.edges.get(`edge_${index}`);
|
|
79
|
+
if (!source || !target || !edge)
|
|
80
|
+
return;
|
|
81
|
+
const sourceBox = layout.nodes.get(source);
|
|
82
|
+
const targetBox = layout.nodes.get(target);
|
|
83
|
+
const label = (0, erDiagramDrawioGenerator_1.relationLabel)(relation);
|
|
84
|
+
const dashed = relation.dotted ? 'dashed=1;dashPattern=6 6;' : '';
|
|
85
|
+
const anchorStyle = layout.usedAutoLayout && sourceBox && targetBox
|
|
86
|
+
? (function buildAnchorStyle() {
|
|
87
|
+
const exit = (0, diagramLayout_1.anchorFraction)(edge.sourcePoint, sourceBox);
|
|
88
|
+
const entry = (0, diagramLayout_1.anchorFraction)(edge.targetPoint, targetBox);
|
|
89
|
+
return `exitX=${exit.x};exitY=${exit.y};exitDx=0;exitDy=0;entryX=${entry.x};entryY=${entry.y};entryDx=0;entryDy=0;`;
|
|
90
|
+
})()
|
|
91
|
+
: '';
|
|
92
|
+
const pointsXml = layout.usedAutoLayout && edge.bendPoints.length > 0
|
|
93
|
+
? `<Array as="points">${edge.bendPoints.map((point) => `<mxPoint x="${point.x}" y="${point.y}"/>`).join('')}</Array>`
|
|
94
|
+
: '';
|
|
95
|
+
cells.push(`<mxCell id="edge_${index}" value="${(0, erDiagramDrawioGenerator_1.xmlEscape)(label)}" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#64748b;strokeWidth=2;${dashed}endArrow=block;labelBackgroundColor=#ffffff;${anchorStyle}" edge="1" parent="1" source="${source}" target="${target}"><mxGeometry relative="1" as="geometry">${pointsXml}<mxPoint as="offset" y="-10"/></mxGeometry></mxCell>`);
|
|
96
|
+
});
|
|
97
|
+
const maxHeight = Math.max(70, ...[...layout.nodes.values()].map((box) => box.y + box.height));
|
|
98
|
+
const legendY = maxHeight + 40;
|
|
99
|
+
cells.push(...(0, erDiagramDrawioGenerator_1.erRelationshipLegendCells)(legendY));
|
|
100
|
+
return (0, erDiagramDrawioGenerator_1.wrapErDiagramPage)(cells);
|
|
101
|
+
});
|
|
102
|
+
exports.createDrawioErDiagramAsync = createDrawioErDiagramAsync;
|
|
103
|
+
//# sourceMappingURL=erDiagramDrawioGeneratorAuto.js.map
|