@backstage/repo-tools 0.15.2 → 0.15.3
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/CHANGELOG.md +18 -0
- package/dist/commands/package/schema/openapi/generate/client.cjs.js +7 -0
- package/dist/commands/package/schema/openapi/generate/server.cjs.js +13 -6
- package/dist/lib/openapi/dedupe-imports.cjs.js +46 -0
- package/dist/lib/openapi/helpers.cjs.js +5 -5
- package/dist/package.json.cjs.js +1 -1
- package/package.json +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# @backstage/repo-tools
|
|
2
2
|
|
|
3
|
+
## 0.15.3
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 1359279: Fixed an issue with the OpenAPI generated client and server where import/export statements were duplicated.
|
|
8
|
+
- Updated dependencies
|
|
9
|
+
- @backstage/config-loader@1.10.5
|
|
10
|
+
- @backstage/backend-plugin-api@1.4.4
|
|
11
|
+
|
|
12
|
+
## 0.15.3-next.0
|
|
13
|
+
|
|
14
|
+
### Patch Changes
|
|
15
|
+
|
|
16
|
+
- Updated dependencies
|
|
17
|
+
- @backstage/config-loader@1.10.4-next.0
|
|
18
|
+
- @backstage/backend-plugin-api@1.4.4-next.0
|
|
19
|
+
- @backstage/cli-node@0.2.14
|
|
20
|
+
|
|
3
21
|
## 0.15.2
|
|
4
22
|
|
|
5
23
|
### Patch Changes
|
|
@@ -8,6 +8,7 @@ var fs = require('fs-extra');
|
|
|
8
8
|
var exec = require('../../../../../lib/exec.cjs.js');
|
|
9
9
|
var backendPluginApi = require('@backstage/backend-plugin-api');
|
|
10
10
|
var helpers = require('../../../../../lib/openapi/helpers.cjs.js');
|
|
11
|
+
var dedupeImports = require('../../../../../lib/openapi/dedupe-imports.cjs.js');
|
|
11
12
|
|
|
12
13
|
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
|
|
13
14
|
|
|
@@ -72,6 +73,12 @@ async function generate(outputDirectory, clientAdditionalProperties, abortSignal
|
|
|
72
73
|
signal: abortSignal?.signal
|
|
73
74
|
});
|
|
74
75
|
}
|
|
76
|
+
const generatedFiles = await fs__default.default.readdir(resolvedOutputDirectory);
|
|
77
|
+
for (const file of generatedFiles) {
|
|
78
|
+
if (file.endsWith(".ts")) {
|
|
79
|
+
dedupeImports.deduplicateImports(path.resolve(resolvedOutputDirectory, file));
|
|
80
|
+
}
|
|
81
|
+
}
|
|
75
82
|
fs__default.default.removeSync(path.resolve(resolvedOutputDirectory, ".openapi-generator-ignore"));
|
|
76
83
|
fs__default.default.rmSync(path.resolve(resolvedOutputDirectory, ".openapi-generator"), {
|
|
77
84
|
recursive: true,
|
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
var backendPluginApi = require('@backstage/backend-plugin-api');
|
|
3
4
|
var chalk = require('chalk');
|
|
4
|
-
var path = require('path');
|
|
5
|
-
var YAML = require('js-yaml');
|
|
6
|
-
var constants = require('../../../../../lib/openapi/constants.cjs.js');
|
|
7
|
-
var paths = require('../../../../../lib/paths.cjs.js');
|
|
8
5
|
var fs = require('fs-extra');
|
|
6
|
+
var YAML = require('js-yaml');
|
|
7
|
+
var path = require('path');
|
|
9
8
|
var exec = require('../../../../../lib/exec.cjs.js');
|
|
10
|
-
var
|
|
9
|
+
var constants = require('../../../../../lib/openapi/constants.cjs.js');
|
|
10
|
+
var dedupeImports = require('../../../../../lib/openapi/dedupe-imports.cjs.js');
|
|
11
11
|
var helpers = require('../../../../../lib/openapi/helpers.cjs.js');
|
|
12
|
+
var paths = require('../../../../../lib/paths.cjs.js');
|
|
12
13
|
|
|
13
14
|
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
|
|
14
15
|
|
|
15
16
|
var chalk__default = /*#__PURE__*/_interopDefaultCompat(chalk);
|
|
16
|
-
var YAML__default = /*#__PURE__*/_interopDefaultCompat(YAML);
|
|
17
17
|
var fs__default = /*#__PURE__*/_interopDefaultCompat(fs);
|
|
18
|
+
var YAML__default = /*#__PURE__*/_interopDefaultCompat(YAML);
|
|
18
19
|
|
|
19
20
|
async function generateSpecFile() {
|
|
20
21
|
const openapiPath = await helpers.getPathToCurrentOpenApiSpec();
|
|
@@ -95,6 +96,12 @@ async function generate(serverAdditionalProperties, abortSignal) {
|
|
|
95
96
|
signal: abortSignal?.signal
|
|
96
97
|
}
|
|
97
98
|
);
|
|
99
|
+
const generatedFiles = await fs__default.default.readdir(resolvedOutputDirectory);
|
|
100
|
+
for (const file of generatedFiles) {
|
|
101
|
+
if (file.endsWith(".ts")) {
|
|
102
|
+
dedupeImports.deduplicateImports(path.resolve(resolvedOutputDirectory, file));
|
|
103
|
+
}
|
|
104
|
+
}
|
|
98
105
|
await exec.exec(
|
|
99
106
|
`yarn backstage-cli package lint --fix ${resolvedOutputDirectory}`,
|
|
100
107
|
[],
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var fs = require('fs');
|
|
4
|
+
|
|
5
|
+
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
|
|
6
|
+
|
|
7
|
+
var fs__default = /*#__PURE__*/_interopDefaultCompat(fs);
|
|
8
|
+
|
|
9
|
+
function deduplicateImports(filePath) {
|
|
10
|
+
const content = fs__default.default.readFileSync(filePath, "utf8");
|
|
11
|
+
const lines = content.split("\n");
|
|
12
|
+
const seen = /* @__PURE__ */ new Set();
|
|
13
|
+
const result = [];
|
|
14
|
+
let i = 0;
|
|
15
|
+
while (i < lines.length) {
|
|
16
|
+
const line = lines[i];
|
|
17
|
+
const trimmed = line.trim();
|
|
18
|
+
if (trimmed.startsWith("import ") || trimmed.startsWith("export ")) {
|
|
19
|
+
let fullStatement = line;
|
|
20
|
+
let endIndex = i;
|
|
21
|
+
if (trimmed.includes("{") && !trimmed.includes("}")) {
|
|
22
|
+
while (endIndex < lines.length && !lines[endIndex].includes("}")) {
|
|
23
|
+
endIndex++;
|
|
24
|
+
}
|
|
25
|
+
if (endIndex < lines.length) {
|
|
26
|
+
fullStatement = lines.slice(i, endIndex + 1).join("\n");
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
const normalized = fullStatement.replace(/\/\/.*$/gm, "").replace(/\s+/g, " ").trim();
|
|
30
|
+
if (!seen.has(normalized)) {
|
|
31
|
+
seen.add(normalized);
|
|
32
|
+
for (let j = i; j <= endIndex; j++) {
|
|
33
|
+
result.push(lines[j]);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
i = endIndex + 1;
|
|
37
|
+
} else {
|
|
38
|
+
result.push(line);
|
|
39
|
+
i++;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
fs__default.default.writeFileSync(filePath, result.join("\n"));
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
exports.deduplicateImports = deduplicateImports;
|
|
46
|
+
//# sourceMappingURL=dedupe-imports.cjs.js.map
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
var Parser = require('@apidevtools/swagger-parser');
|
|
3
4
|
var fs = require('fs-extra');
|
|
4
|
-
var paths = require('../paths.cjs.js');
|
|
5
|
-
var constants = require('./constants.cjs.js');
|
|
6
|
-
var path = require('path');
|
|
7
5
|
var YAML = require('js-yaml');
|
|
8
6
|
var lodash = require('lodash');
|
|
9
|
-
var
|
|
7
|
+
var path = require('path');
|
|
8
|
+
var paths = require('../paths.cjs.js');
|
|
9
|
+
var constants = require('./constants.cjs.js');
|
|
10
10
|
|
|
11
11
|
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
|
|
12
12
|
|
|
13
|
+
var Parser__default = /*#__PURE__*/_interopDefaultCompat(Parser);
|
|
13
14
|
var fs__default = /*#__PURE__*/_interopDefaultCompat(fs);
|
|
14
15
|
var YAML__default = /*#__PURE__*/_interopDefaultCompat(YAML);
|
|
15
|
-
var Parser__default = /*#__PURE__*/_interopDefaultCompat(Parser);
|
|
16
16
|
|
|
17
17
|
const getPathToFile = async (directory, filename) => {
|
|
18
18
|
return path.resolve(directory, filename);
|
package/dist/package.json.cjs.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@backstage/repo-tools",
|
|
3
|
-
"version": "0.15.
|
|
3
|
+
"version": "0.15.3",
|
|
4
4
|
"description": "CLI for Backstage repo tooling ",
|
|
5
5
|
"backstage": {
|
|
6
6
|
"role": "cli"
|
|
@@ -43,11 +43,11 @@
|
|
|
43
43
|
"dependencies": {
|
|
44
44
|
"@apidevtools/swagger-parser": "^10.1.0",
|
|
45
45
|
"@apisyouwonthate/style-guide": "^1.4.0",
|
|
46
|
-
"@backstage/backend-plugin-api": "^1.4.
|
|
46
|
+
"@backstage/backend-plugin-api": "^1.4.4",
|
|
47
47
|
"@backstage/catalog-model": "^1.7.5",
|
|
48
48
|
"@backstage/cli-common": "^0.1.15",
|
|
49
49
|
"@backstage/cli-node": "^0.2.14",
|
|
50
|
-
"@backstage/config-loader": "^1.10.
|
|
50
|
+
"@backstage/config-loader": "^1.10.5",
|
|
51
51
|
"@backstage/errors": "^1.2.7",
|
|
52
52
|
"@electric-sql/pglite": "^0.3.0",
|
|
53
53
|
"@manypkg/get-packages": "^1.1.3",
|
|
@@ -86,8 +86,8 @@
|
|
|
86
86
|
"zod": "^3.22.4"
|
|
87
87
|
},
|
|
88
88
|
"devDependencies": {
|
|
89
|
-
"@backstage/backend-test-utils": "^1.9.
|
|
90
|
-
"@backstage/cli": "^0.34.
|
|
89
|
+
"@backstage/backend-test-utils": "^1.9.1",
|
|
90
|
+
"@backstage/cli": "^0.34.4",
|
|
91
91
|
"@backstage/types": "^1.2.2",
|
|
92
92
|
"@types/is-glob": "^4.0.2",
|
|
93
93
|
"@types/node": "^20.16.0",
|