@backstage/plugin-scaffolder 1.29.0-next.1 → 1.29.0

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,55 @@
1
1
  # @backstage/plugin-scaffolder
2
2
 
3
+ ## 1.29.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 9d864ff: Allowed passing `ui:disabled` for disabling the input field of all the pickers.
8
+
9
+ ### Patch Changes
10
+
11
+ - 3db64ba: Disable the submit button on creating
12
+ - 6a3fa48: Fixes DryRunContext not forwarding the correct Scaffolder Secrets to the DryRun API
13
+ - b3b7c9c: Updated the alpha `page:scaffolder` extension to accept `formFields` input, matching the updated `FormFieldBlueprint`.
14
+ - Updated dependencies
15
+ - @backstage/core-components@0.17.0
16
+ - @backstage/core-plugin-api@1.10.5
17
+ - @backstage/integration@1.16.2
18
+ - @backstage/frontend-plugin-api@0.10.0
19
+ - @backstage/plugin-catalog-react@1.16.0
20
+ - @backstage/plugin-scaffolder-react@1.14.6
21
+ - @backstage/core-compat-api@0.4.0
22
+ - @backstage/plugin-scaffolder-common@1.5.10
23
+ - @backstage/integration-react@1.2.5
24
+ - @backstage/plugin-permission-react@0.4.32
25
+ - @backstage/catalog-client@1.9.1
26
+ - @backstage/catalog-model@1.7.3
27
+ - @backstage/errors@1.2.7
28
+ - @backstage/types@1.2.1
29
+ - @backstage/plugin-catalog-common@1.1.3
30
+
31
+ ## 1.29.0-next.2
32
+
33
+ ### Patch Changes
34
+
35
+ - 3db64ba: Disable the submit button on creating
36
+ - Updated dependencies
37
+ - @backstage/frontend-plugin-api@0.10.0-next.2
38
+ - @backstage/plugin-catalog-react@1.16.0-next.2
39
+ - @backstage/core-compat-api@0.4.0-next.2
40
+ - @backstage/core-components@0.16.5-next.1
41
+ - @backstage/plugin-scaffolder-react@1.14.6-next.2
42
+ - @backstage/integration@1.16.2-next.0
43
+ - @backstage/catalog-client@1.9.1
44
+ - @backstage/catalog-model@1.7.3
45
+ - @backstage/core-plugin-api@1.10.4
46
+ - @backstage/errors@1.2.7
47
+ - @backstage/integration-react@1.2.5-next.0
48
+ - @backstage/types@1.2.1
49
+ - @backstage/plugin-catalog-common@1.1.3
50
+ - @backstage/plugin-permission-react@0.4.31
51
+ - @backstage/plugin-scaffolder-common@1.5.10-next.0
52
+
3
53
  ## 1.29.0-next.1
4
54
 
5
55
  ### Patch Changes
@@ -1,4 +1,4 @@
1
- import React, { useState } from 'react';
1
+ import React, { useState, useCallback } from 'react';
2
2
  import { useNavigate, Navigate } from 'react-router-dom';
3
3
  import useAsync from 'react-use/esm/useAsync';
4
4
  import { stringifyEntityRef, ANNOTATION_EDIT_URL } from '@backstage/catalog-model';
@@ -36,24 +36,36 @@ const TemplateWizardPage = (props) => {
36
36
  const data = await catalogApi.getEntityByRef(templateRef);
37
37
  return data?.metadata.annotations?.[ANNOTATION_EDIT_URL];
38
38
  }, [templateRef, catalogApi]);
