bridgelist 1.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 +108 -0
- package/dist/analyzers/ast-analyzer.d.ts +10 -0
- package/dist/analyzers/ast-analyzer.js +288 -0
- package/dist/analyzers/ast-analyzer.js.map +1 -0
- package/dist/decorators/mapping-documentation.d.ts +2 -0
- package/dist/decorators/mapping-documentation.d.ts.map +1 -0
- package/dist/decorators/mapping-documentation.js +9 -0
- package/dist/decorators/mapping-documentation.js.map +1 -0
- package/dist/generators/html-generator.d.ts +1 -0
- package/dist/generators/html-generator.d.ts.map +1 -0
- package/dist/generators/html-generator.js +279 -0
- package/dist/generators/html-generator.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +25 -0
- package/dist/index.js.map +1 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/project-scanner.d.ts +21 -0
- package/dist/utils/project-scanner.js +175 -0
- package/dist/utils/project-scanner.js.map +1 -0
- package/docs/example-mapping.html +299 -0
- package/img.png +0 -0
- package/package.json +38 -0
- package/tsconfig.json +24 -0
package/README.md
ADDED
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
# bridgelist
|
|
2
|
+
|
|
3
|
+
[](https://www.npmjs.com/package/bridgelist)
|
|
4
|
+
[](https://opensource.org/licenses/ISC)
|
|
5
|
+
[](https://www.typescriptlang.org/)
|
|
6
|
+
|
|
7
|
+
A TypeScript-based tool for automatically documenting field mappings between different API systems. Generate documentation from your mapping code using simple decorators.
|
|
8
|
+
|
|
9
|
+

|
|
10
|
+
|
|
11
|
+
## Installation
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
npm install bridgelist
|
|
15
|
+
# or
|
|
16
|
+
yarn add bridgelist
|
|
17
|
+
# or
|
|
18
|
+
pnpm add bridgelist
|
|
19
|
+
```
|
|
20
|
+
## Features
|
|
21
|
+
- **Automatic Mapping Detection**: Analyzes your TypeScript code to identify mapping relationships
|
|
22
|
+
- **Decorator-based Configuration**: Add metadata to your mapping methods
|
|
23
|
+
- **HTML Documentation Generation**: Creates clear and interactive documentation
|
|
24
|
+
- **Supports Various Mapping Types**:
|
|
25
|
+
- Direct mappings
|
|
26
|
+
- Transformations
|
|
27
|
+
- Constant values
|
|
28
|
+
- Nested objects
|
|
29
|
+
|
|
30
|
+
## Usage
|
|
31
|
+
### Basic Usage
|
|
32
|
+
1. Import the necessary functions:
|
|
33
|
+
``` typescript
|
|
34
|
+
import { GenerateMappingDocumentation, generateDocumentation } from 'bridgelist';
|
|
35
|
+
```
|
|
36
|
+
1. Decorate your mapping methods:
|
|
37
|
+
``` typescript
|
|
38
|
+
class SimpleMapper {
|
|
39
|
+
@GenerateMappingDocumentation({
|
|
40
|
+
sourceSystem: 'System A',
|
|
41
|
+
targetSystem: 'System B',
|
|
42
|
+
description: 'Converts customer data from System A to System B'
|
|
43
|
+
})
|
|
44
|
+
mapCustomer(sourceData: any): any {
|
|
45
|
+
return {
|
|
46
|
+
id: sourceData.id,
|
|
47
|
+
firstName: sourceData.properties.firstname,
|
|
48
|
+
lastName: sourceData.properties.lastname,
|
|
49
|
+
// more mappings...
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
1. Generate the documentation:
|
|
55
|
+
``` typescript
|
|
56
|
+
// Scans the project and creates HTML documentation
|
|
57
|
+
generateDocumentation('./docs/api-mappings.html');
|
|
58
|
+
```
|
|
59
|
+
### Complex Mappings
|
|
60
|
+
The tool automatically recognizes different types of mappings:
|
|
61
|
+
``` typescript
|
|
62
|
+
class ComplexMapper {
|
|
63
|
+
@GenerateMappingDocumentation({
|
|
64
|
+
sourceSystem: 'CRM',
|
|
65
|
+
targetSystem: 'ERP',
|
|
66
|
+
description: 'Converts CRM contacts to ERP customers'
|
|
67
|
+
})
|
|
68
|
+
mapContactToCustomer(contact: any): any {
|
|
69
|
+
return {
|
|
70
|
+
// Direct mapping
|
|
71
|
+
customerId: contact.id,
|
|
72
|
+
|
|
73
|
+
// Constant value
|
|
74
|
+
defaultCountry: 'Germany',
|
|
75
|
+
|
|
76
|
+
// Transformation
|
|
77
|
+
fullName: `${contact.firstName} ${contact.lastName}`,
|
|
78
|
+
|
|
79
|
+
// Nested object
|
|
80
|
+
address: {
|
|
81
|
+
street: contact.address.streetName,
|
|
82
|
+
city: contact.address.city,
|
|
83
|
+
country: defaultCountry
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
```
|
|
89
|
+
## API Reference
|
|
90
|
+
### `GenerateMappingDocumentation(options)`
|
|
91
|
+
A decorator to mark mapping methods with metadata.
|
|
92
|
+
#### Parameters
|
|
93
|
+
- `options`: An object with the following properties:
|
|
94
|
+
- `sourceSystem` (string, required): Name of the source system
|
|
95
|
+
- `targetSystem` (string, required): Name of the target system
|
|
96
|
+
- `description` (string, optional): Description of the mapping
|
|
97
|
+
|
|
98
|
+
### `generateDocumentation(outputPath)`
|
|
99
|
+
Scans the project for decorated methods and generates HTML documentation.
|
|
100
|
+
#### Parameters
|
|
101
|
+
- `outputPath` (string, required): Path where the HTML documentation should be saved
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
### `scanProject(rootDir)`
|
|
105
|
+
Recursively scans a directory for TypeScript files with decorated mapping methods.
|
|
106
|
+
#### Parameters
|
|
107
|
+
- `rootDir` (string, required): Path to the root directory of the project to scan
|
|
108
|
+
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
interface MappingRelation {
|
|
2
|
+
sourceField: string;
|
|
3
|
+
targetField: string;
|
|
4
|
+
transformation?: string;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* analyzes a TypeScript method and extracts mapping relations
|
|
8
|
+
*/
|
|
9
|
+
export declare function analyzeMethod(filePath: string, className: string, methodName: string): MappingRelation[];
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.analyzeMethod = analyzeMethod;
|
|
40
|
+
const typescript_1 = __importDefault(require("typescript"));
|
|
41
|
+
const fs = __importStar(require("fs"));
|
|
42
|
+
const path = __importStar(require("path"));
|
|
43
|
+
/**
|
|
44
|
+
* analyzes a TypeScript method and extracts mapping relations
|
|
45
|
+
*/
|
|
46
|
+
function analyzeMethod(filePath, className, methodName) {
|
|
47
|
+
const sourceCode = fs.readFileSync(filePath, 'utf-8');
|
|
48
|
+
const sourceFile = typescript_1.default.createSourceFile(path.basename(filePath), sourceCode, typescript_1.default.ScriptTarget.Latest, true);
|
|
49
|
+
function findMethod(node) {
|
|
50
|
+
if (typescript_1.default.isMethodDeclaration(node) &&
|
|
51
|
+
node.name.getText() === methodName &&
|
|
52
|
+
node.parent &&
|
|
53
|
+
typescript_1.default.isClassDeclaration(node.parent) &&
|
|
54
|
+
node.parent.name &&
|
|
55
|
+
node.parent.name.getText() === className) {
|
|
56
|
+
return node;
|
|
57
|
+
}
|
|
58
|
+
let result;
|
|
59
|
+
typescript_1.default.forEachChild(node, child => {
|
|
60
|
+
if (!result) {
|
|
61
|
+
result = findMethod(child);
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
return result;
|
|
65
|
+
}
|
|
66
|
+
function extractMappings(methodNode) {
|
|
67
|
+
const results = [];
|
|
68
|
+
// Speichert Variablen, die Objekt-Literale enthalten
|
|
69
|
+
const objectVariables = new Map();
|
|
70
|
+
// identify all parameters of the method
|
|
71
|
+
const parameterNames = new Set();
|
|
72
|
+
if (methodNode.parameters) {
|
|
73
|
+
methodNode.parameters.forEach(param => {
|
|
74
|
+
if (param.name && typescript_1.default.isIdentifier(param.name)) {
|
|
75
|
+
parameterNames.add(param.name.getText());
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
function findPropertyAccesses(node) {
|
|
80
|
+
const sourceFields = new Set();
|
|
81
|
+
// save all PropertyAccessExpressions
|
|
82
|
+
const allPropertyAccesses = new Set();
|
|
83
|
+
// save all PropertyAccessExpressions with a partial path
|
|
84
|
+
const partialPaths = new Set();
|
|
85
|
+
function visit(n) {
|
|
86
|
+
if (typescript_1.default.isPropertyAccessExpression(n)) {
|
|
87
|
+
const fullText = n.getText();
|
|
88
|
+
let current = n.expression;
|
|
89
|
+
let baseName = "";
|
|
90
|
+
// navigate through PropertyAccessExpression recursively
|
|
91
|
+
while (typescript_1.default.isPropertyAccessExpression(current)) {
|
|
92
|
+
partialPaths.add(current.getText());
|
|
93
|
+
current = current.expression;
|
|
94
|
+
}
|
|
95
|
+
// now current is the base variable
|
|
96
|
+
if (typescript_1.default.isIdentifier(current)) {
|
|
97
|
+
baseName = current.getText();
|
|
98
|
+
}
|
|
99
|
+
// verify if base variable is a parameter or this
|
|
100
|
+
const isSourceObject = parameterNames.has(baseName) || baseName === "this";
|
|
101
|
+
// if base variable is a parameter or this, save PropertyAccessExpression
|
|
102
|
+
if (isSourceObject && typescript_1.default.isIdentifier(n.name)) {
|
|
103
|
+
allPropertyAccesses.add(fullText);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
typescript_1.default.forEachChild(n, visit);
|
|
107
|
+
}
|
|
108
|
+
visit(node);
|
|
109
|
+
// keep only PropertyAccessExpressions with a full path
|
|
110
|
+
allPropertyAccesses.forEach(path => {
|
|
111
|
+
if (!partialPaths.has(path)) {
|
|
112
|
+
sourceFields.add(path);
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
return Array.from(sourceFields);
|
|
116
|
+
}
|
|
117
|
+
// extract nested properties from an object literal expression
|
|
118
|
+
function extractNestedProperties(obj, parentPath) {
|
|
119
|
+
const nestedResults = [];
|
|
120
|
+
obj.properties.forEach(prop => {
|
|
121
|
+
if (typescript_1.default.isPropertyAssignment(prop) && prop.name) {
|
|
122
|
+
const propName = prop.name.getText();
|
|
123
|
+
const fieldPath = parentPath ? `${parentPath}.${propName}` : propName;
|
|
124
|
+
const initializer = prop.initializer;
|
|
125
|
+
// process nested objects recursively
|
|
126
|
+
if (typescript_1.default.isObjectLiteralExpression(initializer)) {
|
|
127
|
+
// extracth all PropertyAccessExpressions in the initializer
|
|
128
|
+
const sourceFields = findPropertyAccesses(initializer);
|
|
129
|
+
if (sourceFields.length > 0) {
|
|
130
|
+
nestedResults.push({
|
|
131
|
+
targetField: fieldPath,
|
|
132
|
+
sourceField: sourceFields.join(', '),
|
|
133
|
+
transformation: 'Composite Object'
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
const nestedProps = extractNestedProperties(initializer, fieldPath);
|
|
138
|
+
nestedResults.push(...nestedProps);
|
|
139
|
+
// set constant value if no nested properties are found
|
|
140
|
+
if (nestedProps.length === 0) {
|
|
141
|
+
nestedResults.push({
|
|
142
|
+
targetField: fieldPath,
|
|
143
|
+
sourceField: 'Constant value',
|
|
144
|
+
transformation: initializer.getText()
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
// regular property assignment
|
|
151
|
+
if (typescript_1.default.isPropertyAccessExpression(initializer)) {
|
|
152
|
+
nestedResults.push({
|
|
153
|
+
targetField: fieldPath,
|
|
154
|
+
sourceField: initializer.getText()
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
else if (typescript_1.default.isCallExpression(initializer)) {
|
|
158
|
+
// find all PropertyAccessExpressions in the arguments of the function call
|
|
159
|
+
const sourceFields = initializer.arguments.flatMap(arg => findPropertyAccesses(arg));
|
|
160
|
+
nestedResults.push({
|
|
161
|
+
targetField: fieldPath,
|
|
162
|
+
sourceField: sourceFields.length > 0 ? sourceFields.join(', ') : initializer.arguments.map(arg => arg.getText()).join(', '),
|
|
163
|
+
transformation: initializer.expression.getText()
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
const sourceFields = findPropertyAccesses(initializer);
|
|
168
|
+
if (sourceFields.length > 0) {
|
|
169
|
+
nestedResults.push({
|
|
170
|
+
targetField: fieldPath,
|
|
171
|
+
sourceField: sourceFields.join(', '),
|
|
172
|
+
transformation: initializer.kind !== typescript_1.default.SyntaxKind.StringLiteral &&
|
|
173
|
+
initializer.kind !== typescript_1.default.SyntaxKind.NumericLiteral &&
|
|
174
|
+
initializer.kind !== typescript_1.default.SyntaxKind.TrueKeyword &&
|
|
175
|
+
initializer.kind !== typescript_1.default.SyntaxKind.FalseKeyword ?
|
|
176
|
+
'Transformed' : 'Direct mapping'
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
nestedResults.push({
|
|
181
|
+
targetField: fieldPath,
|
|
182
|
+
sourceField: 'Constant value',
|
|
183
|
+
transformation: initializer.getText()
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
});
|
|
190
|
+
return nestedResults;
|
|
191
|
+
}
|
|
192
|
+
// iterative AST traversal
|
|
193
|
+
function visit(node) {
|
|
194
|
+
// analysis for VariableStatement
|
|
195
|
+
if (typescript_1.default.isVariableStatement(node)) {
|
|
196
|
+
node.declarationList.declarations.forEach(declaration => {
|
|
197
|
+
if (declaration.initializer && typescript_1.default.isObjectLiteralExpression(declaration.initializer) &&
|
|
198
|
+
declaration.name && typescript_1.default.isIdentifier(declaration.name)) {
|
|
199
|
+
// save variable with object literal initializer
|
|
200
|
+
objectVariables.set(declaration.name.getText(), declaration.initializer);
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
// search for ReturnStatement
|
|
205
|
+
if (typescript_1.default.isReturnStatement(node) && node.expression) {
|
|
206
|
+
let objectLiteral;
|
|
207
|
+
// Case 1: direct return of an object literal
|
|
208
|
+
if (typescript_1.default.isObjectLiteralExpression(node.expression)) {
|
|
209
|
+
objectLiteral = node.expression;
|
|
210
|
+
}
|
|
211
|
+
// Case 2: return of an object literal from a variable
|
|
212
|
+
else if (typescript_1.default.isIdentifier(node.expression)) {
|
|
213
|
+
const variableName = node.expression.getText();
|
|
214
|
+
const varObjectLiteral = objectVariables.get(variableName);
|
|
215
|
+
if (varObjectLiteral) {
|
|
216
|
+
objectLiteral = varObjectLiteral;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
// if object literal is found, extract mappings from it
|
|
220
|
+
if (objectLiteral) {
|
|
221
|
+
// analyze all properties in the object literal
|
|
222
|
+
objectLiteral.properties.forEach(prop => {
|
|
223
|
+
if (typescript_1.default.isPropertyAssignment(prop)) {
|
|
224
|
+
const targetField = prop.name.getText();
|
|
225
|
+
const initializer = prop.initializer;
|
|
226
|
+
// simple PropertyAccessExpression
|
|
227
|
+
if (typescript_1.default.isPropertyAccessExpression(initializer)) {
|
|
228
|
+
results.push({
|
|
229
|
+
targetField,
|
|
230
|
+
sourceField: initializer.getText()
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
// complex case: FunctionCallExpression
|
|
234
|
+
else if (typescript_1.default.isCallExpression(initializer)) {
|
|
235
|
+
// find all PropertyAccessExpressions in the arguments of the function call
|
|
236
|
+
const sourceFields = initializer.arguments.flatMap(arg => findPropertyAccesses(arg));
|
|
237
|
+
results.push({
|
|
238
|
+
targetField,
|
|
239
|
+
sourceField: sourceFields.length > 0 ? sourceFields.join(', ') : initializer.arguments.map(arg => arg.getText()).join(', '),
|
|
240
|
+
transformation: initializer.expression.getText()
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
// complex case: nested ObjectLiteralExpression
|
|
244
|
+
else if (typescript_1.default.isObjectLiteralExpression(initializer)) {
|
|
245
|
+
// extract all nested mappings from the nested object literal
|
|
246
|
+
const nestedMappings = extractNestedProperties(initializer, targetField);
|
|
247
|
+
results.push(...nestedMappings);
|
|
248
|
+
}
|
|
249
|
+
// other cases: constant value or transformation
|
|
250
|
+
else {
|
|
251
|
+
const sourceFields = findPropertyAccesses(initializer);
|
|
252
|
+
if (sourceFields.length > 0) {
|
|
253
|
+
results.push({
|
|
254
|
+
targetField,
|
|
255
|
+
sourceField: sourceFields.join(', '),
|
|
256
|
+
transformation: initializer.kind !== typescript_1.default.SyntaxKind.StringLiteral &&
|
|
257
|
+
initializer.kind !== typescript_1.default.SyntaxKind.NumericLiteral &&
|
|
258
|
+
initializer.kind !== typescript_1.default.SyntaxKind.TrueKeyword &&
|
|
259
|
+
initializer.kind !== typescript_1.default.SyntaxKind.FalseKeyword ?
|
|
260
|
+
'Transformed' : 'Direct mapping'
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
else {
|
|
264
|
+
results.push({
|
|
265
|
+
targetField,
|
|
266
|
+
sourceField: 'Constant value',
|
|
267
|
+
transformation: initializer.getText()
|
|
268
|
+
});
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
// recursive call for all child nodes
|
|
276
|
+
typescript_1.default.forEachChild(node, visit);
|
|
277
|
+
}
|
|
278
|
+
visit(methodNode);
|
|
279
|
+
return results;
|
|
280
|
+
}
|
|
281
|
+
// find method in AST and extract mappings
|
|
282
|
+
const methodNode = findMethod(sourceFile);
|
|
283
|
+
if (methodNode) {
|
|
284
|
+
return extractMappings(methodNode);
|
|
285
|
+
}
|
|
286
|
+
return [];
|
|
287
|
+
}
|
|
288
|
+
//# sourceMappingURL=ast-analyzer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ast-analyzer.js","sourceRoot":"","sources":["../../src/analyzers/ast-analyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mapping-documentation.d.ts","sourceRoot":"","sources":["../../src/decorators/mapping-documentation.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAC;AAI5D,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,2BAA2B,IAE7E,QAAQ,GAAG,EACX,aAAa,MAAM,EACnB,YAAY,kBAAkB,wBAgBjC;AAGD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,EAAE,CAErD"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GenerateMappingDocumentation = GenerateMappingDocumentation;
|
|
4
|
+
function GenerateMappingDocumentation(options) {
|
|
5
|
+
return function (target, propertyKey, descriptor) {
|
|
6
|
+
return descriptor;
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=mapping-documentation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mapping-documentation.js","sourceRoot":"","sources":["../../src/decorators/mapping-documentation.ts"],"names":[],"mappings":";;AAGA,oEAQC;AARD,SAAgB,4BAA4B,CAAC,OAAoC;IAC7E,OAAO,UACH,MAAW,EACX,WAAmB,EACnB,UAA8B;QAE9B,OAAO,UAAU,CAAC;IACtB,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function generateDocumentation(outputPath: string): void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"html-generator.d.ts","sourceRoot":"","sources":["../../src/generators/html-generator.ts"],"names":[],"mappings":"AAAA,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAE9D"}
|