@cratis/scene.react 4.19.0 → 4.21.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.
Files changed (53) hide show
  1. package/NavBar/extractNavigationItem.ts +13 -3
  2. package/core/CoreToolbar.tsx +153 -0
  3. package/core/coreComponents.ts +3 -0
  4. package/core/corePackage.ts +2 -0
  5. package/core/index.ts +1 -0
  6. package/dist/cjs/NavBar/extractNavigationItem.js +12 -3
  7. package/dist/cjs/NavBar/extractNavigationItem.js.map +1 -1
  8. package/dist/cjs/core/CoreToolbar.js +183 -0
  9. package/dist/cjs/core/CoreToolbar.js.map +1 -0
  10. package/dist/cjs/core/coreComponents.js +4 -1
  11. package/dist/cjs/core/coreComponents.js.map +1 -1
  12. package/dist/cjs/core/corePackage.js +3 -1
  13. package/dist/cjs/core/corePackage.js.map +1 -1
  14. package/dist/cjs/index.js +8 -0
  15. package/dist/cjs/index.js.map +1 -1
  16. package/dist/cjs/packages/loadApprovedPackages.js +122 -0
  17. package/dist/cjs/packages/loadApprovedPackages.js.map +1 -0
  18. package/dist/esm/NavBar/extractNavigationItem.d.ts.map +1 -1
  19. package/dist/esm/NavBar/extractNavigationItem.js +12 -3
  20. package/dist/esm/NavBar/extractNavigationItem.js.map +1 -1
  21. package/dist/esm/core/CoreToolbar.d.ts +8 -0
  22. package/dist/esm/core/CoreToolbar.d.ts.map +1 -0
  23. package/dist/esm/core/CoreToolbar.js +178 -0
  24. package/dist/esm/core/CoreToolbar.js.map +1 -0
  25. package/dist/esm/core/coreComponents.d.ts.map +1 -1
  26. package/dist/esm/core/coreComponents.js +4 -1
  27. package/dist/esm/core/coreComponents.js.map +1 -1
  28. package/dist/esm/core/corePackage.d.ts.map +1 -1
  29. package/dist/esm/core/corePackage.js +3 -1
  30. package/dist/esm/core/corePackage.js.map +1 -1
  31. package/dist/esm/core/index.d.ts +1 -0
  32. package/dist/esm/core/index.d.ts.map +1 -1
  33. package/dist/esm/core/index.js +1 -0
  34. package/dist/esm/core/index.js.map +1 -1
  35. package/dist/esm/index.js +2 -0
  36. package/dist/esm/index.js.map +1 -1
  37. package/dist/esm/packages/ApprovedPackageSet.d.ts +16 -0
  38. package/dist/esm/packages/ApprovedPackageSet.d.ts.map +1 -0
  39. package/dist/esm/packages/ApprovedPackageSet.js +2 -0
  40. package/dist/esm/packages/ApprovedPackageSet.js.map +1 -0
  41. package/dist/esm/packages/index.d.ts +2 -0
  42. package/dist/esm/packages/index.d.ts.map +1 -1
  43. package/dist/esm/packages/index.js +2 -0
  44. package/dist/esm/packages/index.js.map +1 -1
  45. package/dist/esm/packages/loadApprovedPackages.d.ts +18 -0
  46. package/dist/esm/packages/loadApprovedPackages.d.ts.map +1 -0
  47. package/dist/esm/packages/loadApprovedPackages.js +119 -0
  48. package/dist/esm/packages/loadApprovedPackages.js.map +1 -0
  49. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  50. package/package.json +5 -5
  51. package/packages/ApprovedPackageSet.ts +37 -0
  52. package/packages/index.ts +2 -0
  53. package/packages/loadApprovedPackages.ts +143 -0
@@ -1,3 +1,4 @@
1
+ export * from './ApprovedPackageSet';
1
2
  export * from './DesignTimeAction';
2
3
  export * from './DesignTimeActionOutcome';
3
4
  export * from './DesignTimeActionState';
@@ -12,6 +13,7 @@ export * from './DesignTimeProvider';
12
13
  export * from './DesignTimeResolution';
