@autobe/utils 0.17.1 → 0.19.1
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/lib/MapUtil.d.ts +3 -0
- package/lib/MapUtil.js +16 -0
- package/lib/MapUtil.js.map +1 -0
- package/lib/StringUtil.js +27 -16
- package/lib/StringUtil.js.map +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/interface/invertOpenApiDocument.js +1 -0
- package/lib/interface/invertOpenApiDocument.js.map +1 -1
- package/lib/interface/transformOpenApiDocument.js +27 -5
- package/lib/interface/transformOpenApiDocument.js.map +1 -1
- package/package.json +4 -4
- package/src/MapUtil.ts +10 -0
- package/src/StringUtil.ts +30 -17
- package/src/index.ts +1 -0
- package/src/interface/invertOpenApiDocument.ts +1 -0
- package/src/interface/transformOpenApiDocument.ts +35 -3
package/lib/MapUtil.d.ts
ADDED
package/lib/MapUtil.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MapUtil = void 0;
|
|
4
|
+
var MapUtil;
|
|
5
|
+
(function (MapUtil) {
|
|
6
|
+
function take(map, key, value) {
|
|
7
|
+
if (map.has(key)) {
|
|
8
|
+
return map.get(key);
|
|
9
|
+
}
|
|
10
|
+
const newValue = value();
|
|
11
|
+
map.set(key, newValue);
|
|
12
|
+
return newValue;
|
|
13
|
+
}
|
|
14
|
+
MapUtil.take = take;
|
|
15
|
+
})(MapUtil || (exports.MapUtil = MapUtil = {}));
|
|
16
|
+
//# sourceMappingURL=MapUtil.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MapUtil.js","sourceRoot":"","sources":["../src/MapUtil.ts"],"names":[],"mappings":";;;AAAA,IAAiB,OAAO,CASvB;AATD,WAAiB,OAAO;IACtB,SAAgB,IAAI,CAAO,GAAc,EAAE,GAAM,EAAE,KAAc;QAC/D,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACjB,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAM,CAAC;QAC3B,CAAC;QACD,MAAM,QAAQ,GAAG,KAAK,EAAE,CAAC;QACzB,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACvB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAPe,YAAI,OAOnB,CAAA;AACH,CAAC,EATgB,OAAO,uBAAP,OAAO,QASvB"}
|
package/lib/StringUtil.js
CHANGED
|
@@ -4,11 +4,34 @@ exports.StringUtil = void 0;
|
|
|
4
4
|
var StringUtil;
|
|
5
5
|
(function (StringUtil) {
|
|
6
6
|
function trim(strings, ...values) {
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
// First remove indentation from each string part
|
|
8
|
+
const processedStrings = strings.map((str) => {
|
|
9
|
+
const lines = str.split("\n");
|
|
10
|
+
// Remove only indentation, not empty lines
|
|
11
|
+
const nonEmptyLines = lines.filter((line) => line.trim() !== "");
|
|
12
|
+
if (nonEmptyLines.length === 0)
|
|
13
|
+
return str; // Return original if all lines are empty
|
|
14
|
+
// Find minimum indentation among all non-empty lines
|
|
15
|
+
const indentLengths = nonEmptyLines.map((line) => {
|
|
16
|
+
var _a;
|
|
17
|
+
const leadingWhitespace = ((_a = line.match(/^[ \t]*/)) === null || _a === void 0 ? void 0 : _a[0]) || "";
|
|
18
|
+
return leadingWhitespace.length;
|
|
19
|
+
});
|
|
20
|
+
const indentLength = Math.min(...indentLengths);
|
|
21
|
+
// Remove indentation from all lines
|
|
22
|
+
const trimmedLines = lines.map((line) => {
|
|
23
|
+
if (line.trim() === "")
|
|
24
|
+
return "";
|
|
25
|
+
return line.slice(indentLength);
|
|
26
|
+
});
|
|
27
|
+
return trimmedLines.join("\n");
|
|
28
|
+
});
|
|
29
|
+
// Combine the indentation-removed strings with values
|
|
30
|
+
let result = processedStrings[0];
|
|
9
31
|
for (let i = 0; i < values.length; i++) {
|
|
10
|
-
result += String(values[i]) +
|
|
32
|
+
result += String(values[i]) + processedStrings[i + 1];
|
|
11
33
|
}
|
|
34
|
+
// Remove leading and trailing empty lines from final result
|
|
12
35
|
const lines = result.split("\n");
|
|
13
36
|
while (lines.length > 0 && lines[0].trim() === "") {
|
|
14
37
|
lines.shift();
|
|
@@ -16,19 +39,7 @@ var StringUtil;
|
|
|
16
39
|
while (lines.length > 0 && lines[lines.length - 1].trim() === "") {
|
|
17
40
|
lines.pop();
|
|
18
41
|
}
|
|
19
|
-
|
|
20
|
-
return "";
|
|
21
|
-
const firstNonEmptyLine = lines.find((line) => line.trim() !== "");
|
|
22
|
-
if (!firstNonEmptyLine)
|
|
23
|
-
return "";
|
|
24
|
-
const leadingWhitespace = ((_a = firstNonEmptyLine.match(/^[ \t]*/)) === null || _a === void 0 ? void 0 : _a[0]) || "";
|
|
25
|
-
const indentLength = leadingWhitespace.length;
|
|
26
|
-
const trimmedLines = lines.map((line) => {
|
|
27
|
-
if (line.trim() === "")
|
|
28
|
-
return "";
|
|
29
|
-
return line.slice(indentLength);
|
|
30
|
-
});
|
|
31
|
-
return trimmedLines.join("\n");
|
|
42
|
+
return lines.join("\n");
|
|
32
43
|
}
|
|
33
44
|
StringUtil.trim = trim;
|
|
34
45
|
function singleLine(strings, ...values) {
|
package/lib/StringUtil.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StringUtil.js","sourceRoot":"","sources":["../src/StringUtil.ts"],"names":[],"mappings":";;;AAAA,IAAiB,UAAU,
|
|
1
|
+
{"version":3,"file":"StringUtil.js","sourceRoot":"","sources":["../src/StringUtil.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
CHANGED
package/lib/index.js
CHANGED
|
@@ -16,5 +16,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./interface"), exports);
|
|
18
18
|
__exportStar(require("./test"), exports);
|
|
19
|
+
__exportStar(require("./MapUtil"), exports);
|
|
19
20
|
__exportStar(require("./StringUtil"), exports);
|
|
20
21
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,yCAAuB;AAEvB,+CAA6B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,yCAAuB;AAEvB,4CAA0B;AAC1B,+CAA6B"}
|
|
@@ -12,6 +12,7 @@ function invertOpenApiDocument(document) {
|
|
|
12
12
|
var _a, _b, _c, _d, _e, _f;
|
|
13
13
|
return ({
|
|
14
14
|
specification: empty("specification"),
|
|
15
|
+
authorizationType: null,
|
|
15
16
|
method: r.method,
|
|
16
17
|
path: r.path,
|
|
17
18
|
summary: (_a = r.operation().summary) !== null && _a !== void 0 ? _a : empty("summary"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invertOpenApiDocument.js","sourceRoot":"","sources":["../../src/interface/invertOpenApiDocument.ts"],"names":[],"mappings":";;AAQA,
|
|
1
|
+
{"version":3,"file":"invertOpenApiDocument.js","sourceRoot":"","sources":["../../src/interface/invertOpenApiDocument.ts"],"names":[],"mappings":";;AAQA,sDAsDC;AA7DD,8CAK0B;AAE1B,SAAgB,qBAAqB,CACnC,QAA2B;;IAE3B,MAAM,GAAG,GAA4B,uBAAa,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACzE,OAAO;QACL,UAAU,EAAE,GAAG,CAAC,MAAM;aACnB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC;aAC/B,GAAG,CACF,CAAC,CAAC,EAAE,EAAE;;YACJ,OAAA,CAAC;gBACC,aAAa,EAAE,KAAK,CAAC,eAAe,CAAC;gBACrC,iBAAiB,EAAE,IAAI;gBACvB,MAAM,EAAE,CAAC,CAAC,MAAgB;gBAC1B,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,OAAO,EAAE,MAAA,CAAC,CAAC,SAAS,EAAE,CAAC,OAAO,mCAAI,KAAK,CAAC,SAAS,CAAC;gBAClD,WAAW,EAAE,MAAA,CAAC,CAAC,SAAS,EAAE,CAAC,WAAW,mCAAI,KAAK,CAAC,aAAa,CAAC;gBAC9D,UAAU,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAC1B,CAAC,CAAC,EAAE,EAAE;;oBACJ,OAAA,CAAC;wBACC,IAAI,EAAE,CAAC,CAAC,IAAI;wBACZ,WAAW,EACT,MAAA,CAAC,CAAC,SAAS,EAAE,CAAC,WAAW,mCAAI,KAAK,CAAC,aAAa,CAAC;wBACnD,MAAM,EAAE,CAAC,CAAC,MAAa;qBACxB,CAAoC,CAAA;iBAAA,CACxC;gBACD,WAAW,EACT,CAAA,MAAA,CAAC,CAAC,IAAI,0CAAE,IAAI,MAAK,kBAAkB;oBACnC,4BAAkB,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;oBAC3C,CAAC,CAAC;wBACE,WAAW,EAAE,MAAA,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,mCAAI,KAAK,CAAC,aAAa,CAAC;wBACzD,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAG;qBAC/C;oBACH,CAAC,CAAC,IAAI;gBACV,YAAY,EACV,CAAA,MAAA,CAAC,CAAC,OAAO,0CAAE,IAAI,MAAK,kBAAkB;oBACtC,4BAAkB,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;oBAC9C,CAAC,CAAC;wBACE,WAAW,EACT,MAAA,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,mCAAI,KAAK,CAAC,aAAa,CAAC;wBACjD,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAG;qBAClD;oBACH,CAAC,CAAC,IAAI;gBACV,iBAAiB,EAAE,IAAI;gBACvB,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE;aACzB,CAAoC,CAAA;SAAA,CACxC;QACH,UAAU,EAAE;YACV,OAAO,EAAE,CAAC,MAAA,MAAA,QAAQ,CAAC,UAAU,0CAAE,OAAO,mCAAI,EAAE,CAG3C;YACD,aAAa,EAAE,EAAE;SAClB;KACF,CAAC;AACJ,CAAC;AAED,SAAS,KAAK,CAAC,GAAW;IACxB,OAAO,YAAY,GAAG,oDAAoD,CAAC;AAC7E,CAAC"}
|
|
@@ -2,15 +2,23 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.transformOpenApiDocument = transformOpenApiDocument;
|
|
4
4
|
const openapi_1 = require("@samchon/openapi");
|
|
5
|
+
const tstl_1 = require("tstl");
|
|
6
|
+
const AutoBeEndpointComparator_1 = require("./AutoBeEndpointComparator");
|
|
5
7
|
function transformOpenApiDocument(document) {
|
|
6
|
-
var _a;
|
|
7
|
-
var
|
|
8
|
+
var _a, _b;
|
|
9
|
+
var _c;
|
|
10
|
+
const dict = new tstl_1.HashMap(AutoBeEndpointComparator_1.AutoBeEndpointComparator.hashCode, AutoBeEndpointComparator_1.AutoBeEndpointComparator.equals);
|
|
8
11
|
const paths = {};
|
|
9
12
|
for (const op of document.operations) {
|
|
10
|
-
(
|
|
13
|
+
dict.set(op, op.name);
|
|
14
|
+
(_a = paths[_c = op.path]) !== null && _a !== void 0 ? _a : (paths[_c] = {});
|
|
11
15
|
paths[op.path][op.method] = {
|
|
12
16
|
summary: op.summary,
|
|
13
|
-
description: op.description
|
|
17
|
+
description: op.description +
|
|
18
|
+
(op.authorizationType !== null &&
|
|
19
|
+
((_b = op.responseBody) === null || _b === void 0 ? void 0 : _b.typeName.endsWith(".IAuthorized")) === true
|
|
20
|
+
? "\n\n@setHeader token.access Authorization"
|
|
21
|
+
: ""),
|
|
14
22
|
parameters: op.parameters.map((p) => ({
|
|
15
23
|
name: p.name,
|
|
16
24
|
in: "path",
|
|
@@ -47,10 +55,24 @@ function transformOpenApiDocument(document) {
|
|
|
47
55
|
: undefined,
|
|
48
56
|
};
|
|
49
57
|
}
|
|
50
|
-
|
|
58
|
+
const result = openapi_1.OpenApi.convert({
|
|
51
59
|
openapi: "3.1.0",
|
|
52
60
|
paths,
|
|
53
61
|
components: document.components,
|
|
54
62
|
});
|
|
63
|
+
const migrate = openapi_1.HttpMigration.application(result);
|
|
64
|
+
migrate.routes.forEach((r) => {
|
|
65
|
+
if (r.method === "head")
|
|
66
|
+
return;
|
|
67
|
+
const name = dict.get({
|
|
68
|
+
method: r.method,
|
|
69
|
+
path: r.path,
|
|
70
|
+
});
|
|
71
|
+
if (r.accessor.length >= 2 && r.accessor.at(-2) === name)
|
|
72
|
+
r.accessor.pop();
|
|
73
|
+
r.accessor[r.accessor.length - 1] = name;
|
|
74
|
+
r.operation()["x-samchon-accessor"] = r.accessor;
|
|
75
|
+
});
|
|
76
|
+
return result;
|
|
55
77
|
}
|
|
56
78
|
//# sourceMappingURL=transformOpenApiDocument.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transformOpenApiDocument.js","sourceRoot":"","sources":["../../src/interface/transformOpenApiDocument.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"transformOpenApiDocument.js","sourceRoot":"","sources":["../../src/interface/transformOpenApiDocument.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@autobe/utils",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.19.1",
|
|
4
4
|
"description": "AI backend server code generator",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"keywords": [],
|
|
@@ -24,10 +24,10 @@
|
|
|
24
24
|
"access": "public"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@samchon/openapi": "^4.
|
|
27
|
+
"@samchon/openapi": "^4.7.1",
|
|
28
28
|
"tstl": "^3.0.0",
|
|
29
|
-
"typia": "^9.
|
|
30
|
-
"@autobe/interface": "^0.
|
|
29
|
+
"typia": "^9.7.1",
|
|
30
|
+
"@autobe/interface": "^0.19.1"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
33
|
"rimraf": "^6.0.1",
|
package/src/MapUtil.ts
ADDED
package/src/StringUtil.ts
CHANGED
|
@@ -3,11 +3,37 @@ export namespace StringUtil {
|
|
|
3
3
|
strings: TemplateStringsArray,
|
|
4
4
|
...values: any[]
|
|
5
5
|
): string {
|
|
6
|
-
|
|
6
|
+
// First remove indentation from each string part
|
|
7
|
+
const processedStrings = strings.map((str) => {
|
|
8
|
+
const lines = str.split("\n");
|
|
9
|
+
|
|
10
|
+
// Remove only indentation, not empty lines
|
|
11
|
+
const nonEmptyLines = lines.filter((line) => line.trim() !== "");
|
|
12
|
+
if (nonEmptyLines.length === 0) return str; // Return original if all lines are empty
|
|
13
|
+
|
|
14
|
+
// Find minimum indentation among all non-empty lines
|
|
15
|
+
const indentLengths = nonEmptyLines.map((line) => {
|
|
16
|
+
const leadingWhitespace = line.match(/^[ \t]*/)?.[0] || "";
|
|
17
|
+
return leadingWhitespace.length;
|
|
18
|
+
});
|
|
19
|
+
const indentLength = Math.min(...indentLengths);
|
|
20
|
+
|
|
21
|
+
// Remove indentation from all lines
|
|
22
|
+
const trimmedLines = lines.map((line) => {
|
|
23
|
+
if (line.trim() === "") return "";
|
|
24
|
+
return line.slice(indentLength);
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
return trimmedLines.join("\n");
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
// Combine the indentation-removed strings with values
|
|
31
|
+
let result: string = processedStrings[0];
|
|
7
32
|
for (let i = 0; i < values.length; i++) {
|
|
8
|
-
result += String(values[i]) +
|
|
33
|
+
result += String(values[i]) + processedStrings[i + 1];
|
|
9
34
|
}
|
|
10
35
|
|
|
36
|
+
// Remove leading and trailing empty lines from final result
|
|
11
37
|
const lines: string[] = result.split("\n");
|
|
12
38
|
while (lines.length > 0 && lines[0].trim() === "") {
|
|
13
39
|
lines.shift();
|
|
@@ -15,21 +41,8 @@ export namespace StringUtil {
|
|
|
15
41
|
while (lines.length > 0 && lines[lines.length - 1].trim() === "") {
|
|
16
42
|
lines.pop();
|
|
17
43
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
const firstNonEmptyLine: string | undefined = lines.find(
|
|
21
|
-
(line) => line.trim() !== "",
|
|
22
|
-
);
|
|
23
|
-
if (!firstNonEmptyLine) return "";
|
|
24
|
-
|
|
25
|
-
const leadingWhitespace: string =
|
|
26
|
-
firstNonEmptyLine.match(/^[ \t]*/)?.[0] || "";
|
|
27
|
-
const indentLength: number = leadingWhitespace.length;
|
|
28
|
-
const trimmedLines: string[] = lines.map((line) => {
|
|
29
|
-
if (line.trim() === "") return "";
|
|
30
|
-
return line.slice(indentLength);
|
|
31
|
-
});
|
|
32
|
-
return trimmedLines.join("\n");
|
|
44
|
+
|
|
45
|
+
return lines.join("\n");
|
|
33
46
|
}
|
|
34
47
|
|
|
35
48
|
export function singleLine(
|
package/src/index.ts
CHANGED
|
@@ -1,15 +1,34 @@
|
|
|
1
1
|
import { AutoBeOpenApi } from "@autobe/interface";
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
HttpMigration,
|
|
4
|
+
IHttpMigrateApplication,
|
|
5
|
+
OpenApi,
|
|
6
|
+
OpenApiV3_1,
|
|
7
|
+
} from "@samchon/openapi";
|
|
8
|
+
import { HashMap } from "tstl";
|
|
9
|
+
|
|
10
|
+
import { AutoBeEndpointComparator } from "./AutoBeEndpointComparator";
|
|
3
11
|
|
|
4
12
|
export function transformOpenApiDocument(
|
|
5
13
|
document: AutoBeOpenApi.IDocument,
|
|
6
14
|
): OpenApi.IDocument {
|
|
15
|
+
const dict: HashMap<AutoBeOpenApi.IEndpoint, string> = new HashMap(
|
|
16
|
+
AutoBeEndpointComparator.hashCode,
|
|
17
|
+
AutoBeEndpointComparator.equals,
|
|
18
|
+
);
|
|
7
19
|
const paths: Record<string, OpenApi.IPath> = {};
|
|
20
|
+
|
|
8
21
|
for (const op of document.operations) {
|
|
22
|
+
dict.set(op, op.name);
|
|
9
23
|
paths[op.path] ??= {};
|
|
10
24
|
paths[op.path][op.method] = {
|
|
11
25
|
summary: op.summary,
|
|
12
|
-
description:
|
|
26
|
+
description:
|
|
27
|
+
op.description +
|
|
28
|
+
(op.authorizationType !== null &&
|
|
29
|
+
op.responseBody?.typeName.endsWith(".IAuthorized") === true
|
|
30
|
+
? "\n\n@setHeader token.access Authorization"
|
|
31
|
+
: ""),
|
|
13
32
|
parameters: op.parameters.map((p) => ({
|
|
14
33
|
name: p.name,
|
|
15
34
|
in: "path",
|
|
@@ -46,9 +65,22 @@ export function transformOpenApiDocument(
|
|
|
46
65
|
: undefined,
|
|
47
66
|
};
|
|
48
67
|
}
|
|
49
|
-
|
|
68
|
+
|
|
69
|
+
const result: OpenApi.IDocument = OpenApi.convert({
|
|
50
70
|
openapi: "3.1.0",
|
|
51
71
|
paths,
|
|
52
72
|
components: document.components,
|
|
53
73
|
} as OpenApiV3_1.IDocument);
|
|
74
|
+
const migrate: IHttpMigrateApplication = HttpMigration.application(result);
|
|
75
|
+
migrate.routes.forEach((r) => {
|
|
76
|
+
if (r.method === "head") return;
|
|
77
|
+
const name: string = dict.get({
|
|
78
|
+
method: r.method,
|
|
79
|
+
path: r.path,
|
|
80
|
+
});
|
|
81
|
+
if (r.accessor.length >= 2 && r.accessor.at(-2) === name) r.accessor.pop();
|
|
82
|
+
r.accessor[r.accessor.length - 1] = name;
|
|
83
|
+
r.operation()["x-samchon-accessor"] = r.accessor;
|
|
84
|
+
});
|
|
85
|
+
return result;
|
|
54
86
|
}
|