@neottia/repository-store 0.2.0 → 0.3.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/README.md +8 -5
- package/binding.gyp +12 -2
- package/dist/files.d.ts.map +1 -1
- package/dist/files.js +2 -2
- package/dist/files.js.map +1 -1
- package/dist/internal/filesystem.d.ts +3 -1
- package/dist/internal/filesystem.d.ts.map +1 -1
- package/dist/internal/filesystem.js +95 -13
- package/dist/internal/filesystem.js.map +1 -1
- package/dist/internal/model.d.ts +1 -0
- package/dist/internal/model.d.ts.map +1 -1
- package/dist/internal/model.js.map +1 -1
- package/dist/internal/platform-backend.d.ts +24 -0
- package/dist/internal/platform-backend.d.ts.map +1 -0
- package/dist/internal/platform-backend.js +120 -0
- package/dist/internal/platform-backend.js.map +1 -0
- package/dist/internal/publication.d.ts.map +1 -1
- package/dist/internal/publication.js +28 -16
- package/dist/internal/publication.js.map +1 -1
- package/dist/lease.d.ts +3 -0
- package/dist/lease.d.ts.map +1 -1
- package/dist/lease.js +241 -52
- package/dist/lease.js.map +1 -1
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +4 -1
- package/dist/paths.js.map +1 -1
- package/dist/sqlite/adapter.d.ts +1 -0
- package/dist/sqlite/adapter.d.ts.map +1 -1
- package/dist/sqlite/adapter.js +9 -0
- package/dist/sqlite/adapter.js.map +1 -1
- package/dist/sqlite/cache-publication.d.ts.map +1 -1
- package/dist/sqlite/cache-publication.js +2 -2
- package/dist/sqlite/cache-publication.js.map +1 -1
- package/dist/sqlite/cache.d.ts.map +1 -1
- package/dist/sqlite/cache.js +1 -2
- package/dist/sqlite/cache.js.map +1 -1
- package/dist/transaction/apply.js +2 -2
- package/dist/transaction/apply.js.map +1 -1
- package/dist/transaction/journal.js +2 -2
- package/dist/transaction/journal.js.map +1 -1
- package/dist/transaction/recovery.js +2 -2
- package/dist/transaction/recovery.js.map +1 -1
- package/native/{rename_noreplace.cc → backend.cc} +47 -49
- package/native/freebsd_backend.cc +83 -0
- package/native/linux_backend.cc +45 -0
- package/native/macos_backend.cc +84 -0
- package/native/platform_backend.h +17 -0
- package/native/unsupported_backend.cc +28 -0
- package/native/windows_backend.cc +179 -0
- package/package.json +5 -5
- package/scripts/install-native.mjs +2 -2
- package/dist/internal/native-publication.d.ts +0 -9
- package/dist/internal/native-publication.d.ts.map +0 -1
- package/dist/internal/native-publication.js +0 -65
- package/dist/internal/native-publication.js.map +0 -1
package/README.md
CHANGED
|
@@ -14,11 +14,14 @@ The package owns byte-safe paths, SHA-256 revisions, one cross-process authority
|
|
|
14
14
|
|
|
15
15
|
- Node.js 22.16 or newer, using `node:sqlite`.
|
|
16
16
|
- Bun 1.3.13 or newer, using `bun:sqlite`.
|
|
17
|
-
- Linux x64 or arm64 with libc/kernel support for `renameat2(..., RENAME_NOREPLACE)
|
|
18
|
-
-
|
|
19
|
-
-
|
|
17
|
+
- Linux x64 or arm64 with libc/kernel support for `renameat2(..., RENAME_NOREPLACE)` and a recognized local ext4, XFS, Btrfs, tmpfs, or overlay filesystem.
|
|
18
|
+
- macOS 15 or 26 on x64 or arm64 with a local APFS volume that reports hard-link, persistent-identity, and exclusive-rename capabilities.
|
|
19
|
+
- Windows Server 2022 or 2025 on x64 with a fixed local NTFS volume that reports stable file-identity and hard-link capabilities.
|
|
20
|
+
- FreeBSD 14.x on x64 with Node.js and a local writable UFS2 volume. Bun and FreeBSD arm64 are not certified.
|
|
21
|
+
- Same-volume regular-file hard links.
|
|
22
|
+
- A C++17 compiler, Python, Make, and the platform development headers required to build the Node-API addon during installation.
|
|
20
23
|
|
|
21
|
-
The addon is built from architecture-neutral source and
|
|
24
|
+
The addon is built from architecture-neutral source. Linux uses `renameat2(..., RENAME_NOREPLACE)` and `fsync`. macOS uses `renamex_np(..., RENAME_EXCL)` and `F_FULLFSYNC`. Windows uses `SetFileInformationByHandle(..., FileRenameInfoEx)` without replacement and the Node/Bun `fsyncSync` descriptor barrier; NTFS journals same-volume namespace mutations because Windows does not expose an unprivileged directory-descriptor flush through Node.js. FreeBSD uses exclusive regular-file hard-link publication and `fsync`; because FreeBSD 14 has no no-replace directory rename, the backend uses a complete regular-file authority lease and never applies its move primitive to directories. Repository authority acquisition checks the addon and filesystem capabilities before it creates claim or lease artifacts. FreeBSD UFS1, ZFS, network filesystems, FreeBSD arm64, Bun on FreeBSD, Windows arm64, ReFS, FAT, remote or removable Windows volumes, missing or unloadable addon builds, unavailable native operations, uncertified filesystems, and shared or network filesystems return `UNSUPPORTED_RUNTIME`. Leased canonical and cache operations, including read-only operations, are unavailable in those environments.
|
|
22
25
|
|
|
23
26
|
## Canonical files
|
|
24
27
|
|
|
@@ -57,7 +60,7 @@ Every write, remove, and move has an exact expected revision. Paths reject trave
|
|
|
57
60
|
|
|
58
61
|
## Lease and recovery
|
|
59
62
|
|
|
60
|
-
One lease lives at `<authority>/.neottia/repository-store/authority.lease`. Native no-replace cleanup capability is required before its claim or lease is created. It covers canonical reads, validation, mutation, recovery, and cache work. True nested same-authority acquisition in one active async call chain is rejected; independent same-process callers are queued FIFO with the same abort, deadline, and acquisition-timeout budget used for cross-process contention. Owner and host metadata are read through fixed 4 KiB, no-follow descriptors with path and ancestor identity checks. Leases include a random owner token and local host/process evidence and reclaim only stale owners whose same-host death is conclusive.
|
|
63
|
+
One lease lives at `<authority>/.neottia/repository-store/authority.lease`. It is a private directory on Linux, macOS, and Windows, and a complete regular file on FreeBSD. Native no-replace cleanup capability is required before its claim or lease is created. It covers canonical reads, validation, mutation, recovery, and cache work. True nested same-authority acquisition in one active async call chain is rejected; independent same-process callers are queued FIFO with the same abort, deadline, and acquisition-timeout budget used for cross-process contention. Owner and host metadata are read through fixed 4 KiB, no-follow descriptors with path and ancestor identity checks. Leases include a random owner token and local host/process evidence and reclaim only stale owners whose same-host death is conclusive.
|
|
61
64
|
|
|
62
65
|
Before publication, bounded before-images, staged bytes, and a digested manifest are synchronized beneath `transactions/<managed-root-id>/`. Segregating journals prevents one domain subtree from interpreting another subtree's relative paths while all domains still share the authority lease. An `.active` journal is rollback-required; `.committed` marks the commit point, and `.cleanup` is restart-idempotent cleanup-only state. Recovery runs automatically after acquiring the lease. Ambiguous operator changes fail closed and preserve evidence.
|
|
63
66
|
|
package/binding.gyp
CHANGED
|
@@ -2,8 +2,18 @@
|
|
|
2
2
|
"targets": [
|
|
3
3
|
{
|
|
4
4
|
"target_name": "repository_store_native",
|
|
5
|
-
"sources": ["native/
|
|
6
|
-
"
|
|
5
|
+
"sources": ["native/backend.cc"],
|
|
6
|
+
"conditions": [
|
|
7
|
+
["OS == 'linux'", { "sources": ["native/linux_backend.cc"] }],
|
|
8
|
+
["OS == 'mac'", { "sources": ["native/macos_backend.cc"] }],
|
|
9
|
+
["OS == 'win'", { "sources": ["native/windows_backend.cc"] }],
|
|
10
|
+
["OS == 'freebsd'", { "sources": ["native/freebsd_backend.cc"] }],
|
|
11
|
+
["OS != 'linux' and OS != 'mac' and OS != 'win' and OS != 'freebsd'", { "sources": ["native/unsupported_backend.cc"] }]
|
|
12
|
+
],
|
|
13
|
+
"cflags_cc": ["-std=c++17"],
|
|
14
|
+
"defines": ["_WIN32_WINNT=0x0A00"],
|
|
15
|
+
"xcode_settings": { "CLANG_CXX_LANGUAGE_STANDARD": "c++17" },
|
|
16
|
+
"msvs_settings": { "VCCLCompilerTool": { "AdditionalOptions": ["/std:c++17"] } }
|
|
7
17
|
}
|
|
8
18
|
]
|
|
9
19
|
}
|
package/dist/files.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../src/files.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../src/files.ts"],"names":[],"mappings":"AAWA,OAAO,EAIL,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,eAAe,EACrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAiC,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAElF,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAGvE,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAGD,MAAM,WAAW,uBAAwB,SAAQ,gBAAgB;IAC/D,QAAQ,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,CAAC;IACvC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC;CACrD;AAGD,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,WAAW,EACjB,KAAK,EAAE,eAAe,EACtB,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,SAAS,WAAW,EAAE,CAAC,CAgCjC;AAGD,wBAAsB,eAAe,CACnC,IAAI,EAAE,WAAW,EACjB,KAAK,EAAE,eAAe,EACtB,IAAI,EAAE,WAAW,EACjB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,WAAW,CAAC,CActB;AAGD,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,WAAW,EACjB,KAAK,EAAE,eAAe,EACtB,IAAI,EAAE,WAAW,EACjB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAOlC;AAGD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI,CAG9E"}
|
package/dist/files.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { readdirSync } from 'node:fs';
|
|
2
2
|
import { join, relative } from 'node:path';
|
|
3
3
|
import { PathSafetyError, ResourceLimitError } from './errors.js';
|
|
4
|
-
import { assertSafeRegular, captureDirectories, hasCode, readRegularFile, revalidateDirectories, } from './internal/filesystem.js';
|
|
4
|
+
import { assertSafeRegular, captureDirectories, hasCode, lstatSync, readRegularFile, revalidateDirectories, } from './internal/filesystem.js';
|
|
5
5
|
import { getPathState, getRootState, managedPathBelongsToRoot, } from './internal/model.js';
|
|
6
6
|
import { assertLiveLease, checkControl } from './lease.js';
|
|
7
7
|
import { portablePathKey, resolveManagedPath } from './paths.js';
|
package/dist/files.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"files.js","sourceRoot":"","sources":["../src/files.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"files.js","sourceRoot":"","sources":["../src/files.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import { type Stats } from 'node:fs';
|
|
1
|
+
import { type PathLike, type Stats } from 'node:fs';
|
|
2
2
|
export interface DirectoryIdentity {
|
|
3
3
|
readonly path: string;
|
|
4
4
|
readonly stat: Stats;
|
|
5
5
|
}
|
|
6
|
+
export declare function lstatSync(path: PathLike): Stats;
|
|
7
|
+
export declare function fstatSync(descriptor: number): Stats;
|
|
6
8
|
export declare function noFollowFlag(): number;
|
|
7
9
|
export declare function hasCode(error: unknown, code: string): boolean;
|
|
8
10
|
export declare function sameIdentity(left: Stats, right: Stats): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filesystem.d.ts","sourceRoot":"","sources":["../../src/internal/filesystem.ts"],"names":[],"mappings":"AAAA,OAAO,EASL,KAAK,KAAK,EACX,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"filesystem.d.ts","sourceRoot":"","sources":["../../src/internal/filesystem.ts"],"names":[],"mappings":"AAAA,OAAO,EASL,KAAK,QAAQ,EACb,KAAK,KAAK,EACX,MAAM,SAAS,CAAC;AAOjB,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;CACtB;AAUD,wBAAgB,SAAS,CAAC,IAAI,EAAE,QAAQ,GAAG,KAAK,CAG/C;AAGD,wBAAgB,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,KAAK,CAGnD;AAGD,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAGD,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAE7D;AAGD,wBAAgB,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAM/D;AAsCD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CA0B3D;AAGD,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,iBAAiB,EAAE,CASzE;AAQD,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,SAAS,iBAAiB,EAAE,GAAG,IAAI,CAWpF;AAGD,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;IAAE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAO,GAC/D,UAAU,CAEZ;AAGD,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;IAAE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAO,GAC/D;IAAE,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAA;CAAE,CA+E1D;AAGD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAEjE;AAUD,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAWzE;AAGD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAclD;AAGD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAqBhD"}
|
|
@@ -1,7 +1,20 @@
|
|
|
1
|
-
import { closeSync, constants as fsConstants, fstatSync
|
|
1
|
+
import { closeSync, constants as fsConstants, fstatSync as nodeFstatSync, lstatSync as nodeLstatSync, mkdirSync, openSync, readSync, } from 'node:fs';
|
|
2
2
|
import { basename, dirname, join, resolve } from 'node:path';
|
|
3
|
-
import { DurabilityError, PathSafetyError, ResourceLimitError } from '../errors.js';
|
|
3
|
+
import { DurabilityError, PathSafetyError, ResourceLimitError, UnsupportedRuntimeError } from '../errors.js';
|
|
4
4
|
import { emitFilesystemFault } from './fault-injection.js';
|
|
5
|
+
import { requireRepositoryPlatformBackend } from './platform-backend.js';
|
|
6
|
+
const exactIdentity = Symbol('repository-store-exact-identity');
|
|
7
|
+
const WINDOWS = 'win32';
|
|
8
|
+
export function lstatSync(path) {
|
|
9
|
+
if (process.platform !== WINDOWS)
|
|
10
|
+
return nodeLstatSync(path);
|
|
11
|
+
return projectWindowsStat(nodeLstatSync(path, { bigint: true }));
|
|
12
|
+
}
|
|
13
|
+
export function fstatSync(descriptor) {
|
|
14
|
+
if (process.platform !== WINDOWS)
|
|
15
|
+
return nodeFstatSync(descriptor);
|
|
16
|
+
return projectWindowsStat(nodeFstatSync(descriptor, { bigint: true }));
|
|
17
|
+
}
|
|
5
18
|
export function noFollowFlag() {
|
|
6
19
|
return typeof fsConstants.O_NOFOLLOW === 'number' ? fsConstants.O_NOFOLLOW : 0;
|
|
7
20
|
}
|
|
@@ -9,8 +22,46 @@ export function hasCode(error, code) {
|
|
|
9
22
|
return error instanceof Error && 'code' in error && error.code === code;
|
|
10
23
|
}
|
|
11
24
|
export function sameIdentity(left, right) {
|
|
25
|
+
const exactLeft = left[exactIdentity];
|
|
26
|
+
const exactRight = right[exactIdentity];
|
|
27
|
+
if (exactLeft !== undefined && exactRight !== undefined)
|
|
28
|
+
return exactLeft.dev === exactRight.dev && exactLeft.ino === exactRight.ino;
|
|
12
29
|
return left.dev === right.dev && left.ino === right.ino;
|
|
13
30
|
}
|
|
31
|
+
function projectWindowsStat(exact) {
|
|
32
|
+
const milliseconds = (value) => Number(value);
|
|
33
|
+
const stat = {
|
|
34
|
+
atime: new Date(milliseconds(exact.atimeMs)),
|
|
35
|
+
atimeMs: milliseconds(exact.atimeMs),
|
|
36
|
+
birthtime: new Date(milliseconds(exact.birthtimeMs)),
|
|
37
|
+
birthtimeMs: milliseconds(exact.birthtimeMs),
|
|
38
|
+
blksize: Number(exact.blksize),
|
|
39
|
+
blocks: Number(exact.blocks),
|
|
40
|
+
ctime: new Date(milliseconds(exact.ctimeMs)),
|
|
41
|
+
ctimeMs: milliseconds(exact.ctimeMs),
|
|
42
|
+
dev: Number(exact.dev),
|
|
43
|
+
gid: Number(exact.gid),
|
|
44
|
+
ino: Number(exact.ino),
|
|
45
|
+
isBlockDevice: () => exact.isBlockDevice(),
|
|
46
|
+
isCharacterDevice: () => exact.isCharacterDevice(),
|
|
47
|
+
isDirectory: () => exact.isDirectory(),
|
|
48
|
+
isFIFO: () => exact.isFIFO(),
|
|
49
|
+
isFile: () => exact.isFile(),
|
|
50
|
+
isSocket: () => exact.isSocket(),
|
|
51
|
+
isSymbolicLink: () => exact.isSymbolicLink(),
|
|
52
|
+
mode: Number(exact.mode),
|
|
53
|
+
mtime: new Date(milliseconds(exact.mtimeMs)),
|
|
54
|
+
mtimeMs: milliseconds(exact.mtimeMs),
|
|
55
|
+
nlink: Number(exact.nlink),
|
|
56
|
+
rdev: Number(exact.rdev),
|
|
57
|
+
size: Number(exact.size),
|
|
58
|
+
uid: Number(exact.uid),
|
|
59
|
+
};
|
|
60
|
+
Object.defineProperty(stat, exactIdentity, {
|
|
61
|
+
value: { dev: exact.dev, ino: exact.ino },
|
|
62
|
+
});
|
|
63
|
+
return stat;
|
|
64
|
+
}
|
|
14
65
|
export function ensurePrivateDirectory(target) {
|
|
15
66
|
const missing = [];
|
|
16
67
|
let current = resolve(target);
|
|
@@ -81,6 +132,8 @@ export function readRegularFileWithIdentity(path, maxBytes, options = {}) {
|
|
|
81
132
|
const allowedLinkCounts = options.allowedLinkCounts ?? [1];
|
|
82
133
|
let descriptor;
|
|
83
134
|
try {
|
|
135
|
+
const pathBeforeOpen = lstatSync(path);
|
|
136
|
+
assertRegularWithLinks(pathBeforeOpen, path, allowedLinkCounts);
|
|
84
137
|
descriptor = openSync(path, fsConstants.O_RDONLY | noFollowFlag());
|
|
85
138
|
const before = fstatSync(descriptor);
|
|
86
139
|
assertRegularWithLinks(before, path, allowedLinkCounts);
|
|
@@ -101,20 +154,44 @@ export function readRegularFileWithIdentity(path, maxBytes, options = {}) {
|
|
|
101
154
|
}
|
|
102
155
|
if (offset > maxBytes)
|
|
103
156
|
throw new ResourceLimitError(`Managed file exceeds configured byte limit: ${path}`);
|
|
104
|
-
|
|
157
|
+
let after = fstatSync(descriptor);
|
|
105
158
|
assertRegularWithLinks(after, path, allowedLinkCounts);
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
before.
|
|
109
|
-
before.
|
|
110
|
-
before.nlink
|
|
111
|
-
offset
|
|
159
|
+
let bytes = buffer.subarray(0, offset);
|
|
160
|
+
const stableExceptCtime = sameIdentity(before, after) &&
|
|
161
|
+
before.size === after.size &&
|
|
162
|
+
before.mtimeMs === after.mtimeMs &&
|
|
163
|
+
before.nlink === after.nlink &&
|
|
164
|
+
offset === before.size;
|
|
165
|
+
if (stableExceptCtime && before.ctimeMs !== after.ctimeMs) {
|
|
166
|
+
const confirmation = Buffer.allocUnsafe(capacity);
|
|
167
|
+
let confirmationOffset = 0;
|
|
168
|
+
while (confirmationOffset < confirmation.byteLength) {
|
|
169
|
+
const count = readSync(descriptor, confirmation, confirmationOffset, confirmation.byteLength - confirmationOffset, confirmationOffset);
|
|
170
|
+
if (count === 0)
|
|
171
|
+
break;
|
|
172
|
+
confirmationOffset += count;
|
|
173
|
+
}
|
|
174
|
+
const confirmed = fstatSync(descriptor);
|
|
175
|
+
assertRegularWithLinks(confirmed, path, allowedLinkCounts);
|
|
176
|
+
if (!sameIdentity(after, confirmed) ||
|
|
177
|
+
after.size !== confirmed.size ||
|
|
178
|
+
after.mtimeMs !== confirmed.mtimeMs ||
|
|
179
|
+
after.ctimeMs !== confirmed.ctimeMs ||
|
|
180
|
+
after.nlink !== confirmed.nlink ||
|
|
181
|
+
confirmationOffset !== after.size ||
|
|
182
|
+
!bytes.equals(confirmation.subarray(0, confirmationOffset)))
|
|
183
|
+
throw unsafe(`Managed file changed during read: ${path}`, 'IDENTITY_CHANGED');
|
|
184
|
+
bytes = confirmation.subarray(0, confirmationOffset);
|
|
185
|
+
after = confirmed;
|
|
186
|
+
}
|
|
187
|
+
else if (!stableExceptCtime || before.ctimeMs !== after.ctimeMs) {
|
|
112
188
|
throw unsafe(`Managed file changed during read: ${path}`, 'IDENTITY_CHANGED');
|
|
189
|
+
}
|
|
113
190
|
const pathAfter = lstatSync(path);
|
|
114
191
|
if (pathAfter.isSymbolicLink() || !sameIdentity(after, pathAfter))
|
|
115
192
|
throw unsafe(`Managed file identity changed after read: ${path}`, 'IDENTITY_CHANGED');
|
|
116
193
|
revalidateDirectories(parents);
|
|
117
|
-
return { bytes
|
|
194
|
+
return { bytes, identity: after };
|
|
118
195
|
}
|
|
119
196
|
catch (error) {
|
|
120
197
|
if (error instanceof PathSafetyError || error instanceof ResourceLimitError)
|
|
@@ -140,9 +217,11 @@ function assertRegularWithLinks(stat, path, allowedLinkCounts) {
|
|
|
140
217
|
export function syncFileDescriptor(descriptor, path) {
|
|
141
218
|
try {
|
|
142
219
|
emitFilesystemFault('file-fsync', path);
|
|
143
|
-
|
|
220
|
+
requireRepositoryPlatformBackend().durability.syncDescriptor(descriptor);
|
|
144
221
|
}
|
|
145
222
|
catch (error) {
|
|
223
|
+
if (error instanceof UnsupportedRuntimeError)
|
|
224
|
+
throw error;
|
|
146
225
|
throw new DurabilityError(`Failed to synchronize file: ${path}`, {
|
|
147
226
|
cause: error,
|
|
148
227
|
evidence: { operation: 'file-fsync', path },
|
|
@@ -152,7 +231,8 @@ export function syncFileDescriptor(descriptor, path) {
|
|
|
152
231
|
export function syncRegularFile(path) {
|
|
153
232
|
let descriptor;
|
|
154
233
|
try {
|
|
155
|
-
|
|
234
|
+
const access = process.platform === 'win32' ? fsConstants.O_RDWR : fsConstants.O_RDONLY;
|
|
235
|
+
descriptor = openSync(path, access | noFollowFlag());
|
|
156
236
|
const opened = fstatSync(descriptor);
|
|
157
237
|
assertSafeRegular(opened, path);
|
|
158
238
|
syncFileDescriptor(descriptor, path);
|
|
@@ -176,9 +256,11 @@ export function syncDirectory(path) {
|
|
|
176
256
|
throw unsafe(`Unsafe directory: ${path}`);
|
|
177
257
|
try {
|
|
178
258
|
emitFilesystemFault('directory-fsync', path);
|
|
179
|
-
|
|
259
|
+
requireRepositoryPlatformBackend().durability.syncDescriptor(descriptor);
|
|
180
260
|
}
|
|
181
261
|
catch (error) {
|
|
262
|
+
if (error instanceof UnsupportedRuntimeError)
|
|
263
|
+
throw error;
|
|
182
264
|
throw new DurabilityError(`Failed to synchronize directory: ${path}`, {
|
|
183
265
|
cause: error,
|
|
184
266
|
evidence: { operation: 'directory-fsync', path },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filesystem.js","sourceRoot":"","sources":["../../src/internal/filesystem.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"filesystem.js","sourceRoot":"","sources":["../../src/internal/filesystem.ts"],"names":[],"mappings":"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"}
|
package/dist/internal/model.d.ts
CHANGED
|
@@ -16,6 +16,7 @@ export interface LeaseState {
|
|
|
16
16
|
readonly authorityId: string;
|
|
17
17
|
readonly token: string;
|
|
18
18
|
readonly lockPath: string;
|
|
19
|
+
readonly lockKind: 'directory' | 'file';
|
|
19
20
|
readonly lockIdentity: Stats;
|
|
20
21
|
readonly ownerIdentity: Stats;
|
|
21
22
|
readonly pendingOperations: Set<Promise<unknown>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/internal/model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;CAC9B;AAGD,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAGD,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,KAAK,CAAC;IAC9B,QAAQ,CAAC,iBAAiB,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IAClD,MAAM,EAAE,OAAO,CAAC;CACjB;AAGD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAGD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAGD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AASD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,GAAG,WAAW,CAI/D;AAGD,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,WAAW,CAIrF;AAGD,wBAAgB,qBAAqB,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,eAAe,CAI/F;AAGD,wBAAgB,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,SAAS,GAAG,SAAS,CAErE;AAGD,wBAAgB,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,SAAS,GAAG,SAAS,CAErE;AAGD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,WAAW,GAAG,SAAS,CAI7D;AAGD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,WAAW,GAAG,SAAS,CAI7D;AAGD,wBAAgB,aAAa,CAAC,KAAK,EAAE,eAAe,GAAG,UAAU,GAAG,SAAS,CAE5E;AAGD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAStF"}
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/internal/model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;CAC9B;AAGD,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAGD,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,WAAW,GAAG,MAAM,CAAC;IACxC,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,KAAK,CAAC;IAC9B,QAAQ,CAAC,iBAAiB,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IAClD,MAAM,EAAE,OAAO,CAAC;CACjB;AAGD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAGD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAGD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AASD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,GAAG,WAAW,CAI/D;AAGD,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,WAAW,CAIrF;AAGD,wBAAgB,qBAAqB,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,eAAe,CAI/F;AAGD,wBAAgB,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,SAAS,GAAG,SAAS,CAErE;AAGD,wBAAgB,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,SAAS,GAAG,SAAS,CAErE;AAGD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,WAAW,GAAG,SAAS,CAI7D;AAGD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,WAAW,GAAG,SAAS,CAI7D;AAGD,wBAAgB,aAAa,CAAC,KAAK,EAAE,eAAe,GAAG,UAAU,GAAG,SAAS,CAE5E;AAGD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAStF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/internal/model.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/internal/model.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAkD/C,MAAM,UAAU,GAAG,IAAI,OAAO,EAA0B,CAAC;AACzD,MAAM,UAAU,GAAG,IAAI,OAAO,EAA0B,CAAC;AACzD,MAAM,WAAW,GAAG,IAAI,OAAO,EAA+B,CAAC;AAG/D,MAAM,UAAU,iBAAiB,CAAC,KAAgB;IAChD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;IACnG,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC5B,OAAO,IAAI,CAAC;AACd,CAAC;AAGD,MAAM,UAAU,iBAAiB,CAAC,YAAoB,EAAE,KAAgB;IACtE,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;IAC7C,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC5B,OAAO,IAAI,CAAC;AACd,CAAC;AAGD,MAAM,UAAU,qBAAqB,CAAC,aAAqB,EAAE,KAAiB;IAC5E,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC;IAC/C,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC9B,OAAO,KAAK,CAAC;AACf,CAAC;AAGD,MAAM,UAAU,YAAY,CAAC,IAAiB;IAC5C,OAAO,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAGD,MAAM,UAAU,YAAY,CAAC,IAAiB;IAC5C,OAAO,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAGD,MAAM,UAAU,gBAAgB,CAAC,IAAiB;IAChD,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,KAAK,KAAK,SAAS;QAAE,MAAM,IAAI,eAAe,CAAC,gDAAgD,CAAC,CAAC;IACrG,OAAO,KAAK,CAAC;AACf,CAAC;AAGD,MAAM,UAAU,gBAAgB,CAAC,IAAiB;IAChD,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,KAAK,KAAK,SAAS;QAAE,MAAM,IAAI,eAAe,CAAC,gDAAgD,CAAC,CAAC;IACrG,OAAO,KAAK,CAAC;AACf,CAAC;AAGD,MAAM,UAAU,aAAa,CAAC,KAAsB;IAClD,OAAO,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC;AAGD,MAAM,UAAU,wBAAwB,CAAC,IAAiB,EAAE,IAAiB;IAC3E,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACrC,OAAO,CACL,SAAS,KAAK,SAAS;QACvB,SAAS,KAAK,SAAS;QACvB,SAAS,CAAC,WAAW,KAAK,SAAS,CAAC,WAAW;QAC/C,SAAS,CAAC,aAAa,KAAK,SAAS,CAAC,aAAa,CACpD,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export interface ExactPublicationBackend {
|
|
2
|
+
renameNoReplace(source: string, destination: string): void;
|
|
3
|
+
}
|
|
4
|
+
export interface LocalFilesystemBackend {
|
|
5
|
+
supportsLocalPath(path: string): boolean;
|
|
6
|
+
}
|
|
7
|
+
export interface DurabilityBackend {
|
|
8
|
+
syncDescriptor(descriptor: number): void;
|
|
9
|
+
}
|
|
10
|
+
export interface RepositoryPlatformBackend {
|
|
11
|
+
readonly id: string;
|
|
12
|
+
readonly platform: NodeJS.Platform;
|
|
13
|
+
readonly filesystemRequirement: string;
|
|
14
|
+
readonly leaseArtifact: 'directory' | 'file';
|
|
15
|
+
readonly publication: ExactPublicationBackend;
|
|
16
|
+
readonly filesystem: LocalFilesystemBackend;
|
|
17
|
+
readonly durability: DurabilityBackend;
|
|
18
|
+
}
|
|
19
|
+
export declare function requireRepositoryPlatformBackend(): RepositoryPlatformBackend;
|
|
20
|
+
export declare function platformRenameNoReplace(backend: RepositoryPlatformBackend, source: string, destination: string): void;
|
|
21
|
+
export declare function assertPlatformFilesystem(backend: RepositoryPlatformBackend, path: string): void;
|
|
22
|
+
export declare function setRepositoryPlatformBackendForTests(backend: RepositoryPlatformBackend | null | undefined): void;
|
|
23
|
+
export declare function isCertifiedRepositoryPlatform(platform: NodeJS.Platform, architecture: string): boolean;
|
|
24
|
+
//# sourceMappingURL=platform-backend.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform-backend.d.ts","sourceRoot":"","sources":["../../src/internal/platform-backend.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,uBAAuB;IACtC,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5D;AAGD,MAAM,WAAW,sBAAsB;IACrC,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1C;AAGD,MAAM,WAAW,iBAAiB;IAChC,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1C;AAGD,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;IACnC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,aAAa,EAAE,WAAW,GAAG,MAAM,CAAC;IAC7C,QAAQ,CAAC,WAAW,EAAE,uBAAuB,CAAC;IAC9C,QAAQ,CAAC,UAAU,EAAE,sBAAsB,CAAC;IAC5C,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;CACxC;AAqDD,wBAAgB,gCAAgC,IAAI,yBAAyB,CA6B5E;AAGD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,yBAAyB,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAQrH;AAGD,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,yBAAyB,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAO/F;AAGD,wBAAgB,oCAAoC,CAAC,OAAO,EAAE,yBAAyB,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,CAEhH;AAGD,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAEtG"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { fsyncSync } from 'node:fs';
|
|
2
|
+
import { createRequire } from 'node:module';
|
|
3
|
+
import { fileURLToPath } from 'node:url';
|
|
4
|
+
import { UnsupportedRuntimeError } from '../errors.js';
|
|
5
|
+
const backendDefinitions = {
|
|
6
|
+
linux: {
|
|
7
|
+
id: 'linux-node-api',
|
|
8
|
+
platform: 'linux',
|
|
9
|
+
architectures: ['x64', 'arm64'],
|
|
10
|
+
filesystemRequirement: 'a certified Linux local filesystem',
|
|
11
|
+
leaseArtifact: 'directory',
|
|
12
|
+
},
|
|
13
|
+
darwin: {
|
|
14
|
+
id: 'macos-node-api',
|
|
15
|
+
platform: 'darwin',
|
|
16
|
+
architectures: ['x64', 'arm64'],
|
|
17
|
+
filesystemRequirement: 'a local APFS filesystem with certified publication and durability capabilities',
|
|
18
|
+
leaseArtifact: 'directory',
|
|
19
|
+
},
|
|
20
|
+
win32: {
|
|
21
|
+
id: 'windows-node-api',
|
|
22
|
+
platform: 'win32',
|
|
23
|
+
architectures: ['x64'],
|
|
24
|
+
filesystemRequirement: 'a local NTFS filesystem with stable identity and hard-link capabilities',
|
|
25
|
+
leaseArtifact: 'directory',
|
|
26
|
+
},
|
|
27
|
+
freebsd: {
|
|
28
|
+
id: 'freebsd-node-api',
|
|
29
|
+
platform: 'freebsd',
|
|
30
|
+
architectures: ['x64'],
|
|
31
|
+
filesystemRequirement: 'a local UFS2 filesystem with regular-file hard links and directory fsync',
|
|
32
|
+
leaseArtifact: 'file',
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
let injectedBackend;
|
|
36
|
+
let loadedBackend;
|
|
37
|
+
let loadFailure;
|
|
38
|
+
export function requireRepositoryPlatformBackend() {
|
|
39
|
+
if (injectedBackend !== undefined) {
|
|
40
|
+
if (injectedBackend !== null)
|
|
41
|
+
return injectedBackend;
|
|
42
|
+
throw unsupported('Repository platform backend is disabled for this operation.');
|
|
43
|
+
}
|
|
44
|
+
const definition = selectBackendDefinition(process.platform, process.arch);
|
|
45
|
+
if (definition === undefined)
|
|
46
|
+
throw unsupported(`Repository filesystem operations are unsupported on ${process.platform}.`);
|
|
47
|
+
if (loadedBackend !== undefined)
|
|
48
|
+
return loadedBackend;
|
|
49
|
+
if (loadFailure !== undefined)
|
|
50
|
+
throw unsupported('Repository platform backend could not be loaded.', loadFailure);
|
|
51
|
+
try {
|
|
52
|
+
const nativeModule = loadNativeModule();
|
|
53
|
+
if (nativeModule.platform !== definition.platform)
|
|
54
|
+
throw new Error(`Native addon platform ${JSON.stringify(nativeModule.platform)} does not match ${JSON.stringify(definition.platform)}.`);
|
|
55
|
+
loadedBackend = Object.freeze({
|
|
56
|
+
...definition,
|
|
57
|
+
publication: Object.freeze({ renameNoReplace: nativeModule.renameNoReplace.bind(nativeModule) }),
|
|
58
|
+
filesystem: Object.freeze({ supportsLocalPath: nativeModule.supportsLocalPath.bind(nativeModule) }),
|
|
59
|
+
durability: Object.freeze({
|
|
60
|
+
syncDescriptor: definition.platform === 'win32' ? fsyncSync : nativeModule.syncDescriptor.bind(nativeModule),
|
|
61
|
+
}),
|
|
62
|
+
});
|
|
63
|
+
return loadedBackend;
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
loadFailure = error;
|
|
67
|
+
throw unsupported('Repository platform backend could not be loaded.', error);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
export function platformRenameNoReplace(backend, source, destination) {
|
|
71
|
+
try {
|
|
72
|
+
backend.publication.renameNoReplace(source, destination);
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
if (['EINVAL', 'EXDEV', 'ENOSYS', 'ENOTSUP', 'EOPNOTSUPP'].some((code) => hasCode(error, code)))
|
|
76
|
+
throw unsupported(`No-replace publication is unsupported for ${source}.`, error);
|
|
77
|
+
throw error;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
export function assertPlatformFilesystem(backend, path) {
|
|
81
|
+
try {
|
|
82
|
+
if (backend.filesystem.supportsLocalPath(path))
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
throw unsupported(`Filesystem capability check failed for ${path}.`, error);
|
|
87
|
+
}
|
|
88
|
+
throw unsupported(`Repository Store requires ${backend.filesystemRequirement}: ${path}.`);
|
|
89
|
+
}
|
|
90
|
+
export function setRepositoryPlatformBackendForTests(backend) {
|
|
91
|
+
injectedBackend = backend;
|
|
92
|
+
}
|
|
93
|
+
export function isCertifiedRepositoryPlatform(platform, architecture) {
|
|
94
|
+
return selectBackendDefinition(platform, architecture) !== undefined;
|
|
95
|
+
}
|
|
96
|
+
function selectBackendDefinition(platform, architecture) {
|
|
97
|
+
const definition = backendDefinitions[platform];
|
|
98
|
+
return definition?.architectures.includes(architecture) === true ? definition : undefined;
|
|
99
|
+
}
|
|
100
|
+
function loadNativeModule() {
|
|
101
|
+
const require = createRequire(import.meta.url);
|
|
102
|
+
const packageRoot = fileURLToPath(new URL('../../', import.meta.url));
|
|
103
|
+
const candidate = require(`${packageRoot}build/Release/repository_store_native.node`);
|
|
104
|
+
if (typeof candidate.platform !== 'string' ||
|
|
105
|
+
typeof candidate.renameNoReplace !== 'function' ||
|
|
106
|
+
typeof candidate.supportsLocalPath !== 'function' ||
|
|
107
|
+
typeof candidate.syncDescriptor !== 'function')
|
|
108
|
+
throw new Error('Native addon does not expose the complete platform backend contract.');
|
|
109
|
+
return candidate;
|
|
110
|
+
}
|
|
111
|
+
function hasCode(error, code) {
|
|
112
|
+
return typeof error === 'object' && error !== null && 'code' in error && error.code === code;
|
|
113
|
+
}
|
|
114
|
+
function unsupported(message, cause) {
|
|
115
|
+
const error = new UnsupportedRuntimeError(message);
|
|
116
|
+
if (cause !== undefined)
|
|
117
|
+
Object.defineProperty(error, 'cause', { value: cause });
|
|
118
|
+
return error;
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=platform-backend.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform-backend.js","sourceRoot":"","sources":["../../src/internal/platform-backend.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publication.d.ts","sourceRoot":"","sources":["../../src/internal/publication.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"publication.d.ts","sourceRoot":"","sources":["../../src/internal/publication.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkF,KAAK,KAAK,EAAE,MAAM,SAAS,CAAC;AAGrH,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAwBxE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAOD,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,UAAU,GAAG,IAAI,EACxB,QAAQ,EAAE,mBAAmB,GAAG,SAAS,EACzC,KAAK,EAAE,MAAM,GACZ,IAAI,CA2GN;AAID,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,gBAAgB,EAAE,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC,EAAE,EAClD,QAAQ,EAAE,MAAM,GACf,IAAI,CA2CN"}
|