13
14
  export * from '../navigation';
14
15
  export * from './EmbeddedPackageHost';
16
+ export * from './loadApprovedPackages';
15
17
  export * from './loadDesignTimeContributions';
16
18
  export * from './isNetworkAsset';
17
19
  export * from './PackageHostAssets';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../packages/index.ts"],"names":[],"mappings":"AAGA,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kCAAkC,CAAC;AACjD,cAAc,iCAAiC,CAAC;AAChD,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../packages/index.ts"],"names":[],"mappings":"AAGA,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kCAAkC,CAAC;AACjD,cAAc,iCAAiC,CAAC;AAChD,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC"}
@@ -1,3 +1,4 @@
1
+ export * from './ApprovedPackageSet';
1
2
  export * from './DesignTimeAction';
2
3
  export * from './DesignTimeActionOutcome';
3
4
  export * from './DesignTimeActionState';
@@ -12,6 +13,7 @@ export * from './DesignTimeProvider';
12
13
  export * from './DesignTimeResolution';
13
14
  export * from '../navigation';
14
15
  export * from './EmbeddedPackageHost';
16
+ export * from './loadApprovedPackages';
15
17
  export * from './loadDesignTimeContributions';
16
18
  export * from './isNetworkAsset';
17
19
  export * from './PackageHostAssets';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../packages/index.ts"],"names":[],"mappings":"AAGA,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kCAAkC,CAAC;AACjD,cAAc,iCAAiC,CAAC;AAChD,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../packages/index.ts"],"names":[],"mappings":"AAGA,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kCAAkC,CAAC;AACjD,cAAc,iCAAiC,CAAC;AAChD,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { ApprovedPackageSet } from './ApprovedPackageSet';
