Merge pull request #22829 from backstage/renovate/fs-extra-11.x

Update dependency fs-extra to v11
This commit is contained in:
Fredrik Adelöw
2024-02-14 08:54:53 +01:00
committed by GitHub
37 changed files with 261 additions and 284 deletions
+36
View File
@@ -0,0 +1,36 @@
---
'@backstage/plugin-scaffolder-backend-module-confluence-to-markdown': patch
'@backstage/plugin-scaffolder-backend-module-bitbucket-server': patch
'@backstage/plugin-scaffolder-backend-module-bitbucket-cloud': patch
'@backstage/plugin-scaffolder-backend-module-cookiecutter': patch
'@backstage/plugin-scaffolder-backend-module-bitbucket': patch
'@backstage/backend-dynamic-feature-service': patch
'@backstage/plugin-scaffolder-backend-module-github': patch
'@backstage/plugin-scaffolder-backend-module-rails': patch
'@backstage/plugin-catalog-backend-module-gerrit': patch
'@backstage/backend-test-utils': patch
'@backstage/plugin-kubernetes-backend': patch
'@backstage/plugin-scaffolder-backend': patch
'@backstage/backend-app-api': patch
'@backstage/plugin-devtools-backend': patch
'@backstage/plugin-linguist-backend': patch
'@backstage/plugin-techdocs-backend': patch
'@backstage/backend-common': patch
'@backstage/e2e-test-utils': patch
'@backstage/plugin-catalog-backend': patch
'@backstage/plugin-rollbar-backend': patch
'@backstage/plugin-scaffolder-node': patch
'@backstage/config-loader': patch
'@techdocs/cli': patch
'@backstage/plugin-techdocs-node': patch
'@backstage/plugin-auth-backend': patch
'@backstage/create-app': patch
'@backstage/repo-tools': patch
'@backstage/plugin-app-backend': patch
'@backstage/cli-node': patch
'@backstage/plugin-app-node': patch
'@backstage/cli': patch
---
Updated dependency `fs-extra` to `^11.2.0`.
Updated dependency `@types/fs-extra` to `^11.0.0`.
+1 -1
View File
@@ -90,7 +90,7 @@
"eslint-plugin-notice": "^0.9.10",
"eslint-plugin-react": "^7.28.0",
"eslint-plugin-testing-library": "^6.0.0",
"fs-extra": "10.1.0",
"fs-extra": "^11.2.0",
"husky": "^9.0.0",
"knip": "^5.0.0",
"lint-staged": "^15.0.0",
+2 -2
View File
@@ -63,7 +63,7 @@
"cors": "^2.8.5",
"express": "^4.17.1",
"express-promise-router": "^4.1.0",
"fs-extra": "10.1.0",
"fs-extra": "^11.2.0",
"helmet": "^6.0.0",
"lodash": "^4.17.21",
"logform": "^2.3.2",
@@ -80,7 +80,7 @@
"@backstage/backend-test-utils": "workspace:^",
"@backstage/cli": "workspace:^",
"@types/compression": "^1.7.0",
"@types/fs-extra": "^9.0.3",
"@types/fs-extra": "^11.0.0",
"@types/http-errors": "^2.0.0",
"@types/minimist": "^1.2.0",
"@types/morgan": "^1.9.0",
+2 -2
View File
@@ -83,7 +83,7 @@
"dockerode": "^3.3.1",
"express": "^4.17.1",
"express-promise-router": "^4.1.0",
"fs-extra": "10.1.0",
"fs-extra": "^11.2.0",
"git-url-parse": "^14.0.0",
"helmet": "^6.0.0",
"isomorphic-git": "^1.23.0",
@@ -122,7 +122,7 @@
"@types/base64-stream": "^1.0.2",
"@types/compression": "^1.7.0",
"@types/concat-stream": "^2.0.0",
"@types/fs-extra": "^9.0.3",
"@types/fs-extra": "^11.0.0",
"@types/http-errors": "^2.0.0",
"@types/pg": "^8.6.6",
"@types/supertest": "^2.0.8",
@@ -65,7 +65,7 @@
"@types/express": "^4.17.6",
"chokidar": "^3.5.3",
"express": "^4.17.1",
"fs-extra": "10.1.0",
"fs-extra": "^11.2.0",
"lodash": "^4.17.21",
"winston": "^3.2.1"
},
+1 -1
View File
@@ -51,7 +51,7 @@
"@backstage/types": "workspace:^",
"better-sqlite3": "^9.0.0",
"express": "^4.17.1",
"fs-extra": "^10.0.1",
"fs-extra": "^11.0.0",
"knex": "^3.0.0",
"msw": "^1.0.0",
"mysql2": "^2.2.5",
+1 -1
View File
@@ -33,7 +33,7 @@
"@backstage/types": "workspace:^",
"@manypkg/get-packages": "^1.1.3",
"@yarnpkg/parsers": "^3.0.0-rc.4",
"fs-extra": "10.1.0",
"fs-extra": "^11.2.0",
"semver": "^7.5.3",
"zod": "^3.22.4"
},
+2 -2
View File
@@ -93,7 +93,7 @@
"eslint-webpack-plugin": "^3.1.1",
"express": "^4.17.1",
"fork-ts-checker-webpack-plugin": "^9.0.0",
"fs-extra": "10.1.0",
"fs-extra": "^11.2.0",
"git-url-parse": "^14.0.0",
"glob": "^7.1.7",
"global-agent": "^3.0.0",
@@ -156,7 +156,7 @@
"@types/diff": "^5.0.0",
"@types/ejs": "^3.1.3",
"@types/express": "^4.17.6",
"@types/fs-extra": "^9.0.1",
"@types/fs-extra": "^11.0.0",
"@types/http-proxy": "^1.17.4",
"@types/inquirer": "^8.1.3",
"@types/minimatch": "^5.0.0",
+1 -1
View File
@@ -40,7 +40,7 @@
"@types/json-schema": "^7.0.6",
"ajv": "^8.10.0",
"chokidar": "^3.5.2",
"fs-extra": "10.1.0",
"fs-extra": "^11.2.0",
"json-schema": "^0.4.0",
"json-schema-merge-allof": "^0.8.1",
"json-schema-traverse": "^1.0.0",
+2 -2
View File
@@ -36,7 +36,7 @@
"@backstage/cli-common": "workspace:^",
"chalk": "^4.0.0",
"commander": "^9.1.0",
"fs-extra": "10.1.0",
"fs-extra": "^11.2.0",
"handlebars": "^4.7.3",
"inquirer": "^8.2.0",
"node-fetch": "^2.6.7",
@@ -47,7 +47,7 @@
"@backstage/backend-test-utils": "workspace:^",
"@backstage/cli": "workspace:^",
"@types/command-exists": "^1.2.0",
"@types/fs-extra": "^9.0.1",
"@types/fs-extra": "^11.0.0",
"@types/inquirer": "^8.1.3",
"@types/node": "^18.17.8",
"@types/recursive-readdir": "^2.2.0",
+2 -2
View File
@@ -41,12 +41,12 @@
},
"dependencies": {
"@manypkg/get-packages": "^1.1.3",
"fs-extra": "^10.1.0"
"fs-extra": "^11.0.0"
},
"devDependencies": {
"@backstage/cli": "workspace:^",
"@backstage/cli-node": "workspace:^",
"@types/fs-extra": "^9.0.1"
"@types/fs-extra": "^11.0.0"
},
"peerDependencies": {
"@playwright/test": "^1.32.3"
+2 -2
View File
@@ -33,7 +33,7 @@
"chalk": "^4.0.0",
"commander": "^9.1.0",
"cross-fetch": "^4.0.0",
"fs-extra": "10.1.0",
"fs-extra": "^11.2.0",
"handlebars": "^4.7.3",
"mysql2": "^2.2.5",
"pgtools": "^1.0.0",
@@ -41,7 +41,7 @@
},
"devDependencies": {
"@backstage/cli": "workspace:^",
"@types/fs-extra": "^9.0.1",
"@types/fs-extra": "^11.0.0",
"@types/node": "^18.17.8",
"@types/puppeteer": "^5.4.4",
"nodemon": "^3.0.1",
+1 -1
View File
@@ -51,7 +51,7 @@
"chalk": "^4.0.0",
"codeowners-utils": "^1.0.2",
"commander": "^9.1.0",
"fs-extra": "10.1.0",
"fs-extra": "^11.2.0",
"glob": "^8.0.3",
"is-glob": "^4.0.3",
"js-yaml": "^4.1.0",
+2 -2
View File
@@ -37,7 +37,7 @@
"devDependencies": {
"@backstage/cli": "workspace:^",
"@types/commander": "^2.12.2",
"@types/fs-extra": "^9.0.6",
"@types/fs-extra": "^11.0.0",
"@types/http-proxy": "^1.17.4",
"@types/node": "^18.17.8",
"@types/serve-handler": "^6.1.0",
@@ -65,7 +65,7 @@
"@types/dockerode": "^3.3.0",
"commander": "^9.1.0",
"dockerode": "^3.3.1",
"fs-extra": "^10.0.1",
"fs-extra": "^11.0.0",
"global-agent": "^3.0.0",
"http-proxy": "^1.18.1",
"react-dev-utils": "^12.0.0-next.60",
+1 -1
View File
@@ -54,7 +54,7 @@
"@types/express": "^4.17.6",
"express": "^4.17.1",
"express-promise-router": "^4.1.0",
"fs-extra": "10.1.0",
"fs-extra": "^11.2.0",
"globby": "^11.0.0",
"helmet": "^6.0.0",
"knex": "^3.0.0",
+62 -152
View File
@@ -14,29 +14,21 @@
* limitations under the License.
*/
import fs from 'fs-extra';
import { resolve as resolvePath } from 'path';
import { getVoidLogger } from '@backstage/backend-common';
import { createMockDirectory } from '@backstage/backend-test-utils';
import { injectConfig } from './config';
jest.mock('fs-extra');
const fsMock = fs as jest.Mocked<typeof fs>;
const readFileMock = fsMock.readFile as unknown as jest.MockedFunction<
(name: string) => Promise<string>
>;
const MOCK_DIR = 'mock-dir';
const baseOptions = {
appConfigs: [],
staticDir: MOCK_DIR,
logger: getVoidLogger(),
};
describe('injectConfig', () => {
const mockDir = createMockDirectory();
const baseOptions = {
appConfigs: [],
staticDir: mockDir.path,
logger: getVoidLogger(),
};
beforeEach(() => {
fsMock.readdir.mockResolvedValue(['main.js'] as any);
mockDir.clear();
});
afterEach(() => {
@@ -44,185 +36,103 @@ describe('injectConfig', () => {
});
it('should inject without config', async () => {
fsMock.readdir.mockResolvedValue(['main.js'] as any);
readFileMock.mockImplementation(
async () => '"__APP_INJECTED_RUNTIME_CONFIG__"',
);
await injectConfig(baseOptions);
expect(fsMock.readdir).toHaveBeenCalledTimes(1);
expect(fsMock.readFile).toHaveBeenCalledTimes(1);
expect(fsMock.writeFile).toHaveBeenCalledTimes(1);
expect(fsMock.writeFile).toHaveBeenCalledWith(
resolvePath(MOCK_DIR, 'main.js'),
'/*__APP_INJECTED_CONFIG_MARKER__*/"[]"/*__INJECTED_END__*/',
'utf8',
);
mockDir.setContent({
'main.js': '"__APP_INJECTED_RUNTIME_CONFIG__"',
});
// eslint-disable-next-line no-eval
expect(JSON.parse(eval(fsMock.writeFile.mock.calls[0][1]))).toEqual([]);
await injectConfig(baseOptions);
expect(mockDir.content()).toEqual({
'main.js': '/*__APP_INJECTED_CONFIG_MARKER__*/"[]"/*__INJECTED_END__*/',
});
});
it('should inject config repeatedly if marker appears multiple times', async () => {
fsMock.readdir.mockResolvedValue(['main.js'] as any);
readFileMock.mockImplementation(
async () =>
mockDir.setContent({
'main.js':
'({a:"__APP_INJECTED_RUNTIME_CONFIG__",b:"__APP_INJECTED_RUNTIME_CONFIG__"})',
);
await injectConfig(baseOptions);
expect(fsMock.readdir).toHaveBeenCalledTimes(1);
expect(fsMock.readFile).toHaveBeenCalledTimes(1);
expect(fsMock.writeFile).toHaveBeenCalledTimes(1);
expect(fsMock.writeFile).toHaveBeenCalledWith(
resolvePath(MOCK_DIR, 'main.js'),
'({a:/*__APP_INJECTED_CONFIG_MARKER__*/"[]"/*__INJECTED_END__*/,b:/*__APP_INJECTED_CONFIG_MARKER__*/"[]"/*__INJECTED_END__*/})',
'utf8',
);
});
// eslint-disable-next-line no-eval
expect(JSON.parse(eval(fsMock.writeFile.mock.calls[0][1]).a)).toEqual([]);
// eslint-disable-next-line no-eval
expect(JSON.parse(eval(fsMock.writeFile.mock.calls[0][1]).b)).toEqual([]);
await injectConfig(baseOptions);
expect(mockDir.content()).toEqual({
'main.js':
'({a:/*__APP_INJECTED_CONFIG_MARKER__*/"[]"/*__INJECTED_END__*/,b:/*__APP_INJECTED_CONFIG_MARKER__*/"[]"/*__INJECTED_END__*/})',
});
});
it('should find the correct file to inject', async () => {
fsMock.readdir.mockResolvedValue([
'before.js',
'not-js.txt',
'main.js',
'after.js',
] as any);
readFileMock.mockImplementation(async (file: string) => {
if (file.endsWith('main.js')) {
return '"__APP_INJECTED_RUNTIME_CONFIG__"';
}
return 'NO_PLACEHOLDER_HERE';
mockDir.setContent({
'before.js': 'NO_PLACEHOLDER_HERE',
'not-js.txt': 'NO_PLACEHOLDER_HERE',
'main.js': '"__APP_INJECTED_RUNTIME_CONFIG__"',
'after.js': 'NO_PLACEHOLDER_HERE',
});
await injectConfig({
...baseOptions,
appConfigs: [{ data: { x: 0 }, context: 'test' }],
});
expect(fsMock.readFile).toHaveBeenCalledTimes(2);
expect(fsMock.readFile).toHaveBeenNthCalledWith(
1,
resolvePath(MOCK_DIR, 'before.js'),
'utf8',
);
expect(fsMock.readFile).toHaveBeenNthCalledWith(
2,
resolvePath(MOCK_DIR, 'main.js'),
'utf8',
);
expect(fsMock.writeFile).toHaveBeenCalledTimes(1);
expect(fsMock.writeFile).toHaveBeenCalledWith(
resolvePath(MOCK_DIR, 'main.js'),
'/*__APP_INJECTED_CONFIG_MARKER__*/"[{\\"data\\":{\\"x\\":0},\\"context\\":\\"test\\"}]"/*__INJECTED_END__*/',
'utf8',
);
// eslint-disable-next-line no-eval
expect(JSON.parse(eval(fsMock.writeFile.mock.calls[0][1]))).toEqual([
{
data: {
x: 0,
},
context: 'test',
},
]);
expect(mockDir.content()).toEqual({
'before.js': 'NO_PLACEHOLDER_HERE',
'not-js.txt': 'NO_PLACEHOLDER_HERE',
'main.js':
'/*__APP_INJECTED_CONFIG_MARKER__*/"[{\\"data\\":{\\"x\\":0},\\"context\\":\\"test\\"}]"/*__INJECTED_END__*/',
'after.js': 'NO_PLACEHOLDER_HERE',
});
});
it('should re-inject config', async () => {
fsMock.readdir.mockResolvedValue(['main.js'] as any);
readFileMock.mockResolvedValue(
'JSON.parse("__APP_INJECTED_RUNTIME_CONFIG__")',
);
mockDir.setContent({
'main.js': 'JSON.parse("__APP_INJECTED_RUNTIME_CONFIG__")',
});
await injectConfig({
...baseOptions,
appConfigs: [{ data: { x: 0 }, context: 'test' }],
});
expect(fsMock.writeFile).toHaveBeenCalledTimes(1);
expect(fsMock.writeFile).toHaveBeenCalledWith(
resolvePath(MOCK_DIR, 'main.js'),
'JSON.parse(/*__APP_INJECTED_CONFIG_MARKER__*/"[{\\"data\\":{\\"x\\":0},\\"context\\":\\"test\\"}]"/*__INJECTED_END__*/)',
'utf8',
);
// eslint-disable-next-line no-eval
expect(eval(fsMock.writeFile.mock.calls[0][1])).toEqual([
{ data: { x: 0 }, context: 'test' },
]);
readFileMock.mockResolvedValue(fsMock.writeFile.mock.calls[0][1]);
expect(mockDir.content()).toEqual({
'main.js':
'JSON.parse(/*__APP_INJECTED_CONFIG_MARKER__*/"[{\\"data\\":{\\"x\\":0},\\"context\\":\\"test\\"}]"/*__INJECTED_END__*/)',
});
await injectConfig({
...baseOptions,
appConfigs: [{ data: { x: 1, y: 2 }, context: 'test' }],
});
expect(fsMock.writeFile).toHaveBeenCalledTimes(2);
expect(fsMock.writeFile).toHaveBeenLastCalledWith(
resolvePath(MOCK_DIR, 'main.js'),
'JSON.parse(/*__APP_INJECTED_CONFIG_MARKER__*/"[{\\"data\\":{\\"x\\":1,\\"y\\":2},\\"context\\":\\"test\\"}]"/*__INJECTED_END__*/)',
'utf8',
);
// eslint-disable-next-line no-eval
expect(eval(fsMock.writeFile.mock.calls[1][1])).toEqual([
{ data: { x: 1, y: 2 }, context: 'test' },
]);
expect(mockDir.content()).toEqual({
'main.js':
'JSON.parse(/*__APP_INJECTED_CONFIG_MARKER__*/"[{\\"data\\":{\\"x\\":1,\\"y\\":2},\\"context\\":\\"test\\"}]"/*__INJECTED_END__*/)',
});
});
it('should re-inject config repeatedly if needed', async () => {
fsMock.readdir.mockResolvedValue(['main.js'] as any);
readFileMock.mockResolvedValue(
'({ a: JSON.parse("__APP_INJECTED_RUNTIME_CONFIG__"), b: JSON.parse("__APP_INJECTED_RUNTIME_CONFIG__") })',
);
mockDir.setContent({
'main.js':
'({ a: JSON.parse("__APP_INJECTED_RUNTIME_CONFIG__"), b: JSON.parse("__APP_INJECTED_RUNTIME_CONFIG__") })',
});
await injectConfig({
...baseOptions,
appConfigs: [{ data: { x: 0 }, context: 'test' }],
});
expect(fsMock.writeFile).toHaveBeenCalledTimes(1);
expect(fsMock.writeFile).toHaveBeenCalledWith(
resolvePath(MOCK_DIR, 'main.js'),
'({ a: JSON.parse(/*__APP_INJECTED_CONFIG_MARKER__*/"[{\\"data\\":{\\"x\\":0},\\"context\\":\\"test\\"}]"/*__INJECTED_END__*/), b: JSON.parse(/*__APP_INJECTED_CONFIG_MARKER__*/"[{\\"data\\":{\\"x\\":0},\\"context\\":\\"test\\"}]"/*__INJECTED_END__*/) })',
'utf8',
);
// eslint-disable-next-line no-eval
expect(eval(fsMock.writeFile.mock.calls[0][1]).a).toEqual([
{ data: { x: 0 }, context: 'test' },
]);
// eslint-disable-next-line no-eval
expect(eval(fsMock.writeFile.mock.calls[0][1]).b).toEqual([
{ data: { x: 0 }, context: 'test' },
]);
readFileMock.mockResolvedValue(fsMock.writeFile.mock.calls[0][1]);
expect(mockDir.content()).toEqual({
'main.js':
'({ a: JSON.parse(/*__APP_INJECTED_CONFIG_MARKER__*/"[{\\"data\\":{\\"x\\":0},\\"context\\":\\"test\\"}]"/*__INJECTED_END__*/), b: JSON.parse(/*__APP_INJECTED_CONFIG_MARKER__*/"[{\\"data\\":{\\"x\\":0},\\"context\\":\\"test\\"}]"/*__INJECTED_END__*/) })',
});
await injectConfig({
...baseOptions,
appConfigs: [{ data: { x: 1, y: 2 }, context: 'test' }],
});
expect(fsMock.writeFile).toHaveBeenCalledTimes(2);
expect(fsMock.writeFile).toHaveBeenLastCalledWith(
resolvePath(MOCK_DIR, 'main.js'),
'({ a: JSON.parse(/*__APP_INJECTED_CONFIG_MARKER__*/"[{\\"data\\":{\\"x\\":1,\\"y\\":2},\\"context\\":\\"test\\"}]"/*__INJECTED_END__*/), b: JSON.parse(/*__APP_INJECTED_CONFIG_MARKER__*/"[{\\"data\\":{\\"x\\":1,\\"y\\":2},\\"context\\":\\"test\\"}]"/*__INJECTED_END__*/) })',
'utf8',
);
// eslint-disable-next-line no-eval
expect(eval(fsMock.writeFile.mock.calls[1][1]).a).toEqual([
{ data: { x: 1, y: 2 }, context: 'test' },
]);
// eslint-disable-next-line no-eval
expect(eval(fsMock.writeFile.mock.calls[1][1]).b).toEqual([
{ data: { x: 1, y: 2 }, context: 'test' },
]);
expect(mockDir.content()).toEqual({
'main.js':
'({ a: JSON.parse(/*__APP_INJECTED_CONFIG_MARKER__*/"[{\\"data\\":{\\"x\\":1,\\"y\\":2},\\"context\\":\\"test\\"}]"/*__INJECTED_END__*/), b: JSON.parse(/*__APP_INJECTED_CONFIG_MARKER__*/"[{\\"data\\":{\\"x\\":1,\\"y\\":2},\\"context\\":\\"test\\"}]"/*__INJECTED_END__*/) })',
});
});
});
+1 -1
View File
@@ -37,6 +37,6 @@
"@backstage/config-loader": "workspace:^",
"@types/express": "^4.17.6",
"express": "^4.17.1",
"fs-extra": "10.1.0"
"fs-extra": "^11.2.0"
}
}
+1 -1
View File
@@ -63,7 +63,7 @@
"express": "^4.17.1",
"express-promise-router": "^4.1.0",
"express-session": "^1.17.1",
"fs-extra": "10.1.0",
"fs-extra": "^11.2.0",
"google-auth-library": "^8.0.0",
"jose": "^4.6.0",
"knex": "^3.0.0",
@@ -48,7 +48,7 @@
"@backstage/errors": "workspace:^",
"@backstage/integration": "workspace:^",
"@backstage/plugin-catalog-node": "workspace:^",
"fs-extra": "10.1.0",
"fs-extra": "^11.2.0",
"node-fetch": "^2.6.7",
"uuid": "^8.0.0",
"winston": "^3.2.1"
@@ -56,7 +56,7 @@
"devDependencies": {
"@backstage/backend-test-utils": "workspace:^",
"@backstage/cli": "workspace:^",
"@types/fs-extra": "^9.0.1",
"@types/fs-extra": "^11.0.0",
"luxon": "^3.0.0",
"msw": "^1.0.0"
},
+1 -1
View File
@@ -70,7 +70,7 @@
"core-js": "^3.6.5",
"express": "^4.17.1",
"fast-json-stable-stringify": "^2.1.0",
"fs-extra": "10.1.0",
"fs-extra": "^11.2.0",
"git-url-parse": "^14.0.0",
"glob": "^7.1.6",
"knex": "^3.0.0",
+1 -1
View File
@@ -45,7 +45,7 @@
"@yarnpkg/parsers": "^3.0.0-rc.4",
"express": "^4.18.1",
"express-promise-router": "^4.1.0",
"fs-extra": "^10.0.0",
"fs-extra": "^11.0.0",
"lodash": "^4.17.21",
"node-fetch": "^2.6.7",
"ping": "^0.4.1",
+1 -1
View File
@@ -75,7 +75,7 @@
"cors": "^2.8.5",
"express": "^4.17.1",
"express-promise-router": "^4.1.0",
"fs-extra": "10.1.0",
"fs-extra": "^11.2.0",
"helmet": "^6.0.0",
"http-proxy-middleware": "^2.0.6",
"lodash": "^4.17.21",
+1 -1
View File
@@ -42,7 +42,7 @@
"@types/express": "*",
"express": "^4.18.1",
"express-promise-router": "^4.1.0",
"fs-extra": "^10.0.0",
"fs-extra": "^11.0.0",
"knex": "^3.0.0",
"linguist-js": "^2.5.3",
"luxon": "^2.0.2",
+1 -1
View File
@@ -40,7 +40,7 @@
"cors": "^2.8.5",
"express": "^4.17.1",
"express-promise-router": "^4.1.0",
"fs-extra": "10.1.0",
"fs-extra": "^11.2.0",
"lodash": "^4.17.21",
"morgan": "^1.10.0",
"node-fetch": "^2.6.7",
@@ -43,7 +43,7 @@
"@backstage/errors": "workspace:^",
"@backstage/integration": "workspace:^",
"@backstage/plugin-scaffolder-node": "workspace:^",
"fs-extra": "10.1.0",
"fs-extra": "^11.2.0",
"node-fetch": "^2.6.7",
"yaml": "^2.0.0"
},
@@ -43,7 +43,7 @@
"@backstage/errors": "workspace:^",
"@backstage/integration": "workspace:^",
"@backstage/plugin-scaffolder-node": "workspace:^",
"fs-extra": "10.1.0",
"fs-extra": "^11.2.0",
"node-fetch": "^2.6.7",
"yaml": "^2.0.0"
},
@@ -46,7 +46,7 @@
"@backstage/plugin-scaffolder-backend-module-bitbucket-cloud": "workspace:^",
"@backstage/plugin-scaffolder-backend-module-bitbucket-server": "workspace:^",
"@backstage/plugin-scaffolder-node": "workspace:^",
"fs-extra": "10.1.0",
"fs-extra": "^11.2.0",
"node-fetch": "^2.6.7",
"yaml": "^2.0.0"
},
@@ -45,7 +45,7 @@
"@backstage/errors": "workspace:^",
"@backstage/integration": "workspace:^",
"@backstage/plugin-scaffolder-node": "workspace:^",
"fs-extra": "10.1.0",
"fs-extra": "^11.2.0",
"git-url-parse": "^14.0.0",
"node-fetch": "^2.6.7",
"node-html-markdown": "^1.3.0",
@@ -46,7 +46,7 @@
"@backstage/plugin-scaffolder-node": "workspace:^",
"@backstage/types": "workspace:^",
"command-exists": "^1.2.9",
"fs-extra": "10.1.0",
"fs-extra": "^11.2.0",
"winston": "^3.2.1",
"yn": "^4.0.0"
},
@@ -54,7 +54,7 @@
"@backstage/backend-test-utils": "workspace:^",
"@backstage/cli": "workspace:^",
"@types/command-exists": "^1.2.0",
"@types/fs-extra": "^9.0.1"
"@types/fs-extra": "^11.0.0"
},
"files": [
"dist"
@@ -54,7 +54,7 @@
"@backstage/backend-test-utils": "workspace:^",
"@backstage/cli": "workspace:^",
"@types/libsodium-wrappers": "^0.7.10",
"fs-extra": "10.1.0",
"fs-extra": "^11.2.0",
"jest-when": "^3.1.0",
"jsonschema": "^1.2.6"
},
@@ -46,13 +46,13 @@
"@backstage/plugin-scaffolder-node": "workspace:^",
"@backstage/types": "workspace:^",
"command-exists": "^1.2.9",
"fs-extra": "^10.0.1"
"fs-extra": "^11.0.0"
},
"devDependencies": {
"@backstage/backend-test-utils": "workspace:^",
"@backstage/cli": "workspace:^",
"@types/command-exists": "^1.2.0",
"@types/fs-extra": "^9.0.1",
"@types/fs-extra": "^11.0.0",
"@types/node": "^18.17.8",
"jest-when": "^3.1.0"
},
@@ -26,21 +26,23 @@ jest.mock(
(...args: any[]) =>
commandExists(...args),
);
jest.mock('fs-extra');
import { ContainerRunner } from '@backstage/backend-common';
import fs from 'fs-extra';
import path from 'path';
import { PassThrough } from 'stream';
import { RailsNewRunner } from './railsNewRunner';
import { createMockDirectory } from '@backstage/backend-test-utils';
describe('Rails Templater', () => {
const containerRunner: jest.Mocked<ContainerRunner> = {
runContainer: jest.fn(),
};
const mockDir = createMockDirectory();
beforeEach(() => {
jest.clearAllMocks();
mockDir.clear();
});
describe('when running on docker', () => {
@@ -53,14 +55,15 @@ describe('Rails Templater', () => {
imageName: 'foo/rails-custom-image',
};
jest.spyOn(fs, 'readdir').mockResolvedValueOnce(['newthing'] as any);
jest
.spyOn(fs, 'realpath')
.mockImplementation(x => Promise.resolve(x.toString()));
mockDir.setContent({
intermediate: {
fakeGeneratedOutput: 'a',
},
});
const templater = new RailsNewRunner({ containerRunner });
await templater.run({
workspacePath: 'tempdir',
workspacePath: mockDir.path,
values,
logStream,
});
@@ -71,8 +74,8 @@ describe('Rails Templater', () => {
args: ['new', '/output/rails-project'],
envVars: { HOME: '/tmp' },
mountDirs: {
['tempdir']: '/input',
[path.join('tempdir', 'intermediate')]: '/output',
[mockDir.path]: '/input',
[path.join(mockDir.path, 'intermediate')]: '/output',
},
workingDir: '/input',
logStream: logStream,
@@ -88,11 +91,15 @@ describe('Rails Templater', () => {
imageName: 'foo/rails-custom-image',
};
jest.spyOn(fs, 'readdir').mockResolvedValueOnce(['newthing'] as any);
mockDir.setContent({
intermediate: {
fakeGeneratedOutput: 'a',
},
});
const templater = new RailsNewRunner({ containerRunner });
await templater.run({
workspacePath: 'tempdir',
workspacePath: mockDir.path,
values,
logStream,
});
@@ -114,11 +121,15 @@ describe('Rails Templater', () => {
imageName: 'foo/rails-custom-image',
};
jest.spyOn(fs, 'readdir').mockResolvedValueOnce(['newthing'] as any);
mockDir.setContent({
intermediate: {
fakeGeneratedOutput: 'a',
},
});
const templater = new RailsNewRunner({ containerRunner });
await templater.run({
workspacePath: 'tempdir',
workspacePath: mockDir.path,
values,
logStream: stream,
});
@@ -129,8 +140,8 @@ describe('Rails Templater', () => {
args: ['new', '/output/rails-project'],
envVars: { HOME: '/tmp' },
mountDirs: {
['tempdir']: '/input',
[path.join('tempdir', 'intermediate')]: '/output',
[mockDir.path]: '/input',
[path.join(mockDir.path, 'intermediate')]: '/output',
},
workingDir: '/input',
logStream: stream,
@@ -147,14 +158,15 @@ describe('Rails Templater', () => {
imageName: 'foo/rails-custom-image',
};
jest.spyOn(fs, 'readdir').mockResolvedValueOnce(['newthing'] as any);
jest
.spyOn(fs, 'realpath')
.mockImplementation(x => Promise.resolve(x.toString()));
mockDir.setContent({
intermediate: {
fakeGeneratedOutput: 'a',
},
});
const templater = new RailsNewRunner({ containerRunner });
await templater.run({
workspacePath: 'tempdir',
workspacePath: mockDir.path,
values,
logStream,
});
@@ -170,8 +182,8 @@ describe('Rails Templater', () => {
],
envVars: { HOME: '/tmp' },
mountDirs: {
['tempdir']: '/input',
[path.join('tempdir', 'intermediate')]: '/output',
[mockDir.path]: '/input',
[path.join(mockDir.path, 'intermediate')]: '/output',
},
workingDir: '/input',
logStream: logStream,
@@ -190,12 +202,16 @@ describe('Rails Templater', () => {
imageName: 'foo/rails-custom-image',
};
jest.spyOn(fs, 'readdir').mockResolvedValueOnce(['newthing'] as any);
mockDir.setContent({
intermediate: {
fakeGeneratedOutput: 'a',
},
});
commandExists.mockImplementationOnce(() => () => true);
const templater = new RailsNewRunner({ containerRunner });
await templater.run({
workspacePath: 'tempdir',
workspacePath: mockDir.path,
values,
logStream: stream,
});
@@ -204,11 +220,12 @@ describe('Rails Templater', () => {
command: 'rails',
args: expect.arrayContaining([
'new',
path.join('tempdir', 'intermediate', 'rails-project'),
path.join(mockDir.path, 'intermediate', 'rails-project'),
]),
logStream: stream,
});
});
it('update the template path to correct location', async () => {
const stream = new PassThrough();
@@ -220,12 +237,16 @@ describe('Rails Templater', () => {
imageName: 'foo/rails-custom-image',
};
jest.spyOn(fs, 'readdir').mockResolvedValueOnce(['newthing'] as any);
mockDir.setContent({
intermediate: {
fakeGeneratedOutput: 'a',
},
});
commandExists.mockImplementationOnce(() => () => true);
const templater = new RailsNewRunner({ containerRunner });
await templater.run({
workspacePath: 'tempdir',
workspacePath: mockDir.path,
values,
logStream: stream,
});
@@ -234,9 +255,9 @@ describe('Rails Templater', () => {
command: 'rails',
args: expect.arrayContaining([
'new',
path.join('tempdir', 'intermediate', 'rails-project'),
path.join(mockDir.path, 'intermediate', 'rails-project'),
'--template',
path.join('tempdir', './something.rb'),
path.join(mockDir.path, './something.rb'),
]),
logStream: stream,
});
@@ -247,14 +268,14 @@ describe('Rails Templater', () => {
it('throws an error', async () => {
const stream = new PassThrough();
jest
.spyOn(fs, 'readdir')
.mockImplementationOnce(() => Promise.resolve([]));
mockDir.setContent({
intermediate: {},
});
const templater = new RailsNewRunner({ containerRunner });
await expect(
templater.run({
workspacePath: 'tempdir',
workspacePath: mockDir.path,
values: {
owner: 'angeliski',
storePath: 'https://github.com/angeliski/rails-project',
+2 -2
View File
@@ -73,7 +73,7 @@
"@types/luxon": "^3.0.0",
"express": "^4.17.1",
"express-promise-router": "^4.1.0",
"fs-extra": "10.1.0",
"fs-extra": "^11.2.0",
"globby": "^11.0.0",
"isbinaryfile": "^5.0.0",
"isolated-vm": "^4.5.0",
@@ -94,7 +94,7 @@
"devDependencies": {
"@backstage/backend-test-utils": "workspace:^",
"@backstage/cli": "workspace:^",
"@types/fs-extra": "^9.0.1",
"@types/fs-extra": "^11.0.0",
"@types/nunjucks": "^3.1.4",
"@types/supertest": "^2.0.8",
"@types/zen-observable": "^0.8.0",
+1 -1
View File
@@ -49,7 +49,7 @@
"@backstage/integration": "workspace:^",
"@backstage/plugin-scaffolder-common": "workspace:^",
"@backstage/types": "workspace:^",
"fs-extra": "10.1.0",
"fs-extra": "^11.2.0",
"globby": "^11.0.0",
"jsonschema": "^1.2.6",
"p-limit": "^3.1.0",
+1 -1
View File
@@ -61,7 +61,7 @@
"dockerode": "^3.3.1",
"express": "^4.17.1",
"express-promise-router": "^4.1.0",
"fs-extra": "10.1.0",
"fs-extra": "^11.2.0",
"knex": "^3.0.0",
"lodash": "^4.17.21",
"node-fetch": "^2.6.7",
+2 -2
View File
@@ -58,7 +58,7 @@
"@trendyol-js/openstack-swift-sdk": "^0.0.7",
"@types/express": "^4.17.6",
"express": "^4.17.1",
"fs-extra": "10.1.0",
"fs-extra": "^11.2.0",
"git-url-parse": "^14.0.0",
"hpagent": "^1.2.0",
"js-yaml": "^4.0.0",
@@ -71,7 +71,7 @@
"devDependencies": {
"@backstage/backend-test-utils": "workspace:^",
"@backstage/cli": "workspace:^",
"@types/fs-extra": "^9.0.5",
"@types/fs-extra": "^11.0.0",
"@types/js-yaml": "^4.0.0",
"@types/mime-types": "^2.1.0",
"@types/recursive-readdir": "^2.2.0",
+64 -54
View File
@@ -3236,7 +3236,7 @@ __metadata:
"@types/compression": ^1.7.0
"@types/cors": ^2.8.6
"@types/express": ^4.17.6
"@types/fs-extra": ^9.0.3
"@types/fs-extra": ^11.0.0
"@types/http-errors": ^2.0.0
"@types/minimist": ^1.2.0
"@types/morgan": ^1.9.0
@@ -3246,7 +3246,7 @@ __metadata:
cors: ^2.8.5
express: ^4.17.1
express-promise-router: ^4.1.0
fs-extra: 10.1.0
fs-extra: ^11.2.0
helmet: ^6.0.0
http-errors: ^2.0.0
lodash: ^4.17.21
@@ -3297,7 +3297,7 @@ __metadata:
"@types/cors": ^2.8.6
"@types/dockerode": ^3.3.0
"@types/express": ^4.17.6
"@types/fs-extra": ^9.0.3
"@types/fs-extra": ^11.0.0
"@types/http-errors": ^2.0.0
"@types/luxon": ^3.0.0
"@types/pg": ^8.6.6
@@ -3315,7 +3315,7 @@ __metadata:
dockerode: ^3.3.1
express: ^4.17.1
express-promise-router: ^4.1.0
fs-extra: 10.1.0
fs-extra: ^11.2.0
git-url-parse: ^14.0.0
helmet: ^6.0.0
http-errors: ^2.0.0
@@ -3398,7 +3398,7 @@ __metadata:
"@types/express": ^4.17.6
chokidar: ^3.5.3
express: ^4.17.1
fs-extra: 10.1.0
fs-extra: ^11.2.0
lodash: ^4.17.21
wait-for-expect: ^3.0.2
winston: ^3.2.1
@@ -3479,7 +3479,7 @@ __metadata:
"@types/supertest": ^2.0.8
better-sqlite3: ^9.0.0
express: ^4.17.1
fs-extra: ^10.0.1
fs-extra: ^11.0.0
knex: ^3.0.0
msw: ^1.0.0
mysql2: ^2.2.5
@@ -3565,7 +3565,7 @@ __metadata:
"@backstage/types": "workspace:^"
"@manypkg/get-packages": ^1.1.3
"@yarnpkg/parsers": ^3.0.0-rc.4
fs-extra: 10.1.0
fs-extra: ^11.2.0
semver: ^7.5.3
zod: ^3.22.4
languageName: unknown
@@ -3620,7 +3620,7 @@ __metadata:
"@types/diff": ^5.0.0
"@types/ejs": ^3.1.3
"@types/express": ^4.17.6
"@types/fs-extra": ^9.0.1
"@types/fs-extra": ^11.0.0
"@types/http-proxy": ^1.17.4
"@types/inquirer": ^8.1.3
"@types/jest": ^29.5.11
@@ -3665,7 +3665,7 @@ __metadata:
eslint-webpack-plugin: ^3.1.1
express: ^4.17.1
fork-ts-checker-webpack-plugin: ^9.0.0
fs-extra: 10.1.0
fs-extra: ^11.2.0
git-url-parse: ^14.0.0
glob: ^7.1.7
global-agent: ^3.0.0
@@ -3766,7 +3766,7 @@ __metadata:
"@types/json-schema-merge-allof": ^0.6.0
ajv: ^8.10.0
chokidar: ^3.5.2
fs-extra: 10.1.0
fs-extra: ^11.2.0
json-schema: ^0.4.0
json-schema-merge-allof: ^0.8.1
json-schema-traverse: ^1.0.0
@@ -4026,13 +4026,13 @@ __metadata:
"@backstage/cli": "workspace:^"
"@backstage/cli-common": "workspace:^"
"@types/command-exists": ^1.2.0
"@types/fs-extra": ^9.0.1
"@types/fs-extra": ^11.0.0
"@types/inquirer": ^8.1.3
"@types/node": ^18.17.8
"@types/recursive-readdir": ^2.2.0
chalk: ^4.0.0
commander: ^9.1.0
fs-extra: 10.1.0
fs-extra: ^11.2.0
handlebars: ^4.7.3
inquirer: ^8.2.0
msw: ^1.0.0
@@ -4083,8 +4083,8 @@ __metadata:
"@backstage/cli": "workspace:^"
"@backstage/cli-node": "workspace:^"
"@manypkg/get-packages": ^1.1.3
"@types/fs-extra": ^9.0.1
fs-extra: ^10.1.0
"@types/fs-extra": ^11.0.0
fs-extra: ^11.0.0
peerDependencies:
"@playwright/test": ^1.32.3
peerDependenciesMeta:
@@ -4631,7 +4631,7 @@ __metadata:
"@types/supertest": ^2.0.8
express: ^4.17.1
express-promise-router: ^4.1.0
fs-extra: 10.1.0
fs-extra: ^11.2.0
globby: ^11.0.0
helmet: ^6.0.0
knex: ^3.0.0
@@ -4653,7 +4653,7 @@ __metadata:
"@backstage/config-loader": "workspace:^"
"@types/express": ^4.17.6
express: ^4.17.1
fs-extra: 10.1.0
fs-extra: ^11.2.0
languageName: unknown
linkType: soft
@@ -4960,7 +4960,7 @@ __metadata:
express: ^4.17.1
express-promise-router: ^4.1.0
express-session: ^1.17.1
fs-extra: 10.1.0
fs-extra: ^11.2.0
google-auth-library: ^8.0.0
jose: ^4.6.0
knex: ^3.0.0
@@ -5457,8 +5457,8 @@ __metadata:
"@backstage/errors": "workspace:^"
"@backstage/integration": "workspace:^"
"@backstage/plugin-catalog-node": "workspace:^"
"@types/fs-extra": ^9.0.1
fs-extra: 10.1.0
"@types/fs-extra": ^11.0.0
fs-extra: ^11.2.0
luxon: ^3.0.0
msw: ^1.0.0
node-fetch: ^2.6.7
@@ -5725,7 +5725,7 @@ __metadata:
core-js: ^3.6.5
express: ^4.17.1
fast-json-stable-stringify: ^2.1.0
fs-extra: 10.1.0
fs-extra: ^11.2.0
git-url-parse: ^14.0.0
glob: ^7.1.6
knex: ^3.0.0
@@ -6341,7 +6341,7 @@ __metadata:
"@yarnpkg/parsers": ^3.0.0-rc.4
express: ^4.18.1
express-promise-router: ^4.1.0
fs-extra: ^10.0.0
fs-extra: ^11.0.0
lodash: ^4.17.21
node-fetch: ^2.6.7
ping: ^0.4.1
@@ -7361,7 +7361,7 @@ __metadata:
cors: ^2.8.5
express: ^4.17.1
express-promise-router: ^4.1.0
fs-extra: 10.1.0
fs-extra: ^11.2.0
helmet: ^6.0.0
http-proxy-middleware: ^2.0.6
lodash: ^4.17.21
@@ -7598,7 +7598,7 @@ __metadata:
"@types/supertest": ^2.0.8
express: ^4.18.1
express-promise-router: ^4.1.0
fs-extra: ^10.0.0
fs-extra: ^11.0.0
js-yaml: ^4.1.0
knex: ^3.0.0
linguist-js: ^2.5.3
@@ -8317,7 +8317,7 @@ __metadata:
cors: ^2.8.5
express: ^4.17.1
express-promise-router: ^4.1.0
fs-extra: 10.1.0
fs-extra: ^11.2.0
lodash: ^4.17.21
morgan: ^1.10.0
msw: ^1.0.0
@@ -8383,7 +8383,7 @@ __metadata:
"@backstage/errors": "workspace:^"
"@backstage/integration": "workspace:^"
"@backstage/plugin-scaffolder-node": "workspace:^"
fs-extra: 10.1.0
fs-extra: ^11.2.0
msw: ^1.0.0
node-fetch: ^2.6.7
yaml: ^2.0.0
@@ -8402,7 +8402,7 @@ __metadata:
"@backstage/errors": "workspace:^"
"@backstage/integration": "workspace:^"
"@backstage/plugin-scaffolder-node": "workspace:^"
fs-extra: 10.1.0
fs-extra: ^11.2.0
msw: ^1.0.0
node-fetch: ^2.6.7
yaml: ^2.0.0
@@ -8423,7 +8423,7 @@ __metadata:
"@backstage/plugin-scaffolder-backend-module-bitbucket-cloud": "workspace:^"
"@backstage/plugin-scaffolder-backend-module-bitbucket-server": "workspace:^"
"@backstage/plugin-scaffolder-node": "workspace:^"
fs-extra: 10.1.0
fs-extra: ^11.2.0
msw: ^1.0.0
node-fetch: ^2.6.7
yaml: ^2.0.0
@@ -8442,7 +8442,7 @@ __metadata:
"@backstage/errors": "workspace:^"
"@backstage/integration": "workspace:^"
"@backstage/plugin-scaffolder-node": "workspace:^"
fs-extra: 10.1.0
fs-extra: ^11.2.0
git-url-parse: ^14.0.0
msw: ^1.0.0
node-fetch: ^2.6.7
@@ -8465,9 +8465,9 @@ __metadata:
"@backstage/plugin-scaffolder-node": "workspace:^"
"@backstage/types": "workspace:^"
"@types/command-exists": ^1.2.0
"@types/fs-extra": ^9.0.1
"@types/fs-extra": ^11.0.0
command-exists: ^1.2.9
fs-extra: 10.1.0
fs-extra: ^11.2.0
winston: ^3.2.1
yn: ^4.0.0
languageName: unknown
@@ -8505,7 +8505,7 @@ __metadata:
"@backstage/plugin-scaffolder-node": "workspace:^"
"@octokit/webhooks": ^10.0.0
"@types/libsodium-wrappers": ^0.7.10
fs-extra: 10.1.0
fs-extra: ^11.2.0
jest-when: ^3.1.0
jsonschema: ^1.2.6
libsodium-wrappers: ^0.7.11
@@ -8553,10 +8553,10 @@ __metadata:
"@backstage/plugin-scaffolder-node": "workspace:^"
"@backstage/types": "workspace:^"
"@types/command-exists": ^1.2.0
"@types/fs-extra": ^9.0.1
"@types/fs-extra": ^11.0.0
"@types/node": ^18.17.8
command-exists: ^1.2.9
fs-extra: ^10.0.1
fs-extra: ^11.0.0
jest-when: ^3.1.0
languageName: unknown
linkType: soft
@@ -8621,7 +8621,7 @@ __metadata:
"@backstage/plugin-scaffolder-node": "workspace:^"
"@backstage/types": "workspace:^"
"@types/express": ^4.17.6
"@types/fs-extra": ^9.0.1
"@types/fs-extra": ^11.0.0
"@types/luxon": ^3.0.0
"@types/nunjucks": ^3.1.4
"@types/supertest": ^2.0.8
@@ -8629,7 +8629,7 @@ __metadata:
esbuild: ^0.20.0
express: ^4.17.1
express-promise-router: ^4.1.0
fs-extra: 10.1.0
fs-extra: ^11.2.0
globby: ^11.0.0
isbinaryfile: ^5.0.0
isolated-vm: ^4.5.0
@@ -8677,7 +8677,7 @@ __metadata:
"@backstage/integration": "workspace:^"
"@backstage/plugin-scaffolder-common": "workspace:^"
"@backstage/types": "workspace:^"
fs-extra: 10.1.0
fs-extra: ^11.2.0
globby: ^11.0.0
jsonschema: ^1.2.6
p-limit: ^3.1.0
@@ -9573,7 +9573,7 @@ __metadata:
dockerode: ^3.3.1
express: ^4.17.1
express-promise-router: ^4.1.0
fs-extra: 10.1.0
fs-extra: ^11.2.0
knex: ^3.0.0
lodash: ^4.17.21
msw: ^1.0.0
@@ -9636,14 +9636,14 @@ __metadata:
"@smithy/node-http-handler": ^2.1.7
"@trendyol-js/openstack-swift-sdk": ^0.0.7
"@types/express": ^4.17.6
"@types/fs-extra": ^9.0.5
"@types/fs-extra": ^11.0.0
"@types/js-yaml": ^4.0.0
"@types/mime-types": ^2.1.0
"@types/recursive-readdir": ^2.2.0
"@types/supertest": ^2.0.8
aws-sdk-client-mock: ^3.0.0
express: ^4.17.1
fs-extra: 10.1.0
fs-extra: ^11.2.0
git-url-parse: ^14.0.0
hpagent: ^1.2.0
js-yaml: ^4.0.0
@@ -9979,7 +9979,7 @@ __metadata:
chalk: ^4.0.0
codeowners-utils: ^1.0.2
commander: ^9.1.0
fs-extra: 10.1.0
fs-extra: ^11.2.0
glob: ^8.0.3
is-glob: ^4.0.3
js-yaml: ^4.1.0
@@ -18021,7 +18021,7 @@ __metadata:
"@backstage/plugin-techdocs-node": "workspace:^"
"@types/commander": ^2.12.2
"@types/dockerode": ^3.3.0
"@types/fs-extra": ^9.0.6
"@types/fs-extra": ^11.0.0
"@types/http-proxy": ^1.17.4
"@types/node": ^18.17.8
"@types/serve-handler": ^6.1.0
@@ -18029,7 +18029,7 @@ __metadata:
commander: ^9.1.0
dockerode: ^3.3.1
find-process: ^1.4.5
fs-extra: ^10.0.1
fs-extra: ^11.0.0
global-agent: ^3.0.0
http-proxy: ^1.18.1
nodemon: ^3.0.1
@@ -18823,12 +18823,13 @@ __metadata:
languageName: node
linkType: hard
"@types/fs-extra@npm:^9.0.1, @types/fs-extra@npm:^9.0.3, @types/fs-extra@npm:^9.0.5, @types/fs-extra@npm:^9.0.6":
version: 9.0.13
resolution: "@types/fs-extra@npm:9.0.13"
"@types/fs-extra@npm:^11.0.0":
version: 11.0.4
resolution: "@types/fs-extra@npm:11.0.4"
dependencies:
"@types/jsonfile": "*"
"@types/node": "*"
checksum: add79e212acd5ac76b97b9045834e03a7996aef60a814185e0459088fd290519a3c1620865d588fa36c4498bf614210d2a703af5cf80aa1dbc125db78f6edac3
checksum: 242cb84157631f057f76495c8220707541882c00a00195b603d937fb55e471afecebcb089bab50233ed3a59c69fd68bf65c1f69dd7fafe2347e139cc15b9b0e5
languageName: node
linkType: hard
@@ -19103,6 +19104,15 @@ __metadata:
languageName: node
linkType: hard
"@types/jsonfile@npm:*":
version: 6.1.4
resolution: "@types/jsonfile@npm:6.1.4"
dependencies:
"@types/node": "*"
checksum: 309fda20eb5f1cf68f2df28931afdf189c5e7e6bec64ac783ce737bb98908d57f6f58757ad5da9be37b815645a6f914e2d4f3ac66c574b8fe1ba6616284d0e97
languageName: node
linkType: hard
"@types/jsonwebtoken@npm:^9.0.0":
version: 9.0.0
resolution: "@types/jsonwebtoken@npm:9.0.0"
@@ -26025,13 +26035,13 @@ __metadata:
"@backstage/cli-common": "workspace:^"
"@backstage/create-app": "workspace:^"
"@backstage/errors": "workspace:^"
"@types/fs-extra": ^9.0.1
"@types/fs-extra": ^11.0.0
"@types/node": ^18.17.8
"@types/puppeteer": ^5.4.4
chalk: ^4.0.0
commander: ^9.1.0
cross-fetch: ^4.0.0
fs-extra: 10.1.0
fs-extra: ^11.2.0
handlebars: ^4.7.3
mysql2: ^2.2.5
nodemon: ^3.0.1
@@ -28842,7 +28852,7 @@ __metadata:
languageName: node
linkType: hard
"fs-extra@npm:10.1.0, fs-extra@npm:^10.0.0, fs-extra@npm:^10.0.1, fs-extra@npm:^10.1.0":
"fs-extra@npm:10.1.0, fs-extra@npm:^10.0.0, fs-extra@npm:^10.0.1":
version: 10.1.0
resolution: "fs-extra@npm:10.1.0"
dependencies:
@@ -28853,14 +28863,14 @@ __metadata:
languageName: node
linkType: hard
"fs-extra@npm:^11.1.0":
version: 11.1.1
resolution: "fs-extra@npm:11.1.1"
"fs-extra@npm:^11.0.0, fs-extra@npm:^11.1.0, fs-extra@npm:^11.2.0":
version: 11.2.0
resolution: "fs-extra@npm:11.2.0"
dependencies:
graceful-fs: ^4.2.0
jsonfile: ^6.0.1
universalify: ^2.0.0
checksum: fb883c68245b2d777fbc1f2082c9efb084eaa2bbf9fddaa366130d196c03608eebef7fb490541276429ee1ca99f317e2d73e96f5ca0999eefedf5a624ae1edfd
checksum: b12e42fa40ba47104202f57b8480dd098aa931c2724565e5e70779ab87605665594e76ee5fb00545f772ab9ace167fe06d2ab009c416dc8c842c5ae6df7aa7e8
languageName: node
linkType: hard
@@ -41323,7 +41333,7 @@ __metadata:
eslint-plugin-notice: ^0.9.10
eslint-plugin-react: ^7.28.0
eslint-plugin-testing-library: ^6.0.0
fs-extra: 10.1.0
fs-extra: ^11.2.0
husky: ^9.0.0
knip: ^5.0.0
lint-staged: ^15.0.0