@backstage/cli-module-new 0.1.0 → 0.1.1-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.
Files changed (27) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/lib/preparation/loadPortableTemplate.cjs.js +8 -8
  3. package/dist/lib/preparation/loadPortableTemplate.cjs.js.map +1 -1
  4. package/dist/lib/preparation/loadPortableTemplateConfig.cjs.js +19 -19
  5. package/dist/lib/preparation/loadPortableTemplateConfig.cjs.js.map +1 -1
  6. package/dist/packages/backend-defaults/package.json.cjs.js +1 -1
  7. package/dist/packages/backend-plugin-api/package.json.cjs.js +1 -1
  8. package/dist/packages/backend-test-utils/package.json.cjs.js +1 -1
  9. package/dist/packages/cli/package.json.cjs.js +1 -1
  10. package/dist/packages/cli-module-new/package.json.cjs.js +1 -1
  11. package/dist/packages/core-app-api/package.json.cjs.js +1 -1
  12. package/dist/packages/core-components/package.json.cjs.js +1 -1
  13. package/dist/packages/core-plugin-api/package.json.cjs.js +1 -1
  14. package/dist/packages/dev-utils/package.json.cjs.js +1 -1
  15. package/dist/packages/frontend-defaults/package.json.cjs.js +1 -1
  16. package/dist/packages/frontend-dev-utils/package.json.cjs.js +1 -1
  17. package/dist/packages/frontend-plugin-api/package.json.cjs.js +1 -1
  18. package/dist/packages/frontend-test-utils/package.json.cjs.js +1 -1
  19. package/dist/packages/test-utils/package.json.cjs.js +1 -1
  20. package/dist/plugins/auth-backend/package.json.cjs.js +1 -1
  21. package/dist/plugins/auth-backend-module-guest-provider/package.json.cjs.js +1 -1
  22. package/dist/plugins/catalog-node/package.json.cjs.js +1 -1
  23. package/dist/plugins/scaffolder-node/package.json.cjs.js +1 -1
  24. package/dist/plugins/scaffolder-node-test-utils/package.json.cjs.js +1 -1
  25. package/package.json +8 -8
  26. package/templates/frontend-plugin-module/src/index.ts.hbs +1 -1
  27. package/templates/legacy-frontend-plugin/portable-template.yaml +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # @backstage/cli-module-new
2
2
 
3
+ ## 0.1.1-next.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 64a91d0: Rename the legacy `frontend-plugin` to `frontend-plugin-legacy`
8
+
9
+ ## 0.1.1-next.0
10
+
11
+ ### Patch Changes
12
+
13
+ - Updated dependencies
14
+ - @backstage/cli-common@0.2.1-next.0
15
+ - @backstage/cli-node@0.3.1-next.0
16
+ - @backstage/errors@1.2.7
17
+
3
18
  ## 0.1.0
4
19
 
5
20
  ### Minor Changes
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var v3 = require('zod/v3');
3
+ var v3$1 = require('zod/v3');
4
4
  var fs = require('fs-extra');
5
5
  var recursiveReaddir = require('recursive-readdir');
6
6
  var path = require('node:path');
@@ -8,18 +8,18 @@ var yaml = require('yaml');
8
8
  var cliCommon = require('@backstage/cli-common');
9
9
  var types = require('../types.cjs.js');
10
10
  var errors = require('@backstage/errors');
11
- var v3$1 = require('zod-validation-error/v3');
11
+ var v3 = require('zod-validation-error/v3');
12
12
 
13
13
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
14
14
 
15
15
  var fs__default = /*#__PURE__*/_interopDefaultCompat(fs);
16
16
  var recursiveReaddir__default = /*#__PURE__*/_interopDefaultCompat(recursiveReaddir);
17
17
 
