@backstage/plugin-catalog-node 1.3.4-next.2 → 1.3.4

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 CHANGED
@@ -1,5 +1,19 @@
1
1
  # @backstage/plugin-catalog-node
2
2
 
3
+ ## 1.3.4
4
+
5
+ ### Patch Changes
6
+
7
+ - e675f902980: Added `locationSpecToMetadataName` and `locationSpecToLocationEntity` as their new home, moved over from the backend package where they now are marked as deprecated.
8
+ - 928a12a9b3e: Internal refactor of `/alpha` exports.
9
+ - Updated dependencies
10
+ - @backstage/catalog-client@1.4.0
11
+ - @backstage/errors@1.1.5
12
+ - @backstage/backend-plugin-api@0.5.0
13
+ - @backstage/catalog-model@1.2.1
14
+ - @backstage/plugin-catalog-common@1.0.12
15
+ - @backstage/types@1.0.2
16
+
3
17
  ## 1.3.4-next.2
4
18
 
5
19
  ### Patch Changes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@backstage/plugin-catalog-node",
3
- "version": "1.3.4-next.2",
3
+ "version": "1.3.4",
4
4
  "main": "../dist/alpha.cjs.js",
5
5
  "types": "../dist/alpha.d.ts"
6
6
  }
package/dist/index.cjs.js CHANGED
@@ -3,6 +3,8 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var errors = require('@backstage/errors');
6
+ var catalogModel = require('@backstage/catalog-model');
7
+ var crypto = require('crypto');
6
8
 
