@openfairygui/backend 0.2.0-alpha.34 → 0.2.0-alpha.35

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/dist/index.cjs CHANGED
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_runtime = require("./runtime-CTA1SNix.cjs");
2
+ const require_runtime = require("./runtime-CQQmzsxV.cjs");
3
3
  //#region src/storage.ts
4
4
  var StorageFileStat = class {
5
5
  constructor(kind) {
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { i as BACKEND_CONTRACT_VERSION, n as BACKEND_CAPABILITY_SCHEMA_VERSION, r as BACKEND_COMPATIBILITY_POLICY, t as BackendRuntime } from "./runtime-D8kpBZmu.mjs";
1
+ import { i as BACKEND_CONTRACT_VERSION, n as BACKEND_CAPABILITY_SCHEMA_VERSION, r as BACKEND_COMPATIBILITY_POLICY, t as BackendRuntime } from "./runtime-DtCn0Y44.mjs";
2
2
  //#region src/storage.ts
3
3
  var StorageFileStat = class {
4
4
  constructor(kind) {
package/dist/node.cjs CHANGED
@@ -21,7 +21,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
21
21
  enumerable: true
22
22
  }) : target, mod));
23
23
  //#endregion
24
- const require_runtime = require("./runtime-CTA1SNix.cjs");
24
+ const require_runtime = require("./runtime-CQQmzsxV.cjs");
25
25
  let node_fs_promises = require("node:fs/promises");
26
26
  node_fs_promises = __toESM(node_fs_promises);
27
27
  let node_path = require("node:path");
package/dist/node.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { t as BackendRuntime } from "./runtime-D8kpBZmu.mjs";
1
+ import { t as BackendRuntime } from "./runtime-DtCn0Y44.mjs";
2
2
  import fs from "node:fs/promises";
3
3
  import path from "node:path";
4
4
  //#region src/node.ts
@@ -162,7 +162,8 @@ function createWriterFileSystem(fileSystem, writtenPaths, failedPaths) {
162
162
  async function writeSessionProject(input) {
163
163
  await new _openfairygui_core_project_io.ProjectWriter(createWriterFileSystem(input.fileSystem, input.writtenPaths, input.failedPaths)).write(input.document, input.fairyPath, {
164
164
  staleSourceFiles: input.staleSourceFiles,
165
- staleResourceFolders: input.staleResourceFolders
165
+ staleResourceFolders: input.staleResourceFolders,
166
+ staleBranchDirectories: input.staleBranchDirectories
166
167
  });
167
168
  }
168
169
  //#endregion
@@ -213,12 +214,17 @@ function resourceFolderKey(folder) {
213
214
  folder.path
214
215
  ].join("\0");
215
216
  }
217
+ function branchDirectoryKey(directory) {
218
+ return [directory.branch, directory.packageName ?? ""].join("\0");
219
+ }
216
220
  function recordStaleProjectFiles(session, previousProject, nextProject) {
217
221
  if (!session.fileSystem) return;
218
222
  for (const source of (0, _openfairygui_core_uam.staleSourceFiles)(previousProject, nextProject)) session.pendingStaleSourceFiles.set(sourceFileKey(source), source);
219
223
  for (const source of (0, _openfairygui_core_uam.staleSourceFiles)(nextProject, previousProject)) session.pendingStaleSourceFiles.delete(sourceFileKey(source));
220
224
  for (const folder of (0, _openfairygui_core_uam.staleResourceFolders)(previousProject, nextProject)) session.pendingStaleResourceFolders.set(resourceFolderKey(folder), folder);
221
225
  for (const folder of (0, _openfairygui_core_uam.staleResourceFolders)(nextProject, previousProject)) session.pendingStaleResourceFolders.delete(resourceFolderKey(folder));
226
+ for (const directory of (0, _openfairygui_core_uam.staleBranchDirectories)(previousProject, nextProject)) session.pendingStaleBranchDirectories.set(branchDirectoryKey(directory), directory);
227
+ for (const directory of (0, _openfairygui_core_uam.staleBranchDirectories)(nextProject, previousProject)) session.pendingStaleBranchDirectories.delete(branchDirectoryKey(directory));
222
228
  }
223
229
  function toBackendDiagnostics(error) {
224
230
  return error.diagnostics.length > 0 ? error.diagnostics.map((diagnostic) => ({ ...diagnostic })) : [{
@@ -426,12 +432,14 @@ var AuthoringService = class {
426
432
  fairyPath: session.fairyPath,
427
433
  staleSourceFiles: [...session.pendingStaleSourceFiles.values()],
428
434
  staleResourceFolders: [...session.pendingStaleResourceFolders.values()],
435
+ staleBranchDirectories: [...session.pendingStaleBranchDirectories.values()],
429
436
  writtenPaths: committedPaths,
430
437
  failedPaths
431
438
  });
432
439
  session.fileSystem ??= fileSystem;
433
440
  session.pendingStaleSourceFiles.clear();
434
441
  session.pendingStaleResourceFolders.clear();
442
+ session.pendingStaleBranchDirectories.clear();
435
443
  (0, _openfairygui_core_uam.commitUamProjectSourcePaths)(session.project);
436
444
  session.lastSavedRevision = session.revision;
437
445
  session.dirty = false;
@@ -570,16 +578,19 @@ var AuthoringService = class {
570
578
  fairyPath,
571
579
  staleSourceFiles: isSessionStorageTarget ? [...session.pendingStaleSourceFiles.values()] : [],
572
580
  staleResourceFolders: isSessionStorageTarget ? [...session.pendingStaleResourceFolders.values()] : [],
581
+ staleBranchDirectories: isSessionStorageTarget ? [...session.pendingStaleBranchDirectories.values()] : [],
573
582
  writtenPaths,
574
583
  failedPaths
575
584
  });
576
585
  if (isSessionStorageTarget) {
577
586
  session.pendingStaleSourceFiles.clear();
578
587
  session.pendingStaleResourceFolders.clear();
588
+ session.pendingStaleBranchDirectories.clear();
579
589
  }
580
590
  if (storageTarget && !isSessionStorageTarget) {
581
591
  session.pendingStaleSourceFiles.clear();
582
592
  session.pendingStaleResourceFolders.clear();
593
+ session.pendingStaleBranchDirectories.clear();
583
594
  }
584
595
  if (isSessionStorageTarget || storageTarget) (0, _openfairygui_core_uam.commitUamProjectSourcePaths)(session.project);
585
596
  if (storageTarget) {
@@ -1228,6 +1239,7 @@ var RuntimeService = class {
1228
1239
  lastSavedRevision: 0,
1229
1240
  pendingStaleSourceFiles: /* @__PURE__ */ new Map(),
1230
1241
  pendingStaleResourceFolders: /* @__PURE__ */ new Map(),
1242
+ pendingStaleBranchDirectories: /* @__PURE__ */ new Map(),
1231
1243
  dirty: false,
1232
1244
  lockHeld: true,
1233
1245
  closed: false
@@ -1288,6 +1300,7 @@ var RuntimeService = class {
1288
1300
  lastSavedRevision: 0,
1289
1301
  pendingStaleSourceFiles: /* @__PURE__ */ new Map(),
1290
1302
  pendingStaleResourceFolders: /* @__PURE__ */ new Map(),
1303
+ pendingStaleBranchDirectories: /* @__PURE__ */ new Map(),
1291
1304
  dirty: false,
1292
1305
  lockHeld: false,
1293
1306
  closed: false
@@ -1,4 +1,4 @@
1
- import { UAM_SUPPORTED_MATERIALIZATION_SCOPE, UAM_SUPPORTED_TRANSACTION_SCOPE, commitUamProjectSourcePaths, liftDocumentToUamProject, materializeUamProject, normalizeUamProject, staleResourceFolders, staleSourceFiles, validateUamProject } from "@openfairygui/core/uam";
1
+ import { UAM_SUPPORTED_MATERIALIZATION_SCOPE, UAM_SUPPORTED_TRANSACTION_SCOPE, commitUamProjectSourcePaths, liftDocumentToUamProject, materializeUamProject, normalizeUamProject, staleBranchDirectories, staleResourceFolders, staleSourceFiles, validateUamProject } from "@openfairygui/core/uam";
2
2
  import { applyUamTransactionAppAsync } from "@openfairygui/functions/uam";
3
3
  import { ProjectReader, ProjectWriter } from "@openfairygui/core/project-io";
4
4
  //#region src/contracts.ts
@@ -161,7 +161,8 @@ function createWriterFileSystem(fileSystem, writtenPaths, failedPaths) {
161
161
  async function writeSessionProject(input) {
162
162
  await new ProjectWriter(createWriterFileSystem(input.fileSystem, input.writtenPaths, input.failedPaths)).write(input.document, input.fairyPath, {
163
163
  staleSourceFiles: input.staleSourceFiles,
164
- staleResourceFolders: input.staleResourceFolders
164
+ staleResourceFolders: input.staleResourceFolders,
165
+ staleBranchDirectories: input.staleBranchDirectories
165
166
  });
166
167
  }
167
168
  //#endregion
@@ -212,12 +213,17 @@ function resourceFolderKey(folder) {
212
213
  folder.path
213
214
  ].join("\0");
214
215
  }
216
+ function branchDirectoryKey(directory) {
217
+ return [directory.branch, directory.packageName ?? ""].join("\0");
218
+ }
215
219
  function recordStaleProjectFiles(session, previousProject, nextProject) {
216
220
  if (!session.fileSystem) return;
217
221
  for (const source of staleSourceFiles(previousProject, nextProject)) session.pendingStaleSourceFiles.set(sourceFileKey(source), source);
218
222
  for (const source of staleSourceFiles(nextProject, previousProject)) session.pendingStaleSourceFiles.delete(sourceFileKey(source));
219
223
  for (const folder of staleResourceFolders(previousProject, nextProject)) session.pendingStaleResourceFolders.set(resourceFolderKey(folder), folder);
220
224
  for (const folder of staleResourceFolders(nextProject, previousProject)) session.pendingStaleResourceFolders.delete(resourceFolderKey(folder));
225
+ for (const directory of staleBranchDirectories(previousProject, nextProject)) session.pendingStaleBranchDirectories.set(branchDirectoryKey(directory), directory);
226
+ for (const directory of staleBranchDirectories(nextProject, previousProject)) session.pendingStaleBranchDirectories.delete(branchDirectoryKey(directory));
221
227
  }
222
228
  function toBackendDiagnostics(error) {
223
229
  return error.diagnostics.length > 0 ? error.diagnostics.map((diagnostic) => ({ ...diagnostic })) : [{
@@ -425,12 +431,14 @@ var AuthoringService = class {
425
431
  fairyPath: session.fairyPath,
426
432
  staleSourceFiles: [...session.pendingStaleSourceFiles.values()],
427
433
  staleResourceFolders: [...session.pendingStaleResourceFolders.values()],
434
+ staleBranchDirectories: [...session.pendingStaleBranchDirectories.values()],
428
435
  writtenPaths: committedPaths,
429
436
  failedPaths
430
437
  });
431
438
  session.fileSystem ??= fileSystem;
432
439
  session.pendingStaleSourceFiles.clear();
433
440
  session.pendingStaleResourceFolders.clear();
441
+ session.pendingStaleBranchDirectories.clear();
434
442
  commitUamProjectSourcePaths(session.project);
435
443
  session.lastSavedRevision = session.revision;
436
444
  session.dirty = false;
@@ -569,16 +577,19 @@ var AuthoringService = class {
569
577
  fairyPath,
570
578
  staleSourceFiles: isSessionStorageTarget ? [...session.pendingStaleSourceFiles.values()] : [],
571
579
  staleResourceFolders: isSessionStorageTarget ? [...session.pendingStaleResourceFolders.values()] : [],
580
+ staleBranchDirectories: isSessionStorageTarget ? [...session.pendingStaleBranchDirectories.values()] : [],
572
581
  writtenPaths,
573
582
  failedPaths
574
583
  });
575
584
  if (isSessionStorageTarget) {
576
585
  session.pendingStaleSourceFiles.clear();
577
586
  session.pendingStaleResourceFolders.clear();
587
+ session.pendingStaleBranchDirectories.clear();
578
588
  }
579
589
  if (storageTarget && !isSessionStorageTarget) {
580
590
  session.pendingStaleSourceFiles.clear();
581
591
  session.pendingStaleResourceFolders.clear();
592
+ session.pendingStaleBranchDirectories.clear();
582
593
  }
583
594
  if (isSessionStorageTarget || storageTarget) commitUamProjectSourcePaths(session.project);
584
595
  if (storageTarget) {
@@ -1227,6 +1238,7 @@ var RuntimeService = class {
1227
1238
  lastSavedRevision: 0,
1228
1239
  pendingStaleSourceFiles: /* @__PURE__ */ new Map(),
1229
1240
  pendingStaleResourceFolders: /* @__PURE__ */ new Map(),
1241
+ pendingStaleBranchDirectories: /* @__PURE__ */ new Map(),
1230
1242
  dirty: false,
1231
1243
  lockHeld: true,
1232
1244
  closed: false
@@ -1287,6 +1299,7 @@ var RuntimeService = class {
1287
1299
  lastSavedRevision: 0,
1288
1300
  pendingStaleSourceFiles: /* @__PURE__ */ new Map(),
1289
1301
  pendingStaleResourceFolders: /* @__PURE__ */ new Map(),
1302
+ pendingStaleBranchDirectories: /* @__PURE__ */ new Map(),
1290
1303
  dirty: false,
1291
1304
  lockHeld: false,
1292
1305
  closed: false
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openfairygui/backend",
3
- "version": "0.2.0-alpha.34",
3
+ "version": "0.2.0-alpha.35",
4
4
  "description": "FairyGUI Headless Authoring SDK — stateful backend runtime and session services.",
5
5
  "author": "OpenFairyGUI Contributors",
6
6
  "license": "MIT",
@@ -52,8 +52,8 @@
52
52
  "runtime"
53
53
  ],
54
54
  "dependencies": {
55
- "@openfairygui/core": "0.2.0-alpha.34",
56
- "@openfairygui/functions": "0.2.0-alpha.34"
55
+ "@openfairygui/core": "0.2.0-alpha.35",
56
+ "@openfairygui/functions": "0.2.0-alpha.35"
57
57
  },
58
58
  "devDependencies": {
59
59
  "ava": "^7.0.0",
@@ -1,7 +1,8 @@
1
- import type { ProjectResourceFolder, ProjectSourceFile } from '@openfairygui/core/project-io';
1
+ import type { ProjectBranchDirectory, ProjectResourceFolder, ProjectSourceFile } from '@openfairygui/core/project-io';
2
2
  import {
3
3
  commitUamProjectSourcePaths,
4
4
  materializeUamProject,
5
+ staleBranchDirectories,
5
6
  staleResourceFolders,
6
7
  staleSourceFiles,
7
8
  type UamProject,
@@ -41,6 +42,10 @@ function resourceFolderKey(folder: ProjectResourceFolder): string {
41
42
  return [folder.branch, folder.packageName, folder.path].join('\0');
42
43
  }
43
44
 
45
+ function branchDirectoryKey(directory: ProjectBranchDirectory): string {
46
+ return [directory.branch, directory.packageName ?? ''].join('\0');
47
+ }
48
+
44
49
  function recordStaleProjectFiles(
45
50
  session: Parameters<typeof toSessionSnapshot>[0],
46
51
  previousProject: UamProject,
@@ -59,6 +64,12 @@ function recordStaleProjectFiles(
59
64
  for (const folder of staleResourceFolders(nextProject, previousProject)) {
60
65
  session.pendingStaleResourceFolders.delete(resourceFolderKey(folder));
61
66
  }
67
+ for (const directory of staleBranchDirectories(previousProject, nextProject)) {
68
+ session.pendingStaleBranchDirectories.set(branchDirectoryKey(directory), directory);
69
+ }
70
+ for (const directory of staleBranchDirectories(nextProject, previousProject)) {
71
+ session.pendingStaleBranchDirectories.delete(branchDirectoryKey(directory));
72
+ }
62
73
  }
63
74
 
64
75
  function toBackendDiagnostics(error: ApplyUamTransactionAppError): BackendDiagnostic[] {
@@ -405,12 +416,14 @@ export class AuthoringService {
405
416
  fairyPath: session.fairyPath,
406
417
  staleSourceFiles: [...session.pendingStaleSourceFiles.values()],
407
418
  staleResourceFolders: [...session.pendingStaleResourceFolders.values()],
419
+ staleBranchDirectories: [...session.pendingStaleBranchDirectories.values()],
408
420
  writtenPaths: committedPaths,
409
421
  failedPaths,
410
422
  });
411
423
  session.fileSystem ??= fileSystem;
412
424
  session.pendingStaleSourceFiles.clear();
413
425
  session.pendingStaleResourceFolders.clear();
426
+ session.pendingStaleBranchDirectories.clear();
414
427
  commitUamProjectSourcePaths(session.project);
415
428
  session.lastSavedRevision = session.revision;
416
429
  session.dirty = false;
@@ -646,16 +659,19 @@ export class AuthoringService {
646
659
  fairyPath,
647
660
  staleSourceFiles: isSessionStorageTarget ? [...session.pendingStaleSourceFiles.values()] : [],
648
661
  staleResourceFolders: isSessionStorageTarget ? [...session.pendingStaleResourceFolders.values()] : [],
662
+ staleBranchDirectories: isSessionStorageTarget ? [...session.pendingStaleBranchDirectories.values()] : [],
649
663
  writtenPaths,
650
664
  failedPaths,
651
665
  });
652
666
  if (isSessionStorageTarget) {
653
667
  session.pendingStaleSourceFiles.clear();
654
668
  session.pendingStaleResourceFolders.clear();
669
+ session.pendingStaleBranchDirectories.clear();
655
670
  }
656
671
  if (storageTarget && !isSessionStorageTarget) {
657
672
  session.pendingStaleSourceFiles.clear();
658
673
  session.pendingStaleResourceFolders.clear();
674
+ session.pendingStaleBranchDirectories.clear();
659
675
  }
660
676
  if (isSessionStorageTarget || storageTarget) commitUamProjectSourcePaths(session.project);
661
677
  if (storageTarget) {
@@ -34,6 +34,8 @@ export interface BackendSessionState {
34
34
  pendingStaleSourceFiles: Map<string, import('@openfairygui/core/project-io').ProjectSourceFile>;
35
35
  /** Empty resource directories deferred until a successful replacement project write. */
36
36
  pendingStaleResourceFolders: Map<string, import('@openfairygui/core/project-io').ProjectResourceFolder>;
37
+ /** Removed package-branch and root-branch directories deferred until controlled files are replaced. */
38
+ pendingStaleBranchDirectories: Map<string, import('@openfairygui/core/project-io').ProjectBranchDirectory>;
37
39
  dirty: boolean;
38
40
  lockHeld: boolean;
39
41
  closed: boolean;
@@ -238,6 +238,7 @@ export class RuntimeService {
238
238
  lastSavedRevision: 0,
239
239
  pendingStaleSourceFiles: new Map(),
240
240
  pendingStaleResourceFolders: new Map(),
241
+ pendingStaleBranchDirectories: new Map(),
241
242
  dirty: false,
242
243
  lockHeld: true,
243
244
  closed: false,
@@ -306,6 +307,7 @@ export class RuntimeService {
306
307
  lastSavedRevision: 0,
307
308
  pendingStaleSourceFiles: new Map(),
308
309
  pendingStaleResourceFolders: new Map(),
310
+ pendingStaleBranchDirectories: new Map(),
309
311
  dirty: false,
310
312
  lockHeld: false,
311
313
  closed: false,
@@ -1,5 +1,5 @@
1
1
  import type { Document } from '@openfairygui/core';
2
- import { type FileSystem, type ProjectSourceFile, ProjectWriter } from '@openfairygui/core/project-io';
2
+ import { type FileSystem, type ProjectBranchDirectory, type ProjectSourceFile, ProjectWriter } from '@openfairygui/core/project-io';
3
3
  import type { BackendFileSystem } from '../runtime.js';
4
4
 
5
5
  function createWriterFileSystem(
@@ -54,6 +54,7 @@ export async function writeSessionProject(input: {
54
54
  fairyPath: string;
55
55
  staleSourceFiles: ProjectSourceFile[];
56
56
  staleResourceFolders: import('@openfairygui/core/project-io').ProjectResourceFolder[];
57
+ staleBranchDirectories: ProjectBranchDirectory[];
57
58
  writtenPaths: string[];
58
59
  failedPaths: string[];
59
60
  }): Promise<void> {
@@ -63,5 +64,6 @@ export async function writeSessionProject(input: {
63
64
  await writer.write(input.document, input.fairyPath, {
64
65
  staleSourceFiles: input.staleSourceFiles,
65
66
  staleResourceFolders: input.staleResourceFolders,
67
+ staleBranchDirectories: input.staleBranchDirectories,
66
68
  });
67
69
  }