@yugoo-design/dsh-design-studio 0.2.0 → 0.2.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/README.md CHANGED
@@ -21,6 +21,14 @@ Unfinished methods, missing dependencies and empty Kit membership can be saved;
21
21
  loading or previewing reports the actual missing/invalid definition. A missing
22
22
  installed catalog does not prevent reopening and editing retained local files.
23
23
 
24
+ Kit authoring can discover its saved mount bindings and read their current source
25
+ through `readMountedBundle({id, expectedRevision, bindingKey, paths?})`. Omit
26
+ `paths` to list files; selected text reads share the existing source size/path
27
+ guards. The existing mount resolver uses current local Bundle content or retained
28
+ imported sources. These reads neither copy Bundles into Kit files nor grant write
29
+ access to them. The scoped authoring capability exposes the same read as
30
+ `read({mount:{bindingKey, paths?}})`; ordinary reads discover file and mount names.
31
+
24
32
  `prepareChanges` returns a bounded multi-file source diff, candidate digest and
25
33
  validation/preview diagnostics without saving. `saveChanges` defaults to `draft`:
26
34
  it saves incomplete authoring source using the repository lock and atomic record
package/lib/node.d.ts CHANGED
@@ -250,6 +250,34 @@ interface StudioInstanceReadFile {
250
250
  readonly path: string;
251
251
  readonly content: string;
252
252
  }
253
+ type StudioSourceReadFile = {
254
+ readonly path: string;
255
+ readonly exists: false;
256
+ } | {
257
+ readonly path: string;
258
+ readonly exists: true;
259
+ readonly content: string;
260
+ };
261
+ interface StudioSourceFileInfo {
262
+ readonly path: string;
263
+ readonly bytes: number;
264
+ readonly readable: boolean;
265
+ }
266
+ interface StudioMountedBundleReadRequest extends StudioInstanceRevision {
267
+ readonly bindingKey: string;
268
+ /** Omit to discover files without reading their content. */
269
+ readonly paths?: readonly string[];
270
+ }
271
+ interface StudioMountedBundleRead {
272
+ readonly id: string;
273
+ readonly revision: number;
274
+ readonly bindingKey: string;
275
+ readonly bundle: DesignBundleVersionPin;
276
+ readonly sourceId: string;
277
+ readonly readOnly: true;
278
+ readonly availableFiles: readonly StudioSourceFileInfo[];
279
+ readonly files: readonly StudioSourceReadFile[];
280
+ }
253
281
  interface StudioInstanceImportRequest {
254
282
  readonly kind: 'kit' | 'bundle';
255
283
  readonly files: readonly StudioSourceEntry[];
@@ -277,8 +305,10 @@ interface StudioInstances {
277
305
  read(input: string | {
278
306
  readonly id: string;
279
307
  }): Promise<StudioInstanceDescription>;
308
+ /** Metadata-only discovery may omit readiness validation; loading still checks definitions. */
280
309
  list(input?: {
281
310
  readonly kind?: 'kit' | 'bundle';
311
+ readonly includeReadiness?: boolean;
282
312
  }): Promise<readonly StudioInstanceDescription[]>;
283
313
  listBundles(): Promise<readonly StudioInstanceBundleChoice[]>;
284
314
  copy(input: StudioInstanceCopyRequest): Promise<StudioInstanceDescription>;
@@ -294,6 +324,7 @@ interface StudioInstances {
294
324
  readonly id: string;
295
325
  readonly path: string;
296
326
  }): Promise<StudioInstanceReadFile>;
327
+ readMountedBundle(input: StudioMountedBundleReadRequest): Promise<StudioMountedBundleRead>;
297
328
  saveFile(input: StudioInstanceRevision & {
298
329
  readonly path: string;
299
330
  readonly content: string;
@@ -339,6 +370,7 @@ interface StudioAuthoringRecord {
339
370
  readonly editable: boolean;
340
371
  }[];
341
372
  readonly mounts?: readonly {
373
+ readonly bindingKey?: string;
342
374
  readonly bundle: DesignBundleVersionPin;
343
375
  }[];
344
376
  }
@@ -352,6 +384,7 @@ interface StudioAuthoringOptions {
352
384
  readonly id: string;
353
385
  readonly path: string;
354
386
  }): Promise<StudioInstanceReadFile>;
387
+ readMountedBundle?(input: StudioMountedBundleReadRequest): Promise<StudioMountedBundleRead>;
355
388
  prepareChanges(input: StudioInstanceChangeRequest): Promise<StudioInstanceCandidate>;
356
389
  };
357
390
  readonly readComponents: () => StudioAwaitable<StudioAuthoringComponentCatalog>;
