@telepath-computer/autofile 0.3.0 → 0.5.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/dist/watch.js CHANGED
@@ -1,56 +1,44 @@
1
+ /** Maps filesystem changes to Autofile addresses without reading stored values. */
2
+ import { lstat } from "node:fs/promises";
1
3
  import { dirname, isAbsolute, relative, resolve, sep } from "node:path";
2
4
  import { watch } from "chokidar";
3
- import { BLOB_NAME_PATTERN } from "./blobs.js";
4
5
  const typeNamePattern = /^[a-z][a-z0-9-]*$/u;
5
6
  const keyPattern = /^[a-z0-9][a-z0-9-]*$/u;
6
7
  const BATCH_WINDOW_MS = 150;
7
- const readFailed = Symbol("read failed");
8
- const unknownMetadata = Symbol("unknown metadata");
9
- const resourceChangeKinds = {
10
- add: "created",
11
- change: "changed",
12
- unlink: "deleted",
13
- };
14
- /** Returns the exact resource, folder, and root URIs notified for one change. */
15
- export function resourceNotificationUris(uri) {
16
- return [uri, uri.slice(0, uri.lastIndexOf("/")), "autofile:///"];
17
- }
18
- /** Starts one watcher after its initial scan and resource cache are ready. */
19
- export async function watchStore(dataFolder, store, onChange, onError) {
8
+ /** Starts watching after the initial directory scan, without reporting existing files. */
9
+ export async function watchFolder(dataFolder, onChange, onError) {
20
10
  const root = resolve(dataFolder);
21
11
  const stableParent = dirname(root);
12
+ // Watching the parent keeps this instance alive when the whole data folder is
13
+ // removed and restored. Siblings are excluded before chokidar descends into them.
22
14
  const watcher = watch(stableParent, {
23
15
  atomic: true,
24
16
  awaitWriteFinish: { stabilityThreshold: 100, pollInterval: 10 },
25
17
  followSymlinks: false,
26
18
  ignoreInitial: true,
27
- ignored: (path) => isIgnoredWatchPath(stableParent, root, path),
19
+ // Exclude nonregular entries before chokidar remembers their names. Its
20
+ // symlink tracking otherwise misses a later replacement by a regular file.
21
+ ignored: (path, stats) => isIgnoredWatchPath(stableParent, root, path)
22
+ || (stats !== undefined && !stats.isFile() && !stats.isDirectory()),
28
23
  });
29
- const cache = new Map();
24
+ const knownUris = new Set();
30
25
  let queued = new Map();
31
- let addedFolders = new Set();
32
26
  let batchTimer;
27
+ let pendingFiles = Promise.resolve();
33
28
  let pending = Promise.resolve();
34
29
  let initializing = true;
30
+ let stopping = false;
35
31
  const readyPromise = new Promise((resolveWatcher, rejectWatcher) => {
36
32
  watcher.once("ready", resolveWatcher);
37
33
  watcher.once("error", (error) => rejectWatcher(toError(error)));
38
34
  });
39
- let stopping = false;
40
- watcher.on("add", (path) => queueFile("add", path));
41
- watcher.on("change", (path) => queueFile("change", path));
42
- watcher.on("unlink", (path) => queueFile("unlink", path));
35
+ watcher.on("add", (path) => queueFile("created", path));
36
+ watcher.on("change", (path) => queueFile("changed", path));
37
+ watcher.on("unlink", (path) => queueFile("deleted", path));
43
38
  watcher.on("addDir", (path) => {
44
- if (stopping)
45
- return;
46
- const folder = resourceFolderForDirectory(root, path);
47
- if (folder === undefined)
39
+ if (stopping || resourceFolderForDirectory(root, path) === undefined)
48
40
  return;
49
41
  watcher.add(resolve(path));
50
- if (folder === "")
51
- return;
52
- addedFolders.add(folder);
53
- scheduleBatch();
54
42
  });
55
43
  watcher.on("unlinkDir", (path) => {
56
44
  if (stopping)
@@ -58,19 +46,33 @@ export async function watchStore(dataFolder, store, onChange, onError) {
58
46
  const folder = resourceFolderForDirectory(root, path);
59
47
  if (folder === undefined)
60
48
  return;
61
- for (const uri of cache.keys()) {
62
- if (isResourceInFolder(uri, folder))
63
- queueUri("unlink", uri);
64
- }
49
+ queueFileCheck(() => {
50
+ const prefix = `autofile:///${folder}/`;
51
+ for (const uri of knownUris) {
52
+ if (folder === "" || uri.startsWith(prefix)) {
53
+ queueUri("deleted", uri);
54
+ }
55
+ }
56
+ });
65
57
  });
66
58
  try {
67
59
  await readyPromise;
68
60
  watcher.on("error", (error) => onError(toError(error)));
69
- for (const resource of await store.listResources()) {
70
- cache.set(resource.uri, resourceMetadata(resource));
71
- }
61
+ // The scan includes directories and symlinks too. Remember only regular
62
+ // files so removing a directory cannot invent deletions for ignored entries.
63
+ pendingFiles = pendingFiles.then(async () => {
64
+ for (const [folder, filenames] of Object.entries(watcher.getWatched())) {
65
+ for (const filename of filenames) {
66
+ const path = resolve(folder, filename);
67
+ const uri = resourceUriForPath(root, path);
68
+ if (uri !== undefined && await isRegularFile(path))
69
+ knownUris.add(uri);
70
+ }
71
+ }
72
+ });
73
+ await pendingFiles;
72
74
  initializing = false;
73
- if (queued.size > 0 || addedFolders.size > 0)
75
+ if (queued.size > 0)
74
76
  scheduleBatch();
75
77
  }
76
78
  catch (error) {
@@ -78,18 +80,30 @@ export async function watchStore(dataFolder, store, onChange, onError) {
78
80
  throw error;
79
81
  }
80
82
  let closing;
81
- return {
82
- close: () => closing ??= closeWatcher(),
83
- };
84
- function queueFile(event, path) {
83
+ return { close: () => closing ??= closeWatcher() };
84
+ function queueFile(kind, path) {
85
85
  if (stopping)
86
86
  return;
87
87
  const uri = resourceUriForPath(root, path);
88
- if (uri !== undefined)
89
- queueUri(event, uri);
88
+ if (uri === undefined)
89
+ return;
90
+ queueFileCheck(async () => {
91
+ // Chokidar's write-settling stats follow symlinks even with
92
+ // followSymlinks disabled, so check the entry itself before notifying.
93
+ queueUri(kind === "deleted" || !await isRegularFile(path) ? "deleted" : kind, uri);
94
+ });
95
+ }
96
+ function queueFileCheck(check) {
97
+ pendingFiles = pendingFiles.then(check).catch((error) => onError(toError(error)));
90
98
  }
91
- function queueUri(event, uri) {
92
- addEvent(queued, uri, event);
99
+ function queueUri(kind, uri) {
100
+ if (kind === "deleted") {
101
+ if (!knownUris.delete(uri))
102
+ return;
103
+ }
104
+ else
105
+ knownUris.add(uri);
106
+ queued.set(uri, { uri, kind });
93
107
  scheduleBatch();
94
108
  }
95
109
  function scheduleBatch() {
@@ -99,213 +113,78 @@ export async function watchStore(dataFolder, store, onChange, onError) {
99
113
  }
100
114
  function flushBatch() {
101
115
  batchTimer = undefined;
102
- if (queued.size === 0 && addedFolders.size === 0)
116
+ if (queued.size === 0)
103
117
  return;
104
- const batch = queued;
105
- const folders = addedFolders;
118
+ const changes = [...queued.values()];
106
119
  queued = new Map();
107
- addedFolders = new Set();
108
120
  pending = pending
109
- .then(() => processBatch(batch, folders))
121
+ .then(() => onChange(changes))
110
122
  .catch((error) => onError(toError(error)));
111
123
  }
112
- async function processBatch(batch, folders) {
113
- const before = new Set(cache.keys());
114
- const supplied = new Map();
115
- const failedUris = new Set();
116
- let focusedReadFailed = false;
117
- const markReadFailed = (uri) => {
118
- focusedReadFailed = true;
119
- failedUris.add(uri);
120
- cache.set(uri, unknownMetadata);
121
- };
122
- for (const folder of folders) {
123
- const resources = await readSafely(() => store.listResourceFolder(folder));
124
- if (resources === readFailed) {
125
- const affectedUris = new Set([...cache.keys(), ...batch.keys()]);
126
- for (const uri of affectedUris) {
127
- if (!isResourceInFolder(uri, folder))
128
- continue;
129
- markReadFailed(uri);
130
- }
131
- continue;
132
- }
133
- for (const resource of resources) {
134
- supplied.set(resource.uri, resource);
135
- if (!cache.has(resource.uri))
136
- addEvent(batch, resource.uri, "add");
137
- }
138
- }
139
- let metadataChanged = false;
140
- const affectedTypes = new Set();
141
- for (const uri of batch.keys()) {
142
- const type = declarationType(uri);
143
- if (type === undefined || affectedTypes.has(type) || failedUris.has(uri))
144
- continue;
145
- affectedTypes.add(type);
146
- const declarationUri = `autofile:///_types/${type}`;
147
- const recordPrefix = `autofile:///${type}/`;
148
- const listed = await readSafely(() => store.listTypeResources(type));
149
- if (listed === readFailed) {
150
- const affectedUris = new Set([...cache.keys(), ...batch.keys()]);
151
- for (const scopedUri of affectedUris) {
152
- if (scopedUri !== declarationUri && !scopedUri.startsWith(recordPrefix))
153
- continue;
154
- markReadFailed(scopedUri);
155
- }
156
- continue;
157
- }
158
- const current = new Map(listed.map((resource) => [resource.uri, resource]));
159
- const scope = new Set(current.keys());
160
- for (const cachedUri of cache.keys()) {
161
- if (cachedUri === declarationUri || cachedUri.startsWith(recordPrefix)) {
162
- scope.add(cachedUri);
163
- }
164
- }
165
- for (const scopedUri of scope) {
166
- const wasListed = cache.has(scopedUri);
167
- const isListed = current.has(scopedUri);
168
- if (scopedUri.startsWith(recordPrefix)
169
- && wasListed !== isListed
170
- && !batch.has(scopedUri)) {
171
- addEvent(batch, scopedUri, isListed ? "add" : "unlink");
172
- }
173
- metadataChanged = updateCache(cache, scopedUri, current.get(scopedUri))
174
- || metadataChanged;
175
- }
176
- for (const [currentUri, resource] of current)
177
- supplied.set(currentUri, resource);
178
- }
179
- for (const uri of [...batch.keys()]) {
180
- if (declarationType(uri) !== undefined)
181
- continue;
182
- if (failedUris.has(uri))
183
- continue;
184
- const resource = supplied.get(uri)
185
- ?? await readSafely(() => store.getResourceMetadata(uri));
186
- if (resource === readFailed) {
187
- markReadFailed(uri);
188
- continue;
189
- }
190
- metadataChanged = updateCache(cache, uri, resource) || metadataChanged;
191
- }
192
- for (const uri of batch.keys()) {
193
- if (!before.has(uri) && !cache.has(uri) && !failedUris.has(uri))
194
- batch.delete(uri);
195
- }
196
- const listChanged = focusedReadFailed
197
- || metadataChanged
198
- || [...batch.values()].some((event) => event.membershipChanged);
199
- const changes = [...batch.entries()].map(([uri, event]) => ({
200
- uri,
201
- kind: resourceChangeKinds[event.lastEvent],
202
- listChanged,
203
- }));
204
- if (changes.length > 0 || listChanged)
205
- await onChange({ changes, listChanged });
206
- }
207
124
  async function closeWatcher() {
208
125
  stopping = true;
209
126
  await watcher.close();
127
+ await pendingFiles;
210
128
  if (batchTimer !== undefined)
211
129
  clearTimeout(batchTimer);
212
130
  flushBatch();
213
131
  await pending;
214
132
  }
215
- async function readSafely(read) {
216
- try {
217
- return await read();
218
- }
219
- catch (error) {
220
- onError(toError(error));
221
- return readFailed;
222
- }
223
- }
224
133
  }
225
- function addEvent(batch, uri, event) {
226
- const existing = batch.get(uri);
227
- if (existing === undefined) {
228
- batch.set(uri, { membershipChanged: event !== "change", lastEvent: event });
134
+ async function isRegularFile(path) {
135
+ try {
136
+ return (await lstat(path)).isFile();
229
137
  }
230
- else {
231
- existing.membershipChanged ||= event !== "change";
232
- existing.lastEvent = event;
138
+ catch (error) {
139
+ if (error instanceof Error && "code" in error
140
+ && (error.code === "ENOENT" || error.code === "ENOTDIR"))
141
+ return false;
142
+ throw error;
233
143
  }
234
144
  }
235
- function updateCache(cache, uri, resource) {
236
- const previous = cache.get(uri);
237
- const next = resource === undefined ? undefined : resourceMetadata(resource);
238
- if (next === undefined)
239
- cache.delete(uri);
240
- else
241
- cache.set(uri, next);
242
- return previous === unknownMetadata
243
- || previous?.title !== next?.title
244
- || previous?.description !== next?.description
245
- || (previous === undefined) !== (next === undefined);
246
- }
247
- function resourceMetadata(resource) {
248
- return { title: resource.title, description: resource.description };
249
- }
250
- function declarationType(uri) {
251
- const match = /^autofile:\/\/\/_types\/([a-z][a-z0-9-]*)$/u.exec(uri);
252
- return match?.[1];
253
- }
254
145
  function resourceUriForPath(root, path) {
255
146
  const localPath = relative(root, resolve(path));
256
147
  if (localPath === "" || localPath === ".." || isAbsolute(localPath))
257
148
  return undefined;
258
149
  const parts = localPath.split(sep);
259
- if (parts.length !== 2 || parts.some((part) => part.startsWith(".")))
150
+ if (parts.some((part) => part.startsWith(".")))
260
151
  return undefined;
261
- const [folder, name] = parts;
262
- if (folder === undefined || name === undefined)
263
- return undefined;
264
- if (folder === "_blobs") {
265
- return BLOB_NAME_PATTERN.test(name) ? `autofile:///_blobs/${name}` : undefined;
152
+ if (parts[0] === "types" && parts.length === 2) {
153
+ const name = parts[1];
154
+ const type = name.slice(0, -".json".length);
155
+ return name.endsWith(".json") && typeNamePattern.test(type) ? `autofile:///types/${type}` : undefined;
266
156
  }
267
- if (!name.endsWith(".json"))
157
+ if (parts[0] !== "records" || parts.length !== 3)
268
158
  return undefined;
269
- const resourceName = name.slice(0, -".json".length);
270
- if (folder === "_types") {
271
- return typeNamePattern.test(resourceName)
272
- ? `autofile:///_types/${resourceName}`
273
- : undefined;
274
- }
275
- return typeNamePattern.test(folder) && keyPattern.test(resourceName)
276
- ? `autofile:///${folder}/${resourceName}`
159
+ const [, type, name] = parts;
160
+ if (type === undefined || name === undefined || !name.endsWith(".json"))
161
+ return undefined;
162
+ const key = name.slice(0, -".json".length);
163
+ return typeNamePattern.test(type) && keyPattern.test(key)
164
+ ? `autofile:///records/${type}/${key}`
277
165
  : undefined;
278
166
  }
279
167
  function resourceFolderForDirectory(root, path) {
280
168
  const localPath = relative(root, resolve(path));
281
169
  if (localPath === "")
282
170
  return "";
283
- if (localPath === ".." || isAbsolute(localPath))
284
- return undefined;
285
171
  const parts = localPath.split(sep);
286
- if (parts.length !== 1)
287
- return undefined;
288
- const folder = parts[0];
289
- return folder !== undefined
290
- && (folder === "_types" || folder === "_blobs" || typeNamePattern.test(folder))
291
- ? folder
172
+ if (parts.length === 1 && (parts[0] === "types" || parts[0] === "records"))
173
+ return parts[0];
174
+ return parts.length === 2 && parts[0] === "records" && typeNamePattern.test(parts[1])
175
+ ? parts.join("/")
292
176
  : undefined;
293
177
  }
294
- function isResourceInFolder(uri, folder) {
295
- if (folder === "")
296
- return true;
297
- if (folder === "_types")
298
- return !uri.startsWith("autofile:///_blobs/");
299
- return uri.startsWith(`autofile:///${folder}/`);
300
- }
301
178
  function isIgnoredWatchPath(stableParent, root, path) {
302
179
  const resolvedPath = resolve(path);
303
180
  if (resolvedPath === stableParent || resolvedPath === root)
304
181
  return false;
305
182
  const localPath = relative(root, resolvedPath);
306
- return localPath === ".."
307
- || isAbsolute(localPath)
308
- || localPath.split(sep).some((part) => part.startsWith("."));
183
+ const parts = localPath.split(sep);
184
+ if (isAbsolute(localPath) || parts.some((part) => part.startsWith(".")))
185
+ return true;
186
+ const [folder] = parts;
187
+ return folder !== "records" && folder !== "types";
309
188
  }
310
189
  function toError(error) {
311
190
  return error instanceof Error ? error : new Error(String(error));
package/dist/watch.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"watch.js","sourceRoot":"","sources":["../src/watch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAExE,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAG/C,MAAM,eAAe,GAAG,oBAAoB,CAAC;AAC7C,MAAM,UAAU,GAAG,uBAAuB,CAAC;AAC3C,MAAM,eAAe,GAAG,GAAG,CAAC;AAC5B,MAAM,UAAU,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AACzC,MAAM,eAAe,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAWnD,MAAM,mBAAmB,GAA0C;IACjE,GAAG,EAAE,SAAS;IACd,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,SAAS;CAClB,CAAC;AAsBF,iFAAiF;AACjF,MAAM,UAAU,wBAAwB,CAAC,GAAW;IAClD,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;AACnE,CAAC;AAED,8EAA8E;AAC9E,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,UAAkB,EAClB,KAAiB,EACjB,QAA8D,EAC9D,OAA+B;IAE/B,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACjC,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,KAAK,CAAC,YAAY,EAAE;QAClC,MAAM,EAAE,IAAI;QACZ,gBAAgB,EAAE,EAAE,kBAAkB,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE,EAAE;QAC/D,cAAc,EAAE,KAAK;QACrB,aAAa,EAAE,IAAI;QACnB,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC;KAChE,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,IAAI,GAAG,EAA0B,CAAC;IAChD,IAAI,MAAM,GAAG,IAAI,GAAG,EAA2B,CAAC;IAChD,IAAI,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,IAAI,UAAsC,CAAC;IAC3C,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAChC,IAAI,YAAY,GAAG,IAAI,CAAC;IACxB,MAAM,YAAY,GAAG,IAAI,OAAO,CAAO,CAAC,cAAc,EAAE,aAAa,EAAE,EAAE;QACvE,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QACtC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IACH,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;IAC1D,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;IAC1D,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE;QAC5B,IAAI,QAAQ;YAAE,OAAO;QACrB,MAAM,MAAM,GAAG,0BAA0B,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACtD,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO;QACjC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3B,IAAI,MAAM,KAAK,EAAE;YAAE,OAAO;QAC1B,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACzB,aAAa,EAAE,CAAC;IAClB,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE;QAC/B,IAAI,QAAQ;YAAE,OAAO;QACrB,MAAM,MAAM,GAAG,0BAA0B,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACtD,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO;QACjC,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YAC/B,IAAI,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC;gBAAE,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,YAAY,CAAC;QACnB,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACxD,KAAK,MAAM,QAAQ,IAAI,MAAM,KAAK,CAAC,aAAa,EAAE,EAAE,CAAC;YACnD,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;QACtD,CAAC;QACD,YAAY,GAAG,KAAK,CAAC;QACrB,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,YAAY,CAAC,IAAI,GAAG,CAAC;YAAE,aAAa,EAAE,CAAC;IAChE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;QACtB,MAAM,KAAK,CAAC;IACd,CAAC;IAED,IAAI,OAAkC,CAAC;IACvC,OAAO;QACL,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,KAAK,YAAY,EAAE;KACxC,CAAC;IAEF,SAAS,SAAS,CAAC,KAAgB,EAAE,IAAY;QAC/C,IAAI,QAAQ;YAAE,OAAO;QACrB,MAAM,GAAG,GAAG,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC3C,IAAI,GAAG,KAAK,SAAS;YAAE,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC9C,CAAC;IAED,SAAS,QAAQ,CAAC,KAAgB,EAAE,GAAW;QAC7C,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QAC7B,aAAa,EAAE,CAAC;IAClB,CAAC;IAED,SAAS,aAAa;QACpB,IAAI,YAAY,IAAI,UAAU,KAAK,SAAS;YAAE,OAAO;QACrD,UAAU,GAAG,UAAU,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;IACvD,CAAC;IAED,SAAS,UAAU;QACjB,UAAU,GAAG,SAAS,CAAC;QACvB,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,YAAY,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO;QACzD,MAAM,KAAK,GAAG,MAAM,CAAC;QACrB,MAAM,OAAO,GAAG,YAAY,CAAC;QAC7B,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;QACnB,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;QACzB,OAAO,GAAG,OAAO;aACd,IAAI,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;aACxC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,UAAU,YAAY,CACzB,KAAmC,EACnC,OAAoB;QAEpB,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QACrC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAyB,CAAC;QAClD,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;QACrC,IAAI,iBAAiB,GAAG,KAAK,CAAC;QAC9B,MAAM,cAAc,GAAG,CAAC,GAAW,EAAQ,EAAE;YAC3C,iBAAiB,GAAG,IAAI,CAAC;YACzB,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACpB,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;QAClC,CAAC,CAAC;QACF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;YAC3E,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;gBAC7B,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;gBACjE,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;oBAC/B,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC;wBAAE,SAAS;oBAC/C,cAAc,CAAC,GAAG,CAAC,CAAC;gBACtB,CAAC;gBACD,SAAS;YACX,CAAC;YACD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;gBACjC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;gBACrC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;oBAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACrE,CAAC;QACH,CAAC;QAED,IAAI,eAAe,GAAG,KAAK,CAAC;QAC5B,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;QACxC,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;YAClC,IAAI,IAAI,KAAK,SAAS,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,SAAS;YACnF,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACxB,MAAM,cAAc,GAAG,sBAAsB,IAAI,EAAE,CAAC;YACpD,MAAM,YAAY,GAAG,eAAe,IAAI,GAAG,CAAC;YAC5C,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;YACrE,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;gBAC1B,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;gBACjE,KAAK,MAAM,SAAS,IAAI,YAAY,EAAE,CAAC;oBACrC,IAAI,SAAS,KAAK,cAAc,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,YAAY,CAAC;wBAAE,SAAS;oBAClF,cAAc,CAAC,SAAS,CAAC,CAAC;gBAC5B,CAAC;gBACD,SAAS;YACX,CAAC;YACD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC5E,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YACtC,KAAK,MAAM,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;gBACrC,IAAI,SAAS,KAAK,cAAc,IAAI,SAAS,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;oBACvE,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBACvB,CAAC;YACH,CAAC;YACD,KAAK,MAAM,SAAS,IAAI,KAAK,EAAE,CAAC;gBAC9B,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBACvC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBACxC,IACE,SAAS,CAAC,UAAU,CAAC,YAAY,CAAC;uBAC/B,SAAS,KAAK,QAAQ;uBACtB,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EACxB,CAAC;oBACD,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;gBAC1D,CAAC;gBACD,eAAe,GAAG,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;uBAClE,eAAe,CAAC;YACvB,CAAC;YACD,KAAK,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,OAAO;gBAAE,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACnF,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YACpC,IAAI,eAAe,CAAC,GAAG,CAAC,KAAK,SAAS;gBAAE,SAAS;YACjD,IAAI,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,SAAS;YAClC,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;mBAC7B,MAAM,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC;YAC5D,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;gBAC5B,cAAc,CAAC,GAAG,CAAC,CAAC;gBACpB,SAAS;YACX,CAAC;YACD,eAAe,GAAG,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,CAAC,IAAI,eAAe,CAAC;QACzE,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YAC/B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACrF,CAAC;QAED,MAAM,WAAW,GAAG,iBAAiB;eAChC,eAAe;eACf,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAClE,MAAM,OAAO,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1D,GAAG;YACH,IAAI,EAAE,mBAAmB,CAAC,KAAK,CAAC,SAAS,CAAC;YAC1C,WAAW;SACZ,CAAC,CAAC,CAAC;QACJ,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW;YAAE,MAAM,QAAQ,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;IAClF,CAAC;IAED,KAAK,UAAU,YAAY;QACzB,QAAQ,GAAG,IAAI,CAAC;QAChB,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,UAAU,KAAK,SAAS;YAAE,YAAY,CAAC,UAAU,CAAC,CAAC;QACvD,UAAU,EAAE,CAAC;QACb,MAAM,OAAO,CAAC;IAChB,CAAC;IAED,KAAK,UAAU,UAAU,CAAI,IAAsB;QACjD,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,EAAE,CAAC;QACtB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;YACxB,OAAO,UAAU,CAAC;QACpB,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,KAAmC,EAAE,GAAW,EAAE,KAAgB;IAClF,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,iBAAiB,EAAE,KAAK,KAAK,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IAC9E,CAAC;SAAM,CAAC;QACN,QAAQ,CAAC,iBAAiB,KAAK,KAAK,KAAK,QAAQ,CAAC;QAClD,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC;IAC7B,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAClB,KAAkC,EAClC,GAAW,EACX,QAAmC;IAEnC,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,IAAI,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC7E,IAAI,IAAI,KAAK,SAAS;QAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;;QACrC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC1B,OAAO,QAAQ,KAAK,eAAe;WAC9B,QAAQ,EAAE,KAAK,KAAK,IAAI,EAAE,KAAK;WAC/B,QAAQ,EAAE,WAAW,KAAK,IAAI,EAAE,WAAW;WAC3C,CAAC,QAAQ,KAAK,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,gBAAgB,CAAC,QAAuB;IAC/C,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE,CAAC;AACtE,CAAC;AAED,SAAS,eAAe,CAAC,GAAW;IAClC,MAAM,KAAK,GAAG,6CAA6C,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtE,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY,EAAE,IAAY;IACpD,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAChD,IAAI,SAAS,KAAK,EAAE,IAAI,SAAS,KAAK,IAAI,IAAI,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IACtF,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACvF,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;IAC7B,IAAI,MAAM,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACjE,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxB,OAAO,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IACjF,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,SAAS,CAAC;IAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACpD,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxB,OAAO,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC;YACvC,CAAC,CAAC,sBAAsB,YAAY,EAAE;YACtC,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;IACD,OAAO,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC;QAClE,CAAC,CAAC,eAAe,MAAM,IAAI,YAAY,EAAE;QACzC,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,SAAS,0BAA0B,CAAC,IAAY,EAAE,IAAY;IAC5D,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAChD,IAAI,SAAS,KAAK,EAAE;QAAE,OAAO,EAAE,CAAC;IAChC,IAAI,SAAS,KAAK,IAAI,IAAI,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IAClE,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACzC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACxB,OAAO,MAAM,KAAK,SAAS;WACtB,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,QAAQ,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/E,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAW,EAAE,MAAc;IACrD,IAAI,MAAM,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAC/B,IAAI,MAAM,KAAK,QAAQ;QAAE,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;IACvE,OAAO,GAAG,CAAC,UAAU,CAAC,eAAe,MAAM,GAAG,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,kBAAkB,CAAC,YAAoB,EAAE,IAAY,EAAE,IAAY;IAC1E,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,YAAY,KAAK,YAAY,IAAI,YAAY,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IACzE,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAC/C,OAAO,SAAS,KAAK,IAAI;WACpB,UAAU,CAAC,SAAS,CAAC;WACrB,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,OAAO,CAAC,KAAc;IAC7B,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACnE,CAAC"}
1
+ {"version":3,"file":"watch.js","sourceRoot":"","sources":["../src/watch.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@telepath-computer/autofile",
3
- "version": "0.3.0",
3
+ "version": "0.5.0",
4
4
  "description": "Predictable filing for agents.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -44,5 +44,11 @@
44
44
  "mime-types": "3.0.1",
45
45
  "mingo": "7.2.4",
46
46
  "proper-lockfile": "4.1.2"
47
+ },
48
+ "exports": {
49
+ ".": {
50
+ "types": "./dist/index.d.ts",
51
+ "import": "./dist/index.js"
52
+ }
47
53
  }
48
54
  }