@f0rbit/corpus 0.1.4 → 0.1.6
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/backend/cloudflare.d.ts +1 -1
- package/dist/backend/cloudflare.d.ts.map +1 -1
- package/dist/backend/cloudflare.js +168 -58
- package/dist/backend/file.d.ts +1 -1
- package/dist/backend/file.d.ts.map +1 -1
- package/dist/backend/file.js +65 -67
- package/dist/backend/layered.d.ts.map +1 -1
- package/dist/backend/layered.js +67 -19
- package/dist/backend/memory.d.ts +2 -1
- package/dist/backend/memory.d.ts.map +1 -1
- package/dist/backend/memory.js +39 -53
- package/dist/corpus.d.ts +11 -0
- package/dist/corpus.d.ts.map +1 -1
- package/dist/corpus.js +52 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/observations/client.d.ts +12 -0
- package/dist/observations/client.d.ts.map +1 -0
- package/dist/observations/client.js +115 -0
- package/dist/observations/index.d.ts +12 -0
- package/dist/observations/index.d.ts.map +1 -0
- package/dist/observations/index.js +11 -0
- package/dist/observations/schema.d.ts +267 -0
- package/dist/observations/schema.d.ts.map +1 -0
- package/dist/observations/schema.js +55 -0
- package/dist/observations/storage.d.ts +75 -0
- package/dist/observations/storage.d.ts.map +1 -0
- package/dist/observations/storage.js +137 -0
- package/dist/observations/types.d.ts +219 -0
- package/dist/observations/types.d.ts.map +1 -0
- package/dist/observations/types.js +40 -0
- package/dist/observations/utils.d.ts +183 -0
- package/dist/observations/utils.d.ts.map +1 -0
- package/dist/observations/utils.js +272 -0
- package/dist/sst.d.ts +1 -1
- package/dist/sst.d.ts.map +1 -1
- package/dist/sst.js +20 -0
- package/dist/types.d.ts +61 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils.d.ts +38 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +84 -0
- package/package.json +1 -1
- package/dist/codec.d.ts +0 -9
- package/dist/codec.d.ts.map +0 -1
- package/dist/codec.js +0 -21
- package/dist/codecs.d.ts +0 -8
- package/dist/codecs.d.ts.map +0 -1
- package/dist/codecs.js +0 -6
- package/dist/core.d.ts +0 -9
- package/dist/core.d.ts.map +0 -1
- package/dist/core.js +0 -7
- package/dist/hash.d.ts +0 -2
- package/dist/hash.d.ts.map +0 -1
- package/dist/hash.js +0 -5
- package/dist/store.d.ts +0 -3
- package/dist/store.d.ts.map +0 -1
- package/dist/store.js +0 -125
- package/dist/version.d.ts +0 -7
- package/dist/version.d.ts.map +0 -1
- package/dist/version.js +0 -31
package/dist/core.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../core.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACtD,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,SAAS,CAAA;AAC/C,YAAY,EACV,MAAM,EACN,aAAa,EACb,KAAK,EACL,eAAe,EACf,MAAM,EACN,WAAW,EACX,OAAO,GACR,MAAM,SAAS,CAAA"}
|
package/dist/core.js
DELETED
package/dist/hash.d.ts
DELETED
package/dist/hash.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../hash.ts"],"names":[],"mappings":"AAAA,wBAAsB,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAIpE"}
|
package/dist/hash.js
DELETED
package/dist/store.d.ts
DELETED
package/dist/store.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,EAA8C,MAAM,SAAS,CAAA;AAK1G,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CA+IlG"}
|
package/dist/store.js
DELETED
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
import { ok, err } from './types';
|
|
2
|
-
import { compute_hash } from './hash';
|
|
3
|
-
import { generate_version } from './version';
|
|
4
|
-
export function create_store(backend, definition) {
|
|
5
|
-
const { id, codec } = definition;
|
|
6
|
-
function emit(event) {
|
|
7
|
-
backend.on_event?.(event);
|
|
8
|
-
}
|
|
9
|
-
function make_data_key(store_id, content_hash) {
|
|
10
|
-
return `${store_id}/${content_hash}`;
|
|
11
|
-
}
|
|
12
|
-
return {
|
|
13
|
-
id,
|
|
14
|
-
codec,
|
|
15
|
-
async put(data, opts) {
|
|
16
|
-
const version = generate_version();
|
|
17
|
-
let bytes;
|
|
18
|
-
try {
|
|
19
|
-
bytes = codec.encode(data);
|
|
20
|
-
}
|
|
21
|
-
catch (cause) {
|
|
22
|
-
const error = { kind: 'encode_error', cause: cause };
|
|
23
|
-
emit({ type: 'error', error });
|
|
24
|
-
return err(error);
|
|
25
|
-
}
|
|
26
|
-
const content_hash = await compute_hash(bytes);
|
|
27
|
-
// deduplication: reuse existing data_key if content already exists
|
|
28
|
-
const existing = await backend.metadata.find_by_hash(id, content_hash);
|
|
29
|
-
const deduplicated = existing !== null;
|
|
30
|
-
const data_key = deduplicated ? existing.data_key : make_data_key(id, content_hash);
|
|
31
|
-
if (!deduplicated) {
|
|
32
|
-
const data_result = await backend.data.put(data_key, bytes);
|
|
33
|
-
if (!data_result.ok) {
|
|
34
|
-
emit({ type: 'error', error: data_result.error });
|
|
35
|
-
return data_result;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
emit({ type: 'data_put', store_id: id, version, size_bytes: bytes.length, deduplicated });
|
|
39
|
-
const meta = {
|
|
40
|
-
store_id: id,
|
|
41
|
-
version,
|
|
42
|
-
parents: opts?.parents ?? [],
|
|
43
|
-
created_at: new Date(),
|
|
44
|
-
invoked_at: opts?.invoked_at,
|
|
45
|
-
content_hash,
|
|
46
|
-
content_type: codec.content_type,
|
|
47
|
-
size_bytes: bytes.length,
|
|
48
|
-
data_key,
|
|
49
|
-
tags: opts?.tags,
|
|
50
|
-
};
|
|
51
|
-
const meta_result = await backend.metadata.put(meta);
|
|
52
|
-
if (!meta_result.ok) {
|
|
53
|
-
emit({ type: 'error', error: meta_result.error });
|
|
54
|
-
return meta_result;
|
|
55
|
-
}
|
|
56
|
-
emit({ type: 'snapshot_put', store_id: id, version, content_hash, deduplicated });
|
|
57
|
-
return ok(meta);
|
|
58
|
-
},
|
|
59
|
-
async get(version) {
|
|
60
|
-
const meta_result = await backend.metadata.get(id, version);
|
|
61
|
-
if (!meta_result.ok) {
|
|
62
|
-
emit({ type: 'snapshot_get', store_id: id, version, found: false });
|
|
63
|
-
return meta_result;
|
|
64
|
-
}
|
|
65
|
-
const meta = meta_result.value;
|
|
66
|
-
const data_result = await backend.data.get(meta.data_key);
|
|
67
|
-
if (!data_result.ok) {
|
|
68
|
-
emit({ type: 'error', error: data_result.error });
|
|
69
|
-
return data_result;
|
|
70
|
-
}
|
|
71
|
-
const bytes = await data_result.value.bytes();
|
|
72
|
-
let data;
|
|
73
|
-
try {
|
|
74
|
-
data = codec.decode(bytes);
|
|
75
|
-
}
|
|
76
|
-
catch (cause) {
|
|
77
|
-
const error = { kind: 'decode_error', cause: cause };
|
|
78
|
-
emit({ type: 'error', error });
|
|
79
|
-
return err(error);
|
|
80
|
-
}
|
|
81
|
-
emit({ type: 'snapshot_get', store_id: id, version, found: true });
|
|
82
|
-
return ok({ meta, data });
|
|
83
|
-
},
|
|
84
|
-
async get_latest() {
|
|
85
|
-
const meta_result = await backend.metadata.get_latest(id);
|
|
86
|
-
if (!meta_result.ok) {
|
|
87
|
-
return meta_result;
|
|
88
|
-
}
|
|
89
|
-
const meta = meta_result.value;
|
|
90
|
-
const data_result = await backend.data.get(meta.data_key);
|
|
91
|
-
if (!data_result.ok) {
|
|
92
|
-
return data_result;
|
|
93
|
-
}
|
|
94
|
-
const bytes = await data_result.value.bytes();
|
|
95
|
-
let data;
|
|
96
|
-
try {
|
|
97
|
-
data = codec.decode(bytes);
|
|
98
|
-
}
|
|
99
|
-
catch (cause) {
|
|
100
|
-
const error = { kind: 'decode_error', cause: cause };
|
|
101
|
-
emit({ type: 'error', error });
|
|
102
|
-
return err(error);
|
|
103
|
-
}
|
|
104
|
-
return ok({ meta, data });
|
|
105
|
-
},
|
|
106
|
-
async get_meta(version) {
|
|
107
|
-
return backend.metadata.get(id, version);
|
|
108
|
-
},
|
|
109
|
-
list(opts) {
|
|
110
|
-
return backend.metadata.list(id, opts);
|
|
111
|
-
},
|
|
112
|
-
async delete(version) {
|
|
113
|
-
const meta_result = await backend.metadata.get(id, version);
|
|
114
|
-
if (!meta_result.ok) {
|
|
115
|
-
return meta_result;
|
|
116
|
-
}
|
|
117
|
-
const delete_meta_result = await backend.metadata.delete(id, version);
|
|
118
|
-
if (!delete_meta_result.ok) {
|
|
119
|
-
return delete_meta_result;
|
|
120
|
-
}
|
|
121
|
-
emit({ type: 'meta_delete', store_id: id, version });
|
|
122
|
-
return ok(undefined);
|
|
123
|
-
},
|
|
124
|
-
};
|
|
125
|
-
}
|
package/dist/version.d.ts
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generates a unique, sortable version string.
|
|
3
|
-
* Format: base64url-encoded timestamp with optional sequence suffix for same-millisecond calls.
|
|
4
|
-
* Versions sort lexicographically in chronological order.
|
|
5
|
-
*/
|
|
6
|
-
export declare function generate_version(): string;
|
|
7
|
-
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../version.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CA0BzC"}
|
package/dist/version.js
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
let last_timestamp = 0;
|
|
2
|
-
let sequence = 0;
|
|
3
|
-
/**
|
|
4
|
-
* Generates a unique, sortable version string.
|
|
5
|
-
* Format: base64url-encoded timestamp with optional sequence suffix for same-millisecond calls.
|
|
6
|
-
* Versions sort lexicographically in chronological order.
|
|
7
|
-
*/
|
|
8
|
-
export function generate_version() {
|
|
9
|
-
const now = Date.now();
|
|
10
|
-
if (now === last_timestamp) {
|
|
11
|
-
sequence++;
|
|
12
|
-
}
|
|
13
|
-
else {
|
|
14
|
-
last_timestamp = now;
|
|
15
|
-
sequence = 0;
|
|
16
|
-
}
|
|
17
|
-
// base64url encode the timestamp (no padding, url-safe)
|
|
18
|
-
const timestamp_bytes = new Uint8Array(8);
|
|
19
|
-
const view = new DataView(timestamp_bytes.buffer);
|
|
20
|
-
view.setBigUint64(0, BigInt(now), false); // big-endian for lexicographic sorting
|
|
21
|
-
// trim leading zeros for compactness
|
|
22
|
-
let start = 0;
|
|
23
|
-
while (start < 7 && timestamp_bytes[start] === 0)
|
|
24
|
-
start++;
|
|
25
|
-
const trimmed = timestamp_bytes.slice(start);
|
|
26
|
-
const base64 = btoa(String.fromCharCode(...trimmed))
|
|
27
|
-
.replace(/\+/g, '-')
|
|
28
|
-
.replace(/\//g, '_')
|
|
29
|
-
.replace(/=/g, '');
|
|
30
|
-
return sequence > 0 ? `${base64}.${sequence}` : base64;
|
|
31
|
-
}
|