18
- const templateDefinitionSchema = v3.z.object({
19
- name: v3.z.string(),
20
- role: v3.z.enum(types.TEMPLATE_ROLES),
21
- description: v3.z.string().optional(),
22
- values: v3.z.record(v3.z.string()).optional()
18
+ const templateDefinitionSchema = v3$1.z.object({
19
+ name: v3$1.z.string(),
20
+ role: v3$1.z.enum(types.TEMPLATE_ROLES),
21
+ description: v3$1.z.string().optional(),
22
+ values: v3$1.z.record(v3$1.z.string()).optional()
23
23
  }).strict();
24
24
  async function loadPortableTemplate(pointer) {
25
25
  if (pointer.target.match(/https?:\/\//)) {
@@ -36,7 +36,7 @@ async function loadPortableTemplate(pointer) {
36
36
  if (!parsed.success) {
37
37
  throw new errors.ForwardedError(
38
38
  `Invalid template definition at '${pointer.target}'`,
39
- v3$1.fromZodError(parsed.error)
39
+ v3.fromZodError(parsed.error)
40
40
  );
41
41
  }
42
42
  const { role, values = {} } = parsed.data;
@@ -1 +1 @@
1
- {"version":3,"file":"loadPortableTemplate.cjs.js","sources":["../../../src/lib/preparation/loadPortableTemplate.ts"],"sourcesContent":["/*\n * Copyright 2025 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 { z } from 'zod/v3';\nimport fs from 'fs-extra';\nimport recursiveReaddir from 'recursive-readdir';\nimport { resolve as resolvePath, relative as relativePath } from 'node:path';\nimport { dirname } from 'node:path';\nimport { parse as parseYaml } from 'yaml';\nimport { targetPaths } from '@backstage/cli-common';\n\nimport {\n PortableTemplateFile,\n PortableTemplatePointer,\n TEMPLATE_ROLES,\n} from '../types';\nimport { PortableTemplate } from '../types';\nimport { ForwardedError } from '@backstage/errors';\nimport { fromZodError } from 'zod-validation-error/v3';\n\nconst templateDefinitionSchema = z\n .object({\n name: z.string(),\n role: z.enum(TEMPLATE_ROLES),\n description: z.string().optional(),\n values: z.record(z.string()).optional(),\n })\n .strict();\n\nexport async function loadPortableTemplate(\n pointer: PortableTemplatePointer,\n): Promise<PortableTemplate> {\n if (pointer.target.match(/https?:\\/\\//)) {\n throw new Error('Remote templates are not supported yet');\n }\n const templateContent = await fs\n .readFile(targetPaths.resolveRoot(pointer.target), 'utf-8')\n .catch(error => {\n throw new ForwardedError(\n `Failed to load template definition from '${pointer.target}'`,\n error,\n );\n });\n const rawTemplate = parseYaml(templateContent);\n\n const parsed = templateDefinitionSchema.safeParse(rawTemplate);\n if (!parsed.success) {\n throw new ForwardedError(\n `Invalid template definition at '${pointer.target}'`,\n fromZodError(parsed.error),\n );\n }\n\n const { role, values = {} } = parsed.data;\n\n const templatePath = resolvePath(dirname(pointer.target));\n const filePaths = await recursiveReaddir(templatePath).catch(error => {\n throw new ForwardedError(\n `Failed to load template contents from '${templatePath}'`,\n error,\n );\n });\n\n const loadedFiles = new Array<PortableTemplateFile>();\n\n for (const filePath of filePaths) {\n const path = relativePath(templatePath, filePath);\n if (filePath === pointer.target) {\n continue;\n }\n\n const content = await fs.readFile(filePath, 'utf-8').catch(error => {\n throw new ForwardedError(\n `Failed to load file contents from '${path}'`,\n error,\n );\n });\n\n if (path.endsWith('.hbs')) {\n loadedFiles.push({\n path: path.slice(0, -4),\n content,\n syntax: 'handlebars',\n });\n } else {\n loadedFiles.push({ path, content });\n }\n }\n\n return {\n name: pointer.name,\n role,\n files: loadedFiles,\n values,\n };\n}\n"],"names":["z","TEMPLATE_ROLES","fs","targetPaths","ForwardedError","parseYaml","fromZodError","resolvePath","dirname","recursiveReaddir","path","relativePath"],"mappings":"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"}
1
+ {"version":3,"file":"loadPortableTemplate.cjs.js","sources":["../../../src/lib/preparation/loadPortableTemplate.ts"],"sourcesContent":["/*\n * Copyright 2025 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 { z } from 'zod/v3';\nimport fs from 'fs-extra';\nimport recursiveReaddir from 'recursive-readdir';\nimport { resolve as resolvePath, relative as relativePath } from 'node:path';\nimport { dirname } from 'node:path';\nimport { parse as parseYaml } from 'yaml';\nimport { targetPaths } from '@backstage/cli-common';\n\nimport {\n PortableTemplateFile,\n PortableTemplatePointer,\n TEMPLATE_ROLES,\n} from '../types';\nimport { PortableTemplate } from '../types';\nimport { ForwardedError } from '@backstage/errors';\nimport { fromZodError } from 'zod-validation-error/v3';\n\nconst templateDefinitionSchema = z\n .object({\n name: z.string(),\n role: z.enum(TEMPLATE_ROLES),\n description: z.string().optional(),\n values: z.record(z.string()).optional(),\n })\n .strict();\n\nexport async function loadPortableTemplate(\n pointer: PortableTemplatePointer,\n): Promise<PortableTemplate> {\n if (pointer.target.match(/https?:\\/\\//)) {\n throw new Error('Remote templates are not supported yet');\n }\n const templateContent = await fs\n .readFile(targetPaths.resolveRoot(pointer.target), 'utf-8')\n .catch(error => {\n throw new ForwardedError(\n `Failed to load template definition from '${pointer.target}'`,\n error,\n );\n });\n const rawTemplate = parseYaml(templateContent);\n\n const parsed = templateDefinitionSchema.safeParse(rawTemplate);\n if (!parsed.success) {\n throw new ForwardedError(\n `Invalid template definition at '${pointer.target}'`,\n fromZodError(parsed.error),\n );\n }\n\n const { role, values = {} } = parsed.data;\n\n const templatePath = resolvePath(dirname(pointer.target));\n const filePaths = await recursiveReaddir(templatePath).catch(error => {\n throw new ForwardedError(\n `Failed to load template contents from '${templatePath}'`,\n error,\n );\n });\n\n const loadedFiles = new Array<PortableTemplateFile>();\n\n for (const filePath of filePaths) {\n const path = relativePath(templatePath, filePath);\n if (filePath === pointer.target) {\n continue;\n }\n\n const content = await fs.readFile(filePath, 'utf-8').catch(error => {\n throw new ForwardedError(\n `Failed to load file contents from '${path}'`,\n error,\n );\n });\n\n if (path.endsWith('.hbs')) {\n loadedFiles.push({\n path: path.slice(0, -4),\n content,\n syntax: 'handlebars',\n });\n } else {\n loadedFiles.push({ path, content });\n }\n }\n\n return {\n name: pointer.name,\n role,\n files: loadedFiles,\n values,\n };\n}\n"],"names":["z","TEMPLATE_ROLES","fs","targetPaths","ForwardedError","parseYaml","fromZodError","resolvePath","dirname","recursiveReaddir","path","relativePath"],"mappings":"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"}
@@ -6,8 +6,8 @@ var cliCommon = require('@backstage/cli-common');
6
6
  var defaultTemplates = require('../defaultTemplates.cjs.js');
7
7
  var types = require('../types.cjs.js');
8
8
  var yaml = require('yaml');
9
- var v3 = require('zod/v3');
10
- var v3$1 = require('zod-validation-error/v3');
9
+ var v3$1 = require('zod/v3');
10
+ var v3 = require('zod-validation-error/v3');
11
11
  var errors = require('@backstage/errors');
12
12
 
13
13
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
@@ -56,20 +56,20 @@ const defaults = {
56
56
  packageNamePrefix: "@internal/",
57
57
  packageNamePluginInfix: "plugin-"
58
58
  };
59
- const newConfigSchema = v3.z.object({
60
- templates: v3.z.array(v3.z.string()).optional(),
61
- globals: v3.z.object({
62
- license: v3.z.string().optional(),
63
- version: v3.z.string().optional(),
64
- private: v3.z.boolean().optional(),
65
- publishRegistry: v3.z.string().optional(),
66
- namePrefix: v3.z.string().optional(),
67
- namePluginInfix: v3.z.string().optional()
59
+ const newConfigSchema = v3$1.z.object({
60
+ templates: v3$1.z.array(v3$1.z.string()).optional(),
61
+ globals: v3$1.z.object({
62
+ license: v3$1.z.string().optional(),
63
+ version: v3$1.z.string().optional(),
64
+ private: v3$1.z.boolean().optional(),
65
+ publishRegistry: v3$1.z.string().optional(),
66
+ namePrefix: v3$1.z.string().optional(),
67
+ namePluginInfix: v3$1.z.string().optional()
68
68
  }).optional()
69
69
  }).strict();
70
- const pkgJsonWithNewConfigSchema = v3.z.object({
71
- backstage: v3.z.object({
72
- cli: v3.z.object({
70
+ const pkgJsonWithNewConfigSchema = v3$1.z.object({
71
+ backstage: v3$1.z.object({
72
+ cli: v3$1.z.object({
73
73
  new: newConfigSchema.optional()
74
74
  }).optional()
75
75
  }).optional()
@@ -88,7 +88,7 @@ async function loadPortableTemplateConfig(options = {}) {
88
88
  if (!parsed.success) {
89
89
  throw new errors.ForwardedError(
90
90
  `Failed to load templating configuration from '${pkgPath}'`,
91
- v3$1.fromZodError(parsed.error)
91
+ v3.fromZodError(parsed.error)
92
92
  );
93
93
  }
94
94
  const config = parsed.data.backstage?.cli?.new;
@@ -157,16 +157,16 @@ function resolveLocalTemplatePath(pointer, basePath) {
157
157
  paths: [basePath]
158
158
  });
159
159
  }
160
- const partialTemplateDefinitionSchema = v3.z.object({
161
- name: v3.z.string(),
162
- description: v3.z.string().optional()
160
+ const partialTemplateDefinitionSchema = v3$1.z.object({
161
+ name: v3$1.z.string(),
162
+ description: v3$1.z.string().optional()
163
163
  });
164
164
  async function peekLocalTemplateDefinition(target) {
165
165
  const content = await fs__default.default.readFile(target, "utf8");
166
166
  const rawTemplate = yaml.parse(content);
167
167
  const parsed = partialTemplateDefinitionSchema.safeParse(rawTemplate);
168
168
  if (!parsed.success) {
169
- throw v3$1.fromZodError(parsed.error);
169
+ throw v3.fromZodError(parsed.error);
170
170
  }
171
171
  return {
172
172
  name: parsed.data.name,
@@ -1 +1 @@
1
- {"version":3,"file":"loadPortableTemplateConfig.cjs.js","sources":["../../../src/lib/preparation/loadPortableTemplateConfig.ts"],"sourcesContent":["/*\n * Copyright 2025 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 fs from 'fs-extra';\nimport { resolve as resolvePath, dirname, isAbsolute, join } from 'node:path';\nimport { targetPaths } from '@backstage/cli-common';\nimport { defaultTemplates } from '../defaultTemplates';\nimport {\n PortableTemplateConfig,\n PortableTemplatePointer,\n TEMPLATE_FILE_NAME,\n} from '../types';\nimport { parse as parseYaml } from 'yaml';\nimport { z } from 'zod/v3';\nimport { fromZodError } from 'zod-validation-error/v3';\nimport { ForwardedError } from '@backstage/errors';\n\ntype FrontendSystem = 'new' | 'legacy' | 'unknown';\n\nasync function detectFrontendSystem(basePath: string): Promise<FrontendSystem> {\n const appPkgPath = join(basePath, 'packages', 'app', 'package.json');\n\n try {\n const appPkgJson = await fs.readJson(appPkgPath);\n const deps = {\n ...appPkgJson.dependencies,\n ...appPkgJson.devDependencies,\n };\n\n if (\n deps['@backstage/frontend-defaults'] ||\n deps['@backstage/frontend-app-api']\n ) {\n return 'new';\n }\n if (deps['@backstage/app-defaults'] || deps['@backstage/core-app-api']) {\n return 'legacy';\n }\n } catch {\n // App package doesn't exist or can't be read\n }\n\n return 'unknown';\n}\n\n// Templates to exclude based on frontend system detection (by path, not name)\nconst newFrontendTemplates = [\n '@backstage/cli-module-new/templates/frontend-plugin',\n '@backstage/cli-module-new/templates/frontend-plugin-module',\n];\nconst legacyFrontendTemplates = [\n '@backstage/cli-module-new/templates/legacy-frontend-plugin',\n];\n\nfunction filterTemplateEntriesForFrontendSystem(\n entries: Array<{ pointer: PortableTemplatePointer; rawPointer: string }>,\n frontendSystem: FrontendSystem,\n): Array<{ pointer: PortableTemplatePointer; rawPointer: string }> {\n if (frontendSystem === 'unknown') {\n return entries;\n }\n\n if (frontendSystem === 'new') {\n // Filter out legacy frontend templates\n return entries.filter(e => !legacyFrontendTemplates.includes(e.rawPointer));\n }\n\n // Legacy system - filter out new frontend templates\n return entries.filter(e => !newFrontendTemplates.includes(e.rawPointer));\n}\n\nconst defaults = {\n license: 'Apache-2.0',\n version: '0.1.0',\n private: true,\n publishRegistry: undefined,\n packageNamePrefix: '@internal/',\n packageNamePluginInfix: 'plugin-',\n};\n\nconst newConfigSchema = z\n .object({\n templates: z.array(z.string()).optional(),\n globals: z\n .object({\n license: z.string().optional(),\n version: z.string().optional(),\n private: z.boolean().optional(),\n publishRegistry: z.string().optional(),\n namePrefix: z.string().optional(),\n namePluginInfix: z.string().optional(),\n })\n .optional(),\n })\n .strict();\n\nconst pkgJsonWithNewConfigSchema = z.object({\n backstage: z\n .object({\n cli: z\n .object({\n new: newConfigSchema.optional(),\n })\n .optional(),\n })\n .optional(),\n});\n\ntype LoadConfigOptions = {\n packagePath?: string;\n overrides?: Partial<PortableTemplateConfig>;\n};\n\nfunction computePackageNamePluginInfix(\n packageNamePrefix: string,\n namePluginInfix?: string,\n) {\n const packageNamePluginInfix =\n namePluginInfix ??\n (packageNamePrefix.includes('backstage')\n ? defaults.packageNamePluginInfix\n : 'backstage-plugin-');\n\n return {\n packageNamePluginInfix,\n };\n}\n\nexport async function loadPortableTemplateConfig(\n options: LoadConfigOptions = {},\n): Promise<PortableTemplateConfig> {\n const { overrides = {} } = options;\n const pkgPath =\n options.packagePath ?? targetPaths.resolveRoot('package.json');\n const pkgJson = await fs.readJson(pkgPath);\n\n const parsed = pkgJsonWithNewConfigSchema.safeParse(pkgJson);\n if (!parsed.success) {\n throw new ForwardedError(\n `Failed to load templating configuration from '${pkgPath}'`,\n fromZodError(parsed.error),\n );\n }\n\n const config = parsed.data.backstage?.cli?.new;\n\n const basePath = dirname(pkgPath);\n const isUsingDefaultTemplates = !config?.templates;\n\n let templatePointerEntries = await Promise.all(\n (config?.templates ?? defaultTemplates).map(async rawPointer => {\n try {\n const templatePath = resolveLocalTemplatePath(rawPointer, basePath);\n\n const pointer = await peekLocalTemplateDefinition(templatePath);\n return { pointer, rawPointer };\n } catch (error) {\n throw new ForwardedError(\n `Failed to load template definition '${rawPointer}'`,\n error,\n );\n }\n }),\n );\n\n // Auto-filter frontend templates based on detected frontend system.\n // This must happen before the conflict check since both the new and legacy\n // frontend plugin templates have the same name, but only one will be shown.\n if (isUsingDefaultTemplates) {\n const frontendSystem = await detectFrontendSystem(basePath);\n templatePointerEntries = filterTemplateEntriesForFrontendSystem(\n templatePointerEntries,\n frontendSystem,\n );\n }\n\n const templateNameConflicts = new Map<string, string>();\n for (const { pointer, rawPointer } of templatePointerEntries) {\n const conflict = templateNameConflicts.get(pointer.name);\n if (conflict) {\n throw new Error(\n `Invalid template configuration, received conflicting template name '${pointer.name}' from '${conflict}' and '${rawPointer}'`,\n );\n }\n templateNameConflicts.set(pointer.name, rawPointer);\n }\n\n const packageNamePrefix =\n overrides.packageNamePrefix ??\n config?.globals?.namePrefix ??\n defaults.packageNamePrefix;\n\n const { packageNamePluginInfix } = computePackageNamePluginInfix(\n packageNamePrefix,\n overrides.packageNamePluginInfix ?? config?.globals?.namePluginInfix,\n );\n\n return {\n isUsingDefaultTemplates,\n templatePointers: templatePointerEntries.map(({ pointer }) => pointer),\n license: overrides.license ?? config?.globals?.license ?? defaults.license,\n version: overrides.version ?? config?.globals?.version ?? defaults.version,\n private: overrides.private ?? config?.globals?.private ?? defaults.private,\n publishRegistry:\n overrides.publishRegistry ??\n config?.globals?.publishRegistry ??\n defaults.publishRegistry,\n packageNamePrefix,\n packageNamePluginInfix,\n };\n}\n\nconst CLI_TEMPLATE_PREFIX = '@backstage/cli/templates/';\nconst CLI_MODULE_NEW_TEMPLATE_PREFIX = '@backstage/cli-module-new/templates/';\n\nfunction resolveLocalTemplatePath(pointer: string, basePath: string): string {\n if (isAbsolute(pointer)) {\n throw new Error(`Template target may not be an absolute path`);\n }\n\n if (pointer.startsWith('.')) {\n return resolvePath(basePath, pointer, TEMPLATE_FILE_NAME);\n }\n\n // Rewrite legacy @backstage/cli/templates/* paths to @backstage/cli-module-new/templates/*\n const resolvedPointer = pointer.startsWith(CLI_TEMPLATE_PREFIX)\n ? `${CLI_MODULE_NEW_TEMPLATE_PREFIX}${pointer.slice(\n CLI_TEMPLATE_PREFIX.length,\n )}`\n : pointer;\n\n return require.resolve(`${resolvedPointer}/${TEMPLATE_FILE_NAME}`, {\n paths: [basePath],\n });\n}\n\nconst partialTemplateDefinitionSchema = z.object({\n name: z.string(),\n description: z.string().optional(),\n});\n\nasync function peekLocalTemplateDefinition(\n target: string,\n): Promise<PortableTemplatePointer> {\n const content = await fs.readFile(target, 'utf8');\n\n const rawTemplate = parseYaml(content);\n const parsed = partialTemplateDefinitionSchema.safeParse(rawTemplate);\n if (!parsed.success) {\n throw fromZodError(parsed.error);\n }\n\n return {\n name: parsed.data.name,\n description: parsed.data.description,\n target,\n };\n}\n"],"names":["join","fs","z","targetPaths","ForwardedError","fromZodError","dirname","defaultTemplates","isAbsolute","resolvePath","TEMPLATE_FILE_NAME","parseYaml"],"mappings":"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"}
1
+ {"version":3,"file":"loadPortableTemplateConfig.cjs.js","sources":["../../../src/lib/preparation/loadPortableTemplateConfig.ts"],"sourcesContent":["/*\n * Copyright 2025 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 fs from 'fs-extra';\nimport { resolve as resolvePath, dirname, isAbsolute, join } from 'node:path';\nimport { targetPaths } from '@backstage/cli-common';\nimport { defaultTemplates } from '../defaultTemplates';\nimport {\n PortableTemplateConfig,\n PortableTemplatePointer,\n TEMPLATE_FILE_NAME,\n} from '../types';\nimport { parse as parseYaml } from 'yaml';\nimport { z } from 'zod/v3';\nimport { fromZodError } from 'zod-validation-error/v3';\nimport { ForwardedError } from '@backstage/errors';\n\ntype FrontendSystem = 'new' | 'legacy' | 'unknown';\n\nasync function detectFrontendSystem(basePath: string): Promise<FrontendSystem> {\n const appPkgPath = join(basePath, 'packages', 'app', 'package.json');\n\n try {\n const appPkgJson = await fs.readJson(appPkgPath);\n const deps = {\n ...appPkgJson.dependencies,\n ...appPkgJson.devDependencies,\n };\n\n if (\n deps['@backstage/frontend-defaults'] ||\n deps['@backstage/frontend-app-api']\n ) {\n return 'new';\n }\n if (deps['@backstage/app-defaults'] || deps['@backstage/core-app-api']) {\n return 'legacy';\n }\n } catch {\n // App package doesn't exist or can't be read\n }\n\n return 'unknown';\n}\n\n// Templates to exclude based on frontend system detection (by path, not name)\nconst newFrontendTemplates = [\n '@backstage/cli-module-new/templates/frontend-plugin',\n '@backstage/cli-module-new/templates/frontend-plugin-module',\n];\nconst legacyFrontendTemplates = [\n '@backstage/cli-module-new/templates/legacy-frontend-plugin',\n];\n\nfunction filterTemplateEntriesForFrontendSystem(\n entries: Array<{ pointer: PortableTemplatePointer; rawPointer: string }>,\n frontendSystem: FrontendSystem,\n): Array<{ pointer: PortableTemplatePointer; rawPointer: string }> {\n if (frontendSystem === 'unknown') {\n return entries;\n }\n\n if (frontendSystem === 'new') {\n // Filter out legacy frontend templates\n return entries.filter(e => !legacyFrontendTemplates.includes(e.rawPointer));\n }\n\n // Legacy system - filter out new frontend templates\n return entries.filter(e => !newFrontendTemplates.includes(e.rawPointer));\n}\n\nconst defaults = {\n license: 'Apache-2.0',\n version: '0.1.0',\n private: true,\n publishRegistry: undefined,\n packageNamePrefix: '@internal/',\n packageNamePluginInfix: 'plugin-',\n};\n\nconst newConfigSchema = z\n .object({\n templates: z.array(z.string()).optional(),\n globals: z\n .object({\n license: z.string().optional(),\n version: z.string().optional(),\n private: z.boolean().optional(),\n publishRegistry: z.string().optional(),\n namePrefix: z.string().optional(),\n namePluginInfix: z.string().optional(),\n })\n .optional(),\n })\n .strict();\n\nconst pkgJsonWithNewConfigSchema = z.object({\n backstage: z\n .object({\n cli: z\n .object({\n new: newConfigSchema.optional(),\n })\n .optional(),\n })\n .optional(),\n});\n\ntype LoadConfigOptions = {\n packagePath?: string;\n overrides?: Partial<PortableTemplateConfig>;\n};\n\nfunction computePackageNamePluginInfix(\n packageNamePrefix: string,\n namePluginInfix?: string,\n) {\n const packageNamePluginInfix =\n namePluginInfix ??\n (packageNamePrefix.includes('backstage')\n ? defaults.packageNamePluginInfix\n : 'backstage-plugin-');\n\n return {\n packageNamePluginInfix,\n };\n}\n\nexport async function loadPortableTemplateConfig(\n options: LoadConfigOptions = {},\n): Promise<PortableTemplateConfig> {\n const { overrides = {} } = options;\n const pkgPath =\n options.packagePath ?? targetPaths.resolveRoot('package.json');\n const pkgJson = await fs.readJson(pkgPath);\n\n const parsed = pkgJsonWithNewConfigSchema.safeParse(pkgJson);\n if (!parsed.success) {\n throw new ForwardedError(\n `Failed to load templating configuration from '${pkgPath}'`,\n fromZodError(parsed.error),\n );\n }\n\n const config = parsed.data.backstage?.cli?.new;\n\n const basePath = dirname(pkgPath);\n const isUsingDefaultTemplates = !config?.templates;\n\n let templatePointerEntries = await Promise.all(\n (config?.templates ?? defaultTemplates).map(async rawPointer => {\n try {\n const templatePath = resolveLocalTemplatePath(rawPointer, basePath);\n\n const pointer = await peekLocalTemplateDefinition(templatePath);\n return { pointer, rawPointer };\n } catch (error) {\n throw new ForwardedError(\n `Failed to load template definition '${rawPointer}'`,\n error,\n );\n }\n }),\n );\n\n // Auto-filter frontend templates based on detected frontend system.\n if (isUsingDefaultTemplates) {\n const frontendSystem = await detectFrontendSystem(basePath);\n templatePointerEntries = filterTemplateEntriesForFrontendSystem(\n templatePointerEntries,\n frontendSystem,\n );\n }\n\n const templateNameConflicts = new Map<string, string>();\n for (const { pointer, rawPointer } of templatePointerEntries) {\n const conflict = templateNameConflicts.get(pointer.name);\n if (conflict) {\n throw new Error(\n `Invalid template configuration, received conflicting template name '${pointer.name}' from '${conflict}' and '${rawPointer}'`,\n );\n }\n templateNameConflicts.set(pointer.name, rawPointer);\n }\n\n const packageNamePrefix =\n overrides.packageNamePrefix ??\n config?.globals?.namePrefix ??\n defaults.packageNamePrefix;\n\n const { packageNamePluginInfix } = computePackageNamePluginInfix(\n packageNamePrefix,\n overrides.packageNamePluginInfix ?? config?.globals?.namePluginInfix,\n );\n\n return {\n isUsingDefaultTemplates,\n templatePointers: templatePointerEntries.map(({ pointer }) => pointer),\n license: overrides.license ?? config?.globals?.license ?? defaults.license,\n version: overrides.version ?? config?.globals?.version ?? defaults.version,\n private: overrides.private ?? config?.globals?.private ?? defaults.private,\n publishRegistry:\n overrides.publishRegistry ??\n config?.globals?.publishRegistry ??\n defaults.publishRegistry,\n packageNamePrefix,\n packageNamePluginInfix,\n };\n}\n\nconst CLI_TEMPLATE_PREFIX = '@backstage/cli/templates/';\nconst CLI_MODULE_NEW_TEMPLATE_PREFIX = '@backstage/cli-module-new/templates/';\n\nfunction resolveLocalTemplatePath(pointer: string, basePath: string): string {\n if (isAbsolute(pointer)) {\n throw new Error(`Template target may not be an absolute path`);\n }\n\n if (pointer.startsWith('.')) {\n return resolvePath(basePath, pointer, TEMPLATE_FILE_NAME);\n }\n\n // Rewrite legacy @backstage/cli/templates/* paths to @backstage/cli-module-new/templates/*\n const resolvedPointer = pointer.startsWith(CLI_TEMPLATE_PREFIX)\n ? `${CLI_MODULE_NEW_TEMPLATE_PREFIX}${pointer.slice(\n CLI_TEMPLATE_PREFIX.length,\n )}`\n : pointer;\n\n return require.resolve(`${resolvedPointer}/${TEMPLATE_FILE_NAME}`, {\n paths: [basePath],\n });\n}\n\nconst partialTemplateDefinitionSchema = z.object({\n name: z.string(),\n description: z.string().optional(),\n});\n\nasync function peekLocalTemplateDefinition(\n target: string,\n): Promise<PortableTemplatePointer> {\n const content = await fs.readFile(target, 'utf8');\n\n const rawTemplate = parseYaml(content);\n const parsed = partialTemplateDefinitionSchema.safeParse(rawTemplate);\n if (!parsed.success) {\n throw fromZodError(parsed.error);\n }\n\n return {\n name: parsed.data.name,\n description: parsed.data.description,\n target,\n };\n}\n"],"names":["join","fs","z","targetPaths","ForwardedError","fromZodError","dirname","defaultTemplates","isAbsolute","resolvePath","TEMPLATE_FILE_NAME","parseYaml"],"mappings":";;;;;;;;;;;;;;;;AAgCA,eAAe,qBAAqB,QAAA,EAA2C;AAC7E,EAAA,MAAM,UAAA,GAAaA,SAAA,CAAK,QAAA,EAAU,UAAA,EAAY,OAAO,cAAc,CAAA;AAEnE,EAAA,IAAI;AACF,IAAA,MAAM,UAAA,GAAa,MAAMC,mBAAA,CAAG,QAAA,CAAS,UAAU,CAAA;AAC/C,IAAA,MAAM,IAAA,GAAO;AAAA,MACX,GAAG,UAAA,CAAW,YAAA;AAAA,MACd,GAAG,UAAA,CAAW;AAAA,KAChB;AAEA,IAAA,IACE,IAAA,CAAK,8BAA8B,CAAA,IACnC,IAAA,CAAK,6BAA6B,CAAA,EAClC;AACA,MAAA,OAAO,KAAA;AAAA,IACT;AACA,IAAA,IAAI,IAAA,CAAK,yBAAyB,CAAA,IAAK,IAAA,CAAK,yBAAyB,CAAA,EAAG;AACtE,MAAA,OAAO,QAAA;AAAA,IACT;AAAA,EACF,CAAA,CAAA,MAAQ;AAAA,EAER;AAEA,EAAA,OAAO,SAAA;AACT;AAGA,MAAM,oBAAA,GAAuB;AAAA,EAC3B,qDAAA;AAAA,EACA;AACF,CAAA;AACA,MAAM,uBAAA,GAA0B;AAAA,EAC9B;AACF,CAAA;AAEA,SAAS,sCAAA,CACP,SACA,cAAA,EACiE;AACjE,EAAA,IAAI,mBAAmB,SAAA,EAAW;AAChC,IAAA,OAAO,OAAA;AAAA,EACT;AAEA,EAAA,IAAI,mBAAmB,KAAA,EAAO;AAE5B,IAAA,OAAO,OAAA,CAAQ,OAAO,CAAA,CAAA,KAAK,CAAC,wBAAwB,QAAA,CAAS,CAAA,CAAE,UAAU,CAAC,CAAA;AAAA,EAC5E;AAGA,EAAA,OAAO,OAAA,CAAQ,OAAO,CAAA,CAAA,KAAK,CAAC,qBAAqB,QAAA,CAAS,CAAA,CAAE,UAAU,CAAC,CAAA;AACzE;AAEA,MAAM,QAAA,GAAW;AAAA,EACf,OAAA,EAAS,YAAA;AAAA,EACT,OAAA,EAAS,OAAA;AAAA,EACT,OAAA,EAAS,IAAA;AAAA,EACT,eAAA,EAAiB,MAAA;AAAA,EACjB,iBAAA,EAAmB,YAAA;AAAA,EACnB,sBAAA,EAAwB;AAC1B,CAAA;AAEA,MAAM,eAAA,GAAkBC,OACrB,MAAA,CAAO;AAAA,EACN,WAAWA,MAAA,CAAE,KAAA,CAAMA,OAAE,MAAA,EAAQ,EAAE,QAAA,EAAS;AAAA,EACxC,OAAA,EAASA,OACN,MAAA,CAAO;AAAA,IACN,OAAA,EAASA,MAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,IAC7B,OAAA,EAASA,MAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,IAC7B,OAAA,EAASA,MAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,IAC9B,eAAA,EAAiBA,MAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,IACrC,UAAA,EAAYA,MAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,IAChC,eAAA,EAAiBA,MAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AAAS,GACtC,EACA,QAAA;AACL,CAAC,EACA,MAAA,EAAO;AAEV,MAAM,0BAAA,GAA6BA,OAAE,MAAA,CAAO;AAAA,EAC1C,SAAA,EAAWA,OACR,MAAA,CAAO;AAAA,IACN,GAAA,EAAKA,OACF,MAAA,CAAO;AAAA,MACN,GAAA,EAAK,gBAAgB,QAAA;AAAS,KAC/B,EACA,QAAA;AAAS,GACb,EACA,QAAA;AACL,CAAC,CAAA;AAOD,SAAS,6BAAA,CACP,mBACA,eAAA,EACA;AACA,EAAA,MAAM,yBACJ,eAAA,KACC,iBAAA,CAAkB,SAAS,WAAW,CAAA,GACnC,SAAS,sBAAA,GACT,mBAAA,CAAA;AAEN,EAAA,OAAO;AAAA,IACL;AAAA,GACF;AACF;AAEA,eAAsB,0BAAA,CACpB,OAAA,GAA6B,EAAC,EACG;AACjC,EAAA,MAAM,EAAE,SAAA,GAAY,EAAC,EAAE,GAAI,OAAA;AAC3B,EAAA,MAAM,OAAA,GACJ,OAAA,CAAQ,WAAA,IAAeC,qBAAA,CAAY,YAAY,cAAc,CAAA;AAC/D,EAAA,MAAM,OAAA,GAAU,MAAMF,mBAAA,CAAG,QAAA,CAAS,OAAO,CAAA;AAEzC,EAAA,MAAM,MAAA,GAAS,0BAAA,CAA2B,SAAA,CAAU,OAAO,CAAA;AAC3D,EAAA,IAAI,CAAC,OAAO,OAAA,EAAS;AACnB,IAAA,MAAM,IAAIG,qBAAA;AAAA,MACR,iDAAiD,OAAO,CAAA,CAAA,CAAA;AAAA,MACxDC,eAAA,CAAa,OAAO,KAAK;AAAA,KAC3B;AAAA,EACF;AAEA,EAAA,MAAM,MAAA,GAAS,MAAA,CAAO,IAAA,CAAK,SAAA,EAAW,GAAA,EAAK,GAAA;AAE3C,EAAA,MAAM,QAAA,GAAWC,aAAQ,OAAO,CAAA;AAChC,EAAA,MAAM,uBAAA,GAA0B,CAAC,MAAA,EAAQ,SAAA;AAEzC,EAAA,IAAI,sBAAA,GAAyB,MAAM,OAAA,CAAQ,GAAA;AAAA,IAAA,CACxC,MAAA,EAAQ,SAAA,IAAaC,iCAAA,EAAkB,GAAA,CAAI,OAAM,UAAA,KAAc;AAC9D,MAAA,IAAI;AACF,QAAA,MAAM,YAAA,GAAe,wBAAA,CAAyB,UAAA,EAAY,QAAQ,CAAA;AAElE,QAAA,MAAM,OAAA,GAAU,MAAM,2BAAA,CAA4B,YAAY,CAAA;AAC9D,QAAA,OAAO,EAAE,SAAS,UAAA,EAAW;AAAA,MAC/B,SAAS,KAAA,EAAO;AACd,QAAA,MAAM,IAAIH,qBAAA;AAAA,UACR,uCAAuC,UAAU,CAAA,CAAA,CAAA;AAAA,UACjD;AAAA,SACF;AAAA,MACF;AAAA,IACF,CAAC;AAAA,GACH;AAGA,EAAA,IAAI,uBAAA,EAAyB;AAC3B,IAAA,MAAM,cAAA,GAAiB,MAAM,oBAAA,CAAqB,QAAQ,CAAA;AAC1D,IAAA,sBAAA,GAAyB,sCAAA;AAAA,MACvB,sBAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AAEA,EAAA,MAAM,qBAAA,uBAA4B,GAAA,EAAoB;AACtD,EAAA,KAAA,MAAW,EAAE,OAAA,EAAS,UAAA,EAAW,IAAK,sBAAA,EAAwB;AAC5D,IAAA,MAAM,QAAA,GAAW,qBAAA,CAAsB,GAAA,CAAI,OAAA,CAAQ,IAAI,CAAA;AACvD,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,uEAAuE,OAAA,CAAQ,IAAI,CAAA,QAAA,EAAW,QAAQ,UAAU,UAAU,CAAA,CAAA;AAAA,OAC5H;AAAA,IACF;AACA,IAAA,qBAAA,CAAsB,GAAA,CAAI,OAAA,CAAQ,IAAA,EAAM,UAAU,CAAA;AAAA,EACpD;AAEA,EAAA,MAAM,oBACJ,SAAA,CAAU,iBAAA,IACV,MAAA,EAAQ,OAAA,EAAS,cACjB,QAAA,CAAS,iBAAA;AAEX,EAAA,MAAM,EAAE,wBAAuB,GAAI,6BAAA;AAAA,IACjC,iBAAA;AAAA,IACA,SAAA,CAAU,sBAAA,IAA0B,MAAA,EAAQ,OAAA,EAAS;AAAA,GACvD;AAEA,EAAA,OAAO;AAAA,IACL,uBAAA;AAAA,IACA,kBAAkB,sBAAA,CAAuB,GAAA,CAAI,CAAC,EAAE,OAAA,OAAc,OAAO,CAAA;AAAA,IACrE,SAAS,SAAA,CAAU,OAAA,IAAW,MAAA,EAAQ,OAAA,EAAS,WAAW,QAAA,CAAS,OAAA;AAAA,IACnE,SAAS,SAAA,CAAU,OAAA,IAAW,MAAA,EAAQ,OAAA,EAAS,WAAW,QAAA,CAAS,OAAA;AAAA,IACnE,SAAS,SAAA,CAAU,OAAA,IAAW,MAAA,EAAQ,OAAA,EAAS,WAAW,QAAA,CAAS,OAAA;AAAA,IACnE,iBACE,SAAA,CAAU,eAAA,IACV,MAAA,EAAQ,OAAA,EAAS,mBACjB,QAAA,CAAS,eAAA;AAAA,IACX,iBAAA;AAAA,IACA;AAAA,GACF;AACF;AAEA,MAAM,mBAAA,GAAsB,2BAAA;AAC5B,MAAM,8BAAA,GAAiC,sCAAA;AAEvC,SAAS,wBAAA,CAAyB,SAAiB,QAAA,EAA0B;AAC3E,EAAA,IAAII,eAAA,CAAW,OAAO,CAAA,EAAG;AACvB,IAAA,MAAM,IAAI,MAAM,CAAA,2CAAA,CAA6C,CAAA;AAAA,EAC/D;AAEA,EAAA,IAAI,OAAA,CAAQ,UAAA,CAAW,GAAG,CAAA,EAAG;AAC3B,IAAA,OAAOC,YAAA,CAAY,QAAA,EAAU,OAAA,EAASC,wBAAkB,CAAA;AAAA,EAC1D;AAGA,EAAA,MAAM,eAAA,GAAkB,QAAQ,UAAA,CAAW,mBAAmB,IAC1D,CAAA,EAAG,8BAA8B,GAAG,OAAA,CAAQ,KAAA;AAAA,IAC1C,mBAAA,CAAoB;AAAA,GACrB,CAAA,CAAA,GACD,OAAA;AAEJ,EAAA,OAAO,QAAQ,OAAA,CAAQ,CAAA,EAAG,eAAe,CAAA,CAAA,EAAIA,wBAAkB,CAAA,CAAA,EAAI;AAAA,IACjE,KAAA,EAAO,CAAC,QAAQ;AAAA,GACjB,CAAA;AACH;AAEA,MAAM,+BAAA,GAAkCR,OAAE,MAAA,CAAO;AAAA,EAC/C,IAAA,EAAMA,OAAE,MAAA,EAAO;AAAA,EACf,WAAA,EAAaA,MAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AAC1B,CAAC,CAAA;AAED,eAAe,4BACb,MAAA,EACkC;AAClC,EAAA,MAAM,OAAA,GAAU,MAAMD,mBAAA,CAAG,QAAA,CAAS,QAAQ,MAAM,CAAA;AAEhD,EAAA,MAAM,WAAA,GAAcU,WAAU,OAAO,CAAA;AACrC,EAAA,MAAM,MAAA,GAAS,+BAAA,CAAgC,SAAA,CAAU,WAAW,CAAA;AACpE,EAAA,IAAI,CAAC,OAAO,OAAA,EAAS;AACnB,IAAA,MAAMN,eAAA,CAAa,OAAO,KAAK,CAAA;AAAA,EACjC;AAEA,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,OAAO,IAAA,CAAK,IAAA;AAAA,IAClB,WAAA,EAAa,OAAO,IAAA,CAAK,WAAA;AAAA,IACzB;AAAA,GACF;AACF;;;;"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "0.16.0";
3
+ var version = "0.16.1-next.1";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "1.8.0";
3
+ var version = "1.9.0-next.1";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "1.11.1";
3
+ var version = "1.11.2-next.1";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "0.36.0";
3
+ var version = "0.36.1-next.1";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var name = "@backstage/cli-module-new";
6
- var version = "0.1.0";
6
+ var version = "0.1.1-next.1";
7
7
  var description = "CLI module for Backstage CLI";
8
8
  var backstage = {
9
9
  role: "cli-module"
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "1.19.6";
3
+ var version = "1.20.0-next.1";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "0.18.8";
3
+ var version = "0.18.9-next.0";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "1.12.4";
3
+ var version = "1.12.5-next.1";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "1.1.21";
3
+ var version = "1.1.22-next.1";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "0.5.0";
3
+ var version = "0.5.1-next.1";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "0.1.0";
3
+ var version = "0.1.1-next.1";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "0.15.0";
3
+ var version = "0.16.0-next.1";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "0.5.1";
3
+ var version = "0.5.2-next.1";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "1.7.16";
3
+ var version = "1.7.17-next.1";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "0.27.2";
3
+ var version = "0.28.0-next.1";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "0.2.17";
3
+ var version = "0.2.18-next.1";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "2.1.0";
3
+ var version = "2.1.1-next.1";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "0.13.0";
3
+ var version = "0.13.1-next.1";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "0.3.9";
3
+ var version = "0.3.10-next.1";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@backstage/cli-module-new",
3
- "version": "0.1.0",
3
+ "version": "0.1.1-next.1",
4
4
  "description": "CLI module for Backstage CLI",
5
5
  "backstage": {
6
6
  "role": "cli-module"
@@ -34,9 +34,9 @@
34
34
  "test": "backstage-cli package test"
35
35
  },
36
36
  "dependencies": {
37
- "@backstage/cli-common": "^0.2.0",
38
- "@backstage/cli-node": "^0.3.0",
39
- "@backstage/errors": "^1.2.7",
37
+ "@backstage/cli-common": "0.2.1-next.0",
38
+ "@backstage/cli-node": "0.3.1-next.0",
39
+ "@backstage/errors": "1.2.7",
40
40
  "chalk": "^4.0.0",
41
41
  "cleye": "^2.3.0",
42
42
  "fs-extra": "^11.2.0",
@@ -51,10 +51,10 @@
51
51
  "zod-validation-error": "^4.0.2"
52
52
  },
53
53
  "devDependencies": {
54
- "@backstage/backend-test-utils": "^1.11.1",
55
- "@backstage/cli": "^0.36.0",
56
- "@backstage/core-plugin-api": "^1.12.4",
57
- "@backstage/test-utils": "^1.7.16",
54
+ "@backstage/backend-test-utils": "1.11.2-next.1",
55
+ "@backstage/cli": "0.36.1-next.1",
56
+ "@backstage/core-plugin-api": "1.12.5-next.1",
57
+ "@backstage/test-utils": "1.7.17-next.1",
58
58
  "@types/fs-extra": "^11.0.0",
59
59
  "@types/inquirer": "^8.1.3",
60
60
  "@types/lodash": "^4.14.151",
@@ -1 +1 @@
1
- export { {{ moduleVar }} as default } from './plugin';
1
+ export { {{ moduleVar }} as default } from './module';
@@ -1,4 +1,4 @@
1
- name: frontend-plugin
1
+ name: frontend-plugin-legacy
2
2
  role: frontend-plugin
3
3
  description: A new frontend plugin (legacy system)
4
4
  values: