@backstage/plugin-scaffolder 1.34.2 → 1.34.3
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 +45 -0
- package/dist/alpha/api/FormDecoratorsApi.esm.js +1 -0
- package/dist/alpha/api/FormDecoratorsApi.esm.js.map +1 -1
- package/dist/alpha.d.ts +16 -16
- package/dist/lib/filesystem/WebFileSystemAccess.esm.js +3 -0
- package/dist/lib/filesystem/WebFileSystemAccess.esm.js.map +1 -1
- package/dist/plugins/scaffolder/package.json.esm.js +1 -1
- package/package.json +22 -22
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,50 @@
|
|
|
1
1
|
# @backstage/plugin-scaffolder
|
|
2
2
|
|
|
3
|
+
## 1.34.3
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 05f60e1: Refactored constructor parameter properties to explicit property declarations for compatibility with TypeScript's `erasableSyntaxOnly` setting. This internal refactoring maintains all existing functionality while ensuring TypeScript compilation compatibility.
|
|
8
|
+
- Updated dependencies
|
|
9
|
+
- @backstage/frontend-plugin-api@0.13.0
|
|
10
|
+
- @backstage/core-compat-api@0.5.4
|
|
11
|
+
- @backstage/plugin-catalog-react@1.21.3
|
|
12
|
+
- @backstage/integration@1.18.2
|
|
13
|
+
- @backstage/plugin-scaffolder-react@1.19.3
|
|
14
|
+
- @backstage/core-components@0.18.3
|
|
15
|
+
- @backstage/core-plugin-api@1.12.0
|
|
16
|
+
- @backstage/plugin-permission-react@0.4.38
|
|
17
|
+
- @backstage/catalog-model@1.7.6
|
|
18
|
+
- @backstage/plugin-techdocs-react@1.3.5
|
|
19
|
+
- @backstage/catalog-client@1.12.1
|
|
20
|
+
- @backstage/integration-react@1.2.12
|
|
21
|
+
- @backstage/plugin-catalog-common@1.1.7
|
|
22
|
+
- @backstage/plugin-scaffolder-common@1.7.3
|
|
23
|
+
|
|
24
|
+
## 1.34.3-next.0
|
|
25
|
+
|
|
26
|
+
### Patch Changes
|
|
27
|
+
|
|
28
|
+
- 05f60e1: Refactored constructor parameter properties to explicit property declarations for compatibility with TypeScript's `erasableSyntaxOnly` setting. This internal refactoring maintains all existing functionality while ensuring TypeScript compilation compatibility.
|
|
29
|
+
- Updated dependencies
|
|
30
|
+
- @backstage/plugin-scaffolder-react@1.19.3-next.0
|
|
31
|
+
- @backstage/plugin-permission-react@0.4.38-next.0
|
|
32
|
+
- @backstage/plugin-catalog-react@1.21.3-next.0
|
|
33
|
+
- @backstage/core-plugin-api@1.11.2-next.0
|
|
34
|
+
- @backstage/core-components@0.18.3-next.0
|
|
35
|
+
- @backstage/catalog-model@1.7.6-next.0
|
|
36
|
+
- @backstage/integration@1.18.2-next.0
|
|
37
|
+
- @backstage/frontend-plugin-api@0.12.2-next.0
|
|
38
|
+
- @backstage/catalog-client@1.12.1-next.0
|
|
39
|
+
- @backstage/core-compat-api@0.5.4-next.0
|
|
40
|
+
- @backstage/errors@1.2.7
|
|
41
|
+
- @backstage/integration-react@1.2.12-next.0
|
|
42
|
+
- @backstage/types@1.2.2
|
|
43
|
+
- @backstage/plugin-catalog-common@1.1.7-next.0
|
|
44
|
+
- @backstage/plugin-scaffolder-common@1.7.3-next.0
|
|
45
|
+
- @backstage/plugin-techdocs-common@0.1.1
|
|
46
|
+
- @backstage/plugin-techdocs-react@1.3.5-next.0
|
|
47
|
+
|
|
3
48
|
## 1.34.2
|
|
4
49
|
|
|
5
50
|
### Patch Changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormDecoratorsApi.esm.js","sources":["../../../src/alpha/api/FormDecoratorsApi.ts"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ApiBlueprint,\n createExtensionInput,\n} from '@backstage/frontend-plugin-api';\nimport { ScaffolderFormDecoratorsApi } from './types';\nimport { ScaffolderFormDecorator } from '@backstage/plugin-scaffolder-react/alpha';\nimport { formDecoratorsApiRef } from './ref';\nimport { FormDecoratorBlueprint } from '@backstage/plugin-scaffolder-react/alpha';\n\n/** @alpha */\nexport class DefaultScaffolderFormDecoratorsApi\n implements ScaffolderFormDecoratorsApi\n{\n private
|
|
1
|
+
{"version":3,"file":"FormDecoratorsApi.esm.js","sources":["../../../src/alpha/api/FormDecoratorsApi.ts"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ApiBlueprint,\n createExtensionInput,\n} from '@backstage/frontend-plugin-api';\nimport { ScaffolderFormDecoratorsApi } from './types';\nimport { ScaffolderFormDecorator } from '@backstage/plugin-scaffolder-react/alpha';\nimport { formDecoratorsApiRef } from './ref';\nimport { FormDecoratorBlueprint } from '@backstage/plugin-scaffolder-react/alpha';\n\n/** @alpha */\nexport class DefaultScaffolderFormDecoratorsApi\n implements ScaffolderFormDecoratorsApi\n{\n private readonly options: {\n decorators: Array<ScaffolderFormDecorator>;\n };\n\n private constructor(options: { decorators: Array<ScaffolderFormDecorator> }) {\n this.options = options;\n }\n\n static create(options?: { decorators: ScaffolderFormDecorator[] }) {\n return new DefaultScaffolderFormDecoratorsApi(\n options ?? { decorators: [] },\n );\n }\n\n async getFormDecorators(): Promise<ScaffolderFormDecorator[]> {\n return this.options.decorators;\n }\n}\n\n/** @alpha */\nexport const formDecoratorsApi = ApiBlueprint.makeWithOverrides({\n name: 'form-decorators',\n inputs: {\n formDecorators: createExtensionInput([\n FormDecoratorBlueprint.dataRefs.formDecoratorLoader,\n ]),\n },\n factory(originalFactory, { inputs }) {\n const formDecorators = inputs.formDecorators.map(e =>\n e.get(FormDecoratorBlueprint.dataRefs.formDecoratorLoader),\n );\n\n return originalFactory(defineParams =>\n defineParams({\n api: formDecoratorsApiRef,\n deps: {},\n factory: () =>\n DefaultScaffolderFormDecoratorsApi.create({\n decorators: formDecorators,\n }),\n }),\n );\n },\n});\n"],"names":[],"mappings":";;;;AA0BO,MAAM,kCAAA,CAEb;AAAA,EACmB,OAAA;AAAA,EAIT,YAAY,OAAA,EAAyD;AAC3E,IAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AAAA,EACjB;AAAA,EAEA,OAAO,OAAO,OAAA,EAAqD;AACjE,IAAA,OAAO,IAAI,kCAAA;AAAA,MACT,OAAA,IAAW,EAAE,UAAA,EAAY,EAAC;AAAE,KAC9B;AAAA,EACF;AAAA,EAEA,MAAM,iBAAA,GAAwD;AAC5D,IAAA,OAAO,KAAK,OAAA,CAAQ,UAAA;AAAA,EACtB;AACF;AAGO,MAAM,iBAAA,GAAoB,aAAa,iBAAA,CAAkB;AAAA,EAC9D,IAAA,EAAM,iBAAA;AAAA,EACN,MAAA,EAAQ;AAAA,IACN,gBAAgB,oBAAA,CAAqB;AAAA,MACnC,uBAAuB,QAAA,CAAS;AAAA,KACjC;AAAA,GACH;AAAA,EACA,OAAA,CAAQ,eAAA,EAAiB,EAAE,MAAA,EAAO,EAAG;AACnC,IAAA,MAAM,cAAA,GAAiB,OAAO,cAAA,CAAe,GAAA;AAAA,MAAI,CAAA,CAAA,KAC/C,CAAA,CAAE,GAAA,CAAI,sBAAA,CAAuB,SAAS,mBAAmB;AAAA,KAC3D;AAEA,IAAA,OAAO,eAAA;AAAA,MAAgB,kBACrB,YAAA,CAAa;AAAA,QACX,GAAA,EAAK,oBAAA;AAAA,QACL,MAAM,EAAC;AAAA,QACP,OAAA,EAAS,MACP,kCAAA,CAAmC,MAAA,CAAO;AAAA,UACxC,UAAA,EAAY;AAAA,SACb;AAAA,OACJ;AAAA,KACH;AAAA,EACF;AACF,CAAC;;;;"}
|
package/dist/alpha.d.ts
CHANGED
|
@@ -273,7 +273,7 @@ declare class DefaultScaffolderFormDecoratorsApi implements ScaffolderFormDecora
|
|
|
273
273
|
getFormDecorators(): Promise<ScaffolderFormDecorator[]>;
|
|
274
274
|
}
|
|
275
275
|
/** @alpha */
|
|
276
|
-
declare const formDecoratorsApi: _backstage_frontend_plugin_api.
|
|
276
|
+
declare const formDecoratorsApi: _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
277
277
|
config: {};
|
|
278
278
|
configInput: {};
|
|
279
279
|
output: _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.AnyApiFactory, "core.api.factory", {}>;
|
|
@@ -305,7 +305,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
|
|
|
305
305
|
namespace: string;
|
|
306
306
|
}>;
|
|
307
307
|
}, {
|
|
308
|
-
"api:scaffolder": _backstage_frontend_plugin_api.
|
|
308
|
+
"api:scaffolder": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
309
309
|
kind: "api";
|
|
310
310
|
name: undefined;
|
|
311
311
|
config: {};
|
|
@@ -314,7 +314,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
|
|
|
314
314
|
inputs: {};
|
|
315
315
|
params: <TApi, TImpl extends TApi, TDeps extends { [name in string]: unknown; }>(params: _backstage_frontend_plugin_api.ApiFactory<TApi, TImpl, TDeps>) => _backstage_frontend_plugin_api.ExtensionBlueprintParams<_backstage_frontend_plugin_api.AnyApiFactory>;
|
|
316
316
|
}>;
|
|
317
|
-
"api:scaffolder/form-decorators": _backstage_frontend_plugin_api.
|
|
317
|
+
"api:scaffolder/form-decorators": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
318
318
|
config: {};
|
|
319
319
|
configInput: {};
|
|
320
320
|
output: _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.AnyApiFactory, "core.api.factory", {}>;
|
|
@@ -328,7 +328,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
|
|
|
328
328
|
name: "form-decorators";
|
|
329
329
|
params: <TApi, TImpl extends TApi, TDeps extends { [name in string]: unknown; }>(params: _backstage_frontend_plugin_api.ApiFactory<TApi, TImpl, TDeps>) => _backstage_frontend_plugin_api.ExtensionBlueprintParams<_backstage_frontend_plugin_api.AnyApiFactory>;
|
|
330
330
|
}>;
|
|
331
|
-
"api:scaffolder/form-fields": _backstage_frontend_plugin_api.
|
|
331
|
+
"api:scaffolder/form-fields": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
332
332
|
config: {};
|
|
333
333
|
configInput: {};
|
|
334
334
|
output: _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.AnyApiFactory, "core.api.factory", {}>;
|
|
@@ -342,7 +342,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
|
|
|
342
342
|
name: "form-fields";
|
|
343
343
|
params: <TApi, TImpl extends TApi, TDeps extends { [name in string]: unknown; }>(params: _backstage_frontend_plugin_api.ApiFactory<TApi, TImpl, TDeps>) => _backstage_frontend_plugin_api.ExtensionBlueprintParams<_backstage_frontend_plugin_api.AnyApiFactory>;
|
|
344
344
|
}>;
|
|
345
|
-
"entity-icon-link:scaffolder/launch-template": _backstage_frontend_plugin_api.
|
|
345
|
+
"entity-icon-link:scaffolder/launch-template": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
346
346
|
kind: "entity-icon-link";
|
|
347
347
|
name: "launch-template";
|
|
348
348
|
config: {
|
|
@@ -366,7 +366,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
|
|
|
366
366
|
filter?: _backstage_plugin_catalog_react_alpha.EntityPredicate | ((entity: _backstage_catalog_model.Entity) => boolean);
|
|
367
367
|
};
|
|
368
368
|
}>;
|
|
369
|
-
"nav-item:scaffolder": _backstage_frontend_plugin_api.
|
|
369
|
+
"nav-item:scaffolder": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
370
370
|
kind: "nav-item";
|
|
371
371
|
name: undefined;
|
|
372
372
|
config: {};
|
|
@@ -383,7 +383,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
|
|
|
383
383
|
routeRef: _backstage_frontend_plugin_api.RouteRef<undefined>;
|
|
384
384
|
};
|
|
385
385
|
}>;
|
|
386
|
-
"page:scaffolder": _backstage_frontend_plugin_api.
|
|
386
|
+
"page:scaffolder": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
387
387
|
config: {
|
|
388
388
|
path: string | undefined;
|
|
389
389
|
};
|
|
@@ -408,7 +408,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
|
|
|
408
408
|
routeRef?: _backstage_frontend_plugin_api.RouteRef;
|
|
409
409
|
};
|
|
410
410
|
}>;
|
|
411
|
-
"scaffolder-form-field:scaffolder/entity-name-picker": _backstage_frontend_plugin_api.
|
|
411
|
+
"scaffolder-form-field:scaffolder/entity-name-picker": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
412
412
|
kind: "scaffolder-form-field";
|
|
413
413
|
name: "entity-name-picker";
|
|
414
414
|
config: {};
|
|
@@ -419,7 +419,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
|
|
|
419
419
|
field: () => Promise<_backstage_plugin_scaffolder_react_alpha.FormField>;
|
|
420
420
|
};
|
|
421
421
|
}>;
|
|
422
|
-
"scaffolder-form-field:scaffolder/entity-picker": _backstage_frontend_plugin_api.
|
|
422
|
+
"scaffolder-form-field:scaffolder/entity-picker": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
423
423
|
kind: "scaffolder-form-field";
|
|
424
424
|
name: "entity-picker";
|
|
425
425
|
config: {};
|
|
@@ -430,7 +430,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
|
|
|
430
430
|
field: () => Promise<_backstage_plugin_scaffolder_react_alpha.FormField>;
|
|
431
431
|
};
|
|
432
432
|
}>;
|
|
433
|
-
"scaffolder-form-field:scaffolder/entity-tags-picker": _backstage_frontend_plugin_api.
|
|
433
|
+
"scaffolder-form-field:scaffolder/entity-tags-picker": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
434
434
|
kind: "scaffolder-form-field";
|
|
435
435
|
name: "entity-tags-picker";
|
|
436
436
|
config: {};
|
|
@@ -441,7 +441,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
|
|
|
441
441
|
field: () => Promise<_backstage_plugin_scaffolder_react_alpha.FormField>;
|
|
442
442
|
};
|
|
443
443
|
}>;
|
|
444
|
-
"scaffolder-form-field:scaffolder/multi-entity-picker": _backstage_frontend_plugin_api.
|
|
444
|
+
"scaffolder-form-field:scaffolder/multi-entity-picker": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
445
445
|
kind: "scaffolder-form-field";
|
|
446
446
|
name: "multi-entity-picker";
|
|
447
447
|
config: {};
|
|
@@ -452,7 +452,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
|
|
|
452
452
|
field: () => Promise<_backstage_plugin_scaffolder_react_alpha.FormField>;
|
|
453
453
|
};
|
|
454
454
|
}>;
|
|
455
|
-
"scaffolder-form-field:scaffolder/my-groups-picker": _backstage_frontend_plugin_api.
|
|
455
|
+
"scaffolder-form-field:scaffolder/my-groups-picker": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
456
456
|
kind: "scaffolder-form-field";
|
|
457
457
|
name: "my-groups-picker";
|
|
458
458
|
config: {};
|
|
@@ -463,7 +463,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
|
|
|
463
463
|
field: () => Promise<_backstage_plugin_scaffolder_react_alpha.FormField>;
|
|
464
464
|
};
|
|
465
465
|
}>;
|
|
466
|
-
"scaffolder-form-field:scaffolder/owned-entity-picker": _backstage_frontend_plugin_api.
|
|
466
|
+
"scaffolder-form-field:scaffolder/owned-entity-picker": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
467
467
|
kind: "scaffolder-form-field";
|
|
468
468
|
name: "owned-entity-picker";
|
|
469
469
|
config: {};
|
|
@@ -474,7 +474,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
|
|
|
474
474
|
field: () => Promise<_backstage_plugin_scaffolder_react_alpha.FormField>;
|
|
475
475
|
};
|
|
476
476
|
}>;
|
|
477
|
-
"scaffolder-form-field:scaffolder/owner-picker": _backstage_frontend_plugin_api.
|
|
477
|
+
"scaffolder-form-field:scaffolder/owner-picker": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
478
478
|
kind: "scaffolder-form-field";
|
|
479
479
|
name: "owner-picker";
|
|
480
480
|
config: {};
|
|
@@ -485,7 +485,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
|
|
|
485
485
|
field: () => Promise<_backstage_plugin_scaffolder_react_alpha.FormField>;
|
|
486
486
|
};
|
|
487
487
|
}>;
|
|
488
|
-
"scaffolder-form-field:scaffolder/repo-branch-picker": _backstage_frontend_plugin_api.
|
|
488
|
+
"scaffolder-form-field:scaffolder/repo-branch-picker": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
489
489
|
kind: "scaffolder-form-field";
|
|
490
490
|
name: "repo-branch-picker";
|
|
491
491
|
config: {};
|
|
@@ -496,7 +496,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
|
|
|
496
496
|
field: () => Promise<_backstage_plugin_scaffolder_react_alpha.FormField>;
|
|
497
497
|
};
|
|
498
498
|
}>;
|
|
499
|
-
"scaffolder-form-field:scaffolder/repo-url-picker": _backstage_frontend_plugin_api.
|
|
499
|
+
"scaffolder-form-field:scaffolder/repo-url-picker": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
500
500
|
kind: "scaffolder-form-field";
|
|
501
501
|
name: "repo-url-picker";
|
|
502
502
|
config: {};
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
const showDirectoryPicker = window.showDirectoryPicker;
|
|
2
2
|
class WebFileAccess {
|
|
3
|
+
path;
|
|
4
|
+
handle;
|
|
3
5
|
constructor(path, handle) {
|
|
4
6
|
this.path = path;
|
|
5
7
|
this.handle = handle;
|
|
@@ -14,6 +16,7 @@ class WebFileAccess {
|
|
|
14
16
|
}
|
|
15
17
|
}
|
|
16
18
|
class WebDirectoryAccess {
|
|
19
|
+
handle;
|
|
17
20
|
constructor(handle) {
|
|
18
21
|
this.handle = handle;
|
|
19
22
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebFileSystemAccess.esm.js","sources":["../../../src/lib/filesystem/WebFileSystemAccess.ts"],"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 */\n\nimport { TemplateDirectoryAccess, TemplateFileAccess } from './types';\n\ntype WritableFileHandle = FileSystemFileHandle & {\n createWritable(): Promise<{\n write(data: string | Blob | BufferSource): Promise<void>;\n close(): Promise<void>;\n }>;\n};\n\n// A nicer type than the one from the TS lib\nexport interface IterableDirectoryHandle extends FileSystemDirectoryHandle {\n values(): AsyncIterable<\n | ({ kind: 'file' } & WritableFileHandle)\n | ({ kind: 'directory' } & IterableDirectoryHandle)\n >;\n}\n\nconst showDirectoryPicker = (window as any).showDirectoryPicker as\n | (() => Promise<IterableDirectoryHandle>)\n | undefined;\n\nclass WebFileAccess implements TemplateFileAccess {\n
|
|
1
|
+
{"version":3,"file":"WebFileSystemAccess.esm.js","sources":["../../../src/lib/filesystem/WebFileSystemAccess.ts"],"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 */\n\nimport { TemplateDirectoryAccess, TemplateFileAccess } from './types';\n\ntype WritableFileHandle = FileSystemFileHandle & {\n createWritable(): Promise<{\n write(data: string | Blob | BufferSource): Promise<void>;\n close(): Promise<void>;\n }>;\n};\n\n// A nicer type than the one from the TS lib\nexport interface IterableDirectoryHandle extends FileSystemDirectoryHandle {\n values(): AsyncIterable<\n | ({ kind: 'file' } & WritableFileHandle)\n | ({ kind: 'directory' } & IterableDirectoryHandle)\n >;\n}\n\nconst showDirectoryPicker = (window as any).showDirectoryPicker as\n | (() => Promise<IterableDirectoryHandle>)\n | undefined;\n\nclass WebFileAccess implements TemplateFileAccess {\n readonly path: string;\n private readonly handle: WritableFileHandle;\n\n constructor(path: string, handle: WritableFileHandle) {\n this.path = path;\n this.handle = handle;\n }\n\n file(): Promise<File> {\n return this.handle.getFile();\n }\n\n async save(data: string | Blob | BufferSource): Promise<void> {\n const writable = await this.handle.createWritable();\n await writable.write(data);\n await writable.close();\n }\n}\n\n/** @internal */\nexport class WebDirectoryAccess implements TemplateDirectoryAccess {\n private readonly handle: IterableDirectoryHandle;\n\n constructor(handle: IterableDirectoryHandle) {\n this.handle = handle;\n }\n\n async listFiles(): Promise<TemplateFileAccess[]> {\n const content = [];\n for await (const entry of this.listDirectoryContents(this.handle)) {\n content.push(entry);\n }\n return content;\n }\n\n private async *listDirectoryContents(\n dirHandle: IterableDirectoryHandle,\n basePath: string[] = [],\n ): AsyncIterable<TemplateFileAccess> {\n for await (const handle of dirHandle.values()) {\n if (handle.kind === 'file') {\n yield new WebFileAccess([...basePath, handle.name].join('/'), handle);\n } else if (handle.kind === 'directory') {\n // Skip git storage directory\n if (handle.name === '.git') {\n continue;\n }\n yield* this.listDirectoryContents(handle, [...basePath, handle.name]);\n }\n }\n }\n\n async createFile(options: { name: string; data: string }): Promise<void> {\n const { name, data } = options;\n let file: FileSystemFileHandle;\n\n // Current create template does not require support for nested directories\n if (name.includes('/')) {\n const [dir, path] = name.split('/');\n const handle = await this.handle.getDirectoryHandle(dir, {\n create: true,\n });\n file = await handle.getFileHandle(path, { create: true });\n } else {\n file = await this.handle.getFileHandle(name, {\n create: true,\n });\n }\n const writable = await file.createWritable();\n await writable.write(data);\n await writable.close();\n }\n}\n\n/** @internal */\nexport class WebFileSystemAccess {\n static isSupported(): boolean {\n return Boolean(showDirectoryPicker);\n }\n\n static fromHandle(handle: IterableDirectoryHandle) {\n return new WebDirectoryAccess(handle);\n }\n\n static async requestDirectoryAccess(): Promise<TemplateDirectoryAccess> {\n if (!showDirectoryPicker) {\n throw new Error('File system access is not supported');\n }\n const handle = await showDirectoryPicker();\n return new WebDirectoryAccess(handle);\n }\n\n private constructor() {}\n}\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@backstage/plugin-scaffolder",
|
|
3
|
-
"version": "1.34.
|
|
3
|
+
"version": "1.34.3",
|
|
4
4
|
"description": "The Backstage plugin that helps you create new things",
|
|
5
5
|
"backstage": {
|
|
6
6
|
"role": "frontend-plugin",
|
|
@@ -70,22 +70,22 @@
|
|
|
70
70
|
"test": "backstage-cli package test"
|
|
71
71
|
},
|
|
72
72
|
"dependencies": {
|
|
73
|
-
"@backstage/catalog-client": "^1.12.
|
|
74
|
-
"@backstage/catalog-model": "^1.7.
|
|
75
|
-
"@backstage/core-compat-api": "^0.5.
|
|
76
|
-
"@backstage/core-components": "^0.18.
|
|
77
|
-
"@backstage/core-plugin-api": "^1.
|
|
73
|
+
"@backstage/catalog-client": "^1.12.1",
|
|
74
|
+
"@backstage/catalog-model": "^1.7.6",
|
|
75
|
+
"@backstage/core-compat-api": "^0.5.4",
|
|
76
|
+
"@backstage/core-components": "^0.18.3",
|
|
77
|
+
"@backstage/core-plugin-api": "^1.12.0",
|
|
78
78
|
"@backstage/errors": "^1.2.7",
|
|
79
|
-
"@backstage/frontend-plugin-api": "^0.
|
|
80
|
-
"@backstage/integration": "^1.18.
|
|
81
|
-
"@backstage/integration-react": "^1.2.
|
|
82
|
-
"@backstage/plugin-catalog-common": "^1.1.
|
|
83
|
-
"@backstage/plugin-catalog-react": "^1.21.
|
|
84
|
-
"@backstage/plugin-permission-react": "^0.4.
|
|
85
|
-
"@backstage/plugin-scaffolder-common": "^1.7.
|
|
86
|
-
"@backstage/plugin-scaffolder-react": "^1.19.
|
|
79
|
+
"@backstage/frontend-plugin-api": "^0.13.0",
|
|
80
|
+
"@backstage/integration": "^1.18.2",
|
|
81
|
+
"@backstage/integration-react": "^1.2.12",
|
|
82
|
+
"@backstage/plugin-catalog-common": "^1.1.7",
|
|
83
|
+
"@backstage/plugin-catalog-react": "^1.21.3",
|
|
84
|
+
"@backstage/plugin-permission-react": "^0.4.38",
|
|
85
|
+
"@backstage/plugin-scaffolder-common": "^1.7.3",
|
|
86
|
+
"@backstage/plugin-scaffolder-react": "^1.19.3",
|
|
87
87
|
"@backstage/plugin-techdocs-common": "^0.1.1",
|
|
88
|
-
"@backstage/plugin-techdocs-react": "^1.3.
|
|
88
|
+
"@backstage/plugin-techdocs-react": "^1.3.5",
|
|
89
89
|
"@backstage/types": "^1.2.2",
|
|
90
90
|
"@codemirror/language": "^6.0.0",
|
|
91
91
|
"@codemirror/legacy-modes": "^6.1.0",
|
|
@@ -118,13 +118,13 @@
|
|
|
118
118
|
"zod-to-json-schema": "^3.20.4"
|
|
119
119
|
},
|
|
120
120
|
"devDependencies": {
|
|
121
|
-
"@backstage/cli": "^0.34.
|
|
122
|
-
"@backstage/core-app-api": "^1.19.
|
|
123
|
-
"@backstage/dev-utils": "^1.1.
|
|
124
|
-
"@backstage/plugin-catalog": "^1.
|
|
125
|
-
"@backstage/plugin-permission-common": "^0.9.
|
|
126
|
-
"@backstage/plugin-techdocs": "^1.
|
|
127
|
-
"@backstage/test-utils": "^1.7.
|
|
121
|
+
"@backstage/cli": "^0.34.5",
|
|
122
|
+
"@backstage/core-app-api": "^1.19.2",
|
|
123
|
+
"@backstage/dev-utils": "^1.1.17",
|
|
124
|
+
"@backstage/plugin-catalog": "^1.32.0",
|
|
125
|
+
"@backstage/plugin-permission-common": "^0.9.3",
|
|
126
|
+
"@backstage/plugin-techdocs": "^1.16.0",
|
|
127
|
+
"@backstage/test-utils": "^1.7.13",
|
|
128
128
|
"@testing-library/dom": "^10.0.0",
|
|
129
129
|
"@testing-library/jest-dom": "^6.0.0",
|
|
130
130
|
"@testing-library/react": "^16.0.0",
|