@yugoo-design/dsh-design-studio 0.2.0 → 0.2.2
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 +8 -0
- package/lib/node.d.ts +49 -12
- package/lib/node.js +117 -6
- package/licenses/dsh-distribution.json +52 -52
- package/package.json +3 -3
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
|
|
363
|
-
|
|
395
|
+
interface StudioAuthoringRead {
|
|
396
|
+
readonly paths?: readonly string[];
|
|
397
|
+
readonly mount?: {
|
|
398
|
+
readonly bindingKey: string;
|
|
364
399
|
readonly paths?: readonly string[];
|
|
365
|
-
}
|
|
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
|
|
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": "
|
|
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": "
|
|
16
|
+
"evidenceSha256": "0abd0dd375dbce215b896a5b987e3843f01d489c9f27bb13f6e4c98ad569ec2b",
|
|
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": "
|
|
45
|
+
"evidenceSha256": "0abd0dd375dbce215b896a5b987e3843f01d489c9f27bb13f6e4c98ad569ec2b",
|
|
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": "
|
|
71
|
-
"normalOutputSha256": "
|
|
72
|
-
"packedOutputSha256": "
|
|
70
|
+
"evidenceSha256": "0abd0dd375dbce215b896a5b987e3843f01d489c9f27bb13f6e4c98ad569ec2b",
|
|
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": "
|
|
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": "
|
|
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": "
|
|
101
|
+
"packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae",
|
|
102
102
|
"firstParty": true,
|
|
103
103
|
"currentSourceIdentity": {
|
|
104
104
|
"manifestPath": "packages/studio/package.json",
|
|
105
|
-
"sourceCommit": "
|
|
105
|
+
"sourceCommit": "d42f6f4a705ae25ae2f6f129f02719659d812aa1",
|
|
106
106
|
"name": "dsh-design-studio",
|
|
107
107
|
"version": "0.0.0",
|
|
108
|
-
"packageMetadataSha256": "
|
|
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": "
|
|
117
|
+
"packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae",
|
|
118
118
|
"firstParty": true,
|
|
119
119
|
"currentSourceIdentity": {
|
|
120
120
|
"manifestPath": "packages/studio/package.json",
|
|
121
|
-
"sourceCommit": "
|
|
121
|
+
"sourceCommit": "d42f6f4a705ae25ae2f6f129f02719659d812aa1",
|
|
122
122
|
"name": "dsh-design-studio",
|
|
123
123
|
"version": "0.0.0",
|
|
124
|
-
"packageMetadataSha256": "
|
|
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": "
|
|
133
|
+
"packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae",
|
|
134
134
|
"firstParty": true,
|
|
135
135
|
"currentSourceIdentity": {
|
|
136
136
|
"manifestPath": "packages/studio/package.json",
|
|
137
|
-
"sourceCommit": "
|
|
137
|
+
"sourceCommit": "d42f6f4a705ae25ae2f6f129f02719659d812aa1",
|
|
138
138
|
"name": "dsh-design-studio",
|
|
139
139
|
"version": "0.0.0",
|
|
140
|
-
"packageMetadataSha256": "
|
|
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": "
|
|
149
|
+
"packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae",
|
|
150
150
|
"firstParty": true,
|
|
151
151
|
"currentSourceIdentity": {
|
|
152
152
|
"manifestPath": "packages/studio/package.json",
|
|
153
|
-
"sourceCommit": "
|
|
153
|
+
"sourceCommit": "d42f6f4a705ae25ae2f6f129f02719659d812aa1",
|
|
154
154
|
"name": "dsh-design-studio",
|
|
155
155
|
"version": "0.0.0",
|
|
156
|
-
"packageMetadataSha256": "
|
|
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": "
|
|
165
|
+
"packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae",
|
|
166
166
|
"firstParty": true,
|
|
167
167
|
"currentSourceIdentity": {
|
|
168
168
|
"manifestPath": "packages/studio/package.json",
|
|
169
|
-
"sourceCommit": "
|
|
169
|
+
"sourceCommit": "d42f6f4a705ae25ae2f6f129f02719659d812aa1",
|
|
170
170
|
"name": "dsh-design-studio",
|
|
171
171
|
"version": "0.0.0",
|
|
172
|
-
"packageMetadataSha256": "
|
|
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": "
|
|
181
|
+
"packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae",
|
|
182
182
|
"firstParty": true,
|
|
183
183
|
"currentSourceIdentity": {
|
|
184
184
|
"manifestPath": "packages/studio/package.json",
|
|
185
|
-
"sourceCommit": "
|
|
185
|
+
"sourceCommit": "d42f6f4a705ae25ae2f6f129f02719659d812aa1",
|
|
186
186
|
"name": "dsh-design-studio",
|
|
187
187
|
"version": "0.0.0",
|
|
188
|
-
"packageMetadataSha256": "
|
|
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": "
|
|
197
|
+
"packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae",
|
|
198
198
|
"firstParty": true,
|
|
199
199
|
"currentSourceIdentity": {
|
|
200
200
|
"manifestPath": "packages/studio/package.json",
|
|
201
|
-
"sourceCommit": "
|
|
201
|
+
"sourceCommit": "d42f6f4a705ae25ae2f6f129f02719659d812aa1",
|
|
202
202
|
"name": "dsh-design-studio",
|
|
203
203
|
"version": "0.0.0",
|
|
204
|
-
"packageMetadataSha256": "
|
|
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": "
|
|
213
|
+
"packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae",
|
|
214
214
|
"firstParty": true,
|
|
215
215
|
"currentSourceIdentity": {
|
|
216
216
|
"manifestPath": "packages/studio/package.json",
|
|
217
|
-
"sourceCommit": "
|
|
217
|
+
"sourceCommit": "d42f6f4a705ae25ae2f6f129f02719659d812aa1",
|
|
218
218
|
"name": "dsh-design-studio",
|
|
219
219
|
"version": "0.0.0",
|
|
220
|
-
"packageMetadataSha256": "
|
|
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": "
|
|
229
|
+
"packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae",
|
|
230
230
|
"firstParty": true,
|
|
231
231
|
"currentSourceIdentity": {
|
|
232
232
|
"manifestPath": "packages/studio/package.json",
|
|
233
|
-
"sourceCommit": "
|
|
233
|
+
"sourceCommit": "d42f6f4a705ae25ae2f6f129f02719659d812aa1",
|
|
234
234
|
"name": "dsh-design-studio",
|
|
235
235
|
"version": "0.0.0",
|
|
236
|
-
"packageMetadataSha256": "
|
|
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": "
|
|
245
|
+
"packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae",
|
|
246
246
|
"firstParty": true,
|
|
247
247
|
"currentSourceIdentity": {
|
|
248
248
|
"manifestPath": "packages/studio/package.json",
|
|
249
|
-
"sourceCommit": "
|
|
249
|
+
"sourceCommit": "d42f6f4a705ae25ae2f6f129f02719659d812aa1",
|
|
250
250
|
"name": "dsh-design-studio",
|
|
251
251
|
"version": "0.0.0",
|
|
252
|
-
"packageMetadataSha256": "
|
|
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": "
|
|
258
|
+
"sha256": "c5466098ac3013441ff8b13f84b400d8364b1bc8a68ea35f8de4da8634abd169",
|
|
259
259
|
"name": "dsh-design-studio",
|
|
260
260
|
"version": "0.0.0",
|
|
261
|
-
"packageMetadataSha256": "
|
|
261
|
+
"packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae",
|
|
262
262
|
"firstParty": true,
|
|
263
263
|
"currentSourceIdentity": {
|
|
264
264
|
"manifestPath": "packages/studio/package.json",
|
|
265
|
-
"sourceCommit": "
|
|
265
|
+
"sourceCommit": "d42f6f4a705ae25ae2f6f129f02719659d812aa1",
|
|
266
266
|
"name": "dsh-design-studio",
|
|
267
267
|
"version": "0.0.0",
|
|
268
|
-
"packageMetadataSha256": "
|
|
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": "
|
|
277
|
+
"packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae",
|
|
278
278
|
"firstParty": true,
|
|
279
279
|
"currentSourceIdentity": {
|
|
280
280
|
"manifestPath": "packages/studio/package.json",
|
|
281
|
-
"sourceCommit": "
|
|
281
|
+
"sourceCommit": "d42f6f4a705ae25ae2f6f129f02719659d812aa1",
|
|
282
282
|
"name": "dsh-design-studio",
|
|
283
283
|
"version": "0.0.0",
|
|
284
|
-
"packageMetadataSha256": "
|
|
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": "
|
|
290
|
+
"sha256": "d61c0a7ef565c5aa02ee1b9b49a45f1e9e5d45ad45d784cd7d54a2594a9ad5a8",
|
|
291
291
|
"name": "dsh-design-studio",
|
|
292
292
|
"version": "0.0.0",
|
|
293
|
-
"packageMetadataSha256": "
|
|
293
|
+
"packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae",
|
|
294
294
|
"firstParty": true,
|
|
295
295
|
"currentSourceIdentity": {
|
|
296
296
|
"manifestPath": "packages/studio/package.json",
|
|
297
|
-
"sourceCommit": "
|
|
297
|
+
"sourceCommit": "d42f6f4a705ae25ae2f6f129f02719659d812aa1",
|
|
298
298
|
"name": "dsh-design-studio",
|
|
299
299
|
"version": "0.0.0",
|
|
300
|
-
"packageMetadataSha256": "
|
|
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": "
|
|
309
|
+
"packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae",
|
|
310
310
|
"firstParty": true,
|
|
311
311
|
"currentSourceIdentity": {
|
|
312
312
|
"manifestPath": "packages/studio/package.json",
|
|
313
|
-
"sourceCommit": "
|
|
313
|
+
"sourceCommit": "d42f6f4a705ae25ae2f6f129f02719659d812aa1",
|
|
314
314
|
"name": "dsh-design-studio",
|
|
315
315
|
"version": "0.0.0",
|
|
316
|
-
"packageMetadataSha256": "
|
|
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.
|
|
8
|
+
"version": "0.2.2",
|
|
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.
|
|
37
|
+
"@yugoo-design/dsh-design-core": "0.2.2"
|
|
38
38
|
},
|
|
39
39
|
"files": [
|
|
40
40
|
"lib/**/*.js",
|