@@ -359,20 +392,24 @@ interface StudioAuthoringOptions {
359
392
  type StudioAuthoringReplacement = StudioInstanceFileChange & {
360
393
  readonly content: string;
361
394
  };
362
- interface StudioAuthoring {
363
- read(input?: {
395
+ interface StudioAuthoringRead {
396
+ readonly paths?: readonly string[];
397
+ readonly mount?: {
398
+ readonly bindingKey: string;
364
399
  readonly paths?: readonly string[];
365
- }): Promise<{
400
+ };
401
+ }
402
+ interface StudioAuthoring {
403
+ read(input?: StudioAuthoringRead): Promise<{
366
404
  readonly scope: StudioAuthoringScope;
367
- readonly files: readonly ({
368
- readonly path: string;
369
- readonly exists: false;
370
- } | {
371
- readonly path: string;
372
- readonly exists: true;
373
- readonly content: string;
374
- })[];
405
+ readonly files: readonly StudioSourceReadFile[];
375
406
  readonly components: StudioAuthoringComponentCatalog;
407
+ readonly availableFiles?: readonly StudioSourceFileInfo[];
408
+ readonly mounts?: readonly {
409
+ readonly bindingKey?: string;
410
+ readonly bundle: DesignBundleVersionPin;
411
+ }[];
412
+ readonly mountedBundle?: Omit<StudioMountedBundleRead, 'files'>;
376
413
  }>;
377
414
  prepare(input: {
378
415
  readonly changes: readonly StudioAuthoringReplacement[];
@@ -397,4 +434,4 @@ declare function createStudioInstanceAdapters(trusted: StudioInstanceTrustedCapt
397
434
  //#region src/node/studio-authoring.d.mts
398
435
  declare function createStudioAuthoring(options: StudioAuthoringOptions): StudioAuthoring;
399
436
  //#endregion
400
- export { type StudioAuthoring, type StudioAuthoringComponentCatalog, type StudioAuthoringOptions, type StudioAuthoringRecord, type StudioAuthoringReplacement, type StudioAuthoringScope, type StudioAwaitable, type StudioBundleCapture, type StudioBundleResolver, type StudioDisplayTitle, type StudioInstalledKitCapture, type StudioInstalledStorageOptions, type StudioInstanceAdapters, type StudioInstanceArchiveRequest, type StudioInstanceBundleChoice, type StudioInstanceCatalog, type StudioInstanceComposition, type StudioInstanceContent, type StudioInstanceCopyRequest, type StudioInstanceDescription, type StudioInstanceDraftPorts, type StudioInstanceImportRequest, type StudioInstanceMount, type StudioInstancePreviewInput, type StudioInstanceReadFile, type StudioInstanceRepository, type StudioInstanceRevision, type StudioInstanceStoredRecord, type StudioInstanceTransaction, type StudioInstanceTrustedCaptures, type StudioInstances, type StudioInstancesOptions, type StudioKitCompositionInput, type StudioNodeDraftSources, type StudioNodeStorageOptions, type StudioPanelDraftPorts, type StudioRetainedSource, type StudioSourceEntry, createStudioAuthoring, createStudioDraftPorts, createStudioInstanceAdapters, createStudioInstances };
437
+ export { type StudioAuthoring, type StudioAuthoringComponentCatalog, type StudioAuthoringOptions, type StudioAuthoringRead, type StudioAuthoringRecord, type StudioAuthoringReplacement, type StudioAuthoringScope, type StudioAwaitable, type StudioBundleCapture, type StudioBundleResolver, type StudioDisplayTitle, type StudioInstalledKitCapture, type StudioInstalledStorageOptions, type StudioInstanceAdapters, type StudioInstanceArchiveRequest, type StudioInstanceBundleChoice, type StudioInstanceCatalog, type StudioInstanceComposition, type StudioInstanceContent, type StudioInstanceCopyRequest, type StudioInstanceDescription, type StudioInstanceDraftPorts, type StudioInstanceImportRequest, type StudioInstanceMount, type StudioInstancePreviewInput, type StudioInstanceReadFile, type StudioInstanceRepository, type StudioInstanceRevision, type StudioInstanceStoredRecord, type StudioInstanceTransaction, type StudioInstanceTrustedCaptures, type StudioInstances, type StudioInstancesOptions, type StudioKitCompositionInput, type StudioMountedBundleRead, type StudioMountedBundleReadRequest, type StudioNodeDraftSources, type StudioNodeStorageOptions, type StudioPanelDraftPorts, type StudioRetainedSource, type StudioSourceEntry, type StudioSourceFileInfo, type StudioSourceReadFile, createStudioAuthoring, createStudioDraftPorts, createStudioInstanceAdapters, createStudioInstances };
package/lib/node.js CHANGED
@@ -765,6 +765,7 @@ async function createStudioInstances(options) {
765
765
  sourceId: current.sourceId
766
766
  };
767
767
  if (currentLibrary && selected.bundle.version !== requested.version) return catalog.captureBundle(pin(requested));
768
+ if (!selected.bundle.source?.snapshot) throw new Error(`Mounted Bundle source is unavailable for ${selected.bindingKey}.`);
768
769
  return {
769
770
  files: await entriesOf(selected.bundle.source.snapshot),
770
771
  sourceId: selected.bundle.source.sourceId
@@ -985,6 +986,68 @@ async function createStudioInstances(options) {
985
986
  };
986
987
  return {
987
988
  read,
989
+ async readMountedBundle({ id, expectedRevision, bindingKey, paths = [] }) {
990
+ if (!Array.isArray(paths)) throw new Error("Select an exact list of mounted Bundle source paths.");
991
+ const request = paths.length ? normalizeStudioInstanceChanges({
992
+ id,
993
+ expectedRevision,
994
+ changes: paths.map((path) => ({
995
+ path,
996
+ content: ""
997
+ }))
998
+ }) : {
999
+ id,
1000
+ expectedRevision,
1001
+ changes: []
1002
+ };
1003
+ const selectedKey = runtimeNameOf(bindingKey);
1004
+ return repository.transaction(async (tx) => {
1005
+ const record = modern(await tx.read(request.id));
1006
+ checkRevision(record, request.expectedRevision);
1007
+ if (record.kind !== "kit") throw new Error("Select a Kit to read its mounted Bundles.");
1008
+ const mount = record.mounts.find((item) => item.bindingKey === selectedKey);
1009
+ if (!mount) throw new Error("Select a Bundle mounted by this Kit; read the mounts first.");
1010
+ const captured = await resolveMounts(record.mounts, record.current === true)(mount.bundle);
1011
+ const entries = new Map(captured.files.map((file) => [file.path, file]));
1012
+ const availableFiles = captured.files.map((file) => {
1013
+ const bytes = Buffer.byteLength(file.base64, "base64");
1014
+ let readable = bytes <= MAX_TEXT;
1015
+ try {
1016
+ decode$1(file.base64);
1017
+ } catch {
1018
+ readable = false;
1019
+ }
1020
+ return {
1021
+ path: file.path,
1022
+ bytes,
1023
+ readable
1024
+ };
1025
+ }).sort((a, b) => a.path.localeCompare(b.path));
1026
+ const selected = request.changes.map(({ path }) => ({
1027
+ path,
1028
+ file: entries.get(path)
1029
+ }));
1030
+ if (selected.some(({ path, file }) => file && !availableFiles.find((info) => info.path === path).readable)) throw new Error("Mounted Bundle source must be UTF-8 text of at most 1 MiB per file.");
1031
+ if (selected.reduce((bytes, { file }) => bytes + (file ? Buffer.byteLength(file.base64, "base64") : 0), 0) > STUDIO_INSTANCE_CHANGE_LIMITS.totalBytes) throw new Error("Mounted Bundle read exceeds the 4 MiB text budget; select fewer paths.");
1032
+ return {
1033
+ id: record.id,
1034
+ revision: record.revision,
1035
+ bindingKey: mount.bindingKey,
1036
+ bundle: pin(mount.bundle),
1037
+ sourceId: captured.sourceId,
1038
+ readOnly: true,
1039
+ availableFiles,
1040
+ files: selected.map(({ path, file }) => file ? {
1041
+ path,
1042
+ exists: true,
1043
+ content: decode$1(file.base64)
1044
+ } : {
1045
+ path,
1046
+ exists: false
1047
+ })
1048
+ };
1049
+ });
1050
+ },
988
1051
  async captureKit({ id, expectedRevision } = {}) {
989
1052
  return repository.transaction(async (tx) => {
990
1053
  const record = modern(await tx.read(id));
@@ -1117,13 +1180,13 @@ async function createStudioInstances(options) {
1117
1180
  changeReceipt: receipt
1118
1181
  };
1119
1182
  },
1120
- async list({ kind } = {}) {
1183
+ async list({ kind, includeReadiness = true } = {}) {
1121
1184
  if (kind !== void 0 && !["kit", "bundle"].includes(kind)) throw new Error("Unknown instance kind.");
1122
1185
  const records = await repository.list();
1123
1186
  return Promise.all(records.filter((record) => !record.deletedAt && (!kind || record.kind === kind)).map(async (record) => ({
1124
1187
  ...projection(record, records),
1125
1188
  ...await displayCopy(record),
1126
- ...await readiness(record)
1189
+ ...includeReadiness ? await readiness(record) : {}
1127
1190
  })));
1128
1191
  },
1129
1192
  async listBundles() {
@@ -2020,10 +2083,12 @@ function createStudioInstanceAdapters(trusted) {
2020
2083
  *
2021
2084
  * The host authenticates and binds the native invocation before constructing this
2022
2085
  * adapter. Scope is never a model argument. Pass only the existing instance
2023
- * read/readFile/prepareChanges ports and a same-build component catalog reader
2086
+ * read/readFile/readMountedBundle/prepareChanges ports and a same-build component catalog reader
2024
2087
  * returning the JSON projection used by design_list_panel_components.
2025
2088
  *
2026
- * read({paths?}) returns coherent, bounded source text plus the actual catalog.
2089
+ * read({paths?}) returns coherent, bounded source text, file/mount discovery and
2090
+ * the actual catalog. read({mount:{bindingKey,paths?}}) reads only the selected
2091
+ * Kit member's current saved source; omitting paths discovers its files.
2027
2092
  * allowedPaths seeds the initial read; the current instance and revision bind
2028
2093
  * subsequent legal reads, replacements and new files.
2029
2094
  * prepare({changes}) returns {request,candidate}: request.changes contains full
@@ -2065,6 +2130,7 @@ function createStudioAuthoring({ scope, instances, readComponents } = {}) {
2065
2130
  ...normalized.bundle ? { bundle: normalized.bundle } : {}
2066
2131
  });
2067
2132
  const readInstance = instances.read.bind(instances), readFile = instances.readFile.bind(instances);
2133
+ const readMountedBundle = instances.readMountedBundle?.bind(instances);
2068
2134
  const prepareChanges = instances.prepareChanges.bind(instances);
2069
2135
  const requestFor = (changes) => normalizeStudioInstanceChanges({
2070
2136
  id: binding.id,
@@ -2094,7 +2160,40 @@ function createStudioAuthoring({ scope, instances, readComponents } = {}) {
2094
2160
  };
2095
2161
  return Object.freeze({
2096
2162
  async read(input = {}) {
2097
- object(input, ["paths"], "authoring read request");
2163
+ object(input, ["paths", "mount"], "authoring read request");
2164
+ if (input.mount !== void 0) {
2165
+ if (input.paths !== void 0) throw new Error("Read a mounted Bundle separately from Kit source paths.");
2166
+ object(input.mount, ["bindingKey", "paths"], "mounted Bundle read request");
2167
+ const { bindingKey, paths = [] } = input.mount;
2168
+ if (typeof bindingKey !== "string" || !bindingKey || !Array.isArray(paths)) throw new Error("Select a mounted bindingKey and an exact source path list.");
2169
+ const selected = paths.length ? checkPaths(paths) : [];
2170
+ const record = await current();
2171
+ const mount = record.kind === "kit" && record.mounts?.find((mount) => mount.bindingKey === bindingKey);
2172
+ if (!mount) throw new Error("Select a Bundle mounted by this Kit; read the mounts first.");
2173
+ if (!readMountedBundle) throw new Error("The Host has not supplied mounted Bundle source reads.");
2174
+ const value = await readMountedBundle({
2175
+ id: binding.id,
2176
+ expectedRevision: binding.expectedRevision,
2177
+ bindingKey,
2178
+ paths: selected
2179
+ });
2180
+ if (value?.id !== binding.id || value.revision !== binding.expectedRevision || value.bindingKey !== bindingKey) throw changed();
2181
+ if (!samePin(value.bundle, mount.bundle) || value.readOnly !== true || !Array.isArray(value.files) || value.files.length !== selected.length || value.files.some((file, index) => file.path !== selected[index] || typeof file.exists !== "boolean")) throw new Error("Mounted source receipt differs from the selected Kit member and files.");
2182
+ const { files, ...mountedBundle } = value;
2183
+ const existing = files.filter((file) => file.exists);
2184
+ if (existing.length) requestFor(existing.map(({ path, content }) => ({
2185
+ path,
2186
+ content
2187
+ })));
2188
+ const catalog = await components();
2189
+ await current();
2190
+ return {
2191
+ scope: binding,
2192
+ files,
2193
+ mountedBundle,
2194
+ components: catalog
2195
+ };
2196
+ }
2098
2197
  if (input.paths !== void 0 && !Array.isArray(input.paths)) throw new Error("Select an exact list of scoped source paths.");
2099
2198
  const paths = checkPaths(input.paths ?? binding.allowedPaths);
2100
2199
  const record = await current();
@@ -2130,7 +2229,19 @@ function createStudioAuthoring({ scope, instances, readComponents } = {}) {
2130
2229
  return {
2131
2230
  scope: binding,
2132
2231
  files,
2133
- components: catalog
2232
+ components: catalog,
2233
+ availableFiles: record.files.map(({ path, bytes, editable }) => ({
2234
+ path,
2235
+ bytes,
2236
+ readable: editable
2237
+ })),
2238
+ mounts: (record.mounts ?? []).map(({ bindingKey, bundle }) => ({
2239
+ bindingKey,
2240
+ bundle: {
2241
+ name: bundle.name,
2242
+ version: bundle.version
2243
+ }
2244
+ }))
2134
2245
  };
2135
2246
  },
2136
2247
  async prepare(input) {
@@ -6,14 +6,14 @@
6
6
  "outputSha256": {
7
7
  "lib/index.js": "0da54290b39a73d15bc1649af784f05aa8e70ff772aaef58689f5eeb4971dbb6",
8
8
  "lib/instance-changes-RvOGeBaE.js": "e9ed31b1c9d947b4d34172431a7aa2b5880135e3bfc0ec2c858f86035432759c",
9
- "lib/node.js": "8f4305de2299f50cc6d67dc9a120c70d6ff7c8b6717f216a63e127923a092227"
9
+ "lib/node.js": "a9057c0d5f11d23f9fb1bb4be7696c220536fac191c763e5287373a75bd334a6"
10
10
  },
11
11
  "normalBuildMaps": [
12
12
  {
13
13
  "output": "lib/index.js",
14
14
  "observation": "normal-build-done-module-membership",
15
15
  "evidenceFile": "dsh-release-studio-0-output-modules.json",
16
- "evidenceSha256": "e1d595ba9b5c757a3121c437c48c53eaf9572542ff91c91b9301240918b80074",
16
+ "evidenceSha256": "64d91a211d657b7d48c7c458dc99a6e8c91930546c18fdfed503a3921f440683",
17
17
  "normalOutputSha256": "080de87c4980e16ce7950010e2e92ff213057587b11b980c5ba337437ba48db8",
18
18
  "packedOutputSha256": "0da54290b39a73d15bc1649af784f05aa8e70ff772aaef58689f5eeb4971dbb6",
19
19
  "projectOwnedSources": [
@@ -42,7 +42,7 @@
42
42
  "output": "lib/instance-changes-RvOGeBaE.js",
43
43
  "observation": "normal-build-done-module-membership",
44
44
  "evidenceFile": "dsh-release-studio-0-output-modules.json",
45
- "evidenceSha256": "e1d595ba9b5c757a3121c437c48c53eaf9572542ff91c91b9301240918b80074",
45
+ "evidenceSha256": "64d91a211d657b7d48c7c458dc99a6e8c91930546c18fdfed503a3921f440683",
46
46
  "normalOutputSha256": "c602fc3fadb5d94e99bf713c86d606e96529cd04ec1f5848fe6c42d354350c8f",
47
47
  "packedOutputSha256": "e9ed31b1c9d947b4d34172431a7aa2b5880135e3bfc0ec2c858f86035432759c",
48
48
  "projectOwnedSources": [
@@ -67,9 +67,9 @@
67
67
  "output": "lib/node.js",
68
68
  "observation": "normal-build-done-module-membership",
69
69
  "evidenceFile": "dsh-release-studio-0-output-modules.json",
70
- "evidenceSha256": "e1d595ba9b5c757a3121c437c48c53eaf9572542ff91c91b9301240918b80074",
71
- "normalOutputSha256": "d2281a062ad1f4d087933a54c35553a4c89a4edfeab3d8991fd407b9a1dc36d8",
72
- "packedOutputSha256": "8f4305de2299f50cc6d67dc9a120c70d6ff7c8b6717f216a63e127923a092227",
70
+ "evidenceSha256": "64d91a211d657b7d48c7c458dc99a6e8c91930546c18fdfed503a3921f440683",
71
+ "normalOutputSha256": "05fe01bb839576a5aac5eba983047e050a2e9d07f8472e68a088ec6ac098e422",
72
+ "packedOutputSha256": "a9057c0d5f11d23f9fb1bb4be7696c220536fac191c763e5287373a75bd334a6",
73
73
  "projectOwnedSources": [
74
74
  "packages/studio/src/node/studio-authoring.mjs",
75
75
  "packages/studio/src/node/studio-instance-composition.mjs",
@@ -77,9 +77,9 @@
77
77
  "packages/studio/src/node/studio-panel-drafts.mjs"
78
78
  ],
79
79
  "projectOwnedSourceSha256": {
80
- "packages/studio/src/node/studio-authoring.mjs": "509d4ae544ea823ce0438010b206f29e2e2a9b70b6182d8827050c47187ec34c",
80
+ "packages/studio/src/node/studio-authoring.mjs": "c5466098ac3013441ff8b13f84b400d8364b1bc8a68ea35f8de4da8634abd169",
81
81
  "packages/studio/src/node/studio-instance-composition.mjs": "46bcf04640e329af1659a22e8b77530a782131cf211865bc092cae37c40cc0b8",
82
- "packages/studio/src/node/studio-instances.mjs": "8e1393026496bfe965ca47435b4d341b221e8011aafd9500dd0d73171174c86a",
82
+ "packages/studio/src/node/studio-instances.mjs": "d61c0a7ef565c5aa02ee1b9b49a45f1e9e5d45ad45d784cd7d54a2594a9ad5a8",
83
83
  "packages/studio/src/node/studio-panel-drafts.mjs": "acbbbdb5a5928097d5eb88d54d550ac05609c2c56295762ecfca1a3ebc605fcf"
84
84
  },
85
85
  "sourceCount": 4,
@@ -98,14 +98,14 @@
98
98
  "sha256": "f877117fa40947596f6780e36a99036a16057ff20f6a91105fb00d254f866193",
99
99
  "name": "dsh-design-studio",
100
100
  "version": "0.0.0",
101
- "packageMetadataSha256": "167275701a93f0678f7271d06d311fbb376ce4d3b85bdd0ef9c209b12fab2eb7",
101
+ "packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae",
102
102
  "firstParty": true,
103
103
  "currentSourceIdentity": {
104
104
  "manifestPath": "packages/studio/package.json",
105
- "sourceCommit": "8eee14ebe2f80e25ca1e3f2d167ae74614e8b523",
105
+ "sourceCommit": "58c497121e14707e67aa236bd605cb505e92fba8",
106
106
  "name": "dsh-design-studio",
107
107
  "version": "0.0.0",
108
- "packageMetadataSha256": "167275701a93f0678f7271d06d311fbb376ce4d3b85bdd0ef9c209b12fab2eb7"
108
+ "packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae"
109
109
  }
110
110
  },
111
111
  {
@@ -114,14 +114,14 @@
114
114
  "sha256": "9bf73c460608b5f491a471348292f7917159595a3d9fbff96f5637efefe309ce",
115
115
  "name": "dsh-design-studio",
116
116
  "version": "0.0.0",
117
- "packageMetadataSha256": "167275701a93f0678f7271d06d311fbb376ce4d3b85bdd0ef9c209b12fab2eb7",
117
+ "packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae",
118
118
  "firstParty": true,
119
119
  "currentSourceIdentity": {
120
120
  "manifestPath": "packages/studio/package.json",
121
- "sourceCommit": "8eee14ebe2f80e25ca1e3f2d167ae74614e8b523",
121
+ "sourceCommit": "58c497121e14707e67aa236bd605cb505e92fba8",
122
122
  "name": "dsh-design-studio",
123
123
  "version": "0.0.0",
124
- "packageMetadataSha256": "167275701a93f0678f7271d06d311fbb376ce4d3b85bdd0ef9c209b12fab2eb7"
124
+ "packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae"
125
125
  }
126
126
  },
127
127
  {
@@ -130,14 +130,14 @@
130
130
  "sha256": "81ead1c264f09ec82a1fff34ecfb96270081040175981f5d17188871f4570ad1",
131
131
  "name": "dsh-design-studio",
132
132
  "version": "0.0.0",
133
- "packageMetadataSha256": "167275701a93f0678f7271d06d311fbb376ce4d3b85bdd0ef9c209b12fab2eb7",
133
+ "packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae",
134
134
  "firstParty": true,
135
135
  "currentSourceIdentity": {
136
136
  "manifestPath": "packages/studio/package.json",
137
- "sourceCommit": "8eee14ebe2f80e25ca1e3f2d167ae74614e8b523",
137
+ "sourceCommit": "58c497121e14707e67aa236bd605cb505e92fba8",
138
138
  "name": "dsh-design-studio",
139
139
  "version": "0.0.0",
140
- "packageMetadataSha256": "167275701a93f0678f7271d06d311fbb376ce4d3b85bdd0ef9c209b12fab2eb7"
140
+ "packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae"
141
141
  }
142
142
  },
143
143
  {
@@ -146,14 +146,14 @@
146
146
  "sha256": "377f9234d7696a26809199b417462bdf9e16f8286a9cb524a2d422648c37bc9d",
147
147
  "name": "dsh-design-studio",
148
148
  "version": "0.0.0",
149
- "packageMetadataSha256": "167275701a93f0678f7271d06d311fbb376ce4d3b85bdd0ef9c209b12fab2eb7",
149
+ "packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae",
150
150
  "firstParty": true,
151
151
  "currentSourceIdentity": {
152
152
  "manifestPath": "packages/studio/package.json",
153
- "sourceCommit": "8eee14ebe2f80e25ca1e3f2d167ae74614e8b523",
153
+ "sourceCommit": "58c497121e14707e67aa236bd605cb505e92fba8",
154
154
  "name": "dsh-design-studio",
155
155
  "version": "0.0.0",
156
- "packageMetadataSha256": "167275701a93f0678f7271d06d311fbb376ce4d3b85bdd0ef9c209b12fab2eb7"
156
+ "packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae"
157
157
  }
158
158
  },
159
159
  {
@@ -162,14 +162,14 @@
162
162
  "sha256": "7941c92f98810858297bee10048c64eb259c4748ba302c88032f32bd9f3fbadd",
163
163
  "name": "dsh-design-studio",
164
164
  "version": "0.0.0",
165
- "packageMetadataSha256": "167275701a93f0678f7271d06d311fbb376ce4d3b85bdd0ef9c209b12fab2eb7",
165
+ "packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae",
166
166
  "firstParty": true,
167
167
  "currentSourceIdentity": {
168
168
  "manifestPath": "packages/studio/package.json",
169
- "sourceCommit": "8eee14ebe2f80e25ca1e3f2d167ae74614e8b523",
169
+ "sourceCommit": "58c497121e14707e67aa236bd605cb505e92fba8",
170
170
  "name": "dsh-design-studio",
171
171
  "version": "0.0.0",
172
- "packageMetadataSha256": "167275701a93f0678f7271d06d311fbb376ce4d3b85bdd0ef9c209b12fab2eb7"
172
+ "packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae"
173
173
  }
174
174
  },
175
175
  {
@@ -178,14 +178,14 @@
178
178
  "sha256": "38005e8858a678c75cbb27fe53e7b2d8bd068acbf205196a4acf82a87d0faa0a",
179
179
  "name": "dsh-design-studio",
180
180
  "version": "0.0.0",
181
- "packageMetadataSha256": "167275701a93f0678f7271d06d311fbb376ce4d3b85bdd0ef9c209b12fab2eb7",
181
+ "packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae",
182
182
  "firstParty": true,
183
183
  "currentSourceIdentity": {
184
184
  "manifestPath": "packages/studio/package.json",
185
- "sourceCommit": "8eee14ebe2f80e25ca1e3f2d167ae74614e8b523",
185
+ "sourceCommit": "58c497121e14707e67aa236bd605cb505e92fba8",
186
186
  "name": "dsh-design-studio",
187
187
  "version": "0.0.0",
188
- "packageMetadataSha256": "167275701a93f0678f7271d06d311fbb376ce4d3b85bdd0ef9c209b12fab2eb7"
188
+ "packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae"
189
189
  }
190
190
  },
191
191
  {
@@ -194,14 +194,14 @@
194
194
  "sha256": "926566aeda27176319fe61643f70341e5abf14c136ca95a828d036ab6636837d",
195
195
  "name": "dsh-design-studio",
196
196
  "version": "0.0.0",
197
- "packageMetadataSha256": "167275701a93f0678f7271d06d311fbb376ce4d3b85bdd0ef9c209b12fab2eb7",
197
+ "packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae",
198
198
  "firstParty": true,
199
199
  "currentSourceIdentity": {
200
200
  "manifestPath": "packages/studio/package.json",
201
- "sourceCommit": "8eee14ebe2f80e25ca1e3f2d167ae74614e8b523",
201
+ "sourceCommit": "58c497121e14707e67aa236bd605cb505e92fba8",
202
202
  "name": "dsh-design-studio",
203
203
  "version": "0.0.0",
204
- "packageMetadataSha256": "167275701a93f0678f7271d06d311fbb376ce4d3b85bdd0ef9c209b12fab2eb7"
204
+ "packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae"
205
205
  }
206
206
  },
207
207
  {
@@ -210,14 +210,14 @@
210
210
  "sha256": "164b78c06d359d899b4edb3bd6fe96c1f41072ec4739331d3d57d4b8a45505a2",
211
211
  "name": "dsh-design-studio",
212
212
  "version": "0.0.0",
213
- "packageMetadataSha256": "167275701a93f0678f7271d06d311fbb376ce4d3b85bdd0ef9c209b12fab2eb7",
213
+ "packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae",
214
214
  "firstParty": true,
215
215
  "currentSourceIdentity": {
216
216
  "manifestPath": "packages/studio/package.json",
217
- "sourceCommit": "8eee14ebe2f80e25ca1e3f2d167ae74614e8b523",
217
+ "sourceCommit": "58c497121e14707e67aa236bd605cb505e92fba8",
218
218
  "name": "dsh-design-studio",
219
219
  "version": "0.0.0",
220
- "packageMetadataSha256": "167275701a93f0678f7271d06d311fbb376ce4d3b85bdd0ef9c209b12fab2eb7"
220
+ "packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae"
221
221
  }
222
222
  },
223
223
  {
@@ -226,14 +226,14 @@
226
226
  "sha256": "a2e334453a7efea7b7dd00e33dcd9b0d811fc100f919ee4f244662ce9ea835bf",
227
227
  "name": "dsh-design-studio",
228
228
  "version": "0.0.0",
229
- "packageMetadataSha256": "167275701a93f0678f7271d06d311fbb376ce4d3b85bdd0ef9c209b12fab2eb7",
229
+ "packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae",
230
230
  "firstParty": true,
231
231
  "currentSourceIdentity": {
232
232
  "manifestPath": "packages/studio/package.json",
233
- "sourceCommit": "8eee14ebe2f80e25ca1e3f2d167ae74614e8b523",
233
+ "sourceCommit": "58c497121e14707e67aa236bd605cb505e92fba8",
234
234
  "name": "dsh-design-studio",
235
235
  "version": "0.0.0",
236
- "packageMetadataSha256": "167275701a93f0678f7271d06d311fbb376ce4d3b85bdd0ef9c209b12fab2eb7"
236
+ "packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae"
237
237
  }
238
238
  },
239
239
  {
@@ -242,30 +242,30 @@
242
242
  "sha256": "da59fa5ae7d47249148b1295a3517f2288e7079441c3d277d2e18720128e6d1b",
243
243
  "name": "dsh-design-studio",
244
244
  "version": "0.0.0",
245
- "packageMetadataSha256": "167275701a93f0678f7271d06d311fbb376ce4d3b85bdd0ef9c209b12fab2eb7",
245
+ "packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae",
246
246
  "firstParty": true,
247
247
  "currentSourceIdentity": {
248
248
  "manifestPath": "packages/studio/package.json",
249
- "sourceCommit": "8eee14ebe2f80e25ca1e3f2d167ae74614e8b523",
249
+ "sourceCommit": "58c497121e14707e67aa236bd605cb505e92fba8",
250
250
  "name": "dsh-design-studio",
251
251
  "version": "0.0.0",
252
- "packageMetadataSha256": "167275701a93f0678f7271d06d311fbb376ce4d3b85bdd0ef9c209b12fab2eb7"
252
+ "packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae"
253
253
  }
254
254
  },
255
255
  {
256
256
  "output": "lib/node.js",
257
257
  "path": "packages/studio/src/node/studio-authoring.mjs",
258
- "sha256": "509d4ae544ea823ce0438010b206f29e2e2a9b70b6182d8827050c47187ec34c",
258
+ "sha256": "c5466098ac3013441ff8b13f84b400d8364b1bc8a68ea35f8de4da8634abd169",
259
259
  "name": "dsh-design-studio",
260
260
  "version": "0.0.0",
261
- "packageMetadataSha256": "167275701a93f0678f7271d06d311fbb376ce4d3b85bdd0ef9c209b12fab2eb7",
261
+ "packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae",
262
262
  "firstParty": true,
263
263
  "currentSourceIdentity": {
264
264
  "manifestPath": "packages/studio/package.json",
265
- "sourceCommit": "8eee14ebe2f80e25ca1e3f2d167ae74614e8b523",
265
+ "sourceCommit": "58c497121e14707e67aa236bd605cb505e92fba8",
266
266
  "name": "dsh-design-studio",
267
267
  "version": "0.0.0",
268
- "packageMetadataSha256": "167275701a93f0678f7271d06d311fbb376ce4d3b85bdd0ef9c209b12fab2eb7"
268
+ "packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae"
269
269
  }
270
270
  },
271
271
  {
@@ -274,30 +274,30 @@
274
274
  "sha256": "46bcf04640e329af1659a22e8b77530a782131cf211865bc092cae37c40cc0b8",
275
275
  "name": "dsh-design-studio",
276
276
  "version": "0.0.0",
277
- "packageMetadataSha256": "167275701a93f0678f7271d06d311fbb376ce4d3b85bdd0ef9c209b12fab2eb7",
277
+ "packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae",
278
278
  "firstParty": true,
279
279
  "currentSourceIdentity": {
280
280
  "manifestPath": "packages/studio/package.json",
281
- "sourceCommit": "8eee14ebe2f80e25ca1e3f2d167ae74614e8b523",
281
+ "sourceCommit": "58c497121e14707e67aa236bd605cb505e92fba8",
282
282
  "name": "dsh-design-studio",
283
283
  "version": "0.0.0",
284
- "packageMetadataSha256": "167275701a93f0678f7271d06d311fbb376ce4d3b85bdd0ef9c209b12fab2eb7"
284
+ "packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae"
285
285
  }
286
286
  },
287
287
  {
288
288
  "output": "lib/node.js",
289
289
  "path": "packages/studio/src/node/studio-instances.mjs",
290
- "sha256": "8e1393026496bfe965ca47435b4d341b221e8011aafd9500dd0d73171174c86a",
290
+ "sha256": "d61c0a7ef565c5aa02ee1b9b49a45f1e9e5d45ad45d784cd7d54a2594a9ad5a8",
291
291
  "name": "dsh-design-studio",
292
292
  "version": "0.0.0",
293
- "packageMetadataSha256": "167275701a93f0678f7271d06d311fbb376ce4d3b85bdd0ef9c209b12fab2eb7",
293
+ "packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae",
294
294
  "firstParty": true,
295
295
  "currentSourceIdentity": {
296
296
  "manifestPath": "packages/studio/package.json",
297
- "sourceCommit": "8eee14ebe2f80e25ca1e3f2d167ae74614e8b523",
297
+ "sourceCommit": "58c497121e14707e67aa236bd605cb505e92fba8",
298
298
  "name": "dsh-design-studio",
299
299
  "version": "0.0.0",
300
- "packageMetadataSha256": "167275701a93f0678f7271d06d311fbb376ce4d3b85bdd0ef9c209b12fab2eb7"
300
+ "packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae"
301
301
  }
302
302
  },
303
303
  {
@@ -306,14 +306,14 @@
306
306
  "sha256": "acbbbdb5a5928097d5eb88d54d550ac05609c2c56295762ecfca1a3ebc605fcf",
307
307
  "name": "dsh-design-studio",
308
308
  "version": "0.0.0",
309
- "packageMetadataSha256": "167275701a93f0678f7271d06d311fbb376ce4d3b85bdd0ef9c209b12fab2eb7",
309
+ "packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae",
310
310
  "firstParty": true,
311
311
  "currentSourceIdentity": {
312
312
  "manifestPath": "packages/studio/package.json",
313
- "sourceCommit": "8eee14ebe2f80e25ca1e3f2d167ae74614e8b523",
313
+ "sourceCommit": "58c497121e14707e67aa236bd605cb505e92fba8",
314
314
  "name": "dsh-design-studio",
315
315
  "version": "0.0.0",
316
- "packageMetadataSha256": "167275701a93f0678f7271d06d311fbb376ce4d3b85bdd0ef9c209b12fab2eb7"
316
+ "packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae"
317
317
  }
318
318
  }
319
319
  ],
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "directory": "packages/studio"
6
6
  },
7
7
  "name": "@yugoo-design/dsh-design-studio",
8
- "version": "0.2.0",
8
+ "version": "0.2.3",
9
9
  "license": "Apache-2.0",
10
10
  "type": "module",
11
11
  "description": "Host-neutral Studio catalog and authoring domain with an optional Node storage and source-composition adapter.",
@@ -30,11 +30,11 @@
30
30
  "test:source-import": "tsx --tsconfig tests/source-tsconfig.json --test tests/source-import.test.mjs",
31
31
  "test": "node tests/studio.test.mjs && node tests/composition.test.mjs && node tests/management.test.mjs && node tests/kit-workspace.test.mjs && node tests/bundle-workspace.test.mjs && node tests/panel-preview.test.mjs && node --test tests/legacy-exact-version.test.mjs && node --test tests/sample-artifacts.test.mjs && pnpm run test:instance-changes && pnpm run test:source-import && pnpm run test:current-sources && pnpm run test:source-storage",
32
32
  "test:node": "tsx --tsconfig tests/source-tsconfig.json --test tests/node-entry.test.mjs && tsc --project tests/node-public-tsconfig.json",
33
- "test:current-sources": "tsx --tsconfig tests/source-tsconfig.json --test tests/current-sources.test.mjs tests/current-mount-consistency.test.mjs",
33
+ "test:current-sources": "tsx --tsconfig tests/source-tsconfig.json --test tests/current-sources.test.mjs tests/current-mount-consistency.test.mjs tests/mounted-authoring.test.mjs",
34
34
  "test:source-storage": "tsx --tsconfig tests/source-tsconfig.json --test tests/source-storage.test.mjs"
35
35
  },
36
36
  "peerDependencies": {
37
- "@yugoo-design/dsh-design-core": "0.2.0"
37
+ "@yugoo-design/dsh-design-core": "0.2.3"
38
38
  },
39
39
  "files": [
40
40
  "lib/**/*.js",