diff --git a/.changeset/rich-carrots-reflect.md b/.changeset/rich-carrots-reflect.md new file mode 100644 index 0000000000..13a67bcd56 --- /dev/null +++ b/.changeset/rich-carrots-reflect.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +Switched the Jest transform for YAML files to use a custom one available at `@backstage/cli/config/jestYamlTransform.js`. diff --git a/packages/cli/config/jest.js b/packages/cli/config/jest.js index a6cbdb9f05..8b6c37bda4 100644 --- a/packages/cli/config/jest.js +++ b/packages/cli/config/jest.js @@ -188,7 +188,7 @@ async function getProjectConfig(targetPath, displayName) { ], '\\.(bmp|gif|jpg|jpeg|png|frag|xml|svg|eot|woff|woff2|ttf)$': require.resolve('./jestFileTransform.js'), - '\\.(yaml)$': require.resolve('jest-transform-yaml'), + '\\.(yaml)$': require.resolve('./jestYamlTransform'), }, // A bit more opinionated diff --git a/packages/cli/config/jestYamlTransform.js b/packages/cli/config/jestYamlTransform.js new file mode 100644 index 0000000000..2f04b94d8a --- /dev/null +++ b/packages/cli/config/jestYamlTransform.js @@ -0,0 +1,38 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +const yaml = require('yaml'); + +function createTransformer(config) { + const process = source => { + const json = JSON.stringify(yaml.parse(source), null, 2); + return { code: `module.exports = ${json}`, map: null }; + }; + + const getCacheKey = sourceText => { + return createHash('md5') + .update(sourceText) + .update(Buffer.alloc(1)) + .update(JSON.stringify(config)) + .update(Buffer.alloc(1)) + .update('1') // increment whenever the transform logic in this file changes + .digest('hex'); + }; + + return { process, getCacheKey }; +} + +module.exports = { createTransformer }; diff --git a/packages/cli/package.json b/packages/cli/package.json index f7a446675d..93bf98e022 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -93,7 +93,6 @@ "jest-css-modules": "^2.1.0", "jest-environment-jsdom": "^29.0.2", "jest-runtime": "^29.0.2", - "jest-transform-yaml": "^1.0.0", "json-schema": "^0.4.0", "lodash": "^4.17.21", "mini-css-extract-plugin": "^2.4.2", diff --git a/yarn.lock b/yarn.lock index e79d44a4f6..919949a804 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3281,7 +3281,6 @@ __metadata: jest-css-modules: ^2.1.0 jest-environment-jsdom: ^29.0.2 jest-runtime: ^29.0.2 - jest-transform-yaml: ^1.0.0 json-schema: ^0.4.0 lodash: ^4.17.21 mini-css-extract-plugin: ^2.4.2 @@ -27371,15 +27370,6 @@ __metadata: languageName: node linkType: hard -"jest-transform-yaml@npm:^1.0.0": - version: 1.0.0 - resolution: "jest-transform-yaml@npm:1.0.0" - dependencies: - js-yaml: 4.1.0 - checksum: 3bb1646c9fd08beb7d9f28a340bc28cebbc1aedb657c5f7809247423bfd39d99eccb8792a689876079133031281e95c56f2fadb93cdf1a142b74e9b9b7584595 - languageName: node - linkType: hard - "jest-util@npm:^29.0.3": version: 29.0.3 resolution: "jest-util@npm:29.0.3" @@ -27610,7 +27600,7 @@ __metadata: languageName: node linkType: hard -"js-yaml@npm:4.1.0, js-yaml@npm:=4.1.0, js-yaml@npm:^4.0.0, js-yaml@npm:^4.1.0": +"js-yaml@npm:=4.1.0, js-yaml@npm:^4.0.0, js-yaml@npm:^4.1.0": version: 4.1.0 resolution: "js-yaml@npm:4.1.0" dependencies: