@cparra/apexdocs 2.23.0 → 2.24.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/.eslintrc.js +12 -12
- package/.github/workflows/close_stale.yml +22 -22
- package/.prettierrc.js +7 -7
- package/LICENSE +21 -21
- package/README.md +718 -718
- package/apexdocs.config.ts +13 -13
- package/docs/README.md +1 -1
- package/docs/restapi.json +589 -589
- package/docs/types/Classes/nspc.ChildClass.md +97 -97
- package/docs/types/Main/nspc.SampleClass.md +189 -189
- package/examples/force-app/main/default/classes/AnotherInterface.cls +16 -16
- package/examples/force-app/main/default/classes/ChildClass.cls +42 -42
- package/examples/force-app/main/default/classes/EscapedAnnotations.cls +5 -5
- package/examples/force-app/main/default/classes/GrandparentClass.cls +4 -4
- package/examples/force-app/main/default/classes/GroupedClass.cls +8 -8
- package/examples/force-app/main/default/classes/MemberGrouping.cls +17 -17
- package/examples/force-app/main/default/classes/ParentClass.cls +16 -16
- package/examples/force-app/main/default/classes/SampleClass.cls +166 -166
- package/examples/force-app/main/default/classes/SampleClass.cls-meta.xml +5 -5
- package/examples/force-app/main/default/classes/SampleClassWithoutModifier.cls +9 -9
- package/examples/force-app/main/default/classes/SampleInterface.cls +16 -16
- package/examples/force-app/main/default/restapi/SampleRestResource.cls +195 -195
- package/examples/force-app/main/default/restapi/SampleRestResourceToSkip.cls +35 -35
- package/examples/force-app/main/default/restapi/SampleRestResourceWithInnerClass.cls +24 -24
- package/examples/force-app/main/default/restapi/SampleRestResourceWithoutApexDocs.cls +15 -15
- package/examples/force-app/main/default/restapi/references/Reference1.cls +9 -9
- package/examples/force-app/main/default/restapi/references/Reference2.cls +9 -9
- package/examples/force-app/main/default/restapi/references/Reference3.cls +3 -3
- package/examples/force-app/main/default/restapi/references/Reference4.cls +3 -3
- package/examples/force-app/main/default/restapi/references/Reference5.cls +3 -3
- package/examples/force-app/main/default/restapi/references/Reference6.cls +6 -6
- package/examples/force-app/main/default/restapi/references/Reference7.cls +3 -3
- package/examples/includes/header.md +3 -3
- package/jest.config.js +5 -5
- package/lib/application/Apexdocs.d.ts +13 -13
- package/lib/application/Apexdocs.js +76 -76
- package/lib/cli/generate.d.ts +2 -2
- package/lib/cli/generate.js +130 -130
- package/lib/index.d.ts +1 -1
- package/lib/index.js +17 -17
- package/lib/model/apex-bundle.d.ts +6 -6
- package/lib/model/apex-bundle.js +10 -10
- package/lib/model/apex-type-wrappers/ClassMirrorWrapper.d.ts +7 -7
- package/lib/model/apex-type-wrappers/ClassMirrorWrapper.js +13 -13
- package/lib/model/apex-type-wrappers/MethodMirrorWrapper.d.ts +7 -7
- package/lib/model/apex-type-wrappers/MethodMirrorWrapper.js +11 -11
- package/lib/model/inheritance.d.ts +8 -8
- package/lib/model/inheritance.js +2 -2
- package/lib/model/manifest-diff.d.ts +27 -27
- package/lib/model/manifest-diff.js +68 -68
- package/lib/model/manifest.d.ts +22 -22
- package/lib/model/manifest.js +46 -46
- package/lib/model/markdown-file.d.ts +16 -16
- package/lib/model/markdown-file.js +106 -106
- package/lib/model/markdown-generation-util/doc-comment-annotation-util.d.ts +8 -8
- package/lib/model/markdown-generation-util/doc-comment-annotation-util.js +43 -43
- package/lib/model/markdown-generation-util/field-declaration-util.d.ts +3 -3
- package/lib/model/markdown-generation-util/field-declaration-util.js +54 -54
- package/lib/model/markdown-generation-util/index.d.ts +3 -3
- package/lib/model/markdown-generation-util/index.js +19 -19
- package/lib/model/markdown-generation-util/method-declaration-util.d.ts +4 -4
- package/lib/model/markdown-generation-util/method-declaration-util.js +114 -114
- package/lib/model/markdown-generation-util/type-declaration-util.d.ts +3 -3
- package/lib/model/markdown-generation-util/type-declaration-util.js +81 -81
- package/lib/model/markdown-home-file.d.ts +11 -11
- package/lib/model/markdown-home-file.js +53 -53
- package/lib/model/markdown-type-file.d.ts +26 -26
- package/lib/model/markdown-type-file.js +133 -133
- package/lib/model/openapi/apex-doc-types.d.ts +19 -19
- package/lib/model/openapi/apex-doc-types.js +4 -4
- package/lib/model/openapi/open-api-types.d.ts +93 -93
- package/lib/model/openapi/open-api-types.js +2 -2
- package/lib/model/openapi/open-api.d.ts +16 -16
- package/lib/model/openapi/open-api.js +33 -33
- package/lib/model/openapi/openapi-type-file.d.ts +7 -7
- package/lib/model/openapi/openapi-type-file.js +16 -16
- package/lib/model/outputFile.d.ts +10 -10
- package/lib/model/outputFile.js +28 -28
- package/lib/model/types-repository.d.ts +16 -16
- package/lib/model/types-repository.js +53 -53
- package/lib/service/apex-file-reader.d.ts +14 -14
- package/lib/service/apex-file-reader.js +45 -45
- package/lib/service/file-system.d.ts +14 -14
- package/lib/service/file-system.js +24 -24
- package/lib/service/file-writer.d.ts +6 -6
- package/lib/service/file-writer.js +33 -33
- package/lib/service/manifest-factory.d.ts +10 -10
- package/lib/service/manifest-factory.js +13 -13
- package/lib/service/metadata-processor.d.ts +3 -3
- package/lib/service/metadata-processor.js +16 -16
- package/lib/service/parser.d.ts +21 -21
- package/lib/service/parser.js +134 -134
- package/lib/service/state.d.ts +9 -9
- package/lib/service/state.js +19 -19
- package/lib/service/walkers/class-walker.d.ts +4 -4
- package/lib/service/walkers/class-walker.js +32 -32
- package/lib/service/walkers/enum-walker.d.ts +4 -4
- package/lib/service/walkers/enum-walker.js +10 -10
- package/lib/service/walkers/interface-walker.d.ts +4 -4
- package/lib/service/walkers/interface-walker.js +14 -14
- package/lib/service/walkers/walker-factory.d.ts +5 -5
- package/lib/service/walkers/walker-factory.js +20 -20
- package/lib/service/walkers/walker.d.ts +19 -19
- package/lib/service/walkers/walker.js +16 -16
- package/lib/settings.d.ts +64 -64
- package/lib/settings.js +88 -88
- package/lib/test-helpers/AnnotationBuilder.d.ts +12 -12
- package/lib/test-helpers/AnnotationBuilder.js +30 -30
- package/lib/test-helpers/ClassMirrorBuilder.d.ts +18 -18
- package/lib/test-helpers/ClassMirrorBuilder.js +53 -53
- package/lib/test-helpers/DocCommentAnnotationBuilder.d.ts +8 -8
- package/lib/test-helpers/DocCommentAnnotationBuilder.js +25 -25
- package/lib/test-helpers/DocCommentBuilder.d.ts +12 -12
- package/lib/test-helpers/DocCommentBuilder.js +37 -37
- package/lib/test-helpers/FieldMirrorBuilder.d.ts +18 -18
- package/lib/test-helpers/FieldMirrorBuilder.js +53 -53
- package/lib/test-helpers/MethodMirrorBuilder.d.ts +10 -10
- package/lib/test-helpers/MethodMirrorBuilder.js +36 -36
- package/lib/test-helpers/SettingsBuilder.d.ts +8 -8
- package/lib/test-helpers/SettingsBuilder.js +26 -26
- package/lib/transpiler/factory.d.ts +6 -6
- package/lib/transpiler/factory.js +31 -31
- package/lib/transpiler/file-container.d.ts +6 -6
- package/lib/transpiler/file-container.js +15 -15
- package/lib/transpiler/generator-choices.d.ts +1 -1
- package/lib/transpiler/generator-choices.js +2 -2
- package/lib/transpiler/markdown/class-file-generatorHelper.d.ts +8 -8
- package/lib/transpiler/markdown/class-file-generatorHelper.js +55 -55
- package/lib/transpiler/markdown/docsify/docsify-docs-processor.d.ts +6 -6
- package/lib/transpiler/markdown/docsify/docsify-docs-processor.js +12 -12
- package/lib/transpiler/markdown/jekyll/jekyll-docsProcessor.d.ts +11 -11
- package/lib/transpiler/markdown/jekyll/jekyll-docsProcessor.js +50 -50
- package/lib/transpiler/markdown/markdown-transpiler-base.d.ts +11 -11
- package/lib/transpiler/markdown/markdown-transpiler-base.js +23 -23
- package/lib/transpiler/markdown/plain-markdown/plain-docsProcessor.d.ts +6 -6
- package/lib/transpiler/markdown/plain-markdown/plain-docsProcessor.js +13 -13
- package/lib/transpiler/openapi/open-api-docs-processor.d.ts +13 -13
- package/lib/transpiler/openapi/open-api-docs-processor.js +74 -74
- package/lib/transpiler/openapi/parsers/Builder.d.ts +16 -16
- package/lib/transpiler/openapi/parsers/Builder.js +29 -29
- package/lib/transpiler/openapi/parsers/MethodParser.d.ts +20 -20
- package/lib/transpiler/openapi/parsers/MethodParser.js +166 -166
- package/lib/transpiler/openapi/parsers/ParameterObjectBuilder.d.ts +7 -7
- package/lib/transpiler/openapi/parsers/ParameterObjectBuilder.js +10 -10
- package/lib/transpiler/openapi/parsers/ReferenceBuilder.d.ts +39 -39
- package/lib/transpiler/openapi/parsers/ReferenceBuilder.js +225 -225
- package/lib/transpiler/openapi/parsers/RequestBodyBuilder.d.ts +10 -10
- package/lib/transpiler/openapi/parsers/RequestBodyBuilder.js +19 -19
- package/lib/transpiler/openapi/parsers/ResponsesBuilder.d.ts +7 -7
- package/lib/transpiler/openapi/parsers/ResponsesBuilder.js +21 -21
- package/lib/transpiler/processor-type-transpiler.d.ts +10 -10
- package/lib/transpiler/processor-type-transpiler.js +8 -8
- package/lib/transpiler/transpiler.d.ts +5 -5
- package/lib/transpiler/transpiler.js +26 -26
- package/lib/util/error-logger.d.ts +8 -8
- package/lib/util/error-logger.js +89 -89
- package/lib/util/logger.d.ts +21 -21
- package/lib/util/logger.js +57 -57
- package/lib/util/string-utils.d.ts +2 -2
- package/lib/util/string-utils.js +14 -14
- package/package.json +78 -78
- package/tsconfig.json +20 -20
- package/tslint.json +5 -5
|
@@ -1,226 +1,226 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ReferenceBuilder = void 0;
|
|
4
|
-
const yaml = require("js-yaml");
|
|
5
|
-
const types_repository_1 = require("../../../model/types-repository");
|
|
6
|
-
class ReferenceBuilder {
|
|
7
|
-
constructor() {
|
|
8
|
-
this.isReferenceString = (targetObject) => {
|
|
9
|
-
return typeof targetObject === 'string' || targetObject instanceof String;
|
|
10
|
-
};
|
|
11
|
-
}
|
|
12
|
-
build(referencedTypeName) {
|
|
13
|
-
const originalTypeName = referencedTypeName;
|
|
14
|
-
// Checking for inline overrides of the type: [memberName:ClassOverrideName]
|
|
15
|
-
const regexForSchemaOverrides = /\[(.*?)]/g;
|
|
16
|
-
const schemaOverrides = referencedTypeName.match(regexForSchemaOverrides);
|
|
17
|
-
let referenceOverrides = [];
|
|
18
|
-
if (schemaOverrides && schemaOverrides.length > 0) {
|
|
19
|
-
referenceOverrides = ReferenceOverrides.build(schemaOverrides[0]);
|
|
20
|
-
referencedTypeName = referencedTypeName.replace(regexForSchemaOverrides, '');
|
|
21
|
-
}
|
|
22
|
-
const [parsedReferencedType, isCollection] = this.handlePossibleCollectionReference(referencedTypeName);
|
|
23
|
-
const referencedTypeBundle = types_repository_1.TypesRepository.getInstance().getFromAllByName(parsedReferencedType);
|
|
24
|
-
if (!referencedTypeBundle) {
|
|
25
|
-
throw new Error(`The referenced type ${referencedTypeName} was not found.`);
|
|
26
|
-
}
|
|
27
|
-
if (referencedTypeBundle.type.type_name !== 'class') {
|
|
28
|
-
throw new Error(`Expected the referenced type to be a class, but found a ${referencedTypeBundle.type.type_name}.`);
|
|
29
|
-
}
|
|
30
|
-
const typeBundleWithIsCollection = Object.assign(Object.assign({}, referencedTypeBundle), { originalTypeName: originalTypeName, isCollection: isCollection, referenceOverrides: referenceOverrides });
|
|
31
|
-
return this.buildReferenceFromType(typeBundleWithIsCollection);
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Returns a tuple where the first value is the name of the reference without any collection related values
|
|
35
|
-
* and the second is a boolean representing if we are dealing with a collection or not.
|
|
36
|
-
* @param referencedTypeName The received raw type name.
|
|
37
|
-
* @private
|
|
38
|
-
*/
|
|
39
|
-
handlePossibleCollectionReference(referencedTypeName) {
|
|
40
|
-
referencedTypeName = referencedTypeName.toLowerCase();
|
|
41
|
-
if (referencedTypeName.startsWith('list<') && referencedTypeName.endsWith('>')) {
|
|
42
|
-
referencedTypeName = referencedTypeName.replace('list<', '');
|
|
43
|
-
referencedTypeName = referencedTypeName.replace('>', '');
|
|
44
|
-
return [referencedTypeName, true];
|
|
45
|
-
}
|
|
46
|
-
if (referencedTypeName.startsWith('set<') && referencedTypeName.endsWith('>')) {
|
|
47
|
-
referencedTypeName = referencedTypeName.replace('set<', '');
|
|
48
|
-
referencedTypeName = referencedTypeName.replace('>', '');
|
|
49
|
-
return [referencedTypeName, true];
|
|
50
|
-
}
|
|
51
|
-
return [referencedTypeName, false];
|
|
52
|
-
}
|
|
53
|
-
buildReferenceFromType(typeBundle) {
|
|
54
|
-
// Filtering based on Salesforce's documentation:
|
|
55
|
-
// https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_rest_methods.htm#ApexRESTUserDefinedTypes
|
|
56
|
-
// We assume that the class only contains object types allowed by Apex Rest:
|
|
57
|
-
// "Note that the public, private, or global class member variables must be types allowed by Apex REST"
|
|
58
|
-
const propertiesAndFields = [
|
|
59
|
-
...typeBundle.type.properties,
|
|
60
|
-
...typeBundle.type.fields,
|
|
61
|
-
]
|
|
62
|
-
.filter((current) => !current.memberModifiers.includes('static'))
|
|
63
|
-
.filter((current) => !current.memberModifiers.includes('transient'));
|
|
64
|
-
const properties = {};
|
|
65
|
-
let referencedComponents = [];
|
|
66
|
-
propertiesAndFields.forEach((current) => {
|
|
67
|
-
var _a, _b;
|
|
68
|
-
// Check if there are reference overrides for the current property, this takes priority over anything else.
|
|
69
|
-
const referenceOverride = typeBundle.referenceOverrides.find((currentOverride) => {
|
|
70
|
-
return currentOverride.propertyName.toLowerCase() === current.name.toLowerCase();
|
|
71
|
-
});
|
|
72
|
-
if (referenceOverride) {
|
|
73
|
-
const reference = this.build(referenceOverride.referenceName);
|
|
74
|
-
properties[current.name] = reference.entrypointReferenceObject;
|
|
75
|
-
reference.referenceComponents.forEach((current) => referencedComponents.push(current));
|
|
76
|
-
}
|
|
77
|
-
else {
|
|
78
|
-
// Check for "@http-schema" annotations within properties themselves. If these are specified they
|
|
79
|
-
// take precedence over the property type itself.
|
|
80
|
-
const manuallyDefinedHttpSchema = (_a = current.docComment) === null || _a === void 0 ? void 0 : _a.annotations.find((annotation) => annotation.name.toLowerCase() === 'http-schema');
|
|
81
|
-
if (manuallyDefinedHttpSchema) {
|
|
82
|
-
this.handleOverriddenSchema(manuallyDefinedHttpSchema, properties, current, referencedComponents);
|
|
83
|
-
}
|
|
84
|
-
else {
|
|
85
|
-
const pair = this.getReferenceType(current.typeReference);
|
|
86
|
-
properties[current.name] = pair.schema;
|
|
87
|
-
referencedComponents.push(...pair.referenceComponents);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
properties[current.name].description = (_b = current.docComment) === null || _b === void 0 ? void 0 : _b.description;
|
|
91
|
-
});
|
|
92
|
-
const mainReferenceComponents = this.buildMainReferenceComponent(typeBundle, properties);
|
|
93
|
-
// Make sure to add the "main" reference first
|
|
94
|
-
referencedComponents = [...mainReferenceComponents, ...referencedComponents];
|
|
95
|
-
return {
|
|
96
|
-
entrypointReferenceObject: {
|
|
97
|
-
$ref: `#/components/schemas/${this.getReferenceName(typeBundle)}`,
|
|
98
|
-
},
|
|
99
|
-
referenceComponents: referencedComponents,
|
|
100
|
-
};
|
|
101
|
-
}
|
|
102
|
-
handleOverriddenSchema(manuallyDefinedHttpSchema, properties, current, referencedComponents) {
|
|
103
|
-
// This can be of type ApexDocSchemaObject
|
|
104
|
-
const inYaml = manuallyDefinedHttpSchema === null || manuallyDefinedHttpSchema === void 0 ? void 0 : manuallyDefinedHttpSchema.bodyLines.reduce((prev, current, _) => prev + '\n' + current);
|
|
105
|
-
const asJson = yaml.load(inYaml);
|
|
106
|
-
const isReferenceString = this.isReferenceString(asJson);
|
|
107
|
-
if (isReferenceString) {
|
|
108
|
-
const reference = this.build(asJson);
|
|
109
|
-
properties[current.name] = reference.entrypointReferenceObject;
|
|
110
|
-
reference.referenceComponents.forEach((current) => referencedComponents.push(current));
|
|
111
|
-
}
|
|
112
|
-
else {
|
|
113
|
-
// If we are dealing with a manually defined schema object, we can add it directly to the "properties" map,
|
|
114
|
-
// because we don't need to add a reference component.
|
|
115
|
-
properties[current.name] = asJson;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
getReferenceName(typeBundle) {
|
|
119
|
-
var _a;
|
|
120
|
-
let referenceName = typeBundle.type.name;
|
|
121
|
-
if (typeBundle.isChild) {
|
|
122
|
-
referenceName = `${(_a = typeBundle.parentType) === null || _a === void 0 ? void 0 : _a.name}.${typeBundle.type.name}`;
|
|
123
|
-
}
|
|
124
|
-
if (typeBundle.isCollection) {
|
|
125
|
-
referenceName = `${referenceName}_array`;
|
|
126
|
-
}
|
|
127
|
-
if (typeBundle.referenceOverrides.length) {
|
|
128
|
-
referenceName = `${referenceName}_${typeBundle.originalTypeName}`;
|
|
129
|
-
}
|
|
130
|
-
return referenceName;
|
|
131
|
-
}
|
|
132
|
-
buildMainReferenceComponent(typeBundle, properties) {
|
|
133
|
-
// For the main reference, we always want to get the reference of the object without the collection part,
|
|
134
|
-
// so we pass the typeBundle to `getReferenceName` but with the isCollection flag set to false.
|
|
135
|
-
const mainReferenceName = this.getReferenceName(Object.assign(Object.assign({}, typeBundle), { isCollection: false }));
|
|
136
|
-
const mainReference = {
|
|
137
|
-
referencedClass: mainReferenceName,
|
|
138
|
-
schema: {
|
|
139
|
-
type: 'object',
|
|
140
|
-
properties: properties,
|
|
141
|
-
},
|
|
142
|
-
};
|
|
143
|
-
const referencedComponents = [mainReference];
|
|
144
|
-
if (!typeBundle.isCollection) {
|
|
145
|
-
return referencedComponents;
|
|
146
|
-
}
|
|
147
|
-
return [
|
|
148
|
-
{
|
|
149
|
-
referencedClass: this.getReferenceName(typeBundle),
|
|
150
|
-
schema: {
|
|
151
|
-
type: 'array',
|
|
152
|
-
items: {
|
|
153
|
-
$ref: `#/components/schemas/${mainReferenceName}`,
|
|
154
|
-
},
|
|
155
|
-
},
|
|
156
|
-
},
|
|
157
|
-
...referencedComponents,
|
|
158
|
-
];
|
|
159
|
-
}
|
|
160
|
-
getReferenceType(typeInMirror) {
|
|
161
|
-
// Returns a valid type supported by OpenApi from a received Apex type.
|
|
162
|
-
const typeName = typeInMirror.type.toLowerCase();
|
|
163
|
-
switch (typeName) {
|
|
164
|
-
case 'boolean':
|
|
165
|
-
return { schema: { type: 'boolean' }, referenceComponents: [] };
|
|
166
|
-
case 'date':
|
|
167
|
-
return { schema: { type: 'string', format: 'date' }, referenceComponents: [] };
|
|
168
|
-
case 'datetime':
|
|
169
|
-
return { schema: { type: 'string', format: 'date-time' }, referenceComponents: [] };
|
|
170
|
-
case 'decimal':
|
|
171
|
-
return { schema: { type: 'number' }, referenceComponents: [] };
|
|
172
|
-
case 'double':
|
|
173
|
-
return { schema: { type: 'number' }, referenceComponents: [] };
|
|
174
|
-
case 'id':
|
|
175
|
-
return { schema: { type: 'string' }, referenceComponents: [] };
|
|
176
|
-
case 'integer':
|
|
177
|
-
return { schema: { type: 'integer' }, referenceComponents: [] };
|
|
178
|
-
case 'long':
|
|
179
|
-
return { schema: { type: 'integer', format: 'int64' }, referenceComponents: [] };
|
|
180
|
-
case 'string':
|
|
181
|
-
return { schema: { type: 'string' }, referenceComponents: [] };
|
|
182
|
-
case 'time':
|
|
183
|
-
return { schema: { type: 'string', format: 'time' }, referenceComponents: [] };
|
|
184
|
-
case 'list':
|
|
185
|
-
return this.buildCollectionPair(typeInMirror);
|
|
186
|
-
case 'set':
|
|
187
|
-
return this.buildCollectionPair(typeInMirror);
|
|
188
|
-
case 'map':
|
|
189
|
-
// For Maps, we treat them as objects but do not try to define their shape, because their keys can vary
|
|
190
|
-
// at runtime.
|
|
191
|
-
return { schema: { type: 'object' }, referenceComponents: [] };
|
|
192
|
-
case 'object':
|
|
193
|
-
return { schema: { type: 'object' }, referenceComponents: [] };
|
|
194
|
-
default:
|
|
195
|
-
// If we got here we are dealing with a non-primitive (most likely a custom class or an SObject).
|
|
196
|
-
const referencedType = types_repository_1.TypesRepository.getInstance().getFromAllByName(typeName);
|
|
197
|
-
if (!referencedType) {
|
|
198
|
-
return { schema: { type: 'object' }, referenceComponents: [] };
|
|
199
|
-
}
|
|
200
|
-
const reference = this.buildReferenceFromType(Object.assign(Object.assign({}, referencedType), { isCollection: false, referenceOverrides: [], originalTypeName: typeName }));
|
|
201
|
-
return {
|
|
202
|
-
schema: reference.entrypointReferenceObject,
|
|
203
|
-
referenceComponents: [...reference.referenceComponents],
|
|
204
|
-
};
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
buildCollectionPair(typeInMirror) {
|
|
208
|
-
const innerReference = this.getReferenceType(typeInMirror.ofType);
|
|
209
|
-
return {
|
|
210
|
-
schema: { type: 'array', items: innerReference.schema },
|
|
211
|
-
referenceComponents: [...innerReference.referenceComponents],
|
|
212
|
-
};
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
exports.ReferenceBuilder = ReferenceBuilder;
|
|
216
|
-
class ReferenceOverrides {
|
|
217
|
-
static build(referenceAsString) {
|
|
218
|
-
const cleanedUpReference = referenceAsString.replace(/[\[\]]/g, '');
|
|
219
|
-
const referenceStrings = cleanedUpReference.split(',').map((item) => item.replace(/\s/g, ''));
|
|
220
|
-
return referenceStrings.map((item) => {
|
|
221
|
-
const [propertyName, referenceName] = item.split(':');
|
|
222
|
-
return { propertyName, referenceName };
|
|
223
|
-
});
|
|
224
|
-
}
|
|
225
|
-
}
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ReferenceBuilder = void 0;
|
|
4
|
+
const yaml = require("js-yaml");
|
|
5
|
+
const types_repository_1 = require("../../../model/types-repository");
|
|
6
|
+
class ReferenceBuilder {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.isReferenceString = (targetObject) => {
|
|
9
|
+
return typeof targetObject === 'string' || targetObject instanceof String;
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
build(referencedTypeName) {
|
|
13
|
+
const originalTypeName = referencedTypeName;
|
|
14
|
+
// Checking for inline overrides of the type: [memberName:ClassOverrideName]
|
|
15
|
+
const regexForSchemaOverrides = /\[(.*?)]/g;
|
|
16
|
+
const schemaOverrides = referencedTypeName.match(regexForSchemaOverrides);
|
|
17
|
+
let referenceOverrides = [];
|
|
18
|
+
if (schemaOverrides && schemaOverrides.length > 0) {
|
|
19
|
+
referenceOverrides = ReferenceOverrides.build(schemaOverrides[0]);
|
|
20
|
+
referencedTypeName = referencedTypeName.replace(regexForSchemaOverrides, '');
|
|
21
|
+
}
|
|
22
|
+
const [parsedReferencedType, isCollection] = this.handlePossibleCollectionReference(referencedTypeName);
|
|
23
|
+
const referencedTypeBundle = types_repository_1.TypesRepository.getInstance().getFromAllByName(parsedReferencedType);
|
|
24
|
+
if (!referencedTypeBundle) {
|
|
25
|
+
throw new Error(`The referenced type ${referencedTypeName} was not found.`);
|
|
26
|
+
}
|
|
27
|
+
if (referencedTypeBundle.type.type_name !== 'class') {
|
|
28
|
+
throw new Error(`Expected the referenced type to be a class, but found a ${referencedTypeBundle.type.type_name}.`);
|
|
29
|
+
}
|
|
30
|
+
const typeBundleWithIsCollection = Object.assign(Object.assign({}, referencedTypeBundle), { originalTypeName: originalTypeName, isCollection: isCollection, referenceOverrides: referenceOverrides });
|
|
31
|
+
return this.buildReferenceFromType(typeBundleWithIsCollection);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Returns a tuple where the first value is the name of the reference without any collection related values
|
|
35
|
+
* and the second is a boolean representing if we are dealing with a collection or not.
|
|
36
|
+
* @param referencedTypeName The received raw type name.
|
|
37
|
+
* @private
|
|
38
|
+
*/
|
|
39
|
+
handlePossibleCollectionReference(referencedTypeName) {
|
|
40
|
+
referencedTypeName = referencedTypeName.toLowerCase();
|
|
41
|
+
if (referencedTypeName.startsWith('list<') && referencedTypeName.endsWith('>')) {
|
|
42
|
+
referencedTypeName = referencedTypeName.replace('list<', '');
|
|
43
|
+
referencedTypeName = referencedTypeName.replace('>', '');
|
|
44
|
+
return [referencedTypeName, true];
|
|
45
|
+
}
|
|
46
|
+
if (referencedTypeName.startsWith('set<') && referencedTypeName.endsWith('>')) {
|
|
47
|
+
referencedTypeName = referencedTypeName.replace('set<', '');
|
|
48
|
+
referencedTypeName = referencedTypeName.replace('>', '');
|
|
49
|
+
return [referencedTypeName, true];
|
|
50
|
+
}
|
|
51
|
+
return [referencedTypeName, false];
|
|
52
|
+
}
|
|
53
|
+
buildReferenceFromType(typeBundle) {
|
|
54
|
+
// Filtering based on Salesforce's documentation:
|
|
55
|
+
// https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_rest_methods.htm#ApexRESTUserDefinedTypes
|
|
56
|
+
// We assume that the class only contains object types allowed by Apex Rest:
|
|
57
|
+
// "Note that the public, private, or global class member variables must be types allowed by Apex REST"
|
|
58
|
+
const propertiesAndFields = [
|
|
59
|
+
...typeBundle.type.properties,
|
|
60
|
+
...typeBundle.type.fields,
|
|
61
|
+
]
|
|
62
|
+
.filter((current) => !current.memberModifiers.includes('static'))
|
|
63
|
+
.filter((current) => !current.memberModifiers.includes('transient'));
|
|
64
|
+
const properties = {};
|
|
65
|
+
let referencedComponents = [];
|
|
66
|
+
propertiesAndFields.forEach((current) => {
|
|
67
|
+
var _a, _b;
|
|
68
|
+
// Check if there are reference overrides for the current property, this takes priority over anything else.
|
|
69
|
+
const referenceOverride = typeBundle.referenceOverrides.find((currentOverride) => {
|
|
70
|
+
return currentOverride.propertyName.toLowerCase() === current.name.toLowerCase();
|
|
71
|
+
});
|
|
72
|
+
if (referenceOverride) {
|
|
73
|
+
const reference = this.build(referenceOverride.referenceName);
|
|
74
|
+
properties[current.name] = reference.entrypointReferenceObject;
|
|
75
|
+
reference.referenceComponents.forEach((current) => referencedComponents.push(current));
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
// Check for "@http-schema" annotations within properties themselves. If these are specified they
|
|
79
|
+
// take precedence over the property type itself.
|
|
80
|
+
const manuallyDefinedHttpSchema = (_a = current.docComment) === null || _a === void 0 ? void 0 : _a.annotations.find((annotation) => annotation.name.toLowerCase() === 'http-schema');
|
|
81
|
+
if (manuallyDefinedHttpSchema) {
|
|
82
|
+
this.handleOverriddenSchema(manuallyDefinedHttpSchema, properties, current, referencedComponents);
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
const pair = this.getReferenceType(current.typeReference);
|
|
86
|
+
properties[current.name] = pair.schema;
|
|
87
|
+
referencedComponents.push(...pair.referenceComponents);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
properties[current.name].description = (_b = current.docComment) === null || _b === void 0 ? void 0 : _b.description;
|
|
91
|
+
});
|
|
92
|
+
const mainReferenceComponents = this.buildMainReferenceComponent(typeBundle, properties);
|
|
93
|
+
// Make sure to add the "main" reference first
|
|
94
|
+
referencedComponents = [...mainReferenceComponents, ...referencedComponents];
|
|
95
|
+
return {
|
|
96
|
+
entrypointReferenceObject: {
|
|
97
|
+
$ref: `#/components/schemas/${this.getReferenceName(typeBundle)}`,
|
|
98
|
+
},
|
|
99
|
+
referenceComponents: referencedComponents,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
handleOverriddenSchema(manuallyDefinedHttpSchema, properties, current, referencedComponents) {
|
|
103
|
+
// This can be of type ApexDocSchemaObject
|
|
104
|
+
const inYaml = manuallyDefinedHttpSchema === null || manuallyDefinedHttpSchema === void 0 ? void 0 : manuallyDefinedHttpSchema.bodyLines.reduce((prev, current, _) => prev + '\n' + current);
|
|
105
|
+
const asJson = yaml.load(inYaml);
|
|
106
|
+
const isReferenceString = this.isReferenceString(asJson);
|
|
107
|
+
if (isReferenceString) {
|
|
108
|
+
const reference = this.build(asJson);
|
|
109
|
+
properties[current.name] = reference.entrypointReferenceObject;
|
|
110
|
+
reference.referenceComponents.forEach((current) => referencedComponents.push(current));
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
// If we are dealing with a manually defined schema object, we can add it directly to the "properties" map,
|
|
114
|
+
// because we don't need to add a reference component.
|
|
115
|
+
properties[current.name] = asJson;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
getReferenceName(typeBundle) {
|
|
119
|
+
var _a;
|
|
120
|
+
let referenceName = typeBundle.type.name;
|
|
121
|
+
if (typeBundle.isChild) {
|
|
122
|
+
referenceName = `${(_a = typeBundle.parentType) === null || _a === void 0 ? void 0 : _a.name}.${typeBundle.type.name}`;
|
|
123
|
+
}
|
|
124
|
+
if (typeBundle.isCollection) {
|
|
125
|
+
referenceName = `${referenceName}_array`;
|
|
126
|
+
}
|
|
127
|
+
if (typeBundle.referenceOverrides.length) {
|
|
128
|
+
referenceName = `${referenceName}_${typeBundle.originalTypeName}`;
|
|
129
|
+
}
|
|
130
|
+
return referenceName;
|
|
131
|
+
}
|
|
132
|
+
buildMainReferenceComponent(typeBundle, properties) {
|
|
133
|
+
// For the main reference, we always want to get the reference of the object without the collection part,
|
|
134
|
+
// so we pass the typeBundle to `getReferenceName` but with the isCollection flag set to false.
|
|
135
|
+
const mainReferenceName = this.getReferenceName(Object.assign(Object.assign({}, typeBundle), { isCollection: false }));
|
|
136
|
+
const mainReference = {
|
|
137
|
+
referencedClass: mainReferenceName,
|
|
138
|
+
schema: {
|
|
139
|
+
type: 'object',
|
|
140
|
+
properties: properties,
|
|
141
|
+
},
|
|
142
|
+
};
|
|
143
|
+
const referencedComponents = [mainReference];
|
|
144
|
+
if (!typeBundle.isCollection) {
|
|
145
|
+
return referencedComponents;
|
|
146
|
+
}
|
|
147
|
+
return [
|
|
148
|
+
{
|
|
149
|
+
referencedClass: this.getReferenceName(typeBundle),
|
|
150
|
+
schema: {
|
|
151
|
+
type: 'array',
|
|
152
|
+
items: {
|
|
153
|
+
$ref: `#/components/schemas/${mainReferenceName}`,
|
|
154
|
+
},
|
|
155
|
+
},
|
|
156
|
+
},
|
|
157
|
+
...referencedComponents,
|
|
158
|
+
];
|
|
159
|
+
}
|
|
160
|
+
getReferenceType(typeInMirror) {
|
|
161
|
+
// Returns a valid type supported by OpenApi from a received Apex type.
|
|
162
|
+
const typeName = typeInMirror.type.toLowerCase();
|
|
163
|
+
switch (typeName) {
|
|
164
|
+
case 'boolean':
|
|
165
|
+
return { schema: { type: 'boolean' }, referenceComponents: [] };
|
|
166
|
+
case 'date':
|
|
167
|
+
return { schema: { type: 'string', format: 'date' }, referenceComponents: [] };
|
|
168
|
+
case 'datetime':
|
|
169
|
+
return { schema: { type: 'string', format: 'date-time' }, referenceComponents: [] };
|
|
170
|
+
case 'decimal':
|
|
171
|
+
return { schema: { type: 'number' }, referenceComponents: [] };
|
|
172
|
+
case 'double':
|
|
173
|
+
return { schema: { type: 'number' }, referenceComponents: [] };
|
|
174
|
+
case 'id':
|
|
175
|
+
return { schema: { type: 'string' }, referenceComponents: [] };
|
|
176
|
+
case 'integer':
|
|
177
|
+
return { schema: { type: 'integer' }, referenceComponents: [] };
|
|
178
|
+
case 'long':
|
|
179
|
+
return { schema: { type: 'integer', format: 'int64' }, referenceComponents: [] };
|
|
180
|
+
case 'string':
|
|
181
|
+
return { schema: { type: 'string' }, referenceComponents: [] };
|
|
182
|
+
case 'time':
|
|
183
|
+
return { schema: { type: 'string', format: 'time' }, referenceComponents: [] };
|
|
184
|
+
case 'list':
|
|
185
|
+
return this.buildCollectionPair(typeInMirror);
|
|
186
|
+
case 'set':
|
|
187
|
+
return this.buildCollectionPair(typeInMirror);
|
|
188
|
+
case 'map':
|
|
189
|
+
// For Maps, we treat them as objects but do not try to define their shape, because their keys can vary
|
|
190
|
+
// at runtime.
|
|
191
|
+
return { schema: { type: 'object' }, referenceComponents: [] };
|
|
192
|
+
case 'object':
|
|
193
|
+
return { schema: { type: 'object' }, referenceComponents: [] };
|
|
194
|
+
default:
|
|
195
|
+
// If we got here we are dealing with a non-primitive (most likely a custom class or an SObject).
|
|
196
|
+
const referencedType = types_repository_1.TypesRepository.getInstance().getFromAllByName(typeName);
|
|
197
|
+
if (!referencedType) {
|
|
198
|
+
return { schema: { type: 'object' }, referenceComponents: [] };
|
|
199
|
+
}
|
|
200
|
+
const reference = this.buildReferenceFromType(Object.assign(Object.assign({}, referencedType), { isCollection: false, referenceOverrides: [], originalTypeName: typeName }));
|
|
201
|
+
return {
|
|
202
|
+
schema: reference.entrypointReferenceObject,
|
|
203
|
+
referenceComponents: [...reference.referenceComponents],
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
buildCollectionPair(typeInMirror) {
|
|
208
|
+
const innerReference = this.getReferenceType(typeInMirror.ofType);
|
|
209
|
+
return {
|
|
210
|
+
schema: { type: 'array', items: innerReference.schema },
|
|
211
|
+
referenceComponents: [...innerReference.referenceComponents],
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
exports.ReferenceBuilder = ReferenceBuilder;
|
|
216
|
+
class ReferenceOverrides {
|
|
217
|
+
static build(referenceAsString) {
|
|
218
|
+
const cleanedUpReference = referenceAsString.replace(/[\[\]]/g, '');
|
|
219
|
+
const referenceStrings = cleanedUpReference.split(',').map((item) => item.replace(/\s/g, ''));
|
|
220
|
+
return referenceStrings.map((item) => {
|
|
221
|
+
const [propertyName, referenceName] = item.split(':');
|
|
222
|
+
return { propertyName, referenceName };
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
226
|
//# sourceMappingURL=ReferenceBuilder.js.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { RequestBody } from '../../../model/openapi/open-api-types';
|
|
2
|
-
import { Reference } from './ReferenceBuilder';
|
|
3
|
-
import { ApexDocHttpRequestBody } from '../../../model/openapi/apex-doc-types';
|
|
4
|
-
import { Builder } from './Builder';
|
|
5
|
-
/**
|
|
6
|
-
* Parses and builds OpenApi Request Body objects.
|
|
7
|
-
*/
|
|
8
|
-
export declare class RequestBodyBuilder extends Builder<RequestBody, ApexDocHttpRequestBody> {
|
|
9
|
-
buildBody(apexRequestBody: ApexDocHttpRequestBody, reference?: Reference): RequestBody;
|
|
10
|
-
}
|
|
1
|
+
import { RequestBody } from '../../../model/openapi/open-api-types';
|
|
2
|
+
import { Reference } from './ReferenceBuilder';
|
|
3
|
+
import { ApexDocHttpRequestBody } from '../../../model/openapi/apex-doc-types';
|
|
4
|
+
import { Builder } from './Builder';
|
|
5
|
+
/**
|
|
6
|
+
* Parses and builds OpenApi Request Body objects.
|
|
7
|
+
*/
|
|
8
|
+
export declare class RequestBodyBuilder extends Builder<RequestBody, ApexDocHttpRequestBody> {
|
|
9
|
+
buildBody(apexRequestBody: ApexDocHttpRequestBody, reference?: Reference): RequestBody;
|
|
10
|
+
}
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.RequestBodyBuilder = void 0;
|
|
4
|
-
const Builder_1 = require("./Builder");
|
|
5
|
-
/**
|
|
6
|
-
* Parses and builds OpenApi Request Body objects.
|
|
7
|
-
*/
|
|
8
|
-
class RequestBodyBuilder extends Builder_1.Builder {
|
|
9
|
-
buildBody(apexRequestBody, reference) {
|
|
10
|
-
return {
|
|
11
|
-
description: apexRequestBody.description,
|
|
12
|
-
content: {
|
|
13
|
-
'application/json': { schema: this.getOpenApiSchemaFromApexDocSchema(apexRequestBody, reference) },
|
|
14
|
-
},
|
|
15
|
-
required: apexRequestBody.required,
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
exports.RequestBodyBuilder = RequestBodyBuilder;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RequestBodyBuilder = void 0;
|
|
4
|
+
const Builder_1 = require("./Builder");
|
|
5
|
+
/**
|
|
6
|
+
* Parses and builds OpenApi Request Body objects.
|
|
7
|
+
*/
|
|
8
|
+
class RequestBodyBuilder extends Builder_1.Builder {
|
|
9
|
+
buildBody(apexRequestBody, reference) {
|
|
10
|
+
return {
|
|
11
|
+
description: apexRequestBody.description,
|
|
12
|
+
content: {
|
|
13
|
+
'application/json': { schema: this.getOpenApiSchemaFromApexDocSchema(apexRequestBody, reference) },
|
|
14
|
+
},
|
|
15
|
+
required: apexRequestBody.required,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
exports.RequestBodyBuilder = RequestBodyBuilder;
|
|
20
20
|
//# sourceMappingURL=RequestBodyBuilder.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { ResponseObject } from '../../../model/openapi/open-api-types';
|
|
2
|
-
import { Reference } from './ReferenceBuilder';
|
|
3
|
-
import { ApexDocHttpResponse } from '../../../model/openapi/apex-doc-types';
|
|
4
|
-
import { Builder } from './Builder';
|
|
5
|
-
export declare class ResponsesBuilder extends Builder<ResponseObject, ApexDocHttpResponse> {
|
|
6
|
-
buildBody(apexDocResponseDefinition: ApexDocHttpResponse, reference?: Reference): ResponseObject;
|
|
7
|
-
}
|
|
1
|
+
import { ResponseObject } from '../../../model/openapi/open-api-types';
|
|
2
|
+
import { Reference } from './ReferenceBuilder';
|
|
3
|
+
import { ApexDocHttpResponse } from '../../../model/openapi/apex-doc-types';
|
|
4
|
+
import { Builder } from './Builder';
|
|
5
|
+
export declare class ResponsesBuilder extends Builder<ResponseObject, ApexDocHttpResponse> {
|
|
6
|
+
buildBody(apexDocResponseDefinition: ApexDocHttpResponse, reference?: Reference): ResponseObject;
|
|
7
|
+
}
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ResponsesBuilder = void 0;
|
|
4
|
-
const Builder_1 = require("./Builder");
|
|
5
|
-
class ResponsesBuilder extends Builder_1.Builder {
|
|
6
|
-
buildBody(apexDocResponseDefinition, reference) {
|
|
7
|
-
let description = `Status code ${apexDocResponseDefinition.statusCode}`;
|
|
8
|
-
if (apexDocResponseDefinition.description) {
|
|
9
|
-
description = apexDocResponseDefinition.description;
|
|
10
|
-
}
|
|
11
|
-
return {
|
|
12
|
-
description: description,
|
|
13
|
-
content: {
|
|
14
|
-
'application/json': {
|
|
15
|
-
schema: this.getOpenApiSchemaFromApexDocSchema(apexDocResponseDefinition, reference),
|
|
16
|
-
},
|
|
17
|
-
},
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
exports.ResponsesBuilder = ResponsesBuilder;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ResponsesBuilder = void 0;
|
|
4
|
+
const Builder_1 = require("./Builder");
|
|
5
|
+
class ResponsesBuilder extends Builder_1.Builder {
|
|
6
|
+
buildBody(apexDocResponseDefinition, reference) {
|
|
7
|
+
let description = `Status code ${apexDocResponseDefinition.statusCode}`;
|
|
8
|
+
if (apexDocResponseDefinition.description) {
|
|
9
|
+
description = apexDocResponseDefinition.description;
|
|
10
|
+
}
|
|
11
|
+
return {
|
|
12
|
+
description: description,
|
|
13
|
+
content: {
|
|
14
|
+
'application/json': {
|
|
15
|
+
schema: this.getOpenApiSchemaFromApexDocSchema(apexDocResponseDefinition, reference),
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
exports.ResponsesBuilder = ResponsesBuilder;
|
|
22
22
|
//# sourceMappingURL=ResponsesBuilder.js.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { Type } from '@cparra/apex-reflection';
|
|
2
|
-
import { FileContainer } from './file-container';
|
|
3
|
-
export type LinkingStrategy = 'root-relative' | 'path-relative';
|
|
4
|
-
export default abstract class ProcessorTypeTranspiler {
|
|
5
|
-
onBeforeProcess: ((types: Type[]) => void) | undefined;
|
|
6
|
-
abstract onProcess(type: Type): void;
|
|
7
|
-
onAfterProcess: ((types: Type[]) => void) | undefined;
|
|
8
|
-
abstract fileBuilder(): FileContainer;
|
|
9
|
-
getLinkingStrategy(): LinkingStrategy;
|
|
10
|
-
}
|
|
1
|
+
import { Type } from '@cparra/apex-reflection';
|
|
2
|
+
import { FileContainer } from './file-container';
|
|
3
|
+
export type LinkingStrategy = 'root-relative' | 'path-relative';
|
|
4
|
+
export default abstract class ProcessorTypeTranspiler {
|
|
5
|
+
onBeforeProcess: ((types: Type[]) => void) | undefined;
|
|
6
|
+
abstract onProcess(type: Type): void;
|
|
7
|
+
onAfterProcess: ((types: Type[]) => void) | undefined;
|
|
8
|
+
abstract fileBuilder(): FileContainer;
|
|
9
|
+
getLinkingStrategy(): LinkingStrategy;
|
|
10
|
+
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
class ProcessorTypeTranspiler {
|
|
4
|
-
getLinkingStrategy() {
|
|
5
|
-
return 'root-relative';
|
|
6
|
-
}
|
|
7
|
-
}
|
|
8
|
-
exports.default = ProcessorTypeTranspiler;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
class ProcessorTypeTranspiler {
|
|
4
|
+
getLinkingStrategy() {
|
|
5
|
+
return 'root-relative';
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
exports.default = ProcessorTypeTranspiler;
|
|
9
9
|
//# sourceMappingURL=processor-type-transpiler.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Type } from '@cparra/apex-reflection';
|
|
2
|
-
import ProcessorTypeTranspiler from './processor-type-transpiler';
|
|
3
|
-
export default class Transpiler {
|
|
4
|
-
static generate(types: Type[], processor: ProcessorTypeTranspiler): void;
|
|
5
|
-
}
|
|
1
|
+
import { Type } from '@cparra/apex-reflection';
|
|
2
|
+
import ProcessorTypeTranspiler from './processor-type-transpiler';
|
|
3
|
+
export default class Transpiler {
|
|
4
|
+
static generate(types: Type[], processor: ProcessorTypeTranspiler): void;
|
|
5
|
+
}
|