2
+ import { PackageHostConfiguration, ResolvedPackageHost } from './PackageHostConfiguration';
3
+ import { ScenePackageBundle } from './ScenePackageBundle';
4
+ export type ApprovedPackageImporters = Record<string, () => Promise<Record<string, unknown>>>;
5
+ export interface LoadedApprovedPackages {
6
+ bundles: ScenePackageBundle[];
7
+ diagnostics: string[];
8
+ }
9
+ export declare function loadApprovedPackages(set: ApprovedPackageSet, importers: ApprovedPackageImporters, policy: {
10
+ allowExecutableImports: boolean;
11
+ }): Promise<LoadedApprovedPackages>;
12
+ export interface ApprovedPackageHostConfiguration extends Omit<PackageHostConfiguration, 'bundles'> {
13
+ bundles: ScenePackageBundle[];
14
+ packageSet: ApprovedPackageSet;
15
+ importers: ApprovedPackageImporters;
16
+ }
17
+ export declare function resolveApprovedPackageHost(configuration: ApprovedPackageHostConfiguration): Promise<ResolvedPackageHost>;
18
+ //# sourceMappingURL=loadApprovedPackages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadApprovedPackages.d.ts","sourceRoot":"","sources":["../../../packages/loadApprovedPackages.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAsB,MAAM,4BAA4B,CAAC;AAC/G,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAS1D,MAAM,MAAM,wBAAwB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AAG9F,MAAM,WAAW,sBAAsB;IAEnC,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAG9B,WAAW,EAAE,MAAM,EAAE,CAAC;CACzB;AAWD,wBAAsB,oBAAoB,CACtC,GAAG,EAAE,kBAAkB,EACvB,SAAS,EAAE,wBAAwB,EACnC,MAAM,EAAE;IAAE,sBAAsB,EAAE,OAAO,CAAA;CAAE,GAC5C,OAAO,CAAC,sBAAsB,CAAC,CA0CjC;AAsBD,MAAM,WAAW,gCAAiC,SAAQ,IAAI,CAAC,wBAAwB,EAAE,SAAS,CAAC;IAE/F,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAG9B,UAAU,EAAE,kBAAkB,CAAC;IAG/B,SAAS,EAAE,wBAAwB,CAAC;CACvC;AAOD,wBAAsB,0BAA0B,CAAC,aAAa,EAAE,gCAAgC,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAwB9H"}
@@ -0,0 +1,119 @@
1
+ import { resolvePackageHost } from './PackageHostConfiguration.js';
2
+
3
+ // Copyright (c) Cratis. All rights reserved.
4
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
5
+ /**
6
+ * Loads the runtime bundles of an approved package set through the host's importers.
7
+ *
8
+ * Nothing executes unless the host's policy allows executable imports. A package whose module cannot be imported,
9
+ * lacks its declared export, or whose bundle manifest differs from the declaration (name, version, components,
10
+ * layouts, templates, themes) contributes nothing and is reported - the declaration planning used and the code
11
+ * running must be the same package. Packages load in ordinal name order, so the result does not depend on the
12
+ * order the set was written in.
13
+ */ async function loadApprovedPackages(set, importers, policy) {
14
+ const bundles = [];
15
+ const diagnostics = [];
16
+ const ordered = [
17
+ ...set.packages
18
+ ].sort((a, b)=>a.manifest.name < b.manifest.name ? -1 : a.manifest.name > b.manifest.name ? 1 : 0);
19
+ for (const { manifest, module } of ordered){
20
+ const label = `Package '${manifest.name}'`;
21
+ if (!policy.allowExecutableImports) {
22
+ diagnostics.push(`${label} brings executable code from '${module.npm}', but host policy forbids executable imports`);
23
+ continue;
24
+ }
25
+ const importer = Object.prototype.hasOwnProperty.call(importers, module.npm) ? importers[module.npm] : undefined;
26
+ if (!importer) {
27
+ diagnostics.push(`${label} is imported from '${module.npm}', which this host's build does not include`);
28
+ continue;
29
+ }
30
+ let loaded;
31
+ try {
32
+ loaded = await importer();
33
+ } catch (error) {
34
+ diagnostics.push(`${label} could not be loaded from '${module.npm}': ${error instanceof Error ? error.message : String(error)}`);
35
+ continue;
36
+ }
37
+ const bundle = loaded[module.export];
38
+ if (!bundle || typeof bundle !== 'object' || !bundle.manifest || !bundle.components) {
39
+ diagnostics.push(`${label} expects '${module.npm}' to export a package bundle named '${module.export}', which it does not`);
40
+ continue;
41
+ }
42
+ const mismatches = declarationMismatches(manifest, bundle);
43
+ if (mismatches.length > 0) {
44
+ diagnostics.push(...mismatches.map((mismatch)=>`${label} does not match the bundle '${module.export}' of '${module.npm}': ${mismatch}`));
45
+ continue;
46
+ }
47
+ bundles.push(bundle);
48
+ }
49
+ return {
50
+ bundles,
51
+ diagnostics
52
+ };
53
+ }
54
+ function declarationMismatches(declared, bundle) {
55
+ const actual = bundle.manifest;
56
+ const mismatches = [];
57
+ if (actual.name !== declared.name) mismatches.push(`the bundle is named '${actual.name}'`);
58
+ if (actual.version !== declared.version) mismatches.push(`the set declares version ${declared.version} but the bundle is ${actual.version}`);
59
+ if (actual.kind !== declared.kind) mismatches.push(`the set declares kind ${declared.kind} but the bundle is ${actual.kind}`);
60
+ const lists = [
61
+ 'components',
62
+ 'layouts',
63
+ 'screenTemplates',
64
+ 'dialogTemplates',
65
+ 'themes'
66
+ ];
67
+ for (const list of lists){
68
+ const expected = [
69
+ ...declared[list] ?? []
70
+ ].sort();
71
+ const found = [
72
+ ...actual[list] ?? []
73
+ ].sort();
74
+ if (expected.join('\u0000') !== found.join('\u0000')) {
75
+ mismatches.push(`the set declares ${list} [${expected.join(', ')}] but the bundle declares [${found.join(', ')}]`);
76
+ }
77
+ }
78
+ return mismatches;
79
+ }
80
+ /**
81
+ * Loads the approved package set and resolves the effective profile over the built-in and approved bundles in one
82
+ * step. Packages that failed to load are reported in the result's `diagnostics` and block the host, so a profile
83
+ * is never rendered with a silently missing package.
84
+ */ async function resolveApprovedPackageHost(configuration) {
85
+ const { packageSet, importers, ...rest } = configuration;
86
+ const loaded = await loadApprovedPackages(packageSet, importers, configuration.policy);
87
+ const host = resolvePackageHost({
88
+ ...rest,
89
+ bundles: [
90
+ ...configuration.bundles,
91
+ ...loaded.bundles
92
+ ]
93
+ });
94
+ if (loaded.diagnostics.length === 0) {
95
+ return host;
96
+ }
97
+ return {
98
+ ...host,
99
+ bundles: [],
100
+ components: {},
101
+ layouts: [],
102
+ screenTemplates: [],
103
+ dialogTemplates: [],
104
+ themes: [],
105
+ layout: undefined,
106
+ theme: undefined,
107
+ templates: [],
108
+ assets: [],
109
+ fonts: [],
110
+ blocked: true,
111
+ diagnostics: [
112
+ ...loaded.diagnostics,
113
+ ...host.diagnostics
114
+ ]
115
+ };
116
+ }
117
+
118
+ export { loadApprovedPackages, resolveApprovedPackageHost };
119
+ //# sourceMappingURL=loadApprovedPackages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadApprovedPackages.js","sources":["../../../packages/loadApprovedPackages.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { ApprovedPackageSet } from './ApprovedPackageSet';\nimport { PackageHostConfiguration, ResolvedPackageHost, resolvePackageHost } from './PackageHostConfiguration';\nimport { ScenePackageBundle } from './ScenePackageBundle';\n\n/**\n * How a host loads the modules of an approved package set: one loader per npm package name the set may import.\n *\n * A bundler resolves imports at build time, so the host lists them as literal `import()` calls\n * (`{ '@acme/scene.charts': () => import('@acme/scene.charts') }`). A set naming a module the host's build does\n * not include is a diagnostic, never an attempt to load an arbitrary specifier.\n */\nexport type ApprovedPackageImporters = Record<string, () => Promise<Record<string, unknown>>>;\n\n/** The outcome of loading an approved package set. */\nexport interface LoadedApprovedPackages {\n /** The bundles that loaded and match what the set declared, in ordinal package-name order. */\n bundles: ScenePackageBundle[];\n\n /** Every reason a package was not loaded or does not match its declaration. */\n diagnostics: string[];\n}\n\n/**\n * Loads the runtime bundles of an approved package set through the host's importers.\n *\n * Nothing executes unless the host's policy allows executable imports. A package whose module cannot be imported,\n * lacks its declared export, or whose bundle manifest differs from the declaration (name, version, components,\n * layouts, templates, themes) contributes nothing and is reported - the declaration planning used and the code\n * running must be the same package. Packages load in ordinal name order, so the result does not depend on the\n * order the set was written in.\n */\nexport async function loadApprovedPackages(\n set: ApprovedPackageSet,\n importers: ApprovedPackageImporters,\n policy: { allowExecutableImports: boolean },\n): Promise<LoadedApprovedPackages> {\n const bundles: ScenePackageBundle[] = [];\n const diagnostics: string[] = [];\n const ordered = [...set.packages].sort((a, b) => (a.manifest.name < b.manifest.name ? -1 : a.manifest.name > b.manifest.name ? 1 : 0));\n\n for (const { manifest, module } of ordered) {\n const label = `Package '${manifest.name}'`;\n if (!policy.allowExecutableImports) {\n diagnostics.push(`${label} brings executable code from '${module.npm}', but host policy forbids executable imports`);\n continue;\n }\n\n const importer = Object.prototype.hasOwnProperty.call(importers, module.npm) ? importers[module.npm] : undefined;\n if (!importer) {\n diagnostics.push(`${label} is imported from '${module.npm}', which this host's build does not include`);\n continue;\n }\n\n let loaded: Record<string, unknown>;\n try {\n loaded = await importer();\n } catch (error) {\n diagnostics.push(`${label} could not be loaded from '${module.npm}': ${error instanceof Error ? error.message : String(error)}`);\n continue;\n }\n\n const bundle = loaded[module.export] as ScenePackageBundle | undefined;\n if (!bundle || typeof bundle !== 'object' || !bundle.manifest || !bundle.components) {\n diagnostics.push(`${label} expects '${module.npm}' to export a package bundle named '${module.export}', which it does not`);\n continue;\n }\n\n const mismatches = declarationMismatches(manifest, bundle);\n if (mismatches.length > 0) {\n diagnostics.push(...mismatches.map(mismatch => `${label} does not match the bundle '${module.export}' of '${module.npm}': ${mismatch}`));\n continue;\n }\n\n bundles.push(bundle);\n }\n\n return { bundles, diagnostics };\n}\n\nfunction declarationMismatches(declared: ApprovedPackageSet['packages'][number]['manifest'], bundle: ScenePackageBundle): string[] {\n const actual = bundle.manifest;\n const mismatches: string[] = [];\n if (actual.name !== declared.name) mismatches.push(`the bundle is named '${actual.name}'`);\n if (actual.version !== declared.version) mismatches.push(`the set declares version ${declared.version} but the bundle is ${actual.version}`);\n if (actual.kind !== declared.kind) mismatches.push(`the set declares kind ${declared.kind} but the bundle is ${actual.kind}`);\n\n const lists = ['components', 'layouts', 'screenTemplates', 'dialogTemplates', 'themes'] as const;\n for (const list of lists) {\n const expected = [...(declared[list] ?? [])].sort();\n const found = [...(actual[list] ?? [])].sort();\n if (expected.join('\\u0000') !== found.join('\\u0000')) {\n mismatches.push(`the set declares ${list} [${expected.join(', ')}] but the bundle declares [${found.join(', ')}]`);\n }\n }\n\n return mismatches;\n}\n\n/** An approved package set and the importers that load it, resolved together with the built-in bundles. */\nexport interface ApprovedPackageHostConfiguration extends Omit<PackageHostConfiguration, 'bundles'> {\n /** The bundles the host ships. */\n bundles: ScenePackageBundle[];\n\n /** The custom packages the host approved. */\n packageSet: ApprovedPackageSet;\n\n /** The importers for the set's modules. */\n importers: ApprovedPackageImporters;\n}\n\n/**\n * Loads the approved package set and resolves the effective profile over the built-in and approved bundles in one\n * step. Packages that failed to load are reported in the result's `diagnostics` and block the host, so a profile\n * is never rendered with a silently missing package.\n */\nexport async function resolveApprovedPackageHost(configuration: ApprovedPackageHostConfiguration): Promise<ResolvedPackageHost> {\n const { packageSet, importers, ...rest } = configuration;\n const loaded = await loadApprovedPackages(packageSet, importers, configuration.policy);\n const host = resolvePackageHost({ ...rest, bundles: [...configuration.bundles, ...loaded.bundles] });\n if (loaded.diagnostics.length === 0) {\n return host;\n }\n\n return {\n ...host,\n bundles: [],\n components: {},\n layouts: [],\n screenTemplates: [],\n dialogTemplates: [],\n themes: [],\n layout: undefined,\n theme: undefined,\n templates: [],\n assets: [],\n fonts: [],\n blocked: true,\n diagnostics: [...loaded.diagnostics, ...host.diagnostics],\n };\n}\n"],"names":["loadApprovedPackages","set","importers","policy","bundles","diagnostics","ordered","packages","sort","a","b","manifest","name","module","label","allowExecutableImports","push","npm","importer","Object","prototype","hasOwnProperty","call","undefined","loaded","error","Error","message","String","bundle","export","components","mismatches","declarationMismatches","length","map","mismatch","declared","actual","version","kind","lists","list","expected","found","join","resolveApprovedPackageHost","configuration","packageSet","rest","host","resolvePackageHost","layouts","screenTemplates","dialogTemplates","themes","layout","theme","templates","assets","fonts","blocked"],"mappings":"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"}