@mhalle/vost 0.8.1

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.
Files changed (51) hide show
  1. package/LICENSE +191 -0
  2. package/README.md +24 -0
  3. package/dist/batch.d.ts +82 -0
  4. package/dist/batch.js +152 -0
  5. package/dist/batch.js.map +1 -0
  6. package/dist/copy.d.ts +242 -0
  7. package/dist/copy.js +1229 -0
  8. package/dist/copy.js.map +1 -0
  9. package/dist/exclude.d.ts +68 -0
  10. package/dist/exclude.js +157 -0
  11. package/dist/exclude.js.map +1 -0
  12. package/dist/fileobj.d.ts +82 -0
  13. package/dist/fileobj.js +127 -0
  14. package/dist/fileobj.js.map +1 -0
  15. package/dist/fs.d.ts +581 -0
  16. package/dist/fs.js +1318 -0
  17. package/dist/fs.js.map +1 -0
  18. package/dist/gitstore.d.ts +74 -0
  19. package/dist/gitstore.js +131 -0
  20. package/dist/gitstore.js.map +1 -0
  21. package/dist/glob.d.ts +14 -0
  22. package/dist/glob.js +68 -0
  23. package/dist/glob.js.map +1 -0
  24. package/dist/index.d.ts +37 -0
  25. package/dist/index.js +51 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/lock.d.ts +15 -0
  28. package/dist/lock.js +71 -0
  29. package/dist/lock.js.map +1 -0
  30. package/dist/mirror.d.ts +53 -0
  31. package/dist/mirror.js +270 -0
  32. package/dist/mirror.js.map +1 -0
  33. package/dist/notes.d.ts +148 -0
  34. package/dist/notes.js +508 -0
  35. package/dist/notes.js.map +1 -0
  36. package/dist/paths.d.ts +16 -0
  37. package/dist/paths.js +44 -0
  38. package/dist/paths.js.map +1 -0
  39. package/dist/refdict.d.ts +117 -0
  40. package/dist/refdict.js +267 -0
  41. package/dist/refdict.js.map +1 -0
  42. package/dist/reflog.d.ts +33 -0
  43. package/dist/reflog.js +83 -0
  44. package/dist/reflog.js.map +1 -0
  45. package/dist/tree.d.ts +79 -0
  46. package/dist/tree.js +283 -0
  47. package/dist/tree.js.map +1 -0
  48. package/dist/types.d.ts +354 -0
  49. package/dist/types.js +302 -0
  50. package/dist/types.js.map +1 -0
  51. package/package.json +58 -0
package/dist/types.js ADDED
@@ -0,0 +1,302 @@
1
+ /**
2
+ * Shared types, constants, enums, and error classes for vost.
3
+ */
4
+ // ---------------------------------------------------------------------------
5
+ // Git file mode constants (octal → string for isomorphic-git)
6
+ // ---------------------------------------------------------------------------
7
+ /** Git filemode for tree (directory) entries. */
8
+ export const MODE_TREE = '040000';
9
+ /** Git filemode for regular blob (file) entries. */
10
+ export const MODE_BLOB = '100644';
11
+ /** Git filemode for executable blob entries. */
12
+ export const MODE_BLOB_EXEC = '100755';
13
+ /** Git filemode for symbolic link entries. */
14
+ export const MODE_LINK = '120000';
15
+ /** Convert an octal mode string (e.g. '100644') to an integer. */
16
+ export function modeToInt(mode) {
17
+ return parseInt(mode, 8);
18
+ }
19
+ /** Convert an integer filemode to a zero-padded octal string. */
20
+ export function modeFromInt(mode) {
21
+ return mode.toString(8).padStart(6, '0');
22
+ }
23
+ /** Return the isomorphic-git object type for a given mode string. */
24
+ export function typeForMode(mode) {
25
+ if (mode === MODE_TREE)
26
+ return 'tree';
27
+ if (mode === '160000')
28
+ return 'commit';
29
+ return 'blob';
30
+ }
31
+ // ---------------------------------------------------------------------------
32
+ // FileType enum
33
+ // ---------------------------------------------------------------------------
34
+ /**
35
+ * File type classification for git tree entries.
36
+ *
37
+ * - `BLOB` - Regular file (mode 100644).
38
+ * - `EXECUTABLE` - Executable file (mode 100755).
39
+ * - `LINK` - Symbolic link (mode 120000).
40
+ * - `TREE` - Directory (mode 040000).
41
+ */
42
+ export const FileType = {
43
+ /** Regular file (mode 100644). */
44
+ BLOB: 'blob',
45
+ /** Executable file (mode 100755). */
46
+ EXECUTABLE: 'executable',
47
+ /** Symbolic link (mode 120000). */
48
+ LINK: 'link',
49
+ /** Directory (mode 040000). */
50
+ TREE: 'tree',
51
+ };
52
+ const MODE_TO_TYPE = {
53
+ [MODE_BLOB]: FileType.BLOB,
54
+ [MODE_BLOB_EXEC]: FileType.EXECUTABLE,
55
+ [MODE_LINK]: FileType.LINK,
56
+ [MODE_TREE]: FileType.TREE,
57
+ };
58
+ const TYPE_TO_MODE = {
59
+ [FileType.BLOB]: MODE_BLOB,
60
+ [FileType.EXECUTABLE]: MODE_BLOB_EXEC,
61
+ [FileType.LINK]: MODE_LINK,
62
+ [FileType.TREE]: MODE_TREE,
63
+ };
64
+ /**
65
+ * Convert a git filemode string to a FileType enum value.
66
+ *
67
+ * @param mode - Octal mode string (e.g. '100644').
68
+ * @returns The corresponding FileType.
69
+ * @throws {Error} If the mode is not recognized.
70
+ */
71
+ export function fileTypeFromMode(mode) {
72
+ const ft = MODE_TO_TYPE[mode];
73
+ if (!ft)
74
+ throw new Error(`Unknown git mode: ${mode}`);
75
+ return ft;
76
+ }
77
+ /**
78
+ * Convert a FileType enum value to a git filemode string.
79
+ *
80
+ * @param ft - FileType value.
81
+ * @returns The corresponding octal mode string.
82
+ */
83
+ export function fileModeFromType(ft) {
84
+ return TYPE_TO_MODE[ft];
85
+ }
86
+ // ---------------------------------------------------------------------------
87
+ // Error classes
88
+ // ---------------------------------------------------------------------------
89
+ /** Base error class for all vost errors. */
90
+ export class GitStoreError extends Error {
91
+ constructor(message) {
92
+ super(message);
93
+ this.name = 'GitStoreError';
94
+ }
95
+ }
96
+ /**
97
+ * Raised when a branch has advanced since the FS snapshot was taken,
98
+ * causing a compare-and-swap (CAS) failure on commit.
99
+ */
100
+ export class StaleSnapshotError extends GitStoreError {
101
+ constructor(message) {
102
+ super(message);
103
+ this.name = 'StaleSnapshotError';
104
+ }
105
+ }
106
+ /** Raised when a path does not exist in the repository tree. */
107
+ export class FileNotFoundError extends GitStoreError {
108
+ code = 'ENOENT';
109
+ constructor(path) {
110
+ super(`File not found: ${path}`);
111
+ this.name = 'FileNotFoundError';
112
+ }
113
+ }
114
+ /** Raised when an operation expected a file but found a directory. */
115
+ export class IsADirectoryError extends GitStoreError {
116
+ code = 'EISDIR';
117
+ constructor(path) {
118
+ super(`Is a directory: ${path}`);
119
+ this.name = 'IsADirectoryError';
120
+ }
121
+ }
122
+ /** Raised when an operation expected a directory but found a file. */
123
+ export class NotADirectoryError extends GitStoreError {
124
+ code = 'ENOTDIR';
125
+ constructor(path) {
126
+ super(`Not a directory: ${path}`);
127
+ this.name = 'NotADirectoryError';
128
+ }
129
+ }
130
+ /** Raised when a write is attempted on a read-only snapshot (e.g. a tag). */
131
+ export class PermissionError extends GitStoreError {
132
+ code = 'EPERM';
133
+ constructor(message) {
134
+ super(message);
135
+ this.name = 'PermissionError';
136
+ }
137
+ }
138
+ /** Raised when a branch, tag, or note key is not found. */
139
+ export class KeyNotFoundError extends GitStoreError {
140
+ constructor(message) {
141
+ super(message);
142
+ this.name = 'KeyNotFoundError';
143
+ }
144
+ }
145
+ /** Raised when a tag already exists and cannot be overwritten. */
146
+ export class KeyExistsError extends GitStoreError {
147
+ constructor(message) {
148
+ super(message);
149
+ this.name = 'KeyExistsError';
150
+ }
151
+ }
152
+ /** Raised when a ref name contains invalid characters. */
153
+ export class InvalidRefNameError extends GitStoreError {
154
+ constructor(message) {
155
+ super(message);
156
+ this.name = 'InvalidRefNameError';
157
+ }
158
+ }
159
+ /** Raised when a path is empty or contains invalid segments. */
160
+ export class InvalidPathError extends GitStoreError {
161
+ constructor(message) {
162
+ super(message);
163
+ this.name = 'InvalidPathError';
164
+ }
165
+ }
166
+ /** Raised when a batch is used after it has been committed or closed. */
167
+ export class BatchClosedError extends GitStoreError {
168
+ constructor(message) {
169
+ super(message);
170
+ this.name = 'BatchClosedError';
171
+ }
172
+ }
173
+ /**
174
+ * Return the FileType for a WalkEntry.
175
+ *
176
+ * @param entry - A walk entry from `FS.walk()` or `FS.listdir()`.
177
+ * @returns The FileType corresponding to the entry's mode.
178
+ */
179
+ export function walkEntryFileType(entry) {
180
+ return fileTypeFromMode(entry.mode);
181
+ }
182
+ /**
183
+ * Validate a WriteEntry, throwing if both `data` and `target` are set,
184
+ * neither is set, or `mode` is combined with `target`.
185
+ */
186
+ export function validateWriteEntry(entry) {
187
+ if (entry.data != null && entry.target != null) {
188
+ throw new Error('Cannot specify both data and target');
189
+ }
190
+ if (entry.data == null && entry.target == null) {
191
+ throw new Error('Must specify either data or target');
192
+ }
193
+ if (entry.target != null && entry.mode != null) {
194
+ throw new Error('Cannot specify mode for symlinks');
195
+ }
196
+ }
197
+ /**
198
+ * Create a FileEntry from a path and git filemode string.
199
+ *
200
+ * @param path - Repo-relative path.
201
+ * @param mode - Git filemode string.
202
+ * @param src - Optional source path.
203
+ */
204
+ export function fileEntryFromMode(path, mode, src) {
205
+ return { path, type: fileTypeFromMode(mode), src };
206
+ }
207
+ /** Create an empty ChangeReport with no actions or errors. */
208
+ export function emptyChangeReport() {
209
+ return { add: [], update: [], delete: [], errors: [], warnings: [] };
210
+ }
211
+ /** Return true if the report contains no adds, updates, or deletes. */
212
+ export function changeReportInSync(cr) {
213
+ return cr.add.length === 0 && cr.update.length === 0 && cr.delete.length === 0;
214
+ }
215
+ /** Return the total number of adds, updates, and deletes. */
216
+ export function changeReportTotal(cr) {
217
+ return cr.add.length + cr.update.length + cr.delete.length;
218
+ }
219
+ /** Flatten a ChangeReport into a sorted list of ChangeAction entries. */
220
+ export function changeReportActions(cr) {
221
+ const result = [];
222
+ for (const e of cr.add)
223
+ result.push({ path: e.path, action: 'add' });
224
+ for (const e of cr.update)
225
+ result.push({ path: e.path, action: 'update' });
226
+ for (const e of cr.delete)
227
+ result.push({ path: e.path, action: 'delete' });
228
+ result.sort((a, b) => a.path.localeCompare(b.path));
229
+ return result;
230
+ }
231
+ /** Return null if the report is completely empty, otherwise return it as-is. */
232
+ export function finalizeChanges(cr) {
233
+ if (cr.add.length === 0 &&
234
+ cr.update.length === 0 &&
235
+ cr.delete.length === 0 &&
236
+ cr.errors.length === 0 &&
237
+ cr.warnings.length === 0) {
238
+ return null;
239
+ }
240
+ return cr;
241
+ }
242
+ /**
243
+ * Generate a commit message from a ChangeReport.
244
+ *
245
+ * If `customMessage` is provided and contains `{` placeholders, they are
246
+ * expanded (e.g. `{add_count}`, `{total_count}`, `{default}`).
247
+ * Otherwise, an auto-generated summary is used.
248
+ *
249
+ * @param changes - The change report to summarize.
250
+ * @param customMessage - Optional user-provided message template.
251
+ * @param operation - Optional operation name for auto messages (e.g. 'cp').
252
+ */
253
+ export function formatCommitMessage(changes, customMessage, operation) {
254
+ if (customMessage) {
255
+ if (customMessage.includes('{')) {
256
+ const def = autoMessage(changes, operation ?? null);
257
+ return customMessage
258
+ .replace('{default}', def)
259
+ .replace('{add_count}', String(changes.add.length))
260
+ .replace('{update_count}', String(changes.update.length))
261
+ .replace('{delete_count}', String(changes.delete.length))
262
+ .replace('{total_count}', String(changeReportTotal(changes)))
263
+ .replace('{op}', operation ?? '');
264
+ }
265
+ return customMessage;
266
+ }
267
+ return autoMessage(changes, operation ?? null);
268
+ }
269
+ function autoMessage(changes, operation) {
270
+ const total = changeReportTotal(changes);
271
+ if (total === 0)
272
+ return 'No changes';
273
+ if (total === 1) {
274
+ if (changes.add.length) {
275
+ const e = changes.add[0];
276
+ return `+ ${e.path}` + (e.type !== FileType.BLOB ? ` (${e.type})` : '');
277
+ }
278
+ if (changes.update.length) {
279
+ const e = changes.update[0];
280
+ return `~ ${e.path}` + (e.type !== FileType.BLOB ? ` (${e.type})` : '');
281
+ }
282
+ return `- ${changes.delete[0].path}`;
283
+ }
284
+ const parts = [];
285
+ if (changes.add.length)
286
+ parts.push(`+${changes.add.length}`);
287
+ if (changes.update.length)
288
+ parts.push(`~${changes.update.length}`);
289
+ if (changes.delete.length)
290
+ parts.push(`-${changes.delete.length}`);
291
+ const prefix = operation ? `Batch ${operation}:` : 'Batch:';
292
+ return `${prefix} ${parts.join(' ')}`;
293
+ }
294
+ /** Return true if the mirror diff contains no changes. */
295
+ export function mirrorDiffInSync(md) {
296
+ return md.add.length === 0 && md.update.length === 0 && md.delete.length === 0;
297
+ }
298
+ /** Return the total number of ref changes. */
299
+ export function mirrorDiffTotal(md) {
300
+ return md.add.length + md.update.length + md.delete.length;
301
+ }
302
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,58 @@
1
+ {
2
+ "name": "@mhalle/vost",
3
+ "version": "0.8.1",
4
+ "description": "A versioned filesystem backed by a bare git repository",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js"
12
+ }
13
+ },
14
+ "files": [
15
+ "dist",
16
+ "LICENSE"
17
+ ],
18
+ "scripts": {
19
+ "build": "tsc",
20
+ "check": "tsc --noEmit",
21
+ "test": "vitest run",
22
+ "test:watch": "vitest",
23
+ "test:deno": "deno test tests/deno_compat_test.ts --allow-read --allow-write --allow-env --no-check",
24
+ "prepack": "cp ../LICENSE . && npm run build",
25
+ "postpack": "rm -f LICENSE"
26
+ },
27
+ "repository": {
28
+ "type": "git",
29
+ "url": "git+https://github.com/mhalle/vost.git",
30
+ "directory": "ts"
31
+ },
32
+ "homepage": "https://github.com/mhalle/vost/tree/master/ts",
33
+ "bugs": {
34
+ "url": "https://github.com/mhalle/vost/issues"
35
+ },
36
+ "keywords": [
37
+ "git",
38
+ "filesystem",
39
+ "versioned",
40
+ "storage",
41
+ "isomorphic-git"
42
+ ],
43
+ "dependencies": {
44
+ "isomorphic-git": "^1.27.0"
45
+ },
46
+ "devDependencies": {
47
+ "typescript": "^5.5.0",
48
+ "@types/node": "^22.0.0",
49
+ "vitest": "^3.0.0"
50
+ },
51
+ "engines": {
52
+ "node": ">=18.0.0"
53
+ },
54
+ "publishConfig": {
55
+ "access": "public"
56
+ },
57
+ "license": "Apache-2.0"
58
+ }