@backstage/backend-app-api 1.7.3-next.0 → 1.7.3-next.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.
@@ -0,0 +1,215 @@
1
+ 'use strict';
2
+
3
+ var errors = require('@backstage/errors');
4
+
5
+ function describeValue(value) {
6
+ if (value === void 0) {
7
+ return "undefined";
8
+ }
9
+ if (value === null) {
10
+ return "null";
11
+ }
12
+ if (typeof value === "string") {
13
+ return JSON.stringify(value);
14
+ }
15
+ if (typeof value === "number" || typeof value === "boolean" || typeof value === "bigint") {
16
+ return String(value);
17
+ }
18
+ if (typeof value === "function") {
19
+ return "a function";
20
+ }
21
+ if (Array.isArray(value)) {
22
+ return "an array";
23
+ }
24
+ return "an object";
25
+ }
26
+ function throwInvalidBackendFeature(path, expected, value) {
27
+ throw new errors.InputError(
28
+ `Invalid backend feature at ${path}, expected ${expected}, received ${describeValue(
29
+ value
30
+ )}`
31
+ );
32
+ }
33
+ function assertObject(value, path, expected = "an object") {
34
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
35
+ throwInvalidBackendFeature(path, expected, value);
36
+ }
37
+ }
38
+ function assertObjectLike(value, path) {
39
+ if ((typeof value !== "object" || value === null) && typeof value !== "function") {
40
+ throwInvalidBackendFeature(path, "an object or function", value);
41
+ }
42
+ }
43
+ function assertString(value, path) {
44
+ if (typeof value !== "string") {
45
+ throwInvalidBackendFeature(path, "a string", value);
46
+ }
47
+ }
48
+ function assertFunction(value, path) {
49
+ if (typeof value !== "function") {
50
+ throwInvalidBackendFeature(path, "a function", value);
51
+ }
52
+ }
53
+ function assertArray(value, path) {
54
+ if (!Array.isArray(value)) {
55
+ throwInvalidBackendFeature(path, "an array", value);
56
+ }
57
+ }
58
+ function validateServiceRef(value, path) {
59
+ assertObject(value, path, "a service reference object");
60
+ assertString(value.id, `${path}.id`);
61
+ if (value.scope !== "root" && value.scope !== "plugin") {
62
+ throwInvalidBackendFeature(
63
+ `${path}.scope`,
64
+ '"root" or "plugin"',
65
+ value.scope
66
+ );
67
+ }
68
+ }
69
+ function validateExtensionPoint(value, path) {
70
+ assertObject(value, path, "an extension point reference object");
71
+ assertString(value.id, `${path}.id`);
72
+ }
73
+ function validateBackendRegistrations(feature, source) {
74
+ assertFunction(feature.getRegistrations, `${source}.getRegistrations`);
75
+ const registrations = feature.getRegistrations();
76
+ assertArray(registrations, `${source}.getRegistrations()`);
77
+ for (let index = 0; index < registrations.length; index++) {
78
+ const path = `${source}.getRegistrations()[${index}]`;
79
+ const registration = registrations[index];
80
+ assertObject(registration, path, "a registration object");
81
+ if (registration.type === "plugin" || registration.type === "module" || registration.type === "plugin-v1.1" || registration.type === "module-v1.1") {
82
+ assertString(registration.pluginId, `${path}.pluginId`);
83
+ }
84
+ if (registration.type === "module" || registration.type === "module-v1.1") {
85
+ const modulePath = typeof registration.pluginId === "string" ? `module registration for plugin ${JSON.stringify(
86
+ registration.pluginId
87
+ )}` : path;
88
+ assertString(registration.moduleId, `${modulePath}.moduleId`);
89
+ }
90
+ }
91
+ return registrations;
92
+ }
93
+ function validateBackendRegistration(registration) {
94
+ let registrationPath = "registration";
95
+ if ("moduleId" in registration) {
96
+ registrationPath = `module ${JSON.stringify(
97
+ registration.moduleId
98
+ )} for plugin ${JSON.stringify(registration.pluginId)}`;
99
+ } else if ("pluginId" in registration) {
100
+ registrationPath = `plugin ${JSON.stringify(registration.pluginId)}`;
101
+ }
102
+ if (registration.type === "plugin" || registration.type === "module") {
103
+ assertArray(
104
+ registration.extensionPoints,
105
+ `${registrationPath}.extensionPoints`
106
+ );
107
+ for (let index = 0; index < registration.extensionPoints.length; index++) {
108
+ const itemPath = `${registrationPath}.extensionPoints[${index}]`;
109
+ const item = registration.extensionPoints[index];
110
+ assertArray(item, itemPath);
111
+ validateExtensionPoint(item[0], `${itemPath}[0]`);
112
+ }
113
+ } else if (registration.type === "plugin-v1.1" || registration.type === "module-v1.1") {
114
+ assertArray(
115
+ registration.extensionPoints,
116
+ `${registrationPath}.extensionPoints`
117
+ );
118
+ for (let index = 0; index < registration.extensionPoints.length; index++) {
119
+ const itemPath = `${registrationPath}.extensionPoints[${index}]`;
120
+ const item = registration.extensionPoints[index];
121
+ assertObject(item, itemPath, "an extension point registration object");
122
+ validateExtensionPoint(item.extensionPoint, `${itemPath}.extensionPoint`);
123
+ }
124
+ }
125
+ if (registration.type === "plugin" || registration.type === "module" || registration.type === "plugin-v1.1" || registration.type === "module-v1.1") {
126
+ assertObject(
127
+ registration.init,
128
+ `${registrationPath}.init`,
129
+ "an init registration object"
130
+ );
131
+ assertObject(
132
+ registration.init.deps,
133
+ `${registrationPath}.init.deps`,
134
+ "a dependency object"
135
+ );
136
+ for (const [name, ref] of Object.entries(registration.init.deps)) {
137
+ const path = `${registrationPath}.init.deps.${name}`;
138
+ if ((registration.type === "module" || registration.type === "module-v1.1") && typeof ref === "object" && ref !== null && ref.$$type === "@backstage/ExtensionPoint") {
139
+ validateExtensionPoint(ref, path);
140
+ } else {
141
+ validateServiceRef(ref, path);
142
+ }
143
+ }
144
+ }
145
+ }
146
+ function describeBackendFeature(value) {
147
+ if ((typeof value !== "object" || value === null) && typeof value !== "function") {
148
+ return void 0;
149
+ }
150
+ const feature = value;
151
+ const service = feature.service;
152
+ if (typeof service === "object" && service !== null && "id" in service) {
153
+ const serviceId = service.id;
154
+ if (typeof serviceId === "string") {
155
+ return `service factory for ${JSON.stringify(serviceId)}`;
156
+ }
157
+ }
158
+ if (feature.featureType === "loader" && typeof feature.description === "string") {
159
+ return `feature loader ${feature.description}`;
160
+ }
161
+ if (typeof feature.description === "string") {
162
+ return `backend feature ${feature.description}`;
163
+ }
164
+ return void 0;
165
+ }
166
+ function validateBackendFeature(value, path) {
167
+ assertObjectLike(value, path);
168
+ if (value.$$type !== "@backstage/BackendFeature") {
169
+ throwInvalidBackendFeature(
170
+ `${path}.$$type`,
171
+ '"@backstage/BackendFeature"',
172
+ value.$$type
173
+ );
174
+ }
175
+ if (value.version !== "v1") {
176
+ throwInvalidBackendFeature(`${path}.version`, '"v1"', value.version);
177
+ }
178
+ if (value.featureType === "service" || "service" in value) {
179
+ return {
180
+ type: "service",
181
+ feature: value
182
+ };
183
+ }
184
+ if (value.featureType === "loader") {
185
+ return {
186
+ type: "loader",
187
+ feature: value
188
+ };
189
+ }
190
+ if (value.featureType === "registrations" || "getRegistrations" in value) {
191
+ return {
192
+ type: "registrations",
193
+ feature: value
194
+ };
195
+ }
196
+ return throwInvalidBackendFeature(
197
+ `${path}.featureType`,
198
+ '"service", "registrations", or "loader"',
199
+ value.featureType
200
+ );
201
+ }
202
+
203
+ exports.assertArray = assertArray;
204
+ exports.assertFunction = assertFunction;
205
+ exports.assertObject = assertObject;
206
+ exports.assertObjectLike = assertObjectLike;
207
+ exports.assertString = assertString;
208
+ exports.describeBackendFeature = describeBackendFeature;
209
+ exports.throwInvalidBackendFeature = throwInvalidBackendFeature;
210
+ exports.validateBackendFeature = validateBackendFeature;
211
+ exports.validateBackendRegistration = validateBackendRegistration;
212
+ exports.validateBackendRegistrations = validateBackendRegistrations;
213
+ exports.validateExtensionPoint = validateExtensionPoint;
214
+ exports.validateServiceRef = validateServiceRef;
215
+ //# sourceMappingURL=validateBackendFeature.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateBackendFeature.cjs.js","sources":["../../src/wiring/validateBackendFeature.ts"],"sourcesContent":["/*\n * Copyright 2026 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 } from '@backstage/errors';\n// Direct internal import to avoid duplication\n// eslint-disable-next-line @backstage/no-relative-monorepo-imports\nimport type {\n InternalBackendFeatureLoader,\n InternalBackendRegistrations,\n} from '../../../backend-plugin-api/src/wiring/types';\n// eslint-disable-next-line @backstage/no-relative-monorepo-imports\nimport type { InternalServiceFactory } from '../../../backend-plugin-api/src/services/system/types';\n\nexport type ValidatedBackendFeature =\n | { type: 'service'; feature: InternalServiceFactory }\n | { type: 'loader'; feature: InternalBackendFeatureLoader }\n | { type: 'registrations'; feature: InternalBackendRegistrations };\n\nfunction describeValue(value: unknown): string {\n if (value === undefined) {\n return 'undefined';\n }\n if (value === null) {\n return 'null';\n }\n if (typeof value === 'string') {\n return JSON.stringify(value);\n }\n if (\n typeof value === 'number' ||\n typeof value === 'boolean' ||\n typeof value === 'bigint'\n ) {\n return String(value);\n }\n if (typeof value === 'function') {\n return 'a function';\n }\n if (Array.isArray(value)) {\n return 'an array';\n }\n return 'an object';\n}\n\nexport function throwInvalidBackendFeature(\n path: string,\n expected: string,\n value: unknown,\n): never {\n throw new InputError(\n `Invalid backend feature at ${path}, expected ${expected}, received ${describeValue(\n value,\n )}`,\n );\n}\n\nexport function assertObject(\n value: unknown,\n path: string,\n expected = 'an object',\n): asserts value is Record<string, unknown> {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) {\n throwInvalidBackendFeature(path, expected, value);\n }\n}\n\nexport function assertObjectLike(\n value: unknown,\n path: string,\n): asserts value is Record<string, unknown> {\n if (\n (typeof value !== 'object' || value === null) &&\n typeof value !== 'function'\n ) {\n throwInvalidBackendFeature(path, 'an object or function', value);\n }\n}\n\nexport function assertString(\n value: unknown,\n path: string,\n): asserts value is string {\n if (typeof value !== 'string') {\n throwInvalidBackendFeature(path, 'a string', value);\n }\n}\n\nexport function assertFunction(\n value: unknown,\n path: string,\n): asserts value is (...args: any[]) => unknown {\n if (typeof value !== 'function') {\n throwInvalidBackendFeature(path, 'a function', value);\n }\n}\n\nexport function assertArray(\n value: unknown,\n path: string,\n): asserts value is unknown[] {\n if (!Array.isArray(value)) {\n throwInvalidBackendFeature(path, 'an array', value);\n }\n}\n\nexport function validateServiceRef(value: unknown, path: string): void {\n assertObject(value, path, 'a service reference object');\n assertString(value.id, `${path}.id`);\n if (value.scope !== 'root' && value.scope !== 'plugin') {\n throwInvalidBackendFeature(\n `${path}.scope`,\n '\"root\" or \"plugin\"',\n value.scope,\n );\n }\n}\n\nexport function validateExtensionPoint(value: unknown, path: string): void {\n assertObject(value, path, 'an extension point reference object');\n assertString(value.id, `${path}.id`);\n}\n\n/**\n * Reads the registrations from a backend feature and validates the outer\n * registration objects and their identifying fields.\n *\n * Nested registration data is validated later by\n * {@link validateBackendRegistration}, when each registration is enumerated.\n */\nexport function validateBackendRegistrations(\n feature: InternalBackendRegistrations,\n source: string,\n): ReturnType<InternalBackendRegistrations['getRegistrations']> {\n assertFunction(feature.getRegistrations, `${source}.getRegistrations`);\n const registrations: unknown = feature.getRegistrations();\n assertArray(registrations, `${source}.getRegistrations()`);\n\n for (let index = 0; index < registrations.length; index++) {\n const path = `${source}.getRegistrations()[${index}]`;\n const registration = registrations[index];\n assertObject(registration, path, 'a registration object');\n\n if (\n registration.type === 'plugin' ||\n registration.type === 'module' ||\n registration.type === 'plugin-v1.1' ||\n registration.type === 'module-v1.1'\n ) {\n assertString(registration.pluginId, `${path}.pluginId`);\n }\n if (registration.type === 'module' || registration.type === 'module-v1.1') {\n const modulePath =\n typeof registration.pluginId === 'string'\n ? `module registration for plugin ${JSON.stringify(\n registration.pluginId,\n )}`\n : path;\n assertString(registration.moduleId, `${modulePath}.moduleId`);\n }\n }\n\n return registrations as ReturnType<\n InternalBackendRegistrations['getRegistrations']\n >;\n}\n\n/**\n * Validates the nested extension point and dependency data consumed while a\n * single plugin or module registration is enumerated.\n *\n * The registration object and its identifying fields have already been\n * validated by {@link validateBackendRegistrations}. Duplicate and conflicting\n * registrations are handled separately by the backend initializer.\n */\nexport function validateBackendRegistration(\n registration: ReturnType<\n InternalBackendRegistrations['getRegistrations']\n >[number],\n): void {\n let registrationPath = 'registration';\n if ('moduleId' in registration) {\n registrationPath = `module ${JSON.stringify(\n registration.moduleId,\n )} for plugin ${JSON.stringify(registration.pluginId)}`;\n } else if ('pluginId' in registration) {\n registrationPath = `plugin ${JSON.stringify(registration.pluginId)}`;\n }\n\n if (registration.type === 'plugin' || registration.type === 'module') {\n assertArray(\n registration.extensionPoints,\n `${registrationPath}.extensionPoints`,\n );\n for (let index = 0; index < registration.extensionPoints.length; index++) {\n const itemPath = `${registrationPath}.extensionPoints[${index}]`;\n const item: unknown = registration.extensionPoints[index];\n assertArray(item, itemPath);\n validateExtensionPoint(item[0], `${itemPath}[0]`);\n }\n } else if (\n registration.type === 'plugin-v1.1' ||\n registration.type === 'module-v1.1'\n ) {\n assertArray(\n registration.extensionPoints,\n `${registrationPath}.extensionPoints`,\n );\n for (let index = 0; index < registration.extensionPoints.length; index++) {\n const itemPath = `${registrationPath}.extensionPoints[${index}]`;\n const item: unknown = registration.extensionPoints[index];\n assertObject(item, itemPath, 'an extension point registration object');\n validateExtensionPoint(item.extensionPoint, `${itemPath}.extensionPoint`);\n }\n }\n\n if (\n registration.type === 'plugin' ||\n registration.type === 'module' ||\n registration.type === 'plugin-v1.1' ||\n registration.type === 'module-v1.1'\n ) {\n assertObject(\n registration.init,\n `${registrationPath}.init`,\n 'an init registration object',\n );\n assertObject(\n registration.init.deps,\n `${registrationPath}.init.deps`,\n 'a dependency object',\n );\n for (const [name, ref] of Object.entries(registration.init.deps)) {\n const path = `${registrationPath}.init.deps.${name}`;\n if (\n (registration.type === 'module' ||\n registration.type === 'module-v1.1') &&\n typeof ref === 'object' &&\n ref !== null &&\n (ref as { $$type?: unknown }).$$type === '@backstage/ExtensionPoint'\n ) {\n validateExtensionPoint(ref, path);\n } else {\n validateServiceRef(ref, path);\n }\n }\n }\n}\n\nexport function describeBackendFeature(value: unknown): string | undefined {\n if (\n (typeof value !== 'object' || value === null) &&\n typeof value !== 'function'\n ) {\n return undefined;\n }\n\n const feature = value as Record<string, unknown>;\n const service = feature.service;\n if (typeof service === 'object' && service !== null && 'id' in service) {\n const serviceId = service.id;\n if (typeof serviceId === 'string') {\n return `service factory for ${JSON.stringify(serviceId)}`;\n }\n }\n\n if (\n feature.featureType === 'loader' &&\n typeof feature.description === 'string'\n ) {\n return `feature loader ${feature.description}`;\n }\n\n if (typeof feature.description === 'string') {\n return `backend feature ${feature.description}`;\n }\n\n return undefined;\n}\n\nexport function validateBackendFeature(\n value: unknown,\n path: string,\n): ValidatedBackendFeature {\n assertObjectLike(value, path);\n if (value.$$type !== '@backstage/BackendFeature') {\n throwInvalidBackendFeature(\n `${path}.$$type`,\n '\"@backstage/BackendFeature\"',\n value.$$type,\n );\n }\n if (value.version !== 'v1') {\n throwInvalidBackendFeature(`${path}.version`, '\"v1\"', value.version);\n }\n\n if (value.featureType === 'service' || 'service' in value) {\n return {\n type: 'service',\n feature: value as unknown as InternalServiceFactory,\n };\n }\n if (value.featureType === 'loader') {\n return {\n type: 'loader',\n feature: value as unknown as InternalBackendFeatureLoader,\n };\n }\n if (value.featureType === 'registrations' || 'getRegistrations' in value) {\n return {\n type: 'registrations',\n feature: value as unknown as InternalBackendRegistrations,\n };\n }\n\n return throwInvalidBackendFeature(\n `${path}.featureType`,\n '\"service\", \"registrations\", or \"loader\"',\n value.featureType,\n );\n}\n"],"names":["InputError"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@backstage/backend-app-api",
3
- "version": "1.7.3-next.0",
3
+ "version": "1.7.3-next.1",
4
4
  "description": "Core API used by Backstage backend apps",
5
5
  "backstage": {
6
6
  "role": "node-library"
@@ -50,17 +50,17 @@
50
50
  "test": "backstage-cli package test"
51
51
  },
52
52
  "dependencies": {
53
- "@backstage/backend-plugin-api": "1.10.0-next.0",
53
+ "@backstage/backend-plugin-api": "1.10.0-next.1",
54
54
  "@backstage/config": "1.3.8",
55
- "@backstage/connections": "0.3.0-next.0",
55
+ "@backstage/connections": "0.3.0-next.2",
56
56
  "@backstage/errors": "1.3.1",
57
57
  "@backstage/types": "1.2.2",
58
58
  "zod": "^3.25.76 || ^4.0.0"
59
59
  },
60
60
  "devDependencies": {
61
- "@backstage/backend-defaults": "0.17.6-next.0",
62
- "@backstage/backend-test-utils": "1.11.6-next.0",
63
- "@backstage/cli": "0.36.4"
61
+ "@backstage/backend-defaults": "0.17.7-next.2",
62
+ "@backstage/backend-test-utils": "1.11.6-next.1",
63
+ "@backstage/cli": "0.36.5-next.1"
64
64
  },
65
65
  "configSchema": "config.schema.json"
66
66
  }