@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/README.md +69 -36
- package/dist/blobs.d.ts +9 -24
- package/dist/blobs.js +60 -229
- package/dist/blobs.js.map +1 -1
- package/dist/cli.js +16 -10
- package/dist/cli.js.map +1 -1
- package/dist/http.d.ts +3 -3
- package/dist/http.js +141 -10
- package/dist/http.js.map +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/json.d.ts +3 -1
- package/dist/json.js +81 -2
- package/dist/json.js.map +1 -1
- package/dist/mcp-resources.d.ts +35 -0
- package/dist/mcp-resources.js +127 -0
- package/dist/mcp-resources.js.map +1 -0
- package/dist/mcp-tools.d.ts +113 -0
- package/dist/mcp-tools.js +89 -0
- package/dist/mcp-tools.js.map +1 -0
- package/dist/mcp-upload.d.ts +16 -0
- package/dist/mcp-upload.js +81 -0
- package/dist/mcp-upload.js.map +1 -0
- package/dist/mcp-watch.d.ts +18 -0
- package/dist/mcp-watch.js +165 -0
- package/dist/mcp-watch.js.map +1 -0
- package/dist/schema.d.ts +1 -1
- package/dist/schema.js +8 -2
- package/dist/schema.js.map +1 -1
- package/dist/server.d.ts +3 -2
- package/dist/server.js +58 -38
- package/dist/server.js.map +1 -1
- package/dist/store.d.ts +102 -108
- package/dist/store.js +622 -530
- package/dist/store.js.map +1 -1
- package/dist/watch.d.ts +6 -18
- package/dist/watch.js +92 -213
- package/dist/watch.js.map +1 -1
- package/package.json +7 -1
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
|
-
|
|
8
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
40
|
-
watcher.on("
|
|
41
|
-
watcher.on("
|
|
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
|
-
|
|
62
|
-
|
|
63
|
-
|
|
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
|
-
|
|
70
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
89
|
-
|
|
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(
|
|
92
|
-
|
|
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
|
|
116
|
+
if (queued.size === 0)
|
|
103
117
|
return;
|
|
104
|
-
const
|
|
105
|
-
const folders = addedFolders;
|
|
118
|
+
const changes = [...queued.values()];
|
|
106
119
|
queued = new Map();
|
|
107
|
-
addedFolders = new Set();
|
|
108
120
|
pending = pending
|
|
109
|
-
.then(() =>
|
|
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
|
|
226
|
-
|
|
227
|
-
|
|
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
|
-
|
|
231
|
-
|
|
232
|
-
|
|
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.
|
|
150
|
+
if (parts.some((part) => part.startsWith(".")))
|
|
260
151
|
return undefined;
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
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 (
|
|
157
|
+
if (parts[0] !== "records" || parts.length !== 3)
|
|
268
158
|
return undefined;
|
|
269
|
-
const
|
|
270
|
-
if (
|
|
271
|
-
return
|
|
272
|
-
|
|
273
|
-
|
|
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
|
|
287
|
-
return
|
|
288
|
-
|
|
289
|
-
|
|
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
|
-
|
|
307
|
-
|
|
308
|
-
|
|
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":"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"}
|
|
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
|
+
"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
|
}
|