7
9
  const processingResult = Object.freeze({
8
10
  notFoundError(atLocation, message) {
@@ -36,5 +38,63 @@ const processingResult = Object.freeze({
36
38
  }
37
39
  });
38
40
 
41
+ function locationSpecToMetadataName(location) {
42
+ const hash = crypto.createHash("sha1").update(`${location.type}:${location.target}`).digest("hex");
43
+ return `generated-${hash}`;
44
+ }
45
+ function locationSpecToLocationEntity(opts) {
46
+ var _a, _b;
47
+ const location = opts.location;
48
+ const parentEntity = opts.parentEntity;
49
+ let ownLocation;
50
+ let originLocation;
51
+ if (parentEntity) {
52
+ const maybeOwnLocation = (_a = parentEntity.metadata.annotations) == null ? void 0 : _a[catalogModel.ANNOTATION_LOCATION];
53
+ if (!maybeOwnLocation) {
54
+ throw new Error(
55
+ `Parent entity '${catalogModel.stringifyEntityRef(
56
+ parentEntity
57
+ )}' of location '${catalogModel.stringifyLocationRef(
58
+ location
59
+ )}' does not have a location annotation`
60
+ );
61
+ }
62
+ ownLocation = maybeOwnLocation;
63
+ const maybeOriginLocation = (_b = parentEntity.metadata.annotations) == null ? void 0 : _b[catalogModel.ANNOTATION_ORIGIN_LOCATION];
64
+ if (!maybeOriginLocation) {
65
+ throw new Error(
66
+ `Parent entity '${catalogModel.stringifyEntityRef(
67
+ parentEntity
68
+ )}' of location '${catalogModel.stringifyLocationRef(
69
+ location
70
+ )}' does not have an origin location annotation`
71
+ );
72
+ }
73
+ originLocation = maybeOriginLocation;
74
+ } else {
75
+ ownLocation = catalogModel.stringifyLocationRef(location);
76
+ originLocation = ownLocation;
77
+ }
78
+ const result = {
79
+ apiVersion: "backstage.io/v1alpha1",
80
+ kind: "Location",
81
+ metadata: {
82
+ name: locationSpecToMetadataName(location),
83
+ annotations: {
84
+ [catalogModel.ANNOTATION_LOCATION]: ownLocation,
85
+ [catalogModel.ANNOTATION_ORIGIN_LOCATION]: originLocation
86
+ }
87
+ },
88
+ spec: {
89
+ type: location.type,
90
+ target: location.target,
91
+ presence: location.presence
92
+ }
93
+ };
94
+ return result;
95
+ }
96
+
97
+ exports.locationSpecToLocationEntity = locationSpecToLocationEntity;
98
+ exports.locationSpecToMetadataName = locationSpecToMetadataName;
39
99
  exports.processingResult = processingResult;
40
100
  //# sourceMappingURL=index.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../src/api/processingResult.ts"],"sourcesContent":["/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { InputError, NotFoundError } from '@backstage/errors';\nimport { Entity } from '@backstage/catalog-model';\nimport { CatalogProcessorResult } from './processor';\nimport { EntityRelationSpec } from './common';\nimport { LocationSpec } from '@backstage/plugin-catalog-common';\n\n/**\n * Factory functions for the standard processing result types.\n *\n * @public\n */\nexport const processingResult = Object.freeze({\n notFoundError(\n atLocation: LocationSpec,\n message: string,\n ): CatalogProcessorResult {\n return {\n type: 'error',\n location: atLocation,\n error: new NotFoundError(message),\n };\n },\n\n inputError(\n atLocation: LocationSpec,\n message: string,\n ): CatalogProcessorResult {\n return {\n type: 'error',\n location: atLocation,\n error: new InputError(message),\n };\n },\n\n generalError(\n atLocation: LocationSpec,\n message: string,\n ): CatalogProcessorResult {\n return { type: 'error', location: atLocation, error: new Error(message) };\n },\n\n location(newLocation: LocationSpec): CatalogProcessorResult {\n return { type: 'location', location: newLocation };\n },\n\n entity(atLocation: LocationSpec, newEntity: Entity): CatalogProcessorResult {\n return { type: 'entity', location: atLocation, entity: newEntity };\n },\n\n relation(spec: EntityRelationSpec): CatalogProcessorResult {\n return { type: 'relation', relation: spec };\n },\n\n refresh(key: string): CatalogProcessorResult {\n return { type: 'refresh', key };\n },\n} as const);\n"],"names":["NotFoundError","InputError"],"mappings":";;;;;;AA2Ba,MAAA,gBAAA,GAAmB,OAAO,MAAO,CAAA;AAAA,EAC5C,aAAA,CACE,YACA,OACwB,EAAA;AACxB,IAAO,OAAA;AAAA,MACL,IAAM,EAAA,OAAA;AAAA,MACN,QAAU,EAAA,UAAA;AAAA,MACV,KAAA,EAAO,IAAIA,oBAAA,CAAc,OAAO,CAAA;AAAA,KAClC,CAAA;AAAA,GACF;AAAA,EAEA,UAAA,CACE,YACA,OACwB,EAAA;AACxB,IAAO,OAAA;AAAA,MACL,IAAM,EAAA,OAAA;AAAA,MACN,QAAU,EAAA,UAAA;AAAA,MACV,KAAA,EAAO,IAAIC,iBAAA,CAAW,OAAO,CAAA;AAAA,KAC/B,CAAA;AAAA,GACF;AAAA,EAEA,YAAA,CACE,YACA,OACwB,EAAA;AACxB,IAAO,OAAA,EAAE,MAAM,OAAS,EAAA,QAAA,EAAU,YAAY,KAAO,EAAA,IAAI,KAAM,CAAA,OAAO,CAAE,EAAA,CAAA;AAAA,GAC1E;AAAA,EAEA,SAAS,WAAmD,EAAA;AAC1D,IAAA,OAAO,EAAE,IAAA,EAAM,UAAY,EAAA,QAAA,EAAU,WAAY,EAAA,CAAA;AAAA,GACnD;AAAA,EAEA,MAAA,CAAO,YAA0B,SAA2C,EAAA;AAC1E,IAAA,OAAO,EAAE,IAAM,EAAA,QAAA,EAAU,QAAU,EAAA,UAAA,EAAY,QAAQ,SAAU,EAAA,CAAA;AAAA,GACnE;AAAA,EAEA,SAAS,IAAkD,EAAA;AACzD,IAAA,OAAO,EAAE,IAAA,EAAM,UAAY,EAAA,QAAA,EAAU,IAAK,EAAA,CAAA;AAAA,GAC5C;AAAA,EAEA,QAAQ,GAAqC,EAAA;AAC3C,IAAO,OAAA,EAAE,IAAM,EAAA,SAAA,EAAW,GAAI,EAAA,CAAA;AAAA,GAChC;AACF,CAAU;;;;"}
1
+ {"version":3,"file":"index.cjs.js","sources":["../src/api/processingResult.ts","../src/conversion.ts"],"sourcesContent":["/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { InputError, NotFoundError } from '@backstage/errors';\nimport { Entity } from '@backstage/catalog-model';\nimport { CatalogProcessorResult } from './processor';\nimport { EntityRelationSpec } from './common';\nimport { LocationSpec } from '@backstage/plugin-catalog-common';\n\n/**\n * Factory functions for the standard processing result types.\n *\n * @public\n */\nexport const processingResult = Object.freeze({\n notFoundError(\n atLocation: LocationSpec,\n message: string,\n ): CatalogProcessorResult {\n return {\n type: 'error',\n location: atLocation,\n error: new NotFoundError(message),\n };\n },\n\n inputError(\n atLocation: LocationSpec,\n message: string,\n ): CatalogProcessorResult {\n return {\n type: 'error',\n location: atLocation,\n error: new InputError(message),\n };\n },\n\n generalError(\n atLocation: LocationSpec,\n message: string,\n ): CatalogProcessorResult {\n return { type: 'error', location: atLocation, error: new Error(message) };\n },\n\n location(newLocation: LocationSpec): CatalogProcessorResult {\n return { type: 'location', location: newLocation };\n },\n\n entity(atLocation: LocationSpec, newEntity: Entity): CatalogProcessorResult {\n return { type: 'entity', location: atLocation, entity: newEntity };\n },\n\n relation(spec: EntityRelationSpec): CatalogProcessorResult {\n return { type: 'relation', relation: spec };\n },\n\n refresh(key: string): CatalogProcessorResult {\n return { type: 'refresh', key };\n },\n} as const);\n","/*\n * Copyright 2021 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Entity,\n LocationEntityV1alpha1,\n ANNOTATION_LOCATION,\n ANNOTATION_ORIGIN_LOCATION,\n stringifyEntityRef,\n stringifyLocationRef,\n} from '@backstage/catalog-model';\nimport { createHash } from 'crypto';\nimport { LocationSpec } from '@backstage/plugin-catalog-common';\n\n/**\n * A standard way of producing a machine generated name for a location.\n *\n * @public\n */\nexport function locationSpecToMetadataName(location: LocationSpec) {\n const hash = createHash('sha1')\n .update(`${location.type}:${location.target}`)\n .digest('hex');\n return `generated-${hash}`;\n}\n\n/**\n * A standard way of producing a machine generated Location kind entity for a\n * location.\n *\n * @public\n */\nexport function locationSpecToLocationEntity(opts: {\n location: LocationSpec;\n parentEntity?: Entity;\n}): LocationEntityV1alpha1 {\n const location = opts.location;\n const parentEntity = opts.parentEntity;\n\n let ownLocation: string;\n let originLocation: string;\n if (parentEntity) {\n const maybeOwnLocation =\n parentEntity.metadata.annotations?.[ANNOTATION_LOCATION];\n if (!maybeOwnLocation) {\n throw new Error(\n `Parent entity '${stringifyEntityRef(\n parentEntity,\n )}' of location '${stringifyLocationRef(\n location,\n )}' does not have a location annotation`,\n );\n }\n ownLocation = maybeOwnLocation;\n const maybeOriginLocation =\n parentEntity.metadata.annotations?.[ANNOTATION_ORIGIN_LOCATION];\n if (!maybeOriginLocation) {\n throw new Error(\n `Parent entity '${stringifyEntityRef(\n parentEntity,\n )}' of location '${stringifyLocationRef(\n location,\n )}' does not have an origin location annotation`,\n );\n }\n originLocation = maybeOriginLocation;\n } else {\n ownLocation = stringifyLocationRef(location);\n originLocation = ownLocation;\n }\n\n const result: LocationEntityV1alpha1 = {\n apiVersion: 'backstage.io/v1alpha1',\n kind: 'Location',\n metadata: {\n name: locationSpecToMetadataName(location),\n annotations: {\n [ANNOTATION_LOCATION]: ownLocation,\n [ANNOTATION_ORIGIN_LOCATION]: originLocation,\n },\n },\n spec: {\n type: location.type,\n target: location.target,\n presence: location.presence,\n },\n };\n\n return result;\n}\n"],"names":["NotFoundError","InputError","createHash","ANNOTATION_LOCATION","stringifyEntityRef","stringifyLocationRef","ANNOTATION_ORIGIN_LOCATION"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /// <reference types="node" />
2
- import { CompoundEntityRef, Entity } from '@backstage/catalog-model';
2
+ import { CompoundEntityRef, Entity, LocationEntityV1alpha1 } from '@backstage/catalog-model';
3
3
  import { JsonValue } from '@backstage/types';
4
4
  import { LocationSpec as LocationSpec$1 } from '@backstage/plugin-catalog-common';
5
5
 
@@ -250,4 +250,21 @@ interface EntityProvider {
250
250
  connect(connection: EntityProviderConnection): Promise<void>;
251
251
  }
252
252
 
253
- export { CatalogProcessor, CatalogProcessorCache, CatalogProcessorEmit, CatalogProcessorEntityResult, CatalogProcessorErrorResult, CatalogProcessorLocationResult, CatalogProcessorParser, CatalogProcessorRefreshKeysResult, CatalogProcessorRelationResult, CatalogProcessorResult, DeferredEntity, EntityProvider, EntityProviderConnection, EntityProviderMutation, EntityProviderRefreshOptions, EntityRelationSpec, LocationSpec, processingResult };
253
+ /**
254
+ * A standard way of producing a machine generated name for a location.
255
+ *
256
+ * @public
257
+ */
258
+ declare function locationSpecToMetadataName(location: LocationSpec$1): string;
259
+ /**
260
+ * A standard way of producing a machine generated Location kind entity for a
261
+ * location.
262
+ *
263
+ * @public
264
+ */
265
+ declare function locationSpecToLocationEntity(opts: {
266
+ location: LocationSpec$1;
267
+ parentEntity?: Entity;
268
+ }): LocationEntityV1alpha1;
269
+
270
+ export { CatalogProcessor, CatalogProcessorCache, CatalogProcessorEmit, CatalogProcessorEntityResult, CatalogProcessorErrorResult, CatalogProcessorLocationResult, CatalogProcessorParser, CatalogProcessorRefreshKeysResult, CatalogProcessorRelationResult, CatalogProcessorResult, DeferredEntity, EntityProvider, EntityProviderConnection, EntityProviderMutation, EntityProviderRefreshOptions, EntityRelationSpec, LocationSpec, locationSpecToLocationEntity, locationSpecToMetadataName, processingResult };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@backstage/plugin-catalog-node",
3
3
  "description": "The plugin-catalog-node module for @backstage/plugin-catalog-backend",
4
- "version": "1.3.4-next.2",
4
+ "version": "1.3.4",
5
5
  "main": "./dist/index.cjs.js",
6
6
  "types": "./dist/index.d.ts",
7
7
  "license": "Apache-2.0",
@@ -34,17 +34,17 @@
34
34
  "postpack": "backstage-cli package postpack"
35
35
  },
36
36
  "dependencies": {
37
- "@backstage/backend-plugin-api": "^0.4.1-next.2",
38
- "@backstage/catalog-client": "^1.4.0-next.1",
39
- "@backstage/catalog-model": "^1.2.1-next.1",
40
- "@backstage/errors": "^1.1.5-next.0",
41
- "@backstage/plugin-catalog-common": "^1.0.12-next.1",
37
+ "@backstage/backend-plugin-api": "^0.5.0",
38
+ "@backstage/catalog-client": "^1.4.0",
39
+ "@backstage/catalog-model": "^1.2.1",
40
+ "@backstage/errors": "^1.1.5",
41
+ "@backstage/plugin-catalog-common": "^1.0.12",
42
42
  "@backstage/types": "^1.0.2"
43
43
  },
44
44
  "devDependencies": {
45
- "@backstage/backend-common": "^0.18.3-next.2",
46
- "@backstage/backend-test-utils": "^0.1.35-next.2",
47
- "@backstage/cli": "^0.22.4-next.1"
45
+ "@backstage/backend-common": "^0.18.3",
46
+ "@backstage/backend-test-utils": "^0.1.35",
47
+ "@backstage/cli": "^0.22.4"
48
48
  },
49
49
  "files": [
50
50
  "dist",