@cparra/apexdocs 2.19.0 → 2.20.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 +1 -0
- package/apexdocs.config.ts +11 -11
- package/lib/transpiler/openapi/open-api-docs-processor.js +1 -1
- package/lib/transpiler/openapi/open-api-docs-processor.js.map +1 -1
- package/lib/util/string-utils.js +2 -0
- package/lib/util/string-utils.js.map +1 -1
- package/package.json +2 -2
- package/src/transpiler/openapi/__tests__/open-api-docs-processor.spec.ts +15 -0
- package/src/transpiler/openapi/open-api-docs-processor.ts +1 -1
- package/src/util/string-utils.ts +2 -0
package/README.md
CHANGED
|
@@ -66,6 +66,7 @@ files.
|
|
|
66
66
|
|
|
67
67
|
### In the wild
|
|
68
68
|
|
|
69
|
+
- [Expression](https://cesarparra.github.io/expression/)
|
|
69
70
|
- [Nimble AMS Docs](https://nimbleuser.github.io/nams-api-docs/#/api-reference/)
|
|
70
71
|
- [Yet Another Salesforce Logger](https://cesarparra.github.io/yet-another-salesforce-logger/#/)
|
|
71
72
|
|
package/apexdocs.config.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { TargetFile } from './src/settings';
|
|
2
|
-
|
|
3
|
-
export default {
|
|
4
|
-
onBeforeFileWrite: (file: TargetFile): TargetFile => {
|
|
5
|
-
console.log('onBefore writing', file);
|
|
6
|
-
return file;
|
|
7
|
-
},
|
|
8
|
-
onAfterProcess: (files: TargetFile[]) => {
|
|
9
|
-
console.log('onAfterProcess files', files);
|
|
10
|
-
},
|
|
11
|
-
};
|
|
1
|
+
import { TargetFile } from './src/settings';
|
|
2
|
+
|
|
3
|
+
export default {
|
|
4
|
+
onBeforeFileWrite: (file: TargetFile): TargetFile => {
|
|
5
|
+
console.log('onBefore writing', file);
|
|
6
|
+
return file;
|
|
7
|
+
},
|
|
8
|
+
onAfterProcess: (files: TargetFile[]) => {
|
|
9
|
+
console.log('onAfterProcess files', files);
|
|
10
|
+
},
|
|
11
|
+
};
|
|
@@ -39,7 +39,7 @@ class OpenApiDocsProcessor extends processor_type_transpiler_1.default {
|
|
|
39
39
|
// We can safely cast to a ClassMirror, since only these support the @RestResource annotation
|
|
40
40
|
const typeAsClass = type;
|
|
41
41
|
// Add tags for this Apex class to the OpenApi model
|
|
42
|
-
const tagName = (0, string_utils_1.camel2title)(endpointPath
|
|
42
|
+
const tagName = (0, string_utils_1.camel2title)(endpointPath);
|
|
43
43
|
this.openApiModel.tags.push({
|
|
44
44
|
name: tagName,
|
|
45
45
|
description: (_b = type.docComment) === null || _b === void 0 ? void 0 : _b.description,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"open-api-docs-processor.js","sourceRoot":"","sources":["../../../src/transpiler/openapi/open-api-docs-processor.ts"],"names":[],"mappings":";;;AAAA,4EAAmE;AACnE,sDAAkD;AAElD,6EAAwE;AACxE,8CAA2C;AAC3C,2DAAuD;AACvD,6CAA0C;AAC1C,yDAAsD;AACtD,0DAAsD;AAEtD,MAAa,oBAAqB,SAAQ,mCAAuB;IAI/D;QACE,KAAK,EAAE,CAAC;QAsDV,mBAAc,GAA0C,GAAG,EAAE;YAC3D,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,mCAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QACvE,CAAC,CAAC;QAvDA,IAAI,CAAC,cAAc,GAAG,IAAI,8BAAa,EAAE,CAAC;QAC1C,MAAM,KAAK,GAAG,mBAAQ,CAAC,WAAW,EAAE,CAAC,eAAe,EAAE,CAAC;QACvD,IAAI,CAAC,KAAK,EAAE;YACV,MAAM,KAAK,CAAC,gCAAgC,CAAC,CAAC;SAC/C;QACD,IAAI,CAAC,YAAY,GAAG,IAAI,kBAAO,CAAC,KAAK,EAAE,OAAO,EAAE,mBAAQ,CAAC,WAAW,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC;IACzF,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED,SAAS,CAAC,IAAU;;QAClB,eAAM,CAAC,SAAS,CAAC,cAAc,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QAEnE,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC,YAAY,EAAE;YACjB,OAAO;SACR;QAED,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;QAC3C,IAAI,MAAA,IAAI,CAAC,UAAU,0CAAE,WAAW,EAAE;YAChC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;SACjF;QAED,6FAA6F;QAC7F,MAAM,WAAW,GAAG,IAAmB,CAAC;QAExC,oDAAoD;QACpD,MAAM,OAAO,GAAG,IAAA,0BAAW,EAAC,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"open-api-docs-processor.js","sourceRoot":"","sources":["../../../src/transpiler/openapi/open-api-docs-processor.ts"],"names":[],"mappings":"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"}
|
package/lib/util/string-utils.js
CHANGED
|
@@ -6,7 +6,9 @@ function truncate(str, n) {
|
|
|
6
6
|
}
|
|
7
7
|
exports.truncate = truncate;
|
|
8
8
|
const camel2title = (camelCase) => camelCase
|
|
9
|
+
.replace(/\//g, ' ')
|
|
9
10
|
.replace(/([A-Z])/g, (match) => ` ${match}`)
|
|
11
|
+
.replace(/\b\w/g, (match) => match.toUpperCase())
|
|
10
12
|
.replace(/^./, (match) => match.toUpperCase())
|
|
11
13
|
.trim();
|
|
12
14
|
exports.camel2title = camel2title;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"string-utils.js","sourceRoot":"","sources":["../../src/util/string-utils.ts"],"names":[],"mappings":";;;AAAA,SAAgB,QAAQ,CAAC,GAAW,EAAE,CAAS;IAC7C,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC;AAClE,CAAC;AAFD,4BAEC;AAEM,MAAM,WAAW,GAAG,CAAC,SAAiB,EAAE,EAAE,CAC/C,SAAS;KACN,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC;KAC3C,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;KAC7C,IAAI,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"string-utils.js","sourceRoot":"","sources":["../../src/util/string-utils.ts"],"names":[],"mappings":";;;AAAA,SAAgB,QAAQ,CAAC,GAAW,EAAE,CAAS;IAC7C,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC;AAClE,CAAC;AAFD,4BAEC;AAEM,MAAM,WAAW,GAAG,CAAC,SAAiB,EAAE,EAAE,CAC/C,SAAS;KACN,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;KACnB,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC;KAC3C,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;KAChD,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;KAC7C,IAAI,EAAE,CAAC;AANC,QAAA,WAAW,eAMZ"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cparra/apexdocs",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.20.0",
|
|
4
4
|
"description": "Library with CLI capabilities to generate documentation for Salesforce Apex classes.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"apex",
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
]
|
|
67
67
|
},
|
|
68
68
|
"dependencies": {
|
|
69
|
-
"@cparra/apex-reflection": "2.
|
|
69
|
+
"@cparra/apex-reflection": "2.6.0",
|
|
70
70
|
"chalk": "^4.1.2",
|
|
71
71
|
"cosmiconfig": "^9.0.0",
|
|
72
72
|
"fast-xml-parser": "^4.0.1",
|
|
@@ -24,6 +24,21 @@ it('should add a path based on the @UrlResource annotation on the class', functi
|
|
|
24
24
|
expect(processor.openApiModel.paths).toHaveProperty('Account/');
|
|
25
25
|
});
|
|
26
26
|
|
|
27
|
+
it('should respect slashes', function () {
|
|
28
|
+
const annotationElementValue = {
|
|
29
|
+
key: 'urlMapping',
|
|
30
|
+
value: "'v1/Account/*'",
|
|
31
|
+
};
|
|
32
|
+
const classMirror = new ClassMirrorBuilder()
|
|
33
|
+
.addAnnotation(new AnnotationBuilder().addElementValue(annotationElementValue).build())
|
|
34
|
+
.build();
|
|
35
|
+
|
|
36
|
+
const processor = new OpenApiDocsProcessor();
|
|
37
|
+
processor.onProcess(classMirror);
|
|
38
|
+
|
|
39
|
+
expect(processor.openApiModel.paths).toHaveProperty('v1/Account/');
|
|
40
|
+
});
|
|
41
|
+
|
|
27
42
|
it('should contain a path with a description when the class has an ApexDoc comment', function () {
|
|
28
43
|
const annotationElementValue = {
|
|
29
44
|
key: 'urlMapping',
|
|
@@ -43,7 +43,7 @@ export class OpenApiDocsProcessor extends ProcessorTypeTranspiler {
|
|
|
43
43
|
const typeAsClass = type as ClassMirror;
|
|
44
44
|
|
|
45
45
|
// Add tags for this Apex class to the OpenApi model
|
|
46
|
-
const tagName = camel2title(endpointPath
|
|
46
|
+
const tagName = camel2title(endpointPath);
|
|
47
47
|
this.openApiModel.tags.push({
|
|
48
48
|
name: tagName,
|
|
49
49
|
description: type.docComment?.description,
|
package/src/util/string-utils.ts
CHANGED
|
@@ -4,6 +4,8 @@ export function truncate(str: string, n: number) {
|
|
|
4
4
|
|
|
5
5
|
export const camel2title = (camelCase: string) =>
|
|
6
6
|
camelCase
|
|
7
|
+
.replace(/\//g, ' ')
|
|
7
8
|
.replace(/([A-Z])/g, (match) => ` ${match}`)
|
|
9
|
+
.replace(/\b\w/g, (match) => match.toUpperCase())
|
|
8
10
|
.replace(/^./, (match) => match.toUpperCase())
|
|
9
11
|
.trim();
|