@backstage/plugin-scaffolder-backend 1.31.0 → 1.32.0-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 (36) hide show
  1. package/CHANGELOG.md +67 -0
  2. package/dist/ScaffolderPlugin.cjs.js.map +1 -1
  3. package/dist/index.d.ts +1 -1
  4. package/dist/lib/templating/filters/createDefaultFilters.cjs.js +16 -0
  5. package/dist/lib/templating/filters/createDefaultFilters.cjs.js.map +1 -0
  6. package/dist/lib/templating/filters/parseEntityRef/examples.cjs.js +32 -0
  7. package/dist/lib/templating/filters/parseEntityRef/examples.cjs.js.map +1 -0
  8. package/dist/lib/templating/filters/parseEntityRef/filter.cjs.js +37 -0
  9. package/dist/lib/templating/filters/parseEntityRef/filter.cjs.js.map +1 -0
  10. package/dist/lib/templating/filters/parseRepoUrl/examples.cjs.js +17 -0
  11. package/dist/lib/templating/filters/parseRepoUrl/examples.cjs.js.map +1 -0
  12. package/dist/lib/templating/filters/parseRepoUrl/filter.cjs.js +30 -0
  13. package/dist/lib/templating/filters/parseRepoUrl/filter.cjs.js.map +1 -0
  14. package/dist/lib/templating/filters/pick/examples.cjs.js +17 -0
  15. package/dist/lib/templating/filters/pick/examples.cjs.js.map +1 -0
  16. package/dist/lib/templating/filters/pick/filter.cjs.js +16 -0
  17. package/dist/lib/templating/filters/pick/filter.cjs.js.map +1 -0
  18. package/dist/lib/templating/filters/projectSlug/examples.cjs.js +18 -0
  19. package/dist/lib/templating/filters/projectSlug/examples.cjs.js.map +1 -0
  20. package/dist/lib/templating/filters/projectSlug/filter.cjs.js +21 -0
  21. package/dist/lib/templating/filters/projectSlug/filter.cjs.js.map +1 -0
  22. package/dist/scaffolder/actions/builtin/fetch/template.cjs.js +2 -2
  23. package/dist/scaffolder/actions/builtin/fetch/template.cjs.js.map +1 -1
  24. package/dist/scaffolder/actions/builtin/fetch/templateFile.cjs.js +2 -2
  25. package/dist/scaffolder/actions/builtin/fetch/templateFile.cjs.js.map +1 -1
  26. package/dist/scaffolder/dryrun/DecoratedActionsRegistry.cjs.js +3 -1
  27. package/dist/scaffolder/dryrun/DecoratedActionsRegistry.cjs.js.map +1 -1
  28. package/dist/scaffolder/tasks/NunjucksWorkflowRunner.cjs.js +2 -2
  29. package/dist/scaffolder/tasks/NunjucksWorkflowRunner.cjs.js.map +1 -1
  30. package/dist/service/router.cjs.js +12 -1
  31. package/dist/service/router.cjs.js.map +1 -1
  32. package/dist/util/templating.cjs.js +132 -2
  33. package/dist/util/templating.cjs.js.map +1 -1
  34. package/package.json +31 -31
  35. package/dist/lib/templating/filters.cjs.js +0 -28
  36. package/dist/lib/templating/filters.cjs.js.map +0 -1
@@ -1,7 +1,11 @@
1
1
  'use strict';
2
2
 
3
- require('zod');
4
- require('zod-to-json-schema');
3
+ var z = require('zod');
4
+ var zodToJsonSchema = require('zod-to-json-schema');
5
+
6
+ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
7
+
8
+ var zodToJsonSchema__default = /*#__PURE__*/_interopDefaultCompat(zodToJsonSchema);
5
9
 
6
10
  function convertFiltersToRecord(filters) {
7
11
  if (!filters) {
@@ -16,9 +20,132 @@ function convertFiltersToRecord(filters) {
16
20
  }
17
21
  return filters;
18
22
  }
23
+ function convertZodFunctionToJsonSchema(t) {
24
+ if (!("parameters" in t) || !("returnType" in t)) {
25
+ throw new Error("Invalid Zod function schema");
26
+ }
27
+ const args = t.parameters().items.map(
28
+ (zt) => zodToJsonSchema__default.default(zt)
29
+ );
30
+ let output = void 0;
31
+ const returnType = t.returnType();
32
+ if (!returnType._unknown) {
33
+ output = zodToJsonSchema__default.default(returnType);
34
+ }
35
+ const result = {};
36
+ if (args.length > 0) {
37
+ result.arguments = args;
38
+ }
39
+ if (output) {
40
+ result.output = output;
41
+ }
42
+ return result;
43
+ }
44
+ function convertToFilterSchema(fnSchema) {
45
+ if (fnSchema.arguments?.length) {
46
+ const [input, ...rest] = fnSchema.arguments;
47
+ const result = { input };
48
+ if (rest.length > 0) {
49
+ result.arguments = rest;
50
+ }
51
+ if (fnSchema.output) {
52
+ result.output = fnSchema.output;
53
+ }
54
+ return result;
55
+ }
56
+ return fnSchema;
57
+ }
58
+ function extractFilterMetadata(filters) {
59
+ if (!filters) {
60
+ return {};
61
+ }
62
+ if (Array.isArray(filters)) {
63
+ const result2 = {};
64
+ for (const filter of filters) {
65
+ const metadata = {};
66
+ if (filter.description) {
67
+ metadata.description = filter.description;
68
+ }
69
+ if (filter.examples) {
70
+ metadata.examples = filter.examples;
71
+ }
72
+ if (filter.schema) {
73
+ metadata.schema = convertToFilterSchema(
74
+ convertZodFunctionToJsonSchema(
75
+ filter.schema(z.z)
76
+ )
77
+ );
78
+ }
79
+ result2[filter.id] = metadata;
80
+ }
81
+ return result2;
82
+ }
83
+ const result = {};
84
+ for (const key in filters) {
85
+ if (filters.hasOwnProperty(key)) {
86
+ result[key] = {};
87
+ }
88
+ }
89
+ return result;
90
+ }
19
91
  function isGlobalFunction(global) {
20
92
  return "fn" in global;
21
93
  }
94
+ function extractGlobalFunctionMetadata(globals) {
95
+ if (!globals) {
96
+ return {};
97
+ }
98
+ if (Array.isArray(globals)) {
99
+ const result2 = {};
100
+ for (const global of globals) {
101
+ if (isGlobalFunction(global)) {
102
+ const metadata = {};
103
+ if (global.description) {
104
+ metadata.description = global.description;
105
+ }
106
+ if (global.examples) {
107
+ metadata.examples = global.examples;
108
+ }
109
+ if (global.schema) {
110
+ metadata.schema = convertZodFunctionToJsonSchema(global.schema(z.z));
111
+ }
112
+ result2[global.id] = metadata;
113
+ }
114
+ }
115
+ return result2;
116
+ }
117
+ const result = {};
118
+ for (const key in globals) {
119
+ if (typeof globals[key] === "function") {
120
+ result[key] = {};
121
+ }
122
+ }
123
+ return result;
124
+ }
125
+ function extractGlobalValueMetadata(globals) {
126
+ if (!globals) {
127
+ return {};
128
+ }
129
+ if (Array.isArray(globals)) {
130
+ const result2 = {};
131
+ for (const global of globals) {
132
+ if (!isGlobalFunction(global)) {
133
+ result2[global.id] = {
134
+ value: global.value,
135
+ description: global.description
136
+ };
137
+ }
138
+ }
139
+ return result2;
140
+ }
141
+ const result = {};
142
+ for (const key in globals) {
143
+ if (typeof globals[key] !== "function") {
144
+ result[key] = { value: globals[key] };
145
+ }
146
+ }
147
+ return result;
148
+ }
22
149
  function convertGlobalsToRecord(globals) {
23
150
  if (!globals) {
24
151
  return {};
@@ -35,4 +162,7 @@ function convertGlobalsToRecord(globals) {
35
162
 
36
163
  exports.convertFiltersToRecord = convertFiltersToRecord;
37
164
  exports.convertGlobalsToRecord = convertGlobalsToRecord;
165
+ exports.extractFilterMetadata = extractFilterMetadata;
166
+ exports.extractGlobalFunctionMetadata = extractGlobalFunctionMetadata;
167
+ exports.extractGlobalValueMetadata = extractGlobalValueMetadata;
38
168
  //# sourceMappingURL=templating.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"templating.cjs.js","sources":["../../src/util/templating.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 */\nimport {\n TemplateFilter,\n TemplateGlobal,\n} from '@backstage/plugin-scaffolder-node';\nimport {\n CreatedTemplateFilter,\n CreatedTemplateGlobal,\n CreatedTemplateGlobalFunction,\n CreatedTemplateGlobalValue,\n TemplateGlobalFunctionSchema,\n} from '@backstage/plugin-scaffolder-node/alpha';\nimport { JsonValue } from '@backstage/types';\nimport { Schema } from 'jsonschema';\nimport { ZodType, z } from 'zod';\nimport zodToJsonSchema from 'zod-to-json-schema';\n\n/**\n * Converts template filters to a record of filter functions\n */\nexport function convertFiltersToRecord(\n filters?: Record<string, TemplateFilter> | CreatedTemplateFilter<any, any>[],\n): Record<string, TemplateFilter> {\n if (!filters) {\n return {};\n }\n\n if (Array.isArray(filters)) {\n const result: Record<string, TemplateFilter> = {};\n for (const filter of filters) {\n result[filter.id] = filter.filter as TemplateFilter;\n }\n return result;\n }\n\n return filters;\n}\n\ntype ExportFunctionSchema = {\n arguments?: Schema[];\n output?: Schema;\n};\n\ntype ExportFilterSchema = {\n input?: Schema;\n} & ExportFunctionSchema;\n\n/**\n * Converts a Zod function schema to JSON schema\n */\nfunction convertZodFunctionToJsonSchema(\n t: ReturnType<TemplateGlobalFunctionSchema<any, any>>,\n): ExportFunctionSchema {\n const args = (t.parameters().items as ZodType[]).map(\n zt => zodToJsonSchema(zt) as Schema,\n );\n\n let output: Schema | undefined = undefined;\n const returnType = t.returnType();\n if (!returnType._unknown) {\n output = zodToJsonSchema(returnType) as Schema;\n }\n\n const result: ExportFunctionSchema = {};\n if (args.length > 0) {\n result.arguments = args;\n }\n if (output) {\n result.output = output;\n }\n\n return result;\n}\n\n/**\n * Converts a function schema to a filter schema\n */\nfunction convertToFilterSchema(\n fnSchema: ExportFunctionSchema,\n): ExportFilterSchema {\n if (fnSchema.arguments?.length) {\n const [input, ...rest] = fnSchema.arguments;\n const result: ExportFilterSchema = { input };\n\n if (rest.length > 0) {\n result.arguments = rest;\n }\n\n if (fnSchema.output) {\n result.output = fnSchema.output;\n }\n\n return result;\n }\n return fnSchema;\n}\n\ntype ExportFilter = Pick<\n CreatedTemplateFilter<any, any>,\n 'description' | 'examples'\n> & {\n schema?: ExportFilterSchema;\n};\n\n/**\n * Extracts metadata from template filters\n */\nexport function extractFilterMetadata(\n filters?: Record<string, TemplateFilter> | CreatedTemplateFilter<any, any>[],\n): Record<string, ExportFilter> {\n if (!filters) {\n return {};\n }\n\n if (Array.isArray(filters)) {\n const result: Record<string, ExportFilter> = {};\n\n for (const filter of filters) {\n const metadata: ExportFilter = {};\n\n if (filter.description) {\n metadata.description = filter.description;\n }\n\n if (filter.examples) {\n metadata.examples = filter.examples;\n }\n\n if (filter.schema) {\n metadata.schema = convertToFilterSchema(\n convertZodFunctionToJsonSchema(filter.schema(z)),\n );\n }\n\n result[filter.id] = metadata;\n }\n\n return result;\n }\n\n // For non-array filters, return empty metadata\n const result: Record<string, ExportFilter> = {};\n for (const key in filters) {\n if (filters.hasOwnProperty(key)) {\n result[key] = {};\n }\n }\n return result;\n}\n\n/**\n * Checks if a global is a function\n */\nfunction isGlobalFunction(\n global: CreatedTemplateGlobal,\n): global is CreatedTemplateGlobalFunction<\n TemplateGlobalFunctionSchema<any, any> | undefined,\n any\n> {\n return 'fn' in global;\n}\n\n/**\n * Extracts metadata from template global functions\n */\nexport function extractGlobalFunctionMetadata(\n globals?: Record<string, TemplateGlobal> | CreatedTemplateGlobal[],\n): Record<\n string,\n Pick<CreatedTemplateGlobalFunction<any, any>, 'description' | 'examples'> & {\n schema?: ExportFunctionSchema;\n }\n> {\n if (!globals) {\n return {};\n }\n\n if (Array.isArray(globals)) {\n const result: Record<string, any> = {};\n\n for (const global of globals) {\n if (isGlobalFunction(global)) {\n const metadata: any = {\n description: global.description,\n examples: global.examples,\n };\n\n if (global.schema) {\n metadata.schema = convertZodFunctionToJsonSchema(global.schema(z));\n }\n\n result[global.id] = metadata;\n }\n }\n\n return result;\n }\n\n // For non-array globals, extract function metadata\n const result: Record<string, any> = {};\n for (const key in globals) {\n if (typeof globals[key] === 'function') {\n result[key] = {};\n }\n }\n return result;\n}\n\n/**\n * Extracts metadata from template global values\n */\nexport function extractGlobalValueMetadata(\n globals?: Record<string, TemplateGlobal> | CreatedTemplateGlobal[],\n): Record<string, Omit<CreatedTemplateGlobalValue, 'id'>> {\n if (!globals) {\n return {};\n }\n\n if (Array.isArray(globals)) {\n const result: Record<string, Omit<CreatedTemplateGlobalValue, 'id'>> = {};\n\n for (const global of globals) {\n if (!isGlobalFunction(global)) {\n result[global.id] = {\n value: (global as CreatedTemplateGlobalValue).value,\n description: global.description,\n };\n }\n }\n\n return result;\n }\n\n // For non-array globals, extract value metadata\n const result: Record<string, Omit<CreatedTemplateGlobalValue, 'id'>> = {};\n for (const key in globals) {\n if (typeof globals[key] !== 'function') {\n result[key] = { value: globals[key] as JsonValue };\n }\n }\n return result;\n}\n\n/**\n * Converts template globals to a record of global values and functions\n */\nexport function convertGlobalsToRecord(\n globals?: Record<string, TemplateGlobal> | CreatedTemplateGlobal[],\n): Record<string, TemplateGlobal> {\n if (!globals) {\n return {};\n }\n\n if (!Array.isArray(globals)) {\n return globals;\n }\n\n const result: Record<string, TemplateGlobal> = {};\n for (const global of globals) {\n result[global.id] = isGlobalFunction(global)\n ? (global.fn as TemplateGlobal)\n : (global as CreatedTemplateGlobalValue).value;\n }\n return result;\n}\n"],"names":[],"mappings":";;;;;AAkCO,SAAS,uBACd,OACgC,EAAA;AAChC,EAAA,IAAI,CAAC,OAAS,EAAA;AACZ,IAAA,OAAO,EAAC;AAAA;AAGV,EAAI,IAAA,KAAA,CAAM,OAAQ,CAAA,OAAO,CAAG,EAAA;AAC1B,IAAA,MAAM,SAAyC,EAAC;AAChD,IAAA,KAAA,MAAW,UAAU,OAAS,EAAA;AAC5B,MAAO,MAAA,CAAA,MAAA,CAAO,EAAE,CAAA,GAAI,MAAO,CAAA,MAAA;AAAA;AAE7B,IAAO,OAAA,MAAA;AAAA;AAGT,EAAO,OAAA,OAAA;AACT;AAqHA,SAAS,iBACP,MAIA,EAAA;AACA,EAAA,OAAO,IAAQ,IAAA,MAAA;AACjB;AAsFO,SAAS,uBACd,OACgC,EAAA;AAChC,EAAA,IAAI,CAAC,OAAS,EAAA;AACZ,IAAA,OAAO,EAAC;AAAA;AAGV,EAAA,IAAI,CAAC,KAAA,CAAM,OAAQ,CAAA,OAAO,CAAG,EAAA;AAC3B,IAAO,OAAA,OAAA;AAAA;AAGT,EAAA,MAAM,SAAyC,EAAC;AAChD,EAAA,KAAA,MAAW,UAAU,OAAS,EAAA;AAC5B,IAAO,MAAA,CAAA,MAAA,CAAO,EAAE,CAAI,GAAA,gBAAA,CAAiB,MAAM,CACtC,GAAA,MAAA,CAAO,KACP,MAAsC,CAAA,KAAA;AAAA;AAE7C,EAAO,OAAA,MAAA;AACT;;;;;"}
1
+ {"version":3,"file":"templating.cjs.js","sources":["../../src/util/templating.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 */\nimport {\n TemplateFilter,\n TemplateGlobal,\n} from '@backstage/plugin-scaffolder-node';\nimport {\n CreatedTemplateFilter,\n CreatedTemplateGlobal,\n CreatedTemplateGlobalFunction,\n CreatedTemplateGlobalValue,\n ZodFunctionSchema,\n} from '@backstage/plugin-scaffolder-node/alpha';\nimport { JsonValue } from '@backstage/types';\nimport { Schema } from 'jsonschema';\nimport { ZodType, z } from 'zod';\nimport zodToJsonSchema from 'zod-to-json-schema';\n\n/**\n * Converts template filters to a record of filter functions\n */\nexport function convertFiltersToRecord(\n filters?: Record<string, TemplateFilter> | CreatedTemplateFilter<any, any>[],\n): Record<string, TemplateFilter> {\n if (!filters) {\n return {};\n }\n\n if (Array.isArray(filters)) {\n const result: Record<string, TemplateFilter> = {};\n for (const filter of filters) {\n result[filter.id] = filter.filter as TemplateFilter;\n }\n return result;\n }\n\n return filters;\n}\n\ntype ExportFunctionSchema = {\n arguments?: Schema[];\n output?: Schema;\n};\n\ntype ExportFilterSchema = {\n input?: Schema;\n} & ExportFunctionSchema;\n\n/**\n * Converts a Zod function schema to JSON schema\n */\nfunction convertZodFunctionToJsonSchema(\n t: ReturnType<ZodFunctionSchema<any, any>>,\n): ExportFunctionSchema {\n if (!('parameters' in t) || !('returnType' in t)) {\n throw new Error('Invalid Zod function schema');\n }\n\n const args = (t.parameters().items as ZodType[]).map(\n zt => zodToJsonSchema(zt) as Schema,\n );\n\n let output: Schema | undefined = undefined;\n const returnType = t.returnType();\n if (!returnType._unknown) {\n output = zodToJsonSchema(returnType) as Schema;\n }\n\n const result: ExportFunctionSchema = {};\n if (args.length > 0) {\n result.arguments = args;\n }\n if (output) {\n result.output = output;\n }\n\n return result;\n}\n\n/**\n * Converts a function schema to a filter schema\n */\nfunction convertToFilterSchema(\n fnSchema: ExportFunctionSchema,\n): ExportFilterSchema {\n if (fnSchema.arguments?.length) {\n const [input, ...rest] = fnSchema.arguments;\n const result: ExportFilterSchema = { input };\n\n if (rest.length > 0) {\n result.arguments = rest;\n }\n\n if (fnSchema.output) {\n result.output = fnSchema.output;\n }\n\n return result;\n }\n return fnSchema;\n}\n\ntype ExportFilter = Pick<\n CreatedTemplateFilter<any, any>,\n 'description' | 'examples'\n> & {\n schema?: ExportFilterSchema;\n};\n\n/**\n * Extracts metadata from template filters\n */\nexport function extractFilterMetadata(\n filters?: Record<string, TemplateFilter> | CreatedTemplateFilter<any, any>[],\n): Record<string, ExportFilter> {\n if (!filters) {\n return {};\n }\n\n if (Array.isArray(filters)) {\n const result: Record<string, ExportFilter> = {};\n\n for (const filter of filters) {\n const metadata: ExportFilter = {};\n\n if (filter.description) {\n metadata.description = filter.description;\n }\n\n if (filter.examples) {\n metadata.examples = filter.examples;\n }\n\n if (filter.schema) {\n metadata.schema = convertToFilterSchema(\n convertZodFunctionToJsonSchema(\n filter.schema(z) as z.ZodFunction<any, any>,\n ),\n );\n }\n\n result[filter.id] = metadata;\n }\n\n return result;\n }\n\n // For non-array filters, return empty metadata\n const result: Record<string, ExportFilter> = {};\n for (const key in filters) {\n if (filters.hasOwnProperty(key)) {\n result[key] = {};\n }\n }\n return result;\n}\n\n/**\n * Checks if a global is a function\n */\nfunction isGlobalFunction(\n global: CreatedTemplateGlobal,\n): global is CreatedTemplateGlobalFunction<any, any> {\n return 'fn' in global;\n}\n\n/**\n * Extracts metadata from template global functions\n */\nexport function extractGlobalFunctionMetadata(\n globals?: Record<string, TemplateGlobal> | CreatedTemplateGlobal[],\n): Record<\n string,\n Pick<CreatedTemplateGlobalFunction<any, any>, 'description' | 'examples'> & {\n schema?: ExportFunctionSchema;\n }\n> {\n if (!globals) {\n return {};\n }\n\n if (Array.isArray(globals)) {\n const result: Record<string, any> = {};\n\n for (const global of globals) {\n if (isGlobalFunction(global)) {\n const metadata: any = {};\n\n if (global.description) {\n metadata.description = global.description;\n }\n\n if (global.examples) {\n metadata.examples = global.examples;\n }\n\n if (global.schema) {\n metadata.schema = convertZodFunctionToJsonSchema(global.schema(z));\n }\n\n result[global.id] = metadata;\n }\n }\n\n return result;\n }\n\n // For non-array globals, extract function metadata\n const result: Record<string, any> = {};\n for (const key in globals) {\n if (typeof globals[key] === 'function') {\n result[key] = {};\n }\n }\n return result;\n}\n\n/**\n * Extracts metadata from template global values\n */\nexport function extractGlobalValueMetadata(\n globals?: Record<string, TemplateGlobal> | CreatedTemplateGlobal[],\n): Record<string, Omit<CreatedTemplateGlobalValue, 'id'>> {\n if (!globals) {\n return {};\n }\n\n if (Array.isArray(globals)) {\n const result: Record<string, Omit<CreatedTemplateGlobalValue, 'id'>> = {};\n\n for (const global of globals) {\n if (!isGlobalFunction(global)) {\n result[global.id] = {\n value: (global as CreatedTemplateGlobalValue).value,\n description: global.description,\n };\n }\n }\n\n return result;\n }\n\n // For non-array globals, extract value metadata\n const result: Record<string, Omit<CreatedTemplateGlobalValue, 'id'>> = {};\n for (const key in globals) {\n if (typeof globals[key] !== 'function') {\n result[key] = { value: globals[key] as JsonValue };\n }\n }\n return result;\n}\n\n/**\n * Converts template globals to a record of global values and functions\n */\nexport function convertGlobalsToRecord(\n globals?: Record<string, TemplateGlobal> | CreatedTemplateGlobal[],\n): Record<string, TemplateGlobal> {\n if (!globals) {\n return {};\n }\n\n if (!Array.isArray(globals)) {\n return globals;\n }\n\n const result: Record<string, TemplateGlobal> = {};\n for (const global of globals) {\n result[global.id] = isGlobalFunction(global)\n ? (global.fn as TemplateGlobal)\n : (global as CreatedTemplateGlobalValue).value;\n }\n return result;\n}\n"],"names":["zodToJsonSchema","result","z"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@backstage/plugin-scaffolder-backend",
3
- "version": "1.31.0",
3
+ "version": "1.32.0-next.1",
4
4
  "description": "The Backstage backend plugin that helps you create new things",
5
5
  "backstage": {
6
6
  "role": "backend-plugin",
@@ -76,31 +76,31 @@
76
76
  },
77
77
  "dependencies": {
78
78
  "@backstage/backend-common": "^0.25.0",
79
- "@backstage/backend-defaults": "^0.8.2",
80
- "@backstage/backend-plugin-api": "^1.2.1",
81
- "@backstage/catalog-client": "^1.9.1",
82
- "@backstage/catalog-model": "^1.7.3",
83
- "@backstage/config": "^1.3.2",
84
- "@backstage/errors": "^1.2.7",
85
- "@backstage/integration": "^1.16.2",
86
- "@backstage/plugin-auth-node": "^0.6.1",
87
- "@backstage/plugin-bitbucket-cloud-common": "^0.2.28",
88
- "@backstage/plugin-catalog-backend-module-scaffolder-entity-model": "^0.2.6",
89
- "@backstage/plugin-catalog-node": "^1.16.1",
90
- "@backstage/plugin-events-node": "^0.4.9",
91
- "@backstage/plugin-permission-common": "^0.8.4",
92
- "@backstage/plugin-permission-node": "^0.9.0",
93
- "@backstage/plugin-scaffolder-backend-module-azure": "^0.2.7",
94
- "@backstage/plugin-scaffolder-backend-module-bitbucket": "^0.3.8",
95
- "@backstage/plugin-scaffolder-backend-module-bitbucket-cloud": "^0.2.7",
96
- "@backstage/plugin-scaffolder-backend-module-bitbucket-server": "^0.2.7",
97
- "@backstage/plugin-scaffolder-backend-module-gerrit": "^0.2.7",
98
- "@backstage/plugin-scaffolder-backend-module-gitea": "^0.2.7",
99
- "@backstage/plugin-scaffolder-backend-module-github": "^0.6.1",
100
- "@backstage/plugin-scaffolder-backend-module-gitlab": "^0.8.1",
101
- "@backstage/plugin-scaffolder-common": "^1.5.10",
102
- "@backstage/plugin-scaffolder-node": "^0.8.0",
103
- "@backstage/types": "^1.2.1",
79
+ "@backstage/backend-defaults": "0.9.0-next.1",
80
+ "@backstage/backend-plugin-api": "1.2.1",
81
+ "@backstage/catalog-client": "1.9.1",
82
+ "@backstage/catalog-model": "1.7.3",
83
+ "@backstage/config": "1.3.2",
84
+ "@backstage/errors": "1.2.7",
85
+ "@backstage/integration": "1.16.3-next.0",
86
+ "@backstage/plugin-auth-node": "0.6.1",
87
+ "@backstage/plugin-bitbucket-cloud-common": "0.2.29-next.0",
88
+ "@backstage/plugin-catalog-backend-module-scaffolder-entity-model": "0.2.6",
89
+ "@backstage/plugin-catalog-node": "1.16.1",
90
+ "@backstage/plugin-events-node": "0.4.9",
91
+ "@backstage/plugin-permission-common": "0.8.4",
92
+ "@backstage/plugin-permission-node": "0.9.0",
93
+ "@backstage/plugin-scaffolder-backend-module-azure": "0.2.8-next.1",
94
+ "@backstage/plugin-scaffolder-backend-module-bitbucket": "0.3.9-next.1",
95
+ "@backstage/plugin-scaffolder-backend-module-bitbucket-cloud": "0.2.8-next.1",
96
+ "@backstage/plugin-scaffolder-backend-module-bitbucket-server": "0.2.8-next.1",
97
+ "@backstage/plugin-scaffolder-backend-module-gerrit": "0.2.8-next.1",
98
+ "@backstage/plugin-scaffolder-backend-module-gitea": "0.2.8-next.1",
99
+ "@backstage/plugin-scaffolder-backend-module-github": "0.6.2-next.1",
100
+ "@backstage/plugin-scaffolder-backend-module-gitlab": "0.8.2-next.1",
101
+ "@backstage/plugin-scaffolder-common": "1.5.10",
102
+ "@backstage/plugin-scaffolder-node": "0.8.1-next.1",
103
+ "@backstage/types": "1.2.1",
104
104
  "@opentelemetry/api": "^1.9.0",
105
105
  "@types/express": "^4.17.6",
106
106
  "@types/luxon": "^3.0.0",
@@ -131,11 +131,11 @@
131
131
  "zod-to-json-schema": "^3.20.4"
132
132
  },
133
133
  "devDependencies": {
134
- "@backstage/backend-app-api": "^1.2.1",
135
- "@backstage/backend-defaults": "^0.8.2",
136
- "@backstage/backend-test-utils": "^1.3.1",
137
- "@backstage/cli": "^0.31.0",
138
- "@backstage/plugin-scaffolder-node-test-utils": "^0.2.0",
134
+ "@backstage/backend-app-api": "1.2.1",
135
+ "@backstage/backend-defaults": "0.9.0-next.1",
136
+ "@backstage/backend-test-utils": "1.3.2-next.1",
137
+ "@backstage/cli": "0.32.0-next.1",
138
+ "@backstage/plugin-scaffolder-node-test-utils": "0.2.1-next.1",
139
139
  "@types/fs-extra": "^11.0.0",
140
140
  "@types/nunjucks": "^3.1.4",
141
141
  "@types/supertest": "^2.0.8",
@@ -1,28 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var catalogModel = require('@backstage/catalog-model');
6
- var pluginScaffolderNode = require('@backstage/plugin-scaffolder-node');
7
- var get = require('lodash/get');
8
-
9
- function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
10
-
11
- var get__default = /*#__PURE__*/_interopDefaultCompat(get);
12
-
13
- var createDefaultFilters = ({
14
- integrations
15
- }) => {
16
- return {
17
- parseRepoUrl: (url) => pluginScaffolderNode.parseRepoUrl(url, integrations),
18
- parseEntityRef: (ref, context) => catalogModel.parseEntityRef(ref, context),
19
- pick: (obj, key) => get__default.default(obj, key),
20
- projectSlug: (repoUrl) => {
21
- const { owner, repo } = pluginScaffolderNode.parseRepoUrl(repoUrl, integrations);
22
- return `${owner}/${repo}`;
23
- }
24
- };
25
- };
26
-
27
- exports.default = createDefaultFilters;
28
- //# sourceMappingURL=filters.cjs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"filters.cjs.js","sources":["../../../src/lib/templating/filters.ts"],"sourcesContent":["/*\n * Copyright 2023 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 */\nimport { parseEntityRef } from '@backstage/catalog-model';\nimport { ScmIntegrations } from '@backstage/integration';\nimport type { JsonObject, JsonValue } from '@backstage/types';\nimport {\n parseRepoUrl,\n TemplateFilter,\n} from '@backstage/plugin-scaffolder-node';\nimport get from 'lodash/get';\n\nexport default ({\n integrations,\n}: {\n integrations: ScmIntegrations;\n}): Record<string, TemplateFilter> => {\n return {\n parseRepoUrl: url => parseRepoUrl(url as string, integrations),\n parseEntityRef: (ref: JsonValue, context?: JsonValue) =>\n parseEntityRef(ref as string, context as JsonObject),\n pick: (obj: JsonValue, key: JsonValue) => get(obj, key as string),\n projectSlug: repoUrl => {\n const { owner, repo } = parseRepoUrl(repoUrl as string, integrations);\n return `${owner}/${repo}`;\n },\n };\n};\n"],"names":["parseRepoUrl","parseEntityRef","get"],"mappings":";;;;;;;;;;;;AAwBA,2BAAe,CAAC;AAAA,EACd;AACF,CAEsC,KAAA;AACpC,EAAO,OAAA;AAAA,IACL,YAAc,EAAA,CAAA,GAAA,KAAOA,iCAAa,CAAA,GAAA,EAAe,YAAY,CAAA;AAAA,IAC7D,gBAAgB,CAAC,GAAA,EAAgB,OAC/B,KAAAC,2BAAA,CAAe,KAAe,OAAqB,CAAA;AAAA,IACrD,MAAM,CAAC,GAAA,EAAgB,GAAmB,KAAAC,oBAAA,CAAI,KAAK,GAAa,CAAA;AAAA,IAChE,aAAa,CAAW,OAAA,KAAA;AACtB,MAAA,MAAM,EAAE,KAAO,EAAA,IAAA,EAAS,GAAAF,iCAAA,CAAa,SAAmB,YAAY,CAAA;AACpE,MAAO,OAAA,CAAA,EAAG,KAAK,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA;AAAA;AACzB,GACF;AACF,CAAA;;;;"}