39
- const onCreate = async (initialValues) => {
40
- if (isCreating) {
41
- return;
42
- }
43
- setIsCreating(true);
44
- const { formState: values, secrets } = await decorators.run({
45
- formState: initialValues,
46
- secrets: contextSecrets,
47
- manifest
48
- });
49
- const { taskId } = await scaffolderApi.scaffold({
50
- templateRef,
51
- values,
52
- secrets
53
- });
54
- navigate(taskRoute({ taskId }));
55
- };
56
- const onError = () => /* @__PURE__ */ React.createElement(Navigate, { to: rootRef() });
39
+ const onCreate = useCallback(
40
+ async (initialValues) => {
41
+ if (isCreating) {
42
+ return;
43
+ }
44
+ setIsCreating(true);
45
+ const { formState: values, secrets } = await decorators.run({
46
+ formState: initialValues,
47
+ secrets: contextSecrets,
48
+ manifest
49
+ });
50
+ const { taskId } = await scaffolderApi.scaffold({
51
+ templateRef,
52
+ values,
53
+ secrets
54
+ });
55
+ navigate(taskRoute({ taskId }));
56
+ },
57
+ [
58
+ contextSecrets,
59
+ decorators,
60
+ isCreating,
61
+ manifest,
62
+ navigate,
63
+ scaffolderApi,
64
+ taskRoute,
65
+ templateRef
66
+ ]
67
+ );
68
+ const onError = useCallback(() => /* @__PURE__ */ React.createElement(Navigate, { to: rootRef() }), [rootRef]);
57
69
  return /* @__PURE__ */ React.createElement(AnalyticsContext, { attributes: { entityRef: templateRef } }, /* @__PURE__ */ React.createElement(Page, { themeId: "website" }, /* @__PURE__ */ React.createElement(
58
70
  Header,
59
71
  {
@@ -1 +1 @@
1
- {"version":3,"file":"TemplateWizardPage.esm.js","sources":["../../../../src/alpha/components/TemplateWizardPage/TemplateWizardPage.tsx"],"sourcesContent":["/*\n * Copyright 2022 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 React, { useState } from 'react';\nimport { Navigate, useNavigate } from 'react-router-dom';\nimport useAsync from 'react-use/esm/useAsync';\nimport {\n stringifyEntityRef,\n ANNOTATION_EDIT_URL,\n} from '@backstage/catalog-model';\nimport {\n AnalyticsContext,\n useApi,\n useRouteRef,\n useRouteRefParams,\n} from '@backstage/core-plugin-api';\nimport {\n scaffolderApiRef,\n useTemplateSecrets,\n type LayoutOptions,\n FormProps,\n FieldExtensionOptions,\n ReviewStepProps,\n} from '@backstage/plugin-scaffolder-react';\nimport { catalogApiRef } from '@backstage/plugin-catalog-react';\n\nimport {\n Workflow,\n useTemplateParameterSchema,\n} from '@backstage/plugin-scaffolder-react/alpha';\nimport { JsonValue } from '@backstage/types';\nimport { Header, Page, Progress } from '@backstage/core-components';\n\nimport {\n rootRouteRef,\n scaffolderTaskRouteRef,\n selectedTemplateRouteRef,\n} from '../../../routes';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { scaffolderTranslationRef } from '../../../translation';\n\nimport { TemplateWizardPageContextMenu } from './TemplateWizardPageContextMenu';\nimport { useFormDecorators } from '../../hooks';\n\n/**\n * @alpha\n */\nexport type TemplateWizardPageProps = {\n customFieldExtensions: FieldExtensionOptions<any, any>[];\n components?: {\n ReviewStepComponent?: React.ComponentType<ReviewStepProps>;\n };\n layouts?: LayoutOptions[];\n formProps?: FormProps;\n headerOptions?: {\n pageTitleOverride?: string;\n title?: string;\n subtitle?: string;\n };\n};\n\nexport const TemplateWizardPage = (props: TemplateWizardPageProps) => {\n const rootRef = useRouteRef(rootRouteRef);\n const taskRoute = useRouteRef(scaffolderTaskRouteRef);\n const { secrets: contextSecrets } = useTemplateSecrets();\n const scaffolderApi = useApi(scaffolderApiRef);\n const catalogApi = useApi(catalogApiRef);\n const [isCreating, setIsCreating] = useState(false);\n const navigate = useNavigate();\n const { templateName, namespace } = useRouteRefParams(\n selectedTemplateRouteRef,\n );\n const { t } = useTranslationRef(scaffolderTranslationRef);\n\n const templateRef = stringifyEntityRef({\n kind: 'Template',\n namespace,\n name: templateName,\n });\n\n const { manifest } = useTemplateParameterSchema(templateRef);\n const decorators = useFormDecorators();\n\n const { value: editUrl } = useAsync(async () => {\n const data = await catalogApi.getEntityByRef(templateRef);\n return data?.metadata.annotations?.[ANNOTATION_EDIT_URL];\n }, [templateRef, catalogApi]);\n\n const onCreate = async (initialValues: Record<string, JsonValue>) => {\n if (isCreating) {\n return;\n }\n\n setIsCreating(true);\n\n const { formState: values, secrets } = await decorators.run({\n formState: initialValues,\n secrets: contextSecrets,\n manifest,\n });\n\n const { taskId } = await scaffolderApi.scaffold({\n templateRef,\n values,\n secrets,\n });\n\n navigate(taskRoute({ taskId }));\n };\n\n const onError = () => <Navigate to={rootRef()} />;\n\n return (\n <AnalyticsContext attributes={{ entityRef: templateRef }}>\n <Page themeId=\"website\">\n <Header\n pageTitleOverride={t('templateWizardPage.pageTitle')}\n title={t('templateWizardPage.title')}\n subtitle={t('templateWizardPage.subtitle')}\n {...props.headerOptions}\n >\n <TemplateWizardPageContextMenu editUrl={editUrl} />\n </Header>\n {isCreating && <Progress />}\n <Workflow\n namespace={namespace}\n templateName={templateName}\n onCreate={onCreate}\n components={props.components}\n onError={onError}\n extensions={props.customFieldExtensions}\n formProps={props.formProps}\n layouts={props.layouts}\n />\n </Page>\n </AnalyticsContext>\n );\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TemplateWizardPage.esm.js","sources":["../../../../src/alpha/components/TemplateWizardPage/TemplateWizardPage.tsx"],"sourcesContent":["/*\n * Copyright 2022 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 React, { useCallback, useState } from 'react';\nimport { Navigate, useNavigate } from 'react-router-dom';\nimport useAsync from 'react-use/esm/useAsync';\nimport {\n stringifyEntityRef,\n ANNOTATION_EDIT_URL,\n} from '@backstage/catalog-model';\nimport {\n AnalyticsContext,\n useApi,\n useRouteRef,\n useRouteRefParams,\n} from '@backstage/core-plugin-api';\nimport {\n scaffolderApiRef,\n useTemplateSecrets,\n type LayoutOptions,\n FormProps,\n FieldExtensionOptions,\n ReviewStepProps,\n} from '@backstage/plugin-scaffolder-react';\nimport { catalogApiRef } from '@backstage/plugin-catalog-react';\n\nimport {\n Workflow,\n useTemplateParameterSchema,\n} from '@backstage/plugin-scaffolder-react/alpha';\nimport { JsonValue } from '@backstage/types';\nimport { Header, Page, Progress } from '@backstage/core-components';\n\nimport {\n rootRouteRef,\n scaffolderTaskRouteRef,\n selectedTemplateRouteRef,\n} from '../../../routes';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { scaffolderTranslationRef } from '../../../translation';\n\nimport { TemplateWizardPageContextMenu } from './TemplateWizardPageContextMenu';\nimport { useFormDecorators } from '../../hooks';\n\n/**\n * @alpha\n */\nexport type TemplateWizardPageProps = {\n customFieldExtensions: FieldExtensionOptions<any, any>[];\n components?: {\n ReviewStepComponent?: React.ComponentType<ReviewStepProps>;\n };\n layouts?: LayoutOptions[];\n formProps?: FormProps;\n headerOptions?: {\n pageTitleOverride?: string;\n title?: string;\n subtitle?: string;\n };\n};\n\nexport const TemplateWizardPage = (props: TemplateWizardPageProps) => {\n const rootRef = useRouteRef(rootRouteRef);\n const taskRoute = useRouteRef(scaffolderTaskRouteRef);\n const { secrets: contextSecrets } = useTemplateSecrets();\n const scaffolderApi = useApi(scaffolderApiRef);\n const catalogApi = useApi(catalogApiRef);\n const [isCreating, setIsCreating] = useState(false);\n const navigate = useNavigate();\n const { templateName, namespace } = useRouteRefParams(\n selectedTemplateRouteRef,\n );\n const { t } = useTranslationRef(scaffolderTranslationRef);\n\n const templateRef = stringifyEntityRef({\n kind: 'Template',\n namespace,\n name: templateName,\n });\n\n const { manifest } = useTemplateParameterSchema(templateRef);\n const decorators = useFormDecorators();\n\n const { value: editUrl } = useAsync(async () => {\n const data = await catalogApi.getEntityByRef(templateRef);\n return data?.metadata.annotations?.[ANNOTATION_EDIT_URL];\n }, [templateRef, catalogApi]);\n\n const onCreate = useCallback(\n async (initialValues: Record<string, JsonValue>) => {\n if (isCreating) {\n return;\n }\n\n setIsCreating(true);\n\n const { formState: values, secrets } = await decorators.run({\n formState: initialValues,\n secrets: contextSecrets,\n manifest,\n });\n\n const { taskId } = await scaffolderApi.scaffold({\n templateRef,\n values,\n secrets,\n });\n\n navigate(taskRoute({ taskId }));\n },\n [\n contextSecrets,\n decorators,\n isCreating,\n manifest,\n navigate,\n scaffolderApi,\n taskRoute,\n templateRef,\n ],\n );\n\n const onError = useCallback(() => <Navigate to={rootRef()} />, [rootRef]);\n\n return (\n <AnalyticsContext attributes={{ entityRef: templateRef }}>\n <Page themeId=\"website\">\n <Header\n pageTitleOverride={t('templateWizardPage.pageTitle')}\n title={t('templateWizardPage.title')}\n subtitle={t('templateWizardPage.subtitle')}\n {...props.headerOptions}\n >\n <TemplateWizardPageContextMenu editUrl={editUrl} />\n </Header>\n {isCreating && <Progress />}\n <Workflow\n namespace={namespace}\n templateName={templateName}\n onCreate={onCreate}\n components={props.components}\n onError={onError}\n extensions={props.customFieldExtensions}\n formProps={props.formProps}\n layouts={props.layouts}\n />\n </Page>\n </AnalyticsContext>\n );\n};\n"],"names":[],"mappings":"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"}
package/dist/alpha.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import * as React from 'react';
3
2
  import React__default from 'react';
4
3
  import { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common';
@@ -116,8 +115,8 @@ declare const scaffolderTranslationRef: _backstage_core_plugin_api_alpha.Transla
116
115
  readonly "fields.repoUrlPicker.repository.inputTitle": "Repository";
117
116
  readonly "actionsPage.content.emptyState.title": "No information to display";
118
117
  readonly "actionsPage.content.emptyState.description": "There are no actions installed or there was an issue communicating with backend.";
119
- readonly "actionsPage.content.tableCell.type": "Type";
120
118
  readonly "actionsPage.content.tableCell.name": "Name";
119
+ readonly "actionsPage.content.tableCell.type": "Type";
121
120
  readonly "actionsPage.content.tableCell.title": "Title";
122
121
  readonly "actionsPage.content.tableCell.description": "Description";
123
122
  readonly "actionsPage.content.searchFieldPlaceholder": "Search for an action";
@@ -301,18 +300,13 @@ declare const _default: _backstage_frontend_plugin_api.FrontendPlugin<{
301
300
  namespace: string;
302
301
  }>;
303
302
  }, {
304
- "api:scaffolder/form-fields": _backstage_frontend_plugin_api.ExtensionDefinition<{
303
+ "api:scaffolder": _backstage_frontend_plugin_api.ExtensionDefinition<{
304
+ kind: "api";
305
+ name: undefined;
305
306
  config: {};
306
307
  configInput: {};
307
308
  output: _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<_backstage_frontend_plugin_api.AnyApiFactory, "core.api.factory", {}>;
308
- inputs: {
309
- formFields: _backstage_frontend_plugin_api.ExtensionInput<_backstage_frontend_plugin_api.ConfigurableExtensionDataRef<() => Promise<FormField>, "scaffolder.form-field-loader", {}>, {
310
- singleton: false;
311
- optional: false;
312
- }>;
313
- };
314
- kind: "api";
315
- name: "form-fields";
309
+ inputs: {};
316
310
  params: {
317
311
  factory: _backstage_frontend_plugin_api.AnyApiFactory;
318
312
  };
@@ -333,28 +327,20 @@ declare const _default: _backstage_frontend_plugin_api.FrontendPlugin<{
333
327
  factory: _backstage_frontend_plugin_api.AnyApiFactory;
334
328
  };
335
329
  }>;
336
- "page:scaffolder": _backstage_frontend_plugin_api.ExtensionDefinition<{
337
- config: {
338
- path: string | undefined;
339
- };
340
- configInput: {
341
- path?: string | undefined;
342
- };
343
- output: _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<React.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
344
- optional: true;
345
- }>;
330
+ "api:scaffolder/form-fields": _backstage_frontend_plugin_api.ExtensionDefinition<{
331
+ config: {};
332
+ configInput: {};
333
+ output: _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<_backstage_frontend_plugin_api.AnyApiFactory, "core.api.factory", {}>;
346
334
  inputs: {
347
335
  formFields: _backstage_frontend_plugin_api.ExtensionInput<_backstage_frontend_plugin_api.ConfigurableExtensionDataRef<() => Promise<FormField>, "scaffolder.form-field-loader", {}>, {
348
336
  singleton: false;
349
337
  optional: false;
350
338
  }>;
351
339
  };
352
- kind: "page";
353
- name: undefined;
340
+ kind: "api";
341
+ name: "form-fields";
354
342
  params: {
355
- defaultPath: string;
356
- loader: () => Promise<JSX.Element>;
357
- routeRef?: _backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams> | undefined;
343
+ factory: _backstage_frontend_plugin_api.AnyApiFactory;
358
344
  };
359
345
  }>;
360
346
  "nav-item:scaffolder": _backstage_frontend_plugin_api.ExtensionDefinition<{
@@ -374,6 +360,30 @@ declare const _default: _backstage_frontend_plugin_api.FrontendPlugin<{
374
360
  routeRef: _backstage_frontend_plugin_api.RouteRef<undefined>;
375
361
  };
376
362
  }>;
363
+ "page:scaffolder": _backstage_frontend_plugin_api.ExtensionDefinition<{
364
+ config: {
365
+ path: string | undefined;
366
+ };
367
+ configInput: {
368
+ path?: string | undefined;
369
+ };
370
+ output: _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<React.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
371
+ optional: true;
372
+ }>;
373
+ inputs: {
374
+ formFields: _backstage_frontend_plugin_api.ExtensionInput<_backstage_frontend_plugin_api.ConfigurableExtensionDataRef<() => Promise<FormField>, "scaffolder.form-field-loader", {}>, {
375
+ singleton: false;
376
+ optional: false;
377
+ }>;
378
+ };
379
+ kind: "page";
380
+ name: undefined;
381
+ params: {
382
+ defaultPath: string;
383
+ loader: () => Promise<JSX.Element>;
384
+ routeRef?: _backstage_frontend_plugin_api.RouteRef;
385
+ };
386
+ }>;
377
387
  "scaffolder-form-field:scaffolder/repo-url-picker": _backstage_frontend_plugin_api.ExtensionDefinition<{
378
388
  kind: "scaffolder-form-field";
379
389
  name: "repo-url-picker";
@@ -385,17 +395,6 @@ declare const _default: _backstage_frontend_plugin_api.FrontendPlugin<{
385
395
  field: () => Promise<FormField>;
386
396
  };
387
397
  }>;
388
- "api:scaffolder": _backstage_frontend_plugin_api.ExtensionDefinition<{
389
- kind: "api";
390
- name: undefined;
391
- config: {};
392
- configInput: {};
393
- output: _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<_backstage_frontend_plugin_api.AnyApiFactory, "core.api.factory", {}>;
394
- inputs: {};
395
- params: {
396
- factory: _backstage_frontend_plugin_api.AnyApiFactory;
397
- };
398
- }>;
399
398
  }>;
400
399
 
401
400
  export { DefaultScaffolderFormDecoratorsApi, type FormProps, type ScaffolderCustomFieldExplorerClassKey, type ScaffolderFormDecoratorsApi, type ScaffolderTemplateEditorClassKey, type ScaffolderTemplateFormPreviewerClassKey, type TemplateListPageProps, type TemplateWizardPageProps, _default as default, formDecoratorsApi, formDecoratorsApiRef, scaffolderTranslationRef };
package/dist/index.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import * as _backstage_core_plugin_api from '@backstage/core-plugin-api';
3
2
  import { DiscoveryApi, FetchApi, IdentityApi, ApiHolder } from '@backstage/core-plugin-api';
4
3
  import { ScmIntegrationRegistry } from '@backstage/integration';
@@ -445,7 +444,7 @@ declare const createScaffolderFieldExtension: typeof createScaffolderFieldExtens
445
444
  * @deprecated use import from {@link @backstage/plugin-scaffolder-react#ScaffolderFieldExtensions} instead as this has now been moved.
446
445
  */
447
446
  declare const ScaffolderFieldExtensions: React.ComponentType<{
448
- children?: React.ReactNode;
447
+ children?: React.ReactNode | undefined;
449
448
  }>;
450
449
  /**
451
450
  * @public
@@ -572,7 +571,7 @@ declare const createScaffolderLayout: typeof createScaffolderLayout$1;
572
571
  * @deprecated use import from {@link @backstage/plugin-scaffolder-react#ScaffolderLayouts} instead as this has now been moved.
573
572
  */
574
573
  declare const ScaffolderLayouts: React.ComponentType<{
575
- children?: React.ReactNode;
574
+ children?: React.ReactNode | undefined;
576
575
  }>;
577
576
  /**
578
577
  * @public
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@backstage/plugin-scaffolder",
3
- "version": "1.29.0-next.1",
3
+ "version": "1.29.0",
4
4
  "description": "The Backstage plugin that helps you create new things",
5
5
  "backstage": {
6
6
  "role": "frontend-plugin",
@@ -49,7 +49,7 @@
49
49
  "types": "./dist/index.d.ts",
50
50
  "typesVersions": {
51
51
  "*": {
52
- "index": [
52
+ "*": [
53
53
  "dist/index.d.ts"
54
54
  ],
55
55
  "alpha": [
@@ -70,21 +70,21 @@
70
70
  "test": "backstage-cli package test"
71
71
  },
72
72
  "dependencies": {
73
- "@backstage/catalog-client": "1.9.1",
74
- "@backstage/catalog-model": "1.7.3",
75
- "@backstage/core-compat-api": "0.3.7-next.1",
76
- "@backstage/core-components": "0.16.5-next.0",
77
- "@backstage/core-plugin-api": "1.10.4",
78
- "@backstage/errors": "1.2.7",
79
- "@backstage/frontend-plugin-api": "0.9.6-next.1",
80
- "@backstage/integration": "1.16.1",
81
- "@backstage/integration-react": "1.2.4",
82
- "@backstage/plugin-catalog-common": "1.1.3",
83
- "@backstage/plugin-catalog-react": "1.16.0-next.1",
84
- "@backstage/plugin-permission-react": "0.4.31",
85
- "@backstage/plugin-scaffolder-common": "1.5.10-next.0",
86
- "@backstage/plugin-scaffolder-react": "1.14.6-next.1",
87
- "@backstage/types": "1.2.1",
73
+ "@backstage/catalog-client": "^1.9.1",
74
+ "@backstage/catalog-model": "^1.7.3",
75
+ "@backstage/core-compat-api": "^0.4.0",
76
+ "@backstage/core-components": "^0.17.0",
77
+ "@backstage/core-plugin-api": "^1.10.5",
78
+ "@backstage/errors": "^1.2.7",
79
+ "@backstage/frontend-plugin-api": "^0.10.0",
80
+ "@backstage/integration": "^1.16.2",
81
+ "@backstage/integration-react": "^1.2.5",
82
+ "@backstage/plugin-catalog-common": "^1.1.3",
83
+ "@backstage/plugin-catalog-react": "^1.16.0",
84
+ "@backstage/plugin-permission-react": "^0.4.32",
85
+ "@backstage/plugin-scaffolder-common": "^1.5.10",
86
+ "@backstage/plugin-scaffolder-react": "^1.14.6",
87
+ "@backstage/types": "^1.2.1",
88
88
  "@codemirror/language": "^6.0.0",
89
89
  "@codemirror/legacy-modes": "^6.1.0",
90
90
  "@codemirror/view": "^6.0.0",
@@ -117,12 +117,12 @@
117
117
  "zod-to-json-schema": "^3.20.4"
118
118
  },
119
119
  "devDependencies": {
120
- "@backstage/cli": "0.30.1-next.0",
121
- "@backstage/core-app-api": "1.15.5",
122
- "@backstage/dev-utils": "1.1.8-next.1",
123
- "@backstage/plugin-catalog": "1.28.0-next.1",
124
- "@backstage/plugin-permission-common": "0.8.4",
125
- "@backstage/test-utils": "1.7.5",
120
+ "@backstage/cli": "^0.31.0",
121
+ "@backstage/core-app-api": "^1.16.0",
122
+ "@backstage/dev-utils": "^1.1.8",
123
+ "@backstage/plugin-catalog": "^1.28.0",
124
+ "@backstage/plugin-permission-common": "^0.8.4",
125
+ "@backstage/test-utils": "^1.7.6",
126
126
  "@testing-library/dom": "^10.0.0",
127
127
  "@testing-library/jest-dom": "^6.0.0",
128
128
  "@testing-library/react": "^16.0.0",