@agent-teams/repository-mutation 0.0.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.
- package/CHANGELOG.md +5 -0
- package/LICENSE +201 -0
- package/README.md +10 -0
- package/dist/canonical-json.d.ts +12 -0
- package/dist/canonical-json.d.ts.map +1 -0
- package/dist/canonical-json.js +137 -0
- package/dist/canonical-json.js.map +1 -0
- package/dist/errors.d.ts +6 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +9 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/installed-artifact-identity.d.ts +15 -0
- package/dist/installed-artifact-identity.d.ts.map +1 -0
- package/dist/installed-artifact-identity.js +127 -0
- package/dist/installed-artifact-identity.js.map +1 -0
- package/dist/node.d.ts +29 -0
- package/dist/node.d.ts.map +1 -0
- package/dist/node.js +19 -0
- package/dist/node.js.map +1 -0
- package/dist/package-version.d.ts +3 -0
- package/dist/package-version.d.ts.map +1 -0
- package/dist/package-version.js +11 -0
- package/dist/package-version.js.map +1 -0
- package/dist/qualification/index.d.ts +24 -0
- package/dist/qualification/index.d.ts.map +1 -0
- package/dist/qualification/index.js +11 -0
- package/dist/qualification/index.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-absent-file-publication-private.d.ts +19 -0
- package/dist/repository-mutation/adapters/node/node-absent-file-publication-private.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-absent-file-publication-private.js +74 -0
- package/dist/repository-mutation/adapters/node/node-absent-file-publication-private.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-absent-file-publication.d.ts +35 -0
- package/dist/repository-mutation/adapters/node/node-absent-file-publication.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-absent-file-publication.js +181 -0
- package/dist/repository-mutation/adapters/node/node-absent-file-publication.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-bounded-regular-file.d.ts +23 -0
- package/dist/repository-mutation/adapters/node/node-bounded-regular-file.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-bounded-regular-file.js +134 -0
- package/dist/repository-mutation/adapters/node/node-bounded-regular-file.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-cleanup-owned-temporary.d.ts +26 -0
- package/dist/repository-mutation/adapters/node/node-cleanup-owned-temporary.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-cleanup-owned-temporary.js +172 -0
- package/dist/repository-mutation/adapters/node/node-cleanup-owned-temporary.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-create-and-bind-directory.d.ts +14 -0
- package/dist/repository-mutation/adapters/node/node-create-and-bind-directory.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-create-and-bind-directory.js +23 -0
- package/dist/repository-mutation/adapters/node/node-create-and-bind-directory.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-directory-durability.d.ts +17 -0
- package/dist/repository-mutation/adapters/node/node-directory-durability.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-directory-durability.js +47 -0
- package/dist/repository-mutation/adapters/node/node-directory-durability.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-directory-materialization.d.ts +37 -0
- package/dist/repository-mutation/adapters/node/node-directory-materialization.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-directory-materialization.js +244 -0
- package/dist/repository-mutation/adapters/node/node-directory-materialization.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-existing-repository-ancestors.d.ts +13 -0
- package/dist/repository-mutation/adapters/node/node-existing-repository-ancestors.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-existing-repository-ancestors.js +67 -0
- package/dist/repository-mutation/adapters/node/node-existing-repository-ancestors.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-apply-effects.d.ts +84 -0
- package/dist/repository-mutation/adapters/node/node-known-file-apply-effects.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-apply-effects.js +232 -0
- package/dist/repository-mutation/adapters/node/node-known-file-apply-effects.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-apply-faults.d.ts +9 -0
- package/dist/repository-mutation/adapters/node/node-known-file-apply-faults.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-apply-faults.js +2 -0
- package/dist/repository-mutation/adapters/node/node-known-file-apply-faults.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-apply-observation.d.ts +6 -0
- package/dist/repository-mutation/adapters/node/node-known-file-apply-observation.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-apply-observation.js +30 -0
- package/dist/repository-mutation/adapters/node/node-known-file-apply-observation.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-apply-operation.d.ts +11 -0
- package/dist/repository-mutation/adapters/node/node-known-file-apply-operation.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-apply-operation.js +159 -0
- package/dist/repository-mutation/adapters/node/node-known-file-apply-operation.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-apply-state.d.ts +9 -0
- package/dist/repository-mutation/adapters/node/node-known-file-apply-state.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-apply-state.js +22 -0
- package/dist/repository-mutation/adapters/node/node-known-file-apply-state.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-cleanup.d.ts +9 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-cleanup.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-cleanup.js +203 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-cleanup.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-executor.d.ts +17 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-executor.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-executor.js +22 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-executor.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-filesystem.d.ts +28 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-filesystem.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-filesystem.js +213 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-filesystem.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-observation.d.ts +15 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-observation.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-observation.js +51 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-observation.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-preimage-captured-cleanup.d.ts +29 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-preimage-captured-cleanup.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-preimage-captured-cleanup.js +72 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-preimage-captured-cleanup.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-preimage-captured.d.ts +31 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-preimage-captured.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-preimage-captured.js +254 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-preimage-captured.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-preimage.d.ts +13 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-preimage.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-preimage.js +210 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-preimage.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-retirement.d.ts +15 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-retirement.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-retirement.js +181 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-retirement.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-state.d.ts +12 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-state.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-state.js +18 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-state.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-transaction-filesystem.d.ts +25 -0
- package/dist/repository-mutation/adapters/node/node-known-file-transaction-filesystem.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-transaction-filesystem.js +150 -0
- package/dist/repository-mutation/adapters/node/node-known-file-transaction-filesystem.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-transaction-inspection.d.ts +12 -0
- package/dist/repository-mutation/adapters/node/node-known-file-transaction-inspection.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-transaction-inspection.js +56 -0
- package/dist/repository-mutation/adapters/node/node-known-file-transaction-inspection.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-transaction-journal-store.d.ts +22 -0
- package/dist/repository-mutation/adapters/node/node-known-file-transaction-journal-store.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-transaction-journal-store.js +246 -0
- package/dist/repository-mutation/adapters/node/node-known-file-transaction-journal-store.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-transaction-lease-release.d.ts +21 -0
- package/dist/repository-mutation/adapters/node/node-known-file-transaction-lease-release.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-transaction-lease-release.js +34 -0
- package/dist/repository-mutation/adapters/node/node-known-file-transaction-lease-release.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-transaction-receipt.d.ts +4 -0
- package/dist/repository-mutation/adapters/node/node-known-file-transaction-receipt.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-transaction-receipt.js +43 -0
- package/dist/repository-mutation/adapters/node/node-known-file-transaction-receipt.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-transaction-recovery.d.ts +14 -0
- package/dist/repository-mutation/adapters/node/node-known-file-transaction-recovery.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-transaction-recovery.js +109 -0
- package/dist/repository-mutation/adapters/node/node-known-file-transaction-recovery.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-transaction.d.ts +21 -0
- package/dist/repository-mutation/adapters/node/node-known-file-transaction.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-transaction.js +215 -0
- package/dist/repository-mutation/adapters/node/node-known-file-transaction.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-prepare-exact-sibling-temporary.d.ts +18 -0
- package/dist/repository-mutation/adapters/node/node-prepare-exact-sibling-temporary.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-prepare-exact-sibling-temporary.js +30 -0
- package/dist/repository-mutation/adapters/node/node-prepare-exact-sibling-temporary.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-publish-prepared-absent-file.d.ts +31 -0
- package/dist/repository-mutation/adapters/node/node-publish-prepared-absent-file.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-publish-prepared-absent-file.js +50 -0
- package/dist/repository-mutation/adapters/node/node-publish-prepared-absent-file.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-repository-path.d.ts +2 -0
- package/dist/repository-mutation/adapters/node/node-repository-path.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-repository-path.js +7 -0
- package/dist/repository-mutation/adapters/node/node-repository-path.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-terminal-evidence-directory.d.ts +21 -0
- package/dist/repository-mutation/adapters/node/node-terminal-evidence-directory.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-terminal-evidence-directory.js +59 -0
- package/dist/repository-mutation/adapters/node/node-terminal-evidence-directory.js.map +1 -0
- package/dist/repository-mutation/application/model/directory-materialization.d.ts +35 -0
- package/dist/repository-mutation/application/model/directory-materialization.d.ts.map +1 -0
- package/dist/repository-mutation/application/model/directory-materialization.js +11 -0
- package/dist/repository-mutation/application/model/directory-materialization.js.map +1 -0
- package/dist/repository-mutation/application/model/exact-postimage.d.ts +17 -0
- package/dist/repository-mutation/application/model/exact-postimage.d.ts.map +1 -0
- package/dist/repository-mutation/application/model/exact-postimage.js +11 -0
- package/dist/repository-mutation/application/model/exact-postimage.js.map +1 -0
- package/dist/repository-mutation/application/model/known-file-transaction-journal.d.ts +69 -0
- package/dist/repository-mutation/application/model/known-file-transaction-journal.d.ts.map +1 -0
- package/dist/repository-mutation/application/model/known-file-transaction-journal.js +15 -0
- package/dist/repository-mutation/application/model/known-file-transaction-journal.js.map +1 -0
- package/dist/repository-mutation/application/model/known-file-transaction.d.ts +64 -0
- package/dist/repository-mutation/application/model/known-file-transaction.d.ts.map +1 -0
- package/dist/repository-mutation/application/model/known-file-transaction.js +2 -0
- package/dist/repository-mutation/application/model/known-file-transaction.js.map +1 -0
- package/dist/repository-mutation/application/model/path-identity.d.ts +7 -0
- package/dist/repository-mutation/application/model/path-identity.d.ts.map +1 -0
- package/dist/repository-mutation/application/model/path-identity.js +2 -0
- package/dist/repository-mutation/application/model/path-identity.js.map +1 -0
- package/dist/repository-mutation/application/model/repository-path.d.ts +8 -0
- package/dist/repository-mutation/application/model/repository-path.d.ts.map +1 -0
- package/dist/repository-mutation/application/model/repository-path.js +74 -0
- package/dist/repository-mutation/application/model/repository-path.js.map +1 -0
- package/dist/repository-mutation/application/policies/classify-known-file-recovery-transition.d.ts +33 -0
- package/dist/repository-mutation/application/policies/classify-known-file-recovery-transition.d.ts.map +1 -0
- package/dist/repository-mutation/application/policies/classify-known-file-recovery-transition.js +21 -0
- package/dist/repository-mutation/application/policies/classify-known-file-recovery-transition.js.map +1 -0
- package/dist/repository-mutation/application/policies/known-file-transaction-envelope.d.ts +9 -0
- package/dist/repository-mutation/application/policies/known-file-transaction-envelope.d.ts.map +1 -0
- package/dist/repository-mutation/application/policies/known-file-transaction-envelope.js +214 -0
- package/dist/repository-mutation/application/policies/known-file-transaction-envelope.js.map +1 -0
- package/dist/repository-mutation/application/policies/known-file-transaction-plan.d.ts +7 -0
- package/dist/repository-mutation/application/policies/known-file-transaction-plan.d.ts.map +1 -0
- package/dist/repository-mutation/application/policies/known-file-transaction-plan.js +253 -0
- package/dist/repository-mutation/application/policies/known-file-transaction-plan.js.map +1 -0
- package/dist/repository-mutation/application/ports/owned-temporary-cleanup-transition.d.ts +7 -0
- package/dist/repository-mutation/application/ports/owned-temporary-cleanup-transition.d.ts.map +1 -0
- package/dist/repository-mutation/application/ports/owned-temporary-cleanup-transition.js +2 -0
- package/dist/repository-mutation/application/ports/owned-temporary-cleanup-transition.js.map +1 -0
- package/dist/repository-mutation-envelope.d.ts +32 -0
- package/dist/repository-mutation-envelope.d.ts.map +1 -0
- package/dist/repository-mutation-envelope.js +292 -0
- package/dist/repository-mutation-envelope.js.map +1 -0
- package/dist/state-contract.d.ts +6 -0
- package/dist/state-contract.d.ts.map +1 -0
- package/dist/state-contract.js +6 -0
- package/dist/state-contract.js.map +1 -0
- package/dist/strict-json.d.ts +7 -0
- package/dist/strict-json.d.ts.map +1 -0
- package/dist/strict-json.js +131 -0
- package/dist/strict-json.js.map +1 -0
- package/dist/transaction-coordination/adapters/node/node-journal-slot-evidence.d.ts +29 -0
- package/dist/transaction-coordination/adapters/node/node-journal-slot-evidence.d.ts.map +1 -0
- package/dist/transaction-coordination/adapters/node/node-journal-slot-evidence.js +139 -0
- package/dist/transaction-coordination/adapters/node/node-journal-slot-evidence.js.map +1 -0
- package/dist/transaction-coordination/adapters/node/node-journal-slot-profile.d.ts +151 -0
- package/dist/transaction-coordination/adapters/node/node-journal-slot-profile.d.ts.map +1 -0
- package/dist/transaction-coordination/adapters/node/node-journal-slot-profile.js +29 -0
- package/dist/transaction-coordination/adapters/node/node-journal-slot-profile.js.map +1 -0
- package/dist/transaction-coordination/adapters/node/node-journal-slot-store.d.ts +25 -0
- package/dist/transaction-coordination/adapters/node/node-journal-slot-store.d.ts.map +1 -0
- package/dist/transaction-coordination/adapters/node/node-journal-slot-store.js +303 -0
- package/dist/transaction-coordination/adapters/node/node-journal-slot-store.js.map +1 -0
- package/dist/transaction-coordination/adapters/node/node-operation-lock.d.ts +16 -0
- package/dist/transaction-coordination/adapters/node/node-operation-lock.d.ts.map +1 -0
- package/dist/transaction-coordination/adapters/node/node-operation-lock.js +359 -0
- package/dist/transaction-coordination/adapters/node/node-operation-lock.js.map +1 -0
- package/dist/transaction-coordination/adapters/node/node-state-directory.d.ts +11 -0
- package/dist/transaction-coordination/adapters/node/node-state-directory.d.ts.map +1 -0
- package/dist/transaction-coordination/adapters/node/node-state-directory.js +91 -0
- package/dist/transaction-coordination/adapters/node/node-state-directory.js.map +1 -0
- package/dist/transaction-coordination/mutation-lease.d.ts +38 -0
- package/dist/transaction-coordination/mutation-lease.d.ts.map +1 -0
- package/dist/transaction-coordination/mutation-lease.js +351 -0
- package/dist/transaction-coordination/mutation-lease.js.map +1 -0
- package/package.json +52 -0
- package/schemas/known-file-transaction-plan/v1.schema.json +65 -0
- package/schemas/known-file-transaction-receipt/v1.schema.json +36 -0
- package/schemas/repository-mutation-transaction-envelope/v1.schema.json +46 -0
package/dist/node.d.ts
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export { acquireMutationLease, claimMutation, observeMutationState, releaseMutationLease, retainMutationBarrier } from "./transaction-coordination/mutation-lease.js";
|
|
2
|
+
export type { MutationArtifactIdentity, MutationClaim, MutationIntent, MutationLease, MutationObservation } from "./transaction-coordination/mutation-lease.js";
|
|
3
|
+
export { captureFileHandleIdentity, readBoundedRegularFile, pathMatchesRegularFileIdentity } from "./repository-mutation/adapters/node/node-bounded-regular-file.js";
|
|
4
|
+
export type { BoundedRegularFileRead } from "./repository-mutation/adapters/node/node-bounded-regular-file.js";
|
|
5
|
+
export type { PathIdentityMatch, PortablePathIdentity } from "./repository-mutation/application/model/path-identity.js";
|
|
6
|
+
export { assertTerminalEvidenceDirectory, ensureTerminalEvidenceDirectory } from "./repository-mutation/adapters/node/node-terminal-evidence-directory.js";
|
|
7
|
+
export type { TerminalEvidenceDirectoryAuthority, TerminalEvidenceDirectoryOperations, TerminalEvidenceDirectoryStat, } from "./repository-mutation/adapters/node/node-terminal-evidence-directory.js";
|
|
8
|
+
export { cleanupIdentityMatchingOwnedTemporary, ownedTemporaryCleanupResiduePrefix, OWNED_TEMPORARY_CLEANUP_RESIDUE_MARKER } from "./repository-mutation/adapters/node/node-cleanup-owned-temporary.js";
|
|
9
|
+
export { syncDirectoryDurably, syncDirectoryStrictly } from "./repository-mutation/adapters/node/node-directory-durability.js";
|
|
10
|
+
export type { DirectoryDurability, DirectoryDurabilityOperations, DirectorySyncHandle, } from "./repository-mutation/adapters/node/node-directory-durability.js";
|
|
11
|
+
export { createAndBindNodeDirectory } from "./repository-mutation/adapters/node/node-create-and-bind-directory.js";
|
|
12
|
+
export type { NodeDirectoryCreateAndBindOperations } from "./repository-mutation/adapters/node/node-create-and-bind-directory.js";
|
|
13
|
+
export { prepareExactSiblingTemporary } from "./repository-mutation/adapters/node/node-prepare-exact-sibling-temporary.js";
|
|
14
|
+
export type { PrepareExactSiblingTemporaryOptions } from "./repository-mutation/adapters/node/node-prepare-exact-sibling-temporary.js";
|
|
15
|
+
export { publishPreparedAbsentFile } from "./repository-mutation/adapters/node/node-publish-prepared-absent-file.js";
|
|
16
|
+
export type { PublishPreparedAbsentFileOptions } from "./repository-mutation/adapters/node/node-publish-prepared-absent-file.js";
|
|
17
|
+
export { assertNoPortableNameCollision, assertSafeExistingRepositoryAncestors, ExistingRepositoryAncestorError } from "./repository-mutation/adapters/node/node-existing-repository-ancestors.js";
|
|
18
|
+
export type { ExistingRepositoryAncestorProblem } from "./repository-mutation/adapters/node/node-existing-repository-ancestors.js";
|
|
19
|
+
export { isLexicallyContainedPath } from "./repository-mutation/adapters/node/node-repository-path.js";
|
|
20
|
+
export type { OwnedTemporaryCleanupTransition, OwnedTemporaryCleanupTransitionPort } from "./repository-mutation/application/ports/owned-temporary-cleanup-transition.js";
|
|
21
|
+
export { AbsentFilePublicationError } from "./repository-mutation/application/model/exact-postimage.js";
|
|
22
|
+
export type { AbsentFilePublicationErrorCode, AbsentFilePublicationOutcome, ExactFilePostimage, ExactFilePostimageState, } from "./repository-mutation/application/model/exact-postimage.js";
|
|
23
|
+
export { assertTemporaryPathsAbsent, classifyExactFilePostimage, publishAbsentFile } from "./repository-mutation/adapters/node/node-absent-file-publication.js";
|
|
24
|
+
export type { AbsentFilePublicationOptions } from "./repository-mutation/adapters/node/node-absent-file-publication.js";
|
|
25
|
+
export { ensureMutationStateDirectory, pruneMutationStateDirectory, syncMutationStateDirectory, syncMutationStateDirectoryStrictly } from "./transaction-coordination/adapters/node/node-state-directory.js";
|
|
26
|
+
export { NodeJournalSlotStore } from "./transaction-coordination/adapters/node/node-journal-slot-store.js";
|
|
27
|
+
export { sameJournalSlotAuthority } from "./transaction-coordination/adapters/node/node-journal-slot-profile.js";
|
|
28
|
+
export type { JournalSlotAuthority, JournalSlotCodec, JournalSlotEvidence, JournalSlotFailure, JournalSlotFailureContext, JournalSlotFailureFactory, JournalSlotFaultInjector, JournalSlotFaultPoint, JournalSlotMutation, JournalSlotNaming, JournalSlotObservation, JournalSlotProfile, JournalSlotResidueMatcher, JournalSlotSubject, JournalSlotSyncRole, JournalSlotSyncStage, StoredJournalSlot } from "./transaction-coordination/adapters/node/node-journal-slot-profile.js";
|
|
29
|
+
//# sourceMappingURL=node.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,8CAA8C,CAAC;AACtD,YAAY,EACV,wBAAwB,EACxB,aAAa,EACb,cAAc,EACd,aAAa,EACb,mBAAmB,EACpB,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,8BAA8B,EAAE,MAAM,kEAAkE,CAAC;AACrK,YAAY,EAAE,sBAAsB,EAAE,MAAM,kEAAkE,CAAC;AAC/G,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,0DAA0D,CAAC;AACxH,OAAO,EAAE,+BAA+B,EAAE,+BAA+B,EAAE,MAAM,yEAAyE,CAAC;AAC3J,YAAY,EACV,kCAAkC,EAClC,mCAAmC,EACnC,6BAA6B,GAC9B,MAAM,yEAAyE,CAAC;AACjF,OAAO,EAAE,qCAAqC,EAAE,kCAAkC,EAAE,sCAAsC,EAAE,MAAM,qEAAqE,CAAC;AACxM,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,kEAAkE,CAAC;AAC/H,YAAY,EACV,mBAAmB,EACnB,6BAA6B,EAC7B,mBAAmB,GACpB,MAAM,kEAAkE,CAAC;AAC1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,uEAAuE,CAAC;AACnH,YAAY,EAAE,oCAAoC,EAAE,MAAM,uEAAuE,CAAC;AAClI,OAAO,EAAE,4BAA4B,EAAE,MAAM,6EAA6E,CAAC;AAC3H,YAAY,EAAE,mCAAmC,EAAE,MAAM,6EAA6E,CAAC;AACvI,OAAO,EAAE,yBAAyB,EAAE,MAAM,0EAA0E,CAAC;AACrH,YAAY,EAAE,gCAAgC,EAAE,MAAM,0EAA0E,CAAC;AACjI,OAAO,EAAE,6BAA6B,EAAE,qCAAqC,EAAE,+BAA+B,EAAE,MAAM,2EAA2E,CAAC;AAClM,YAAY,EAAE,iCAAiC,EAAE,MAAM,2EAA2E,CAAC;AACnI,OAAO,EAAE,wBAAwB,EAAE,MAAM,6DAA6D,CAAC;AACvG,YAAY,EAAE,+BAA+B,EAAE,mCAAmC,EAAE,MAAM,+EAA+E,CAAC;AAC1K,OAAO,EAAE,0BAA0B,EAAE,MAAM,4DAA4D,CAAC;AACxG,YAAY,EACV,8BAA8B,EAC9B,4BAA4B,EAC5B,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,4DAA4D,CAAC;AACpE,OAAO,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,MAAM,qEAAqE,CAAC;AAChK,YAAY,EAAE,4BAA4B,EAAE,MAAM,qEAAqE,CAAC;AACxH,OAAO,EAAE,4BAA4B,EAAE,2BAA2B,EAAE,0BAA0B,EAAE,kCAAkC,EAAE,MAAM,kEAAkE,CAAC;AAC7M,OAAO,EAAE,oBAAoB,EAAE,MAAM,qEAAqE,CAAC;AAC3G,OAAO,EAAE,wBAAwB,EAAE,MAAM,uEAAuE,CAAC;AACjH,YAAY,EACV,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,yBAAyB,EACzB,yBAAyB,EACzB,wBAAwB,EACxB,qBAAqB,EACrB,mBAAmB,EACnB,iBAAiB,EACjB,sBAAsB,EACtB,kBAAkB,EAClB,yBAAyB,EACzB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EAClB,MAAM,uEAAuE,CAAC"}
|
package/dist/node.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// Node-only mechanism seams for closed owner-package compositions. These are
|
|
2
|
+
// intentionally absent from the root API, whose effectful surface is limited
|
|
3
|
+
// to Repository Mutation's closed known-file operations.
|
|
4
|
+
export { acquireMutationLease, claimMutation, observeMutationState, releaseMutationLease, retainMutationBarrier } from "./transaction-coordination/mutation-lease.js";
|
|
5
|
+
export { captureFileHandleIdentity, readBoundedRegularFile, pathMatchesRegularFileIdentity } from "./repository-mutation/adapters/node/node-bounded-regular-file.js";
|
|
6
|
+
export { assertTerminalEvidenceDirectory, ensureTerminalEvidenceDirectory } from "./repository-mutation/adapters/node/node-terminal-evidence-directory.js";
|
|
7
|
+
export { cleanupIdentityMatchingOwnedTemporary, ownedTemporaryCleanupResiduePrefix, OWNED_TEMPORARY_CLEANUP_RESIDUE_MARKER } from "./repository-mutation/adapters/node/node-cleanup-owned-temporary.js";
|
|
8
|
+
export { syncDirectoryDurably, syncDirectoryStrictly } from "./repository-mutation/adapters/node/node-directory-durability.js";
|
|
9
|
+
export { createAndBindNodeDirectory } from "./repository-mutation/adapters/node/node-create-and-bind-directory.js";
|
|
10
|
+
export { prepareExactSiblingTemporary } from "./repository-mutation/adapters/node/node-prepare-exact-sibling-temporary.js";
|
|
11
|
+
export { publishPreparedAbsentFile } from "./repository-mutation/adapters/node/node-publish-prepared-absent-file.js";
|
|
12
|
+
export { assertNoPortableNameCollision, assertSafeExistingRepositoryAncestors, ExistingRepositoryAncestorError } from "./repository-mutation/adapters/node/node-existing-repository-ancestors.js";
|
|
13
|
+
export { isLexicallyContainedPath } from "./repository-mutation/adapters/node/node-repository-path.js";
|
|
14
|
+
export { AbsentFilePublicationError } from "./repository-mutation/application/model/exact-postimage.js";
|
|
15
|
+
export { assertTemporaryPathsAbsent, classifyExactFilePostimage, publishAbsentFile } from "./repository-mutation/adapters/node/node-absent-file-publication.js";
|
|
16
|
+
export { ensureMutationStateDirectory, pruneMutationStateDirectory, syncMutationStateDirectory, syncMutationStateDirectoryStrictly } from "./transaction-coordination/adapters/node/node-state-directory.js";
|
|
17
|
+
export { NodeJournalSlotStore } from "./transaction-coordination/adapters/node/node-journal-slot-store.js";
|
|
18
|
+
export { sameJournalSlotAuthority } from "./transaction-coordination/adapters/node/node-journal-slot-profile.js";
|
|
19
|
+
//# sourceMappingURL=node.js.map
|
package/dist/node.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,6EAA6E;AAC7E,yDAAyD;AACzD,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,8CAA8C,CAAC;AAQtD,OAAO,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,8BAA8B,EAAE,MAAM,kEAAkE,CAAC;AAGrK,OAAO,EAAE,+BAA+B,EAAE,+BAA+B,EAAE,MAAM,yEAAyE,CAAC;AAM3J,OAAO,EAAE,qCAAqC,EAAE,kCAAkC,EAAE,sCAAsC,EAAE,MAAM,qEAAqE,CAAC;AACxM,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,kEAAkE,CAAC;AAM/H,OAAO,EAAE,0BAA0B,EAAE,MAAM,uEAAuE,CAAC;AAEnH,OAAO,EAAE,4BAA4B,EAAE,MAAM,6EAA6E,CAAC;AAE3H,OAAO,EAAE,yBAAyB,EAAE,MAAM,0EAA0E,CAAC;AAErH,OAAO,EAAE,6BAA6B,EAAE,qCAAqC,EAAE,+BAA+B,EAAE,MAAM,2EAA2E,CAAC;AAElM,OAAO,EAAE,wBAAwB,EAAE,MAAM,6DAA6D,CAAC;AAEvG,OAAO,EAAE,0BAA0B,EAAE,MAAM,4DAA4D,CAAC;AAOxG,OAAO,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,MAAM,qEAAqE,CAAC;AAEhK,OAAO,EAAE,4BAA4B,EAAE,2BAA2B,EAAE,0BAA0B,EAAE,kCAAkC,EAAE,MAAM,kEAAkE,CAAC;AAC7M,OAAO,EAAE,oBAAoB,EAAE,MAAM,qEAAqE,CAAC;AAC3G,OAAO,EAAE,wBAAwB,EAAE,MAAM,uEAAuE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-version.d.ts","sourceRoot":"","sources":["../src/package-version.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,gCAAgC,EAAG,kCAA2C,CAAC;AAE5F,wBAAsB,kCAAkC,IAAI,OAAO,CAAC,MAAM,CAAC,CAI1E"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { readFile } from "node:fs/promises";
|
|
2
|
+
import { fileURLToPath } from "node:url";
|
|
3
|
+
export const REPOSITORY_MUTATION_PACKAGE_NAME = "@agent-teams/repository-mutation";
|
|
4
|
+
export async function installedRepositoryMutationVersion() {
|
|
5
|
+
const value = JSON.parse(await readFile(fileURLToPath(new URL("../package.json", import.meta.url)), "utf8"));
|
|
6
|
+
if (typeof value.version !== "string") {
|
|
7
|
+
throw new Error("Installed Repository Mutation version is unavailable.");
|
|
8
|
+
}
|
|
9
|
+
return value.version;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=package-version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-version.js","sourceRoot":"","sources":["../src/package-version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,CAAC,MAAM,gCAAgC,GAAG,kCAA2C,CAAC;AAE5F,MAAM,CAAC,KAAK,UAAU,kCAAkC;IACtD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAA0B,CAAC;IACtI,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QAAA,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAAA,CAAC;IAClH,OAAO,KAAK,CAAC,OAAO,CAAC;AACvB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export type { KnownFileRecoveryFaultInjector } from "../repository-mutation/adapters/node/node-known-file-transaction-recovery.js";
|
|
2
|
+
export type { KnownFileTransactionFaultInjector, KnownFileTransactionFaultPoint, } from "../repository-mutation/adapters/node/node-known-file-transaction.js";
|
|
3
|
+
export type { KnownFileDigest, KnownFileImageV1, KnownFilePreconditionV1, KnownFileTransactionOperationOutcome, KnownFileTransactionOperationV1, KnownFileTransactionPlanV1, KnownFileTransactionReceiptV1, } from "../repository-mutation/application/model/known-file-transaction.js";
|
|
4
|
+
export type { MutationClaim } from "../transaction-coordination/mutation-lease.js";
|
|
5
|
+
export { recoverKnownFileTransactionWithFaults as recoverKnownFileTransaction } from "../repository-mutation/adapters/node/node-known-file-transaction-recovery.js";
|
|
6
|
+
export { applyKnownFileTransactionWithFaults as applyKnownFileTransaction } from "../repository-mutation/adapters/node/node-known-file-transaction.js";
|
|
7
|
+
export { readBoundedRegularFileWithFaults as readBoundedRegularFile } from "../repository-mutation/adapters/node/node-bounded-regular-file.js";
|
|
8
|
+
export { readBoundedRegularFile as readBoundedRegularFileRuntime, } from "../repository-mutation/adapters/node/node-bounded-regular-file.js";
|
|
9
|
+
export type { BoundedRegularFileRead, BoundedRegularFileReadFaultInjector, } from "../repository-mutation/adapters/node/node-bounded-regular-file.js";
|
|
10
|
+
export { prepareExactSiblingTemporaryWithFaults as prepareExactSiblingTemporary } from "../repository-mutation/adapters/node/node-prepare-exact-sibling-temporary.js";
|
|
11
|
+
export type { PrepareExactSiblingTemporaryOptions } from "../repository-mutation/adapters/node/node-prepare-exact-sibling-temporary.js";
|
|
12
|
+
export type { PortablePathIdentity } from "../repository-mutation/application/model/path-identity.js";
|
|
13
|
+
export { publishPreparedAbsentFileWithFaults as publishPreparedAbsentFile } from "../repository-mutation/adapters/node/node-publish-prepared-absent-file.js";
|
|
14
|
+
export type { PublishPreparedAbsentFileOptions } from "../repository-mutation/adapters/node/node-publish-prepared-absent-file.js";
|
|
15
|
+
export { publishAbsentFileWithFaults as publishAbsentFile } from "../repository-mutation/adapters/node/node-absent-file-publication.js";
|
|
16
|
+
export type { AbsentFilePublicationOperations, AbsentFilePublicationOptions, AbsentFilePublicationFaultInjector, AbsentFilePublicationFaultPoint, } from "../repository-mutation/adapters/node/node-absent-file-publication.js";
|
|
17
|
+
export type { AbsentFilePublicationOutcome, ExactFilePostimage, } from "../repository-mutation/application/model/exact-postimage.js";
|
|
18
|
+
export type { OwnedTemporaryCleanupTransition, OwnedTemporaryCleanupTransitionPort, } from "../repository-mutation/application/ports/owned-temporary-cleanup-transition.js";
|
|
19
|
+
export { syncDirectoryDurably } from "../repository-mutation/adapters/node/node-directory-durability.js";
|
|
20
|
+
export type { DirectoryDurability, DirectoryDurabilityOperations, DirectorySyncHandle, } from "../repository-mutation/adapters/node/node-directory-durability.js";
|
|
21
|
+
export { NodeMutationOperationLock } from "../transaction-coordination/adapters/node/node-operation-lock.js";
|
|
22
|
+
export type { MutationOperationReleaseOptions, OperationLockOperations, } from "../transaction-coordination/adapters/node/node-operation-lock.js";
|
|
23
|
+
export { releaseKnownFileTransactionLeaseWith } from "../repository-mutation/adapters/node/node-known-file-transaction-lease-release.js";
|
|
24
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/qualification/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,8BAA8B,EAAE,MAAM,8EAA8E,CAAC;AACnI,YAAY,EACV,iCAAiC,EACjC,8BAA8B,GAC/B,MAAM,qEAAqE,CAAC;AAC7E,YAAY,EACV,eAAe,EACf,gBAAgB,EAChB,uBAAuB,EACvB,oCAAoC,EACpC,+BAA+B,EAC/B,0BAA0B,EAC1B,6BAA6B,GAC9B,MAAM,oEAAoE,CAAC;AAC5E,YAAY,EAAE,aAAa,EAAE,MAAM,+CAA+C,CAAC;AACnF,OAAO,EAAE,qCAAqC,IAAI,2BAA2B,EAAE,MAAM,8EAA8E,CAAC;AACpK,OAAO,EAAE,mCAAmC,IAAI,yBAAyB,EAAE,MAAM,qEAAqE,CAAC;AACvJ,OAAO,EACL,gCAAgC,IAAI,sBAAsB,EAC3D,MAAM,mEAAmE,CAAC;AAC3E,OAAO,EACL,sBAAsB,IAAI,6BAA6B,GACxD,MAAM,mEAAmE,CAAC;AAC3E,YAAY,EACV,sBAAsB,EACtB,mCAAmC,GACpC,MAAM,mEAAmE,CAAC;AAC3E,OAAO,EACL,sCAAsC,IAAI,4BAA4B,EACvE,MAAM,8EAA8E,CAAC;AACtF,YAAY,EAAE,mCAAmC,EAAE,MAAM,8EAA8E,CAAC;AACxI,YAAY,EAAE,oBAAoB,EAAE,MAAM,2DAA2D,CAAC;AACtG,OAAO,EACL,mCAAmC,IAAI,yBAAyB,EACjE,MAAM,2EAA2E,CAAC;AACnF,YAAY,EAAE,gCAAgC,EAAE,MAAM,2EAA2E,CAAC;AAClI,OAAO,EACL,2BAA2B,IAAI,iBAAiB,EACjD,MAAM,sEAAsE,CAAC;AAC9E,YAAY,EACV,+BAA+B,EAC/B,4BAA4B,EAC5B,kCAAkC,EAClC,+BAA+B,GAChC,MAAM,sEAAsE,CAAC;AAC9E,YAAY,EACV,4BAA4B,EAC5B,kBAAkB,GACnB,MAAM,6DAA6D,CAAC;AACrE,YAAY,EACV,+BAA+B,EAC/B,mCAAmC,GACpC,MAAM,gFAAgF,CAAC;AACxF,OAAO,EAAE,oBAAoB,EAAE,MAAM,mEAAmE,CAAC;AACzG,YAAY,EACV,mBAAmB,EACnB,6BAA6B,EAC7B,mBAAmB,GACpB,MAAM,mEAAmE,CAAC;AAC3E,OAAO,EAAE,yBAAyB,EAAE,MAAM,kEAAkE,CAAC;AAC7G,YAAY,EACV,+BAA+B,EAC/B,uBAAuB,GACxB,MAAM,kEAAkE,CAAC;AAC1E,OAAO,EAAE,oCAAoC,EAAE,MAAM,mFAAmF,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export { recoverKnownFileTransactionWithFaults as recoverKnownFileTransaction } from "../repository-mutation/adapters/node/node-known-file-transaction-recovery.js";
|
|
2
|
+
export { applyKnownFileTransactionWithFaults as applyKnownFileTransaction } from "../repository-mutation/adapters/node/node-known-file-transaction.js";
|
|
3
|
+
export { readBoundedRegularFileWithFaults as readBoundedRegularFile } from "../repository-mutation/adapters/node/node-bounded-regular-file.js";
|
|
4
|
+
export { readBoundedRegularFile as readBoundedRegularFileRuntime, } from "../repository-mutation/adapters/node/node-bounded-regular-file.js";
|
|
5
|
+
export { prepareExactSiblingTemporaryWithFaults as prepareExactSiblingTemporary } from "../repository-mutation/adapters/node/node-prepare-exact-sibling-temporary.js";
|
|
6
|
+
export { publishPreparedAbsentFileWithFaults as publishPreparedAbsentFile } from "../repository-mutation/adapters/node/node-publish-prepared-absent-file.js";
|
|
7
|
+
export { publishAbsentFileWithFaults as publishAbsentFile } from "../repository-mutation/adapters/node/node-absent-file-publication.js";
|
|
8
|
+
export { syncDirectoryDurably } from "../repository-mutation/adapters/node/node-directory-durability.js";
|
|
9
|
+
export { NodeMutationOperationLock } from "../transaction-coordination/adapters/node/node-operation-lock.js";
|
|
10
|
+
export { releaseKnownFileTransactionLeaseWith } from "../repository-mutation/adapters/node/node-known-file-transaction-lease-release.js";
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/qualification/index.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,qCAAqC,IAAI,2BAA2B,EAAE,MAAM,8EAA8E,CAAC;AACpK,OAAO,EAAE,mCAAmC,IAAI,yBAAyB,EAAE,MAAM,qEAAqE,CAAC;AACvJ,OAAO,EACL,gCAAgC,IAAI,sBAAsB,EAC3D,MAAM,mEAAmE,CAAC;AAC3E,OAAO,EACL,sBAAsB,IAAI,6BAA6B,GACxD,MAAM,mEAAmE,CAAC;AAK3E,OAAO,EACL,sCAAsC,IAAI,4BAA4B,EACvE,MAAM,8EAA8E,CAAC;AAGtF,OAAO,EACL,mCAAmC,IAAI,yBAAyB,EACjE,MAAM,2EAA2E,CAAC;AAEnF,OAAO,EACL,2BAA2B,IAAI,iBAAiB,EACjD,MAAM,sEAAsE,CAAC;AAe9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,mEAAmE,CAAC;AAMzG,OAAO,EAAE,yBAAyB,EAAE,MAAM,kEAAkE,CAAC;AAK7G,OAAO,EAAE,oCAAoC,EAAE,MAAM,mFAAmF,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type ExactFilePostimage, type ExactFilePostimageState } from "../../application/model/exact-postimage.js";
|
|
2
|
+
import type { PortablePathIdentity } from "../../application/model/path-identity.js";
|
|
3
|
+
import { readBoundedRegularFile, type BoundedRegularFileRead } from "./node-bounded-regular-file.js";
|
|
4
|
+
import type { DirectoryDurability } from "./node-directory-durability.js";
|
|
5
|
+
export declare function publicationErrorCode(error: unknown): string | undefined;
|
|
6
|
+
export declare function isMissingPublicationPath(error: unknown): boolean;
|
|
7
|
+
export declare function samePublicationIdentity(left: PortablePathIdentity, right: PortablePathIdentity): boolean;
|
|
8
|
+
export declare function exactReadMatchesPostimage(result: BoundedRegularFileRead, postimage: ExactFilePostimage): result is Extract<typeof result, {
|
|
9
|
+
readonly outcome: "read";
|
|
10
|
+
}>;
|
|
11
|
+
export declare function classifyExactFilePostimageWith(readFile: typeof readBoundedRegularFile, destinationPath: string, postimage: ExactFilePostimage): Promise<ExactFilePostimageState>;
|
|
12
|
+
export declare function syncPublicationDirectory(options: {
|
|
13
|
+
readonly allowUnsupportedDirectoryDurability: boolean;
|
|
14
|
+
readonly displayPath: string;
|
|
15
|
+
readonly parent: string;
|
|
16
|
+
readonly syncDirectory: (path: string) => Promise<DirectoryDurability>;
|
|
17
|
+
}): Promise<void>;
|
|
18
|
+
export declare function assertValidExactPostimage(postimage: ExactFilePostimage): void;
|
|
19
|
+
//# sourceMappingURL=node-absent-file-publication-private.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-absent-file-publication-private.d.ts","sourceRoot":"","sources":["../../../../src/repository-mutation/adapters/node/node-absent-file-publication-private.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC7B,MAAM,4CAA4C,CAAC;AACpD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;AACrF,OAAO,EACL,sBAAsB,EACtB,KAAK,sBAAsB,EAC5B,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAE1E,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAIvE;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEhE;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,oBAAoB,EAC1B,KAAK,EAAE,oBAAoB,GAC1B,OAAO,CAMT;AAMD,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,sBAAsB,EAC9B,SAAS,EAAE,kBAAkB,GAC5B,MAAM,IAAI,OAAO,CAAC,OAAO,MAAM,EAAE;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAQhE;AAKD,wBAAsB,8BAA8B,CAClD,QAAQ,EAAE,OAAO,sBAAsB,EACvC,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,kBAAkB,GAC5B,OAAO,CAAC,uBAAuB,CAAC,CA4BlC;AAED,wBAAsB,wBAAwB,CAAC,OAAO,EAAE;IACtD,QAAQ,CAAC,mCAAmC,EAAE,OAAO,CAAC;IACtD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,aAAa,EAAE,CACtB,IAAI,EAAE,MAAM,KACT,OAAO,CAAC,mBAAmB,CAAC,CAAC;CACnC,GAAG,OAAO,CAAC,IAAI,CAAC,CAWhB;AAED,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,kBAAkB,GAAG,IAAI,CAe7E"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { AbsentFilePublicationError } from "../../application/model/exact-postimage.js";
|
|
3
|
+
import { readBoundedRegularFile } from "./node-bounded-regular-file.js";
|
|
4
|
+
export function publicationErrorCode(error) {
|
|
5
|
+
return error instanceof Error && "code" in error
|
|
6
|
+
? error.code
|
|
7
|
+
: undefined;
|
|
8
|
+
}
|
|
9
|
+
export function isMissingPublicationPath(error) {
|
|
10
|
+
return publicationErrorCode(error) === "ENOENT";
|
|
11
|
+
}
|
|
12
|
+
export function samePublicationIdentity(left, right) {
|
|
13
|
+
return (left.dev === right.dev &&
|
|
14
|
+
left.ino === right.ino &&
|
|
15
|
+
left.birthtimeNs === right.birthtimeNs);
|
|
16
|
+
}
|
|
17
|
+
function sha256(bytes) {
|
|
18
|
+
return `sha256:${createHash("sha256").update(bytes).digest("hex")}`;
|
|
19
|
+
}
|
|
20
|
+
export function exactReadMatchesPostimage(result, postimage) {
|
|
21
|
+
return (result.outcome === "read" &&
|
|
22
|
+
result.bytes.byteLength === postimage.size &&
|
|
23
|
+
sha256(result.bytes) === postimage.digest &&
|
|
24
|
+
(process.platform === "win32" ||
|
|
25
|
+
(result.mode & 0o777) === postimage.mode));
|
|
26
|
+
}
|
|
27
|
+
// Covers the one-shot ctime change when a concurrent publisher unlinks its hard-link temporary.
|
|
28
|
+
const maximumUnstableReadRetries = 2;
|
|
29
|
+
export async function classifyExactFilePostimageWith(readFile, destinationPath, postimage) {
|
|
30
|
+
for (let attempt = 0;; attempt += 1) {
|
|
31
|
+
try {
|
|
32
|
+
const result = await readFile(destinationPath, postimage.size);
|
|
33
|
+
if (result.outcome === "changed" &&
|
|
34
|
+
attempt < maximumUnstableReadRetries) {
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
if (result.outcome !== "read") {
|
|
38
|
+
return "conflict";
|
|
39
|
+
}
|
|
40
|
+
const modeMatches = process.platform === "win32" ||
|
|
41
|
+
(result.mode & 0o777) === postimage.mode;
|
|
42
|
+
return result.bytes.byteLength === postimage.size &&
|
|
43
|
+
sha256(result.bytes) === postimage.digest &&
|
|
44
|
+
modeMatches
|
|
45
|
+
? "exact"
|
|
46
|
+
: "conflict";
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
if (isMissingPublicationPath(error)) {
|
|
50
|
+
return "absent";
|
|
51
|
+
}
|
|
52
|
+
throw error;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
export async function syncPublicationDirectory(options) {
|
|
57
|
+
const durability = await options.syncDirectory(options.parent);
|
|
58
|
+
if (durability === "unsupported" &&
|
|
59
|
+
!options.allowUnsupportedDirectoryDurability) {
|
|
60
|
+
throw new AbsentFilePublicationError("PUBLICATION_UNSUPPORTED", `Directory durability is unsupported: ${options.displayPath}.`);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
export function assertValidExactPostimage(postimage) {
|
|
64
|
+
if (!Number.isSafeInteger(postimage.size) ||
|
|
65
|
+
postimage.size < 0 ||
|
|
66
|
+
postimage.bytes.byteLength !== postimage.size ||
|
|
67
|
+
sha256(postimage.bytes) !== postimage.digest ||
|
|
68
|
+
!Number.isSafeInteger(postimage.mode) ||
|
|
69
|
+
postimage.mode < 0 ||
|
|
70
|
+
postimage.mode > 0o777) {
|
|
71
|
+
throw new AbsentFilePublicationError("INVALID_POSTIMAGE", "Exact file postimage metadata does not match its bytes.");
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=node-absent-file-publication-private.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-absent-file-publication-private.js","sourceRoot":"","sources":["../../../../src/repository-mutation/adapters/node/node-absent-file-publication-private.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { link, type FileHandle } from "node:fs/promises";
|
|
2
|
+
import { type AbsentFilePublicationOutcome, type ExactFilePostimage, type ExactFilePostimageState } from "../../application/model/exact-postimage.js";
|
|
3
|
+
import type { OwnedTemporaryCleanupTransitionPort } from "../../application/ports/owned-temporary-cleanup-transition.js";
|
|
4
|
+
import { readBoundedRegularFile } from "./node-bounded-regular-file.js";
|
|
5
|
+
import { syncDirectoryDurably } from "./node-directory-durability.js";
|
|
6
|
+
export interface AbsentFilePublicationFaultPoint {
|
|
7
|
+
readonly phase: "after-hard-link" | "after-temporary-synced" | "after-temporary-written";
|
|
8
|
+
}
|
|
9
|
+
export type AbsentFilePublicationFaultInjector = (point: AbsentFilePublicationFaultPoint) => Promise<void> | void;
|
|
10
|
+
export interface AbsentFilePublicationOperations {
|
|
11
|
+
readonly link: typeof link;
|
|
12
|
+
readonly open: (path: string, flags: "wx", mode: number) => Promise<FileHandle>;
|
|
13
|
+
readonly readBoundedRegularFile: typeof readBoundedRegularFile;
|
|
14
|
+
readonly rm: (path: string) => Promise<void>;
|
|
15
|
+
readonly syncDirectory: typeof syncDirectoryDurably;
|
|
16
|
+
}
|
|
17
|
+
export declare function classifyExactFilePostimage(destinationPath: string, postimage: ExactFilePostimage): Promise<ExactFilePostimageState>;
|
|
18
|
+
export declare function assertTemporaryPathsAbsent(entries: readonly {
|
|
19
|
+
readonly displayPath: string;
|
|
20
|
+
readonly temporaryPath: string;
|
|
21
|
+
}[]): Promise<void>;
|
|
22
|
+
export interface AbsentFilePublicationOptions {
|
|
23
|
+
readonly allowUnsupportedDirectoryDurability?: boolean;
|
|
24
|
+
readonly destinationPath: string;
|
|
25
|
+
readonly displayPath: string;
|
|
26
|
+
readonly postimage: ExactFilePostimage;
|
|
27
|
+
readonly temporaryPath: string;
|
|
28
|
+
readonly transition?: OwnedTemporaryCleanupTransitionPort;
|
|
29
|
+
}
|
|
30
|
+
export declare function publishAbsentFileWithFaults(options: AbsentFilePublicationOptions & {
|
|
31
|
+
readonly faultInjector?: AbsentFilePublicationFaultInjector;
|
|
32
|
+
readonly operations?: Partial<AbsentFilePublicationOperations>;
|
|
33
|
+
}): Promise<AbsentFilePublicationOutcome>;
|
|
34
|
+
export declare function publishAbsentFile(options: AbsentFilePublicationOptions): Promise<AbsentFilePublicationOutcome>;
|
|
35
|
+
//# sourceMappingURL=node-absent-file-publication.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-absent-file-publication.d.ts","sourceRoot":"","sources":["../../../../src/repository-mutation/adapters/node/node-absent-file-publication.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,IAAI,EAAY,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG1E,OAAO,EAEL,KAAK,4BAA4B,EACjC,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC7B,MAAM,4CAA4C,CAAC;AAEpD,OAAO,KAAK,EAAE,mCAAmC,EAAE,MAAM,+DAA+D,CAAC;AAEzH,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAExE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAYtE,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,KAAK,EACV,iBAAiB,GACjB,wBAAwB,GACxB,yBAAyB,CAAC;CAC/B;AAED,MAAM,MAAM,kCAAkC,GAAG,CAC/C,KAAK,EAAE,+BAA+B,KACnC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAE1B,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,CACb,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,IAAI,EACX,IAAI,EAAE,MAAM,KACT,OAAO,CAAC,UAAU,CAAC,CAAC;IACzB,QAAQ,CAAC,sBAAsB,EAAE,OAAO,sBAAsB,CAAC;IAC/D,QAAQ,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,QAAQ,CAAC,aAAa,EAAE,OAAO,oBAAoB,CAAC;CACrD;AA2DD,wBAAsB,0BAA0B,CAC9C,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,kBAAkB,GAC5B,OAAO,CAAC,uBAAuB,CAAC,CAMlC;AAED,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,SAAS;IAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;CAAE,EAAE,GACnF,OAAO,CAAC,IAAI,CAAC,CAef;AA0ID,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,mCAAmC,CAAC,EAAE,OAAO,CAAC;IACvD,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,kBAAkB,CAAC;IACvC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,UAAU,CAAC,EAAE,mCAAmC,CAAC;CAC3D;AAED,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,4BAA4B,GAAG;IACtC,QAAQ,CAAC,aAAa,CAAC,EAAE,kCAAkC,CAAC;IAC5D,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,+BAA+B,CAAC,CAAC;CAChE,GACA,OAAO,CAAC,4BAA4B,CAAC,CAoCvC;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,4BAA4B,GACpC,OAAO,CAAC,4BAA4B,CAAC,CAEvC"}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import { lstat, link, open, rm } from "node:fs/promises";
|
|
2
|
+
import { dirname, resolve } from "node:path";
|
|
3
|
+
import { AbsentFilePublicationError } from "../../application/model/exact-postimage.js";
|
|
4
|
+
import { portableRepositoryPathIdentity } from "../../application/model/repository-path.js";
|
|
5
|
+
import { readBoundedRegularFile } from "./node-bounded-regular-file.js";
|
|
6
|
+
import { cleanupIdentityMatchingOwnedTemporary } from "./node-cleanup-owned-temporary.js";
|
|
7
|
+
import { syncDirectoryDurably } from "./node-directory-durability.js";
|
|
8
|
+
import { assertValidExactPostimage, classifyExactFilePostimageWith, isMissingPublicationPath } from "./node-absent-file-publication-private.js";
|
|
9
|
+
import { prepareExactSiblingTemporaryWithFaults } from "./node-prepare-exact-sibling-temporary.js";
|
|
10
|
+
import { publishPreparedAbsentFileWithFaults, verifyPublishedAbsentFile } from "./node-publish-prepared-absent-file.js";
|
|
11
|
+
const nodeOperations = {
|
|
12
|
+
link,
|
|
13
|
+
open,
|
|
14
|
+
readBoundedRegularFile,
|
|
15
|
+
rm,
|
|
16
|
+
syncDirectory: syncDirectoryDurably
|
|
17
|
+
};
|
|
18
|
+
function snapshotPostimage(postimage) {
|
|
19
|
+
const snapshot = {
|
|
20
|
+
bytes: Buffer.from(postimage.bytes),
|
|
21
|
+
digest: postimage.digest,
|
|
22
|
+
mode: postimage.mode,
|
|
23
|
+
size: postimage.size
|
|
24
|
+
};
|
|
25
|
+
assertValidExactPostimage(snapshot);
|
|
26
|
+
return snapshot;
|
|
27
|
+
}
|
|
28
|
+
function assertValidPublicationPaths(temporaryPath, destinationPath, displayPath) {
|
|
29
|
+
const resolvedTemporary = resolve(temporaryPath);
|
|
30
|
+
const resolvedDestination = resolve(destinationPath);
|
|
31
|
+
if (portableRepositoryPathIdentity(resolvedTemporary) ===
|
|
32
|
+
portableRepositoryPathIdentity(resolvedDestination) ||
|
|
33
|
+
dirname(resolvedTemporary) !== dirname(resolvedDestination)) {
|
|
34
|
+
throw new AbsentFilePublicationError("PUBLICATION_INVALID", `Publication paths are not distinct siblings: ${displayPath}.`);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
export async function classifyExactFilePostimage(destinationPath, postimage) {
|
|
38
|
+
return classifyExactFilePostimageWith(readBoundedRegularFile, destinationPath, snapshotPostimage(postimage));
|
|
39
|
+
}
|
|
40
|
+
export async function assertTemporaryPathsAbsent(entries) {
|
|
41
|
+
for (const entry of entries) {
|
|
42
|
+
try {
|
|
43
|
+
await lstat(entry.temporaryPath);
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
if (isMissingPublicationPath(error)) {
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
throw error;
|
|
50
|
+
}
|
|
51
|
+
throw new AbsentFilePublicationError("TEMPORARY_EXISTS", `Temporary path already exists: ${entry.displayPath}.`);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
async function runPublicationPhase(context) {
|
|
55
|
+
const state = {
|
|
56
|
+
concurrentSatisfied: false,
|
|
57
|
+
published: false
|
|
58
|
+
};
|
|
59
|
+
try {
|
|
60
|
+
const temporaryIdentity = await prepareExactSiblingTemporaryWithFaults({
|
|
61
|
+
displayPath: context.displayPath,
|
|
62
|
+
...(context.faultInjector === undefined
|
|
63
|
+
? {}
|
|
64
|
+
: { faultInjector: context.faultInjector }),
|
|
65
|
+
onIdentityCaptured(identity) {
|
|
66
|
+
state.temporaryIdentity = identity;
|
|
67
|
+
},
|
|
68
|
+
open: context.operations.open,
|
|
69
|
+
postimage: context.postimage,
|
|
70
|
+
temporaryPath: context.temporaryPath
|
|
71
|
+
});
|
|
72
|
+
await context.faultInjector?.({ phase: "after-temporary-synced" });
|
|
73
|
+
const outcome = await publishPreparedAbsentFileWithFaults({
|
|
74
|
+
allowUnsupportedDirectoryDurability: context.allowUnsupportedDirectoryDurability,
|
|
75
|
+
classifyBoundedRegularFile: context.operations.readBoundedRegularFile,
|
|
76
|
+
destinationPath: context.destinationPath,
|
|
77
|
+
displayPath: context.displayPath,
|
|
78
|
+
expectedIdentity: temporaryIdentity,
|
|
79
|
+
...(context.faultInjector === undefined
|
|
80
|
+
? {}
|
|
81
|
+
: { faultInjector: context.faultInjector }),
|
|
82
|
+
link: context.operations.link,
|
|
83
|
+
parent: context.parent,
|
|
84
|
+
postimage: context.postimage,
|
|
85
|
+
readBoundedRegularFile: context.operations.readBoundedRegularFile,
|
|
86
|
+
syncDirectory: context.operations.syncDirectory,
|
|
87
|
+
temporaryPath: context.temporaryPath
|
|
88
|
+
});
|
|
89
|
+
state.concurrentSatisfied = outcome === "already-satisfied";
|
|
90
|
+
state.published = outcome === "published";
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
state.error = error;
|
|
94
|
+
}
|
|
95
|
+
return state;
|
|
96
|
+
}
|
|
97
|
+
async function cleanupPublicationTemporary(context, state) {
|
|
98
|
+
try {
|
|
99
|
+
const ownership = state.temporaryIdentity === undefined
|
|
100
|
+
? "missing"
|
|
101
|
+
: await cleanupIdentityMatchingOwnedTemporary({
|
|
102
|
+
allowUnsupportedDirectoryDurability: context.allowUnsupportedDirectoryDurability,
|
|
103
|
+
displayPath: context.displayPath,
|
|
104
|
+
expectedIdentity: state.temporaryIdentity,
|
|
105
|
+
parent: context.parent,
|
|
106
|
+
rm: context.operations.rm,
|
|
107
|
+
syncDirectory: context.operations.syncDirectory,
|
|
108
|
+
temporaryPath: context.temporaryPath,
|
|
109
|
+
...(context.transition === undefined
|
|
110
|
+
? {}
|
|
111
|
+
: { transition: context.transition })
|
|
112
|
+
});
|
|
113
|
+
if (ownership === "different") {
|
|
114
|
+
throw new AbsentFilePublicationError("TEMPORARY_REPLACED", `Temporary path was replaced concurrently: ${context.displayPath}.`, state.error === undefined ? undefined : { cause: state.error });
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
catch (cleanupError) {
|
|
118
|
+
if (cleanupError instanceof AbsentFilePublicationError &&
|
|
119
|
+
cleanupError.code === "TEMPORARY_REPLACED") {
|
|
120
|
+
throw cleanupError;
|
|
121
|
+
}
|
|
122
|
+
throw new AbsentFilePublicationError("CLEANUP_FAILED", `Publication temporary cleanup failed: ${context.displayPath}.`, {
|
|
123
|
+
cause: state.error ?? cleanupError,
|
|
124
|
+
cleanupError
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
async function publicationOutcome(context, state) {
|
|
129
|
+
if (state.error !== undefined) {
|
|
130
|
+
if (!(state.error instanceof Error)) {
|
|
131
|
+
throw new AbsentFilePublicationError("INVALID_ERROR", `Publication failed with an invalid error value: ${context.displayPath}.`);
|
|
132
|
+
}
|
|
133
|
+
throw state.error;
|
|
134
|
+
}
|
|
135
|
+
if (state.concurrentSatisfied) {
|
|
136
|
+
if ((await classifyExactFilePostimageWith(context.operations.readBoundedRegularFile, context.destinationPath, context.postimage)) !== "exact") {
|
|
137
|
+
throw new AbsentFilePublicationError("CONFLICT", `Destination changed concurrently: ${context.displayPath}.`);
|
|
138
|
+
}
|
|
139
|
+
return "already-satisfied";
|
|
140
|
+
}
|
|
141
|
+
if (!state.published || state.temporaryIdentity === undefined) {
|
|
142
|
+
throw new AbsentFilePublicationError("PUBLICATION_INCOMPLETE", `Publication did not reach a terminal state: ${context.displayPath}.`);
|
|
143
|
+
}
|
|
144
|
+
await verifyPublishedAbsentFile({
|
|
145
|
+
destinationPath: context.destinationPath,
|
|
146
|
+
displayPath: context.displayPath,
|
|
147
|
+
expectedIdentity: state.temporaryIdentity,
|
|
148
|
+
postimage: context.postimage,
|
|
149
|
+
readBoundedRegularFile: context.operations.readBoundedRegularFile
|
|
150
|
+
});
|
|
151
|
+
return "published";
|
|
152
|
+
}
|
|
153
|
+
export async function publishAbsentFileWithFaults(options) {
|
|
154
|
+
const postimage = snapshotPostimage(options.postimage);
|
|
155
|
+
const context = {
|
|
156
|
+
allowUnsupportedDirectoryDurability: options.allowUnsupportedDirectoryDurability === true,
|
|
157
|
+
destinationPath: options.destinationPath,
|
|
158
|
+
displayPath: options.displayPath,
|
|
159
|
+
faultInjector: options.faultInjector,
|
|
160
|
+
operations: { ...nodeOperations, ...options.operations },
|
|
161
|
+
parent: dirname(resolve(options.destinationPath)),
|
|
162
|
+
postimage,
|
|
163
|
+
temporaryPath: options.temporaryPath,
|
|
164
|
+
transition: options.transition
|
|
165
|
+
};
|
|
166
|
+
assertValidPublicationPaths(context.temporaryPath, context.destinationPath, context.displayPath);
|
|
167
|
+
const initial = await classifyExactFilePostimageWith(context.operations.readBoundedRegularFile, context.destinationPath, context.postimage);
|
|
168
|
+
if (initial === "exact") {
|
|
169
|
+
return "already-satisfied";
|
|
170
|
+
}
|
|
171
|
+
if (initial === "conflict") {
|
|
172
|
+
throw new AbsentFilePublicationError("CONFLICT", `Destination changed concurrently: ${context.displayPath}.`);
|
|
173
|
+
}
|
|
174
|
+
const state = await runPublicationPhase(context);
|
|
175
|
+
await cleanupPublicationTemporary(context, state);
|
|
176
|
+
return publicationOutcome(context, state);
|
|
177
|
+
}
|
|
178
|
+
export function publishAbsentFile(options) {
|
|
179
|
+
return publishAbsentFileWithFaults(options);
|
|
180
|
+
}
|
|
181
|
+
//# sourceMappingURL=node-absent-file-publication.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-absent-file-publication.js","sourceRoot":"","sources":["../../../../src/repository-mutation/adapters/node/node-absent-file-publication.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type FileHandle } from "node:fs/promises";
|
|
2
|
+
import type { PathIdentityMatch, PortablePathIdentity } from "../../application/model/path-identity.js";
|
|
3
|
+
export type BoundedRegularFileRead = {
|
|
4
|
+
readonly outcome: "read";
|
|
5
|
+
readonly bytes: Buffer;
|
|
6
|
+
readonly identity: PortablePathIdentity;
|
|
7
|
+
readonly linkCount: bigint;
|
|
8
|
+
readonly mode: number;
|
|
9
|
+
} | {
|
|
10
|
+
readonly outcome: "changed";
|
|
11
|
+
} | {
|
|
12
|
+
readonly outcome: "invalid";
|
|
13
|
+
};
|
|
14
|
+
export type BoundedRegularFileReadFaultInjector = (point: {
|
|
15
|
+
readonly phase: "before-stability-check";
|
|
16
|
+
readonly path: string;
|
|
17
|
+
}) => Promise<void> | void;
|
|
18
|
+
export declare function readBoundedRegularFileWithFaults(path: string, maximumBytes: number, faultInjector?: BoundedRegularFileReadFaultInjector): Promise<BoundedRegularFileRead>;
|
|
19
|
+
export declare function readBoundedRegularFile(path: string, maximumBytes: number): Promise<BoundedRegularFileRead>;
|
|
20
|
+
export declare function readBoundedRegularFileHandle(handle: FileHandle, path: string, maximumBytes: number, faultInjector?: BoundedRegularFileReadFaultInjector): Promise<BoundedRegularFileRead>;
|
|
21
|
+
export declare function captureFileHandleIdentity(handle: FileHandle): Promise<PortablePathIdentity>;
|
|
22
|
+
export declare function pathMatchesRegularFileIdentity(path: string, expected: PortablePathIdentity): Promise<PathIdentityMatch>;
|
|
23
|
+
//# sourceMappingURL=node-bounded-regular-file.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-bounded-regular-file.d.ts","sourceRoot":"","sources":["../../../../src/repository-mutation/adapters/node/node-bounded-regular-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE3E,OAAO,KAAK,EACV,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,0CAA0C,CAAC;AAElD,MAAM,MAAM,sBAAsB,GAC9B;IACE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;IACxC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB,GACD;IAAE,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAA;CAAE,GAC/B;IAAE,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAA;CAAE,CAAC;AAEpC,MAAM,MAAM,mCAAmC,GAAG,CAAC,KAAK,EAAE;IACxD,QAAQ,CAAC,KAAK,EAAE,wBAAwB,CAAC;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAmF3B,wBAAsB,gCAAgC,CACpD,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,aAAa,CAAC,EAAE,mCAAmC,GAClD,OAAO,CAAC,sBAAsB,CAAC,CA0BjC;AAED,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,sBAAsB,CAAC,CAEjC;AAED,wBAAsB,4BAA4B,CAChD,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,aAAa,CAAC,EAAE,mCAAmC,GAClD,OAAO,CAAC,sBAAsB,CAAC,CA8BjC;AAED,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,oBAAoB,CAAC,CAE/B;AAED,wBAAsB,8BAA8B,CAClD,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,oBAAoB,GAC7B,OAAO,CAAC,iBAAiB,CAAC,CAkB5B"}
|