@delma/fylo 2.1.0 → 2.1.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.
- package/README.md +27 -0
- package/dist/adapters/cipher.js +155 -0
- package/dist/adapters/cipher.js.map +1 -0
- package/dist/core/collection.js +6 -0
- package/dist/core/collection.js.map +1 -0
- package/{src/core/directory.ts → dist/core/directory.js} +28 -35
- package/dist/core/directory.js.map +1 -0
- package/dist/core/doc-id.js +15 -0
- package/dist/core/doc-id.js.map +1 -0
- package/dist/core/extensions.js +16 -0
- package/dist/core/extensions.js.map +1 -0
- package/dist/core/format.js +355 -0
- package/dist/core/format.js.map +1 -0
- package/dist/core/parser.js +764 -0
- package/dist/core/parser.js.map +1 -0
- package/dist/core/query.js +47 -0
- package/dist/core/query.js.map +1 -0
- package/dist/engines/s3-files/documents.js +62 -0
- package/dist/engines/s3-files/documents.js.map +1 -0
- package/dist/engines/s3-files/filesystem.js +165 -0
- package/dist/engines/s3-files/filesystem.js.map +1 -0
- package/dist/engines/s3-files/query.js +235 -0
- package/dist/engines/s3-files/query.js.map +1 -0
- package/dist/engines/s3-files/types.js +2 -0
- package/dist/engines/s3-files/types.js.map +1 -0
- package/dist/engines/s3-files.js +629 -0
- package/dist/engines/s3-files.js.map +1 -0
- package/dist/engines/types.js +2 -0
- package/dist/engines/types.js.map +1 -0
- package/dist/index.js +562 -0
- package/dist/index.js.map +1 -0
- package/dist/sync.js +18 -0
- package/dist/sync.js.map +1 -0
- package/{src → dist}/types/fylo.d.ts +14 -1
- package/package.json +2 -2
- package/.env.example +0 -16
- package/.github/copilot-instructions.md +0 -3
- package/.github/prompts/release.prompt.md +0 -10
- package/.github/workflows/ci.yml +0 -37
- package/.github/workflows/publish.yml +0 -91
- package/.prettierrc +0 -7
- package/AGENTS.md +0 -3
- package/CLAUDE.md +0 -3
- package/eslint.config.js +0 -32
- package/src/CLI +0 -39
- package/src/adapters/cipher.ts +0 -180
- package/src/core/collection.ts +0 -5
- package/src/core/extensions.ts +0 -21
- package/src/core/format.ts +0 -457
- package/src/core/parser.ts +0 -901
- package/src/core/query.ts +0 -53
- package/src/engines/s3-files/documents.ts +0 -65
- package/src/engines/s3-files/filesystem.ts +0 -172
- package/src/engines/s3-files/query.ts +0 -291
- package/src/engines/s3-files/types.ts +0 -42
- package/src/engines/s3-files.ts +0 -769
- package/src/engines/types.ts +0 -21
- package/src/index.ts +0 -632
- package/src/sync.ts +0 -58
- package/tests/collection/truncate.test.js +0 -36
- package/tests/data.js +0 -97
- package/tests/helpers/root.js +0 -7
- package/tests/integration/aws-s3-files.canary.test.js +0 -22
- package/tests/integration/create.test.js +0 -39
- package/tests/integration/delete.test.js +0 -97
- package/tests/integration/edge-cases.test.js +0 -162
- package/tests/integration/encryption.test.js +0 -148
- package/tests/integration/export.test.js +0 -46
- package/tests/integration/join-modes.test.js +0 -154
- package/tests/integration/nested.test.js +0 -144
- package/tests/integration/operators.test.js +0 -136
- package/tests/integration/read.test.js +0 -123
- package/tests/integration/rollback.test.js +0 -30
- package/tests/integration/s3-files.performance.test.js +0 -75
- package/tests/integration/s3-files.test.js +0 -205
- package/tests/integration/sync.test.js +0 -154
- package/tests/integration/update.test.js +0 -105
- package/tests/mocks/cipher.js +0 -40
- package/tests/schemas/album.d.ts +0 -5
- package/tests/schemas/album.json +0 -5
- package/tests/schemas/comment.d.ts +0 -7
- package/tests/schemas/comment.json +0 -7
- package/tests/schemas/photo.d.ts +0 -7
- package/tests/schemas/photo.json +0 -7
- package/tests/schemas/post.d.ts +0 -6
- package/tests/schemas/post.json +0 -6
- package/tests/schemas/tip.d.ts +0 -7
- package/tests/schemas/tip.json +0 -7
- package/tests/schemas/todo.d.ts +0 -6
- package/tests/schemas/todo.json +0 -6
- package/tests/schemas/user.d.ts +0 -23
- package/tests/schemas/user.json +0 -23
- package/tsconfig.json +0 -21
- package/tsconfig.typecheck.json +0 -31
- /package/{src → dist}/types/bun-runtime.d.ts +0 -0
- /package/{src → dist}/types/index.d.ts +0 -0
- /package/{src → dist}/types/node-runtime.d.ts +0 -0
- /package/{src → dist}/types/query.d.ts +0 -0
- /package/{src → dist}/types/vendor-modules.d.ts +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/core/parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { Cipher } from '../adapters/cipher';
|
|
2
|
+
const ENCRYPTED_FIELD_OPS = ['$ne', '$gt', '$gte', '$lt', '$lte', '$like', '$contains'];
|
|
3
|
+
export class Query {
|
|
4
|
+
static async getExprs(collection, query) {
|
|
5
|
+
let exprs = new Set();
|
|
6
|
+
if (query.$ops) {
|
|
7
|
+
for (const op of query.$ops) {
|
|
8
|
+
for (const column in op) {
|
|
9
|
+
const col = op[column];
|
|
10
|
+
const fieldPath = String(column).replaceAll('.', '/');
|
|
11
|
+
const encrypted = Cipher.isConfigured() && Cipher.isEncryptedField(collection, fieldPath);
|
|
12
|
+
if (encrypted) {
|
|
13
|
+
for (const opKey of ENCRYPTED_FIELD_OPS) {
|
|
14
|
+
if (col[opKey] !== undefined) {
|
|
15
|
+
throw new Error(`Operator ${opKey} is not supported on encrypted field "${String(column)}"`);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
if (col.$eq) {
|
|
20
|
+
const val = encrypted
|
|
21
|
+
? await Cipher.encrypt(String(col.$eq).replaceAll('/', '%2F'))
|
|
22
|
+
: col.$eq;
|
|
23
|
+
exprs.add(`${column}/${val}/**/*`);
|
|
24
|
+
}
|
|
25
|
+
if (col.$ne)
|
|
26
|
+
exprs.add(`${column}/**/*`);
|
|
27
|
+
if (col.$gt)
|
|
28
|
+
exprs.add(`${column}/**/*`);
|
|
29
|
+
if (col.$gte)
|
|
30
|
+
exprs.add(`${column}/**/*`);
|
|
31
|
+
if (col.$lt)
|
|
32
|
+
exprs.add(`${column}/**/*`);
|
|
33
|
+
if (col.$lte)
|
|
34
|
+
exprs.add(`${column}/**/*`);
|
|
35
|
+
if (col.$like)
|
|
36
|
+
exprs.add(`${column}/${col.$like.replaceAll('%', '*')}/**/*`);
|
|
37
|
+
if (col.$contains !== undefined)
|
|
38
|
+
exprs.add(`${column}/*/${String(col.$contains).split('/').join('%2F')}/**/*`);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
else
|
|
43
|
+
exprs = new Set([`**/*`]);
|
|
44
|
+
return Array.from(exprs);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/core/query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAE3C,MAAM,mBAAmB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,CAAU,CAAA;AAEhG,MAAM,OAAO,KAAK;IACd,MAAM,CAAC,KAAK,CAAC,QAAQ,CACjB,UAAkB,EAClB,KAAqB;QAErB,IAAI,KAAK,GAAG,IAAI,GAAG,EAAU,CAAA;QAE7B,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACb,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBAC1B,KAAK,MAAM,MAAM,IAAI,EAAE,EAAE,CAAC;oBACtB,MAAM,GAAG,GAAG,EAAE,CAAC,MAAiB,CAAE,CAAA;oBAElC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;oBACrD,MAAM,SAAS,GACX,MAAM,CAAC,YAAY,EAAE,IAAI,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;oBAE3E,IAAI,SAAS,EAAE,CAAC;wBACZ,KAAK,MAAM,KAAK,IAAI,mBAAmB,EAAE,CAAC;4BACtC,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE,CAAC;gCAC3B,MAAM,IAAI,KAAK,CACX,YAAY,KAAK,yCAAyC,MAAM,CAAC,MAAM,CAAC,GAAG,CAC9E,CAAA;4BACL,CAAC;wBACL,CAAC;oBACL,CAAC;oBAED,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;wBACV,MAAM,GAAG,GAAG,SAAS;4BACjB,CAAC,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;4BAC9D,CAAC,CAAC,GAAG,CAAC,GAAG,CAAA;wBACb,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,GAAG,OAAO,CAAC,CAAA;oBACtC,CAAC;oBACD,IAAI,GAAG,CAAC,GAAG;wBAAE,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,OAAO,CAAC,CAAA;oBACxC,IAAI,GAAG,CAAC,GAAG;wBAAE,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,OAAO,CAAC,CAAA;oBACxC,IAAI,GAAG,CAAC,IAAI;wBAAE,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,OAAO,CAAC,CAAA;oBACzC,IAAI,GAAG,CAAC,GAAG;wBAAE,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,OAAO,CAAC,CAAA;oBACxC,IAAI,GAAG,CAAC,IAAI;wBAAE,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,OAAO,CAAC,CAAA;oBACzC,IAAI,GAAG,CAAC,KAAK;wBAAE,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;oBAC5E,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS;wBAC3B,KAAK,CAAC,GAAG,CACL,GAAG,MAAM,MAAM,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CACrE,CAAA;gBACT,CAAC;YACL,CAAC;QACL,CAAC;;YAAM,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;QAEhC,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC5B,CAAC;CACJ"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import TTID from '@delma/ttid';
|
|
3
|
+
import { assertPathInside, validateDocId } from '../../core/doc-id';
|
|
4
|
+
export class S3FilesDocuments {
|
|
5
|
+
storage;
|
|
6
|
+
docsRoot;
|
|
7
|
+
docPath;
|
|
8
|
+
ensureCollection;
|
|
9
|
+
encodeEncrypted;
|
|
10
|
+
decodeEncrypted;
|
|
11
|
+
constructor(storage, docsRoot, docPath, ensureCollection, encodeEncrypted, decodeEncrypted) {
|
|
12
|
+
this.storage = storage;
|
|
13
|
+
this.docsRoot = docsRoot;
|
|
14
|
+
this.docPath = docPath;
|
|
15
|
+
this.ensureCollection = ensureCollection;
|
|
16
|
+
this.encodeEncrypted = encodeEncrypted;
|
|
17
|
+
this.decodeEncrypted = decodeEncrypted;
|
|
18
|
+
}
|
|
19
|
+
async readStoredDoc(collection, docId) {
|
|
20
|
+
validateDocId(docId);
|
|
21
|
+
const target = this.docPath(collection, docId);
|
|
22
|
+
assertPathInside(this.docsRoot(collection), target);
|
|
23
|
+
try {
|
|
24
|
+
const raw = JSON.parse(await this.storage.read(target));
|
|
25
|
+
const decoded = await this.decodeEncrypted(collection, raw);
|
|
26
|
+
const { createdAt, updatedAt } = TTID.decodeTime(docId);
|
|
27
|
+
return {
|
|
28
|
+
id: docId,
|
|
29
|
+
createdAt,
|
|
30
|
+
updatedAt: updatedAt ?? createdAt,
|
|
31
|
+
data: decoded
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
catch (err) {
|
|
35
|
+
if (err.code === 'ENOENT')
|
|
36
|
+
return null;
|
|
37
|
+
throw err;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
async writeStoredDoc(collection, docId, data) {
|
|
41
|
+
validateDocId(docId);
|
|
42
|
+
await this.ensureCollection(collection);
|
|
43
|
+
const encoded = await this.encodeEncrypted(collection, data);
|
|
44
|
+
const target = this.docPath(collection, docId);
|
|
45
|
+
assertPathInside(this.docsRoot(collection), target);
|
|
46
|
+
await this.storage.write(target, JSON.stringify(encoded));
|
|
47
|
+
}
|
|
48
|
+
async removeStoredDoc(collection, docId) {
|
|
49
|
+
validateDocId(docId);
|
|
50
|
+
const target = this.docPath(collection, docId);
|
|
51
|
+
assertPathInside(this.docsRoot(collection), target);
|
|
52
|
+
await this.storage.delete(target);
|
|
53
|
+
}
|
|
54
|
+
async listDocIds(collection) {
|
|
55
|
+
const files = await this.storage.list(this.docsRoot(collection));
|
|
56
|
+
return files
|
|
57
|
+
.filter((file) => file.endsWith('.json'))
|
|
58
|
+
.map((file) => path.basename(file, '.json'))
|
|
59
|
+
.filter((key) => TTID.isTTID(key));
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=documents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"documents.js","sourceRoot":"","sources":["../../../src/engines/s3-files/documents.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { mkdir, open, readFile, readdir, rm, stat, writeFile } from 'node:fs/promises';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { assertPathInside, validateDocId } from '../../core/doc-id';
|
|
4
|
+
export class FilesystemStorage {
|
|
5
|
+
async read(target) {
|
|
6
|
+
return await readFile(target, 'utf8');
|
|
7
|
+
}
|
|
8
|
+
async write(target, data) {
|
|
9
|
+
await mkdir(path.dirname(target), { recursive: true });
|
|
10
|
+
await writeFile(target, data, 'utf8');
|
|
11
|
+
}
|
|
12
|
+
async delete(target) {
|
|
13
|
+
await rm(target, { recursive: true, force: true });
|
|
14
|
+
}
|
|
15
|
+
async list(target) {
|
|
16
|
+
const results = [];
|
|
17
|
+
try {
|
|
18
|
+
const entries = await readdir(target, { withFileTypes: true });
|
|
19
|
+
for (const entry of entries) {
|
|
20
|
+
const child = path.join(target, entry.name);
|
|
21
|
+
if (entry.isDirectory()) {
|
|
22
|
+
results.push(...(await this.list(child)));
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
results.push(child);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
catch (err) {
|
|
30
|
+
if (err.code !== 'ENOENT')
|
|
31
|
+
throw err;
|
|
32
|
+
}
|
|
33
|
+
return results;
|
|
34
|
+
}
|
|
35
|
+
async mkdir(target) {
|
|
36
|
+
await mkdir(target, { recursive: true });
|
|
37
|
+
}
|
|
38
|
+
async rmdir(target) {
|
|
39
|
+
await rm(target, { recursive: true, force: true });
|
|
40
|
+
}
|
|
41
|
+
async exists(target) {
|
|
42
|
+
try {
|
|
43
|
+
await stat(target);
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
catch (err) {
|
|
47
|
+
if (err.code === 'ENOENT')
|
|
48
|
+
return false;
|
|
49
|
+
throw err;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
export class FilesystemLockManager {
|
|
54
|
+
root;
|
|
55
|
+
storage;
|
|
56
|
+
constructor(root, storage) {
|
|
57
|
+
this.root = root;
|
|
58
|
+
this.storage = storage;
|
|
59
|
+
}
|
|
60
|
+
lockDir(collection, docId) {
|
|
61
|
+
validateDocId(docId);
|
|
62
|
+
const locksRoot = path.join(this.root, collection, '.fylo', 'locks');
|
|
63
|
+
const target = path.join(locksRoot, `${docId}.lock`);
|
|
64
|
+
assertPathInside(locksRoot, target);
|
|
65
|
+
return target;
|
|
66
|
+
}
|
|
67
|
+
async acquire(collection, docId, owner, ttlMs = 30_000) {
|
|
68
|
+
const dir = this.lockDir(collection, docId);
|
|
69
|
+
const metaPath = path.join(dir, 'meta.json');
|
|
70
|
+
await mkdir(path.dirname(dir), { recursive: true });
|
|
71
|
+
try {
|
|
72
|
+
await mkdir(dir, { recursive: false });
|
|
73
|
+
await this.storage.write(metaPath, JSON.stringify({ owner, ts: Date.now() }));
|
|
74
|
+
return true;
|
|
75
|
+
}
|
|
76
|
+
catch (err) {
|
|
77
|
+
if (err.code !== 'EEXIST')
|
|
78
|
+
throw err;
|
|
79
|
+
}
|
|
80
|
+
try {
|
|
81
|
+
const meta = JSON.parse(await this.storage.read(metaPath));
|
|
82
|
+
if (meta.ts && Date.now() - meta.ts > ttlMs) {
|
|
83
|
+
await this.storage.rmdir(dir);
|
|
84
|
+
await mkdir(dir, { recursive: false });
|
|
85
|
+
await this.storage.write(metaPath, JSON.stringify({ owner, ts: Date.now() }));
|
|
86
|
+
return true;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
await this.storage.rmdir(dir);
|
|
91
|
+
await mkdir(dir, { recursive: false });
|
|
92
|
+
await this.storage.write(metaPath, JSON.stringify({ owner, ts: Date.now() }));
|
|
93
|
+
return true;
|
|
94
|
+
}
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
async release(collection, docId, owner) {
|
|
98
|
+
const dir = this.lockDir(collection, docId);
|
|
99
|
+
const metaPath = path.join(dir, 'meta.json');
|
|
100
|
+
try {
|
|
101
|
+
const meta = JSON.parse(await this.storage.read(metaPath));
|
|
102
|
+
if (meta.owner === owner)
|
|
103
|
+
await this.storage.rmdir(dir);
|
|
104
|
+
}
|
|
105
|
+
catch (err) {
|
|
106
|
+
if (err.code !== 'ENOENT')
|
|
107
|
+
throw err;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
export class FilesystemEventBus {
|
|
112
|
+
root;
|
|
113
|
+
storage;
|
|
114
|
+
constructor(root, storage) {
|
|
115
|
+
this.root = root;
|
|
116
|
+
this.storage = storage;
|
|
117
|
+
}
|
|
118
|
+
journalPath(collection) {
|
|
119
|
+
return path.join(this.root, collection, '.fylo', 'events', `${collection}.ndjson`);
|
|
120
|
+
}
|
|
121
|
+
async publish(collection, event) {
|
|
122
|
+
const target = this.journalPath(collection);
|
|
123
|
+
await mkdir(path.dirname(target), { recursive: true });
|
|
124
|
+
const line = `${JSON.stringify(event)}\n`;
|
|
125
|
+
const handle = await open(target, 'a');
|
|
126
|
+
try {
|
|
127
|
+
await handle.write(line);
|
|
128
|
+
}
|
|
129
|
+
finally {
|
|
130
|
+
await handle.close();
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
async *listen(collection) {
|
|
134
|
+
const target = this.journalPath(collection);
|
|
135
|
+
let position = 0;
|
|
136
|
+
while (true) {
|
|
137
|
+
try {
|
|
138
|
+
const fileStat = await stat(target);
|
|
139
|
+
if (fileStat.size > position) {
|
|
140
|
+
const handle = await open(target, 'r');
|
|
141
|
+
try {
|
|
142
|
+
const size = fileStat.size - position;
|
|
143
|
+
const buffer = Buffer.alloc(size);
|
|
144
|
+
await handle.read(buffer, 0, size, position);
|
|
145
|
+
position = fileStat.size;
|
|
146
|
+
for (const line of buffer.toString('utf8').split('\n')) {
|
|
147
|
+
if (line.trim().length === 0)
|
|
148
|
+
continue;
|
|
149
|
+
yield JSON.parse(line);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
finally {
|
|
153
|
+
await handle.close();
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
catch (err) {
|
|
158
|
+
if (err.code !== 'ENOENT')
|
|
159
|
+
throw err;
|
|
160
|
+
}
|
|
161
|
+
await Bun.sleep(100);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=filesystem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filesystem.js","sourceRoot":"","sources":["../../../src/engines/s3-files/filesystem.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
import TTID from '@delma/ttid';
|
|
2
|
+
import { Cipher } from '../../adapters/cipher';
|
|
3
|
+
export class S3FilesQueryEngine {
|
|
4
|
+
context;
|
|
5
|
+
constructor(context) {
|
|
6
|
+
this.context = context;
|
|
7
|
+
}
|
|
8
|
+
getValueByPath(target, fieldPath) {
|
|
9
|
+
return fieldPath
|
|
10
|
+
.replaceAll('/', '.')
|
|
11
|
+
.split('.')
|
|
12
|
+
.reduce((acc, key) => (acc === undefined || acc === null ? undefined : acc[key]), target);
|
|
13
|
+
}
|
|
14
|
+
normalizeFieldPath(fieldPath) {
|
|
15
|
+
return fieldPath.replaceAll('.', '/');
|
|
16
|
+
}
|
|
17
|
+
matchesTimestamp(docId, query) {
|
|
18
|
+
if (!query?.$created && !query?.$updated)
|
|
19
|
+
return true;
|
|
20
|
+
const { createdAt, updatedAt } = TTID.decodeTime(docId);
|
|
21
|
+
const timestamps = { createdAt, updatedAt: updatedAt ?? createdAt };
|
|
22
|
+
const match = (value, range) => {
|
|
23
|
+
if (!range)
|
|
24
|
+
return true;
|
|
25
|
+
if (range.$gt !== undefined && !(value > range.$gt))
|
|
26
|
+
return false;
|
|
27
|
+
if (range.$gte !== undefined && !(value >= range.$gte))
|
|
28
|
+
return false;
|
|
29
|
+
if (range.$lt !== undefined && !(value < range.$lt))
|
|
30
|
+
return false;
|
|
31
|
+
if (range.$lte !== undefined && !(value <= range.$lte))
|
|
32
|
+
return false;
|
|
33
|
+
return true;
|
|
34
|
+
};
|
|
35
|
+
return (match(timestamps.createdAt, query.$created) &&
|
|
36
|
+
match(timestamps.updatedAt, query.$updated));
|
|
37
|
+
}
|
|
38
|
+
likeToRegex(pattern) {
|
|
39
|
+
const escaped = pattern.replace(/[.*+?^${}()|[\]\\]/g, '\\$&').replaceAll('%', '.*');
|
|
40
|
+
return new RegExp(`^${escaped}$`);
|
|
41
|
+
}
|
|
42
|
+
matchesOperand(value, operand) {
|
|
43
|
+
if (operand.$eq !== undefined && value != operand.$eq)
|
|
44
|
+
return false;
|
|
45
|
+
if (operand.$ne !== undefined && value == operand.$ne)
|
|
46
|
+
return false;
|
|
47
|
+
if (operand.$gt !== undefined && !(Number(value) > operand.$gt))
|
|
48
|
+
return false;
|
|
49
|
+
if (operand.$gte !== undefined && !(Number(value) >= operand.$gte))
|
|
50
|
+
return false;
|
|
51
|
+
if (operand.$lt !== undefined && !(Number(value) < operand.$lt))
|
|
52
|
+
return false;
|
|
53
|
+
if (operand.$lte !== undefined && !(Number(value) <= operand.$lte))
|
|
54
|
+
return false;
|
|
55
|
+
if (operand.$like !== undefined &&
|
|
56
|
+
(typeof value !== 'string' || !this.likeToRegex(operand.$like).test(value)))
|
|
57
|
+
return false;
|
|
58
|
+
if (operand.$contains !== undefined) {
|
|
59
|
+
if (!Array.isArray(value) || !value.some((item) => item == operand.$contains))
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
return true;
|
|
63
|
+
}
|
|
64
|
+
async normalizeQueryValue(collection, fieldPath, value) {
|
|
65
|
+
let rawValue = String(value).replaceAll('/', '%2F');
|
|
66
|
+
if (Cipher.isConfigured() && Cipher.isEncryptedField(collection, fieldPath))
|
|
67
|
+
rawValue = await Cipher.blindIndex(rawValue);
|
|
68
|
+
return this.context.normalizeIndexValue(rawValue);
|
|
69
|
+
}
|
|
70
|
+
intersectDocIds(current, next) {
|
|
71
|
+
const nextSet = next instanceof Set ? next : new Set(next);
|
|
72
|
+
if (current === null)
|
|
73
|
+
return new Set(nextSet);
|
|
74
|
+
const intersection = new Set();
|
|
75
|
+
for (const docId of current) {
|
|
76
|
+
if (nextSet.has(docId))
|
|
77
|
+
intersection.add(docId);
|
|
78
|
+
}
|
|
79
|
+
return intersection;
|
|
80
|
+
}
|
|
81
|
+
async candidateDocIdsForOperand(collection, fieldPath, operand) {
|
|
82
|
+
if (Cipher.isConfigured() && Cipher.isEncryptedField(collection, fieldPath)) {
|
|
83
|
+
const unsupported = operand.$ne !== undefined ||
|
|
84
|
+
operand.$gt !== undefined ||
|
|
85
|
+
operand.$gte !== undefined ||
|
|
86
|
+
operand.$lt !== undefined ||
|
|
87
|
+
operand.$lte !== undefined ||
|
|
88
|
+
operand.$like !== undefined ||
|
|
89
|
+
operand.$contains !== undefined;
|
|
90
|
+
if (unsupported) {
|
|
91
|
+
throw new Error(`Operator is not supported on encrypted field: ${fieldPath}`);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
const cache = await this.context.loadIndexCache(collection);
|
|
95
|
+
let candidateIds = null;
|
|
96
|
+
if (operand.$eq !== undefined) {
|
|
97
|
+
const normalized = await this.normalizeQueryValue(collection, fieldPath, operand.$eq);
|
|
98
|
+
candidateIds = this.intersectDocIds(candidateIds, cache.fieldHash.get(fieldPath)?.get(normalized.valueHash) ?? new Set());
|
|
99
|
+
}
|
|
100
|
+
if (operand.$gt !== undefined ||
|
|
101
|
+
operand.$gte !== undefined ||
|
|
102
|
+
operand.$lt !== undefined ||
|
|
103
|
+
operand.$lte !== undefined) {
|
|
104
|
+
const numericMatches = new Set();
|
|
105
|
+
for (const entry of cache.fieldNumeric.get(fieldPath) ?? []) {
|
|
106
|
+
if (operand.$gt !== undefined && !(entry.numericValue > operand.$gt))
|
|
107
|
+
continue;
|
|
108
|
+
if (operand.$gte !== undefined && !(entry.numericValue >= operand.$gte))
|
|
109
|
+
continue;
|
|
110
|
+
if (operand.$lt !== undefined && !(entry.numericValue < operand.$lt))
|
|
111
|
+
continue;
|
|
112
|
+
if (operand.$lte !== undefined && !(entry.numericValue <= operand.$lte))
|
|
113
|
+
continue;
|
|
114
|
+
numericMatches.add(entry.docId);
|
|
115
|
+
}
|
|
116
|
+
candidateIds = this.intersectDocIds(candidateIds, numericMatches);
|
|
117
|
+
}
|
|
118
|
+
if (operand.$like !== undefined) {
|
|
119
|
+
const regex = this.likeToRegex(operand.$like.replaceAll('/', '%2F'));
|
|
120
|
+
const stringMatches = new Set();
|
|
121
|
+
for (const entry of cache.fieldString.get(fieldPath) ?? []) {
|
|
122
|
+
if (regex.test(entry.rawValue))
|
|
123
|
+
stringMatches.add(entry.docId);
|
|
124
|
+
}
|
|
125
|
+
candidateIds = this.intersectDocIds(candidateIds, stringMatches);
|
|
126
|
+
}
|
|
127
|
+
if (operand.$contains !== undefined) {
|
|
128
|
+
const normalized = await this.normalizeQueryValue(collection, fieldPath, operand.$contains);
|
|
129
|
+
const containsMatches = new Set();
|
|
130
|
+
for (const [candidateFieldPath, hashes] of cache.fieldHash.entries()) {
|
|
131
|
+
if (candidateFieldPath !== fieldPath &&
|
|
132
|
+
!candidateFieldPath.startsWith(`${fieldPath}/`))
|
|
133
|
+
continue;
|
|
134
|
+
for (const docId of hashes.get(normalized.valueHash) ?? [])
|
|
135
|
+
containsMatches.add(docId);
|
|
136
|
+
}
|
|
137
|
+
candidateIds = this.intersectDocIds(candidateIds, containsMatches);
|
|
138
|
+
}
|
|
139
|
+
return candidateIds;
|
|
140
|
+
}
|
|
141
|
+
async candidateDocIdsForOperation(collection, operation) {
|
|
142
|
+
let candidateIds = null;
|
|
143
|
+
for (const [field, operand] of Object.entries(operation)) {
|
|
144
|
+
if (!operand)
|
|
145
|
+
continue;
|
|
146
|
+
const fieldPath = this.normalizeFieldPath(String(field));
|
|
147
|
+
const fieldCandidates = await this.candidateDocIdsForOperand(collection, fieldPath, operand);
|
|
148
|
+
if (fieldCandidates === null)
|
|
149
|
+
continue;
|
|
150
|
+
candidateIds = this.intersectDocIds(candidateIds, fieldCandidates);
|
|
151
|
+
}
|
|
152
|
+
return candidateIds;
|
|
153
|
+
}
|
|
154
|
+
async candidateDocIdsForQuery(collection, query) {
|
|
155
|
+
if (!query?.$ops || query.$ops.length === 0)
|
|
156
|
+
return null;
|
|
157
|
+
const union = new Set();
|
|
158
|
+
let usedIndex = false;
|
|
159
|
+
for (const operation of query.$ops) {
|
|
160
|
+
const candidateIds = await this.candidateDocIdsForOperation(collection, operation);
|
|
161
|
+
if (candidateIds === null)
|
|
162
|
+
return null;
|
|
163
|
+
usedIndex = true;
|
|
164
|
+
for (const docId of candidateIds)
|
|
165
|
+
union.add(docId);
|
|
166
|
+
}
|
|
167
|
+
return usedIndex ? union : null;
|
|
168
|
+
}
|
|
169
|
+
matchesQuery(docId, doc, query) {
|
|
170
|
+
if (!this.matchesTimestamp(docId, query))
|
|
171
|
+
return false;
|
|
172
|
+
if (!query?.$ops || query.$ops.length === 0)
|
|
173
|
+
return true;
|
|
174
|
+
return query.$ops.some((operation) => {
|
|
175
|
+
for (const field in operation) {
|
|
176
|
+
const value = this.getValueByPath(doc, field);
|
|
177
|
+
if (!this.matchesOperand(value, operation[field]))
|
|
178
|
+
return false;
|
|
179
|
+
}
|
|
180
|
+
return true;
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
selectValues(selection, data) {
|
|
184
|
+
const copy = { ...data };
|
|
185
|
+
for (const field in copy) {
|
|
186
|
+
if (!selection.includes(field))
|
|
187
|
+
delete copy[field];
|
|
188
|
+
}
|
|
189
|
+
return copy;
|
|
190
|
+
}
|
|
191
|
+
renameFields(rename, data) {
|
|
192
|
+
const copy = { ...data };
|
|
193
|
+
for (const field in copy) {
|
|
194
|
+
if (rename[field]) {
|
|
195
|
+
copy[rename[field]] = copy[field];
|
|
196
|
+
delete copy[field];
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
return copy;
|
|
200
|
+
}
|
|
201
|
+
processDoc(doc, query) {
|
|
202
|
+
if (Object.keys(doc).length === 0)
|
|
203
|
+
return;
|
|
204
|
+
const next = { ...doc };
|
|
205
|
+
for (let [_id, data] of Object.entries(next)) {
|
|
206
|
+
if (query?.$select?.length)
|
|
207
|
+
data = this.selectValues(query.$select, data);
|
|
208
|
+
if (query?.$rename)
|
|
209
|
+
data = this.renameFields(query.$rename, data);
|
|
210
|
+
next[_id] = data;
|
|
211
|
+
}
|
|
212
|
+
if (query?.$groupby) {
|
|
213
|
+
const docGroup = {};
|
|
214
|
+
for (const [id, data] of Object.entries(next)) {
|
|
215
|
+
const groupValue = data[query.$groupby];
|
|
216
|
+
if (groupValue) {
|
|
217
|
+
const groupData = { ...data };
|
|
218
|
+
delete groupData[query.$groupby];
|
|
219
|
+
docGroup[groupValue] = { [id]: groupData };
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
if (query.$onlyIds) {
|
|
223
|
+
const groupedIds = {};
|
|
224
|
+
for (const group in docGroup)
|
|
225
|
+
groupedIds[group] = Object.keys(docGroup[group]);
|
|
226
|
+
return groupedIds;
|
|
227
|
+
}
|
|
228
|
+
return docGroup;
|
|
229
|
+
}
|
|
230
|
+
if (query?.$onlyIds)
|
|
231
|
+
return Object.keys(next).shift();
|
|
232
|
+
return next;
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
//# sourceMappingURL=query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../../src/engines/s3-files/query.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/engines/s3-files/types.ts"],"names":[],"mappings":""}
|