@hatk/hatk 0.0.1-alpha.85 → 0.0.1-alpha.87
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/adapter.d.ts.map +1 -1
- package/dist/adapter.js +2 -0
- package/dist/cli.js +5 -1
- package/dist/config.d.ts +47 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +13 -0
- package/dist/database/db.d.ts +11 -0
- package/dist/database/db.d.ts.map +1 -1
- package/dist/database/db.js +157 -22
- package/dist/database/index.d.ts +1 -1
- package/dist/database/index.d.ts.map +1 -1
- package/dist/database/index.js +1 -1
- package/dist/database/schema.d.ts +2 -0
- package/dist/database/schema.d.ts.map +1 -1
- package/dist/database/schema.js +40 -3
- package/dist/dev-entry.d.ts.map +1 -1
- package/dist/dev-entry.js +2 -2
- package/dist/feeds.d.ts +14 -0
- package/dist/feeds.d.ts.map +1 -1
- package/dist/feeds.js +24 -13
- package/dist/hooks.d.ts +9 -0
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js +2 -2
- package/dist/hydrate.d.ts +42 -0
- package/dist/hydrate.d.ts.map +1 -1
- package/dist/hydrate.js +18 -5
- package/dist/indexer.d.ts +12 -0
- package/dist/indexer.d.ts.map +1 -1
- package/dist/indexer.js +20 -0
- package/dist/lex-types.d.ts +2 -0
- package/dist/lex-types.d.ts.map +1 -1
- package/dist/main.js +26 -2
- package/dist/oauth/db.d.ts +9 -0
- package/dist/oauth/db.d.ts.map +1 -1
- package/dist/oauth/db.js +12 -0
- package/dist/private-collections.d.ts +7 -2
- package/dist/private-collections.d.ts.map +1 -1
- package/dist/private-collections.js +9 -4
- package/dist/server.d.ts +8 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +99 -10
- package/dist/spaces/blob.d.ts +51 -0
- package/dist/spaces/blob.d.ts.map +1 -0
- package/dist/spaces/blob.js +111 -0
- package/dist/spaces/credential.d.ts +62 -0
- package/dist/spaces/credential.d.ts.map +1 -0
- package/dist/spaces/credential.js +184 -0
- package/dist/spaces/engine.d.ts +97 -0
- package/dist/spaces/engine.d.ts.map +1 -0
- package/dist/spaces/engine.js +557 -0
- package/dist/spaces/guard.d.ts +41 -0
- package/dist/spaces/guard.d.ts.map +1 -0
- package/dist/spaces/guard.js +79 -0
- package/dist/spaces/identity.d.ts +37 -0
- package/dist/spaces/identity.d.ts.map +1 -0
- package/dist/spaces/identity.js +88 -0
- package/dist/spaces/index.d.ts +55 -0
- package/dist/spaces/index.d.ts.map +1 -0
- package/dist/spaces/index.js +133 -0
- package/dist/spaces/notify.d.ts +51 -0
- package/dist/spaces/notify.d.ts.map +1 -0
- package/dist/spaces/notify.js +121 -0
- package/dist/spaces/records.d.ts +37 -0
- package/dist/spaces/records.d.ts.map +1 -0
- package/dist/spaces/records.js +63 -0
- package/dist/spaces/store.d.ts +51 -0
- package/dist/spaces/store.d.ts.map +1 -0
- package/dist/spaces/store.js +99 -0
- package/dist/spaces/uri.d.ts +60 -0
- package/dist/spaces/uri.d.ts.map +1 -0
- package/dist/spaces/uri.js +97 -0
- package/dist/spaces/verify.d.ts +39 -0
- package/dist/spaces/verify.d.ts.map +1 -0
- package/dist/spaces/verify.js +87 -0
- package/dist/spaces/viewer.d.ts +51 -0
- package/dist/spaces/viewer.d.ts.map +1 -0
- package/dist/spaces/viewer.js +167 -0
- package/dist/spaces/visibility.d.ts +57 -0
- package/dist/spaces/visibility.d.ts.map +1 -0
- package/dist/spaces/visibility.js +81 -0
- package/dist/templates/feed.tpl +4 -0
- package/dist/templates/xrpc.tpl +13 -1
- package/dist/test.d.ts +2 -0
- package/dist/test.d.ts.map +1 -1
- package/dist/test.js +8 -5
- package/dist/xrpc.d.ts +19 -3
- package/dist/xrpc.d.ts.map +1 -1
- package/dist/xrpc.js +61 -31
- package/package.json +5 -3
package/dist/database/schema.js
CHANGED
|
@@ -5,6 +5,18 @@ import { DUCKDB_DIALECT } from "./dialect.js";
|
|
|
5
5
|
export function toSnakeCase(str) {
|
|
6
6
|
return str.replace(/([A-Z])/g, '_$1').toLowerCase();
|
|
7
7
|
}
|
|
8
|
+
/**
|
|
9
|
+
* The columns every generated table carries before any lexicon field. A record
|
|
10
|
+
* property with one of these names — `fyi.opensocial.space` has a `uri` — would
|
|
11
|
+
* otherwise produce a CREATE TABLE with a duplicate column and fail at boot.
|
|
12
|
+
* It is stored under `record_<name>` instead; `originalName` still carries the
|
|
13
|
+
* lexicon's spelling, which is what every reshaped row is keyed by.
|
|
14
|
+
*/
|
|
15
|
+
const ENVELOPE_COLUMNS = new Set(['uri', 'cid', 'did', 'space', 'indexed_at', 'handle']);
|
|
16
|
+
export function columnName(fieldName) {
|
|
17
|
+
const snake = toSnakeCase(fieldName);
|
|
18
|
+
return ENVELOPE_COLUMNS.has(snake) ? `record_${snake}` : snake;
|
|
19
|
+
}
|
|
8
20
|
// Quote a column name to avoid conflicts with SQL reserved words
|
|
9
21
|
export function q(name) {
|
|
10
22
|
return `"${name}"`;
|
|
@@ -68,6 +80,20 @@ export function loadLexicons(lexiconsDir) {
|
|
|
68
80
|
}
|
|
69
81
|
return lexicons;
|
|
70
82
|
}
|
|
83
|
+
/**
|
|
84
|
+
* Lexicons the validator cannot model but hatk legitimately keeps.
|
|
85
|
+
*
|
|
86
|
+
* A space type is how the indexer learns which collections a space holds, and
|
|
87
|
+
* a permission set is what an OAuth scope resolves through; both are real
|
|
88
|
+
* lexicons an app vendors on purpose. `validateLexicons` reports each as an
|
|
89
|
+
* unknown definition type, which would read as a fatal schema error at boot.
|
|
90
|
+
* Only these two are set aside — anything else unknown is still a mistake the
|
|
91
|
+
* validator should refuse.
|
|
92
|
+
*/
|
|
93
|
+
const UNMODELLED_DEF_TYPES = new Set(['space', 'permission-set']);
|
|
94
|
+
export function validatableLexicons(lexicons) {
|
|
95
|
+
return [...lexicons.values()].filter((lex) => !UNMODELLED_DEF_TYPES.has(lex.defs?.main?.type));
|
|
96
|
+
}
|
|
71
97
|
/**
|
|
72
98
|
* Discover collections by scanning lexicons for record-type definitions.
|
|
73
99
|
*/
|
|
@@ -234,7 +260,7 @@ export function generateTableSchema(nsid, lexicon, lexicons, dialect = DUCKDB_DI
|
|
|
234
260
|
}
|
|
235
261
|
// Still add the JSON column for the raw union value
|
|
236
262
|
columns.push({
|
|
237
|
-
name:
|
|
263
|
+
name: columnName(fieldName),
|
|
238
264
|
originalName: fieldName,
|
|
239
265
|
sqlType: dialect.jsonType,
|
|
240
266
|
notNull: required.has(fieldName),
|
|
@@ -292,7 +318,7 @@ export function generateTableSchema(nsid, lexicon, lexicons, dialect = DUCKDB_DI
|
|
|
292
318
|
}
|
|
293
319
|
else {
|
|
294
320
|
columns.push({
|
|
295
|
-
name:
|
|
321
|
+
name: columnName(fieldName),
|
|
296
322
|
originalName: fieldName,
|
|
297
323
|
sqlType,
|
|
298
324
|
notNull: required.has(fieldName),
|
|
@@ -313,10 +339,16 @@ export function generateTableSchema(nsid, lexicon, lexicons, dialect = DUCKDB_DI
|
|
|
313
339
|
}
|
|
314
340
|
// Generate CREATE TABLE SQL from a TableSchema
|
|
315
341
|
export function generateCreateTableSQL(schema, dialect = DUCKDB_DIALECT) {
|
|
342
|
+
// `space` is the permissioned space a row came from, and NULL for everything
|
|
343
|
+
// off the firehose. It is the only per-row visibility marker in the schema:
|
|
344
|
+
// a space record is readable by whoever the space's authority admits, so no
|
|
345
|
+
// read may serve one without knowing who is asking. NULL means "public repo
|
|
346
|
+
// data", which is what every existing row is.
|
|
316
347
|
const lines = [
|
|
317
348
|
' uri TEXT PRIMARY KEY',
|
|
318
349
|
' cid TEXT',
|
|
319
350
|
' did TEXT NOT NULL',
|
|
351
|
+
' space TEXT',
|
|
320
352
|
` indexed_at ${dialect.timestampType} NOT NULL`,
|
|
321
353
|
];
|
|
322
354
|
for (const col of schema.columns) {
|
|
@@ -328,6 +360,9 @@ export function generateCreateTableSQL(schema, dialect = DUCKDB_DIALECT) {
|
|
|
328
360
|
const indexes = [
|
|
329
361
|
`CREATE INDEX IF NOT EXISTS idx_${prefix}_indexed ON ${schema.tableName}(indexed_at DESC);`,
|
|
330
362
|
`CREATE INDEX IF NOT EXISTS idx_${prefix}_author ON ${schema.tableName}(did);`,
|
|
363
|
+
// Every read that serves space rows filters on this column, and every read
|
|
364
|
+
// that does not still tests it for NULL.
|
|
365
|
+
`CREATE INDEX IF NOT EXISTS idx_${prefix}_space ON ${schema.tableName}(space);`,
|
|
331
366
|
];
|
|
332
367
|
// Index ref columns for hydration lookups
|
|
333
368
|
for (const refCol of schema.refColumns) {
|
|
@@ -386,11 +421,13 @@ export function buildSchemas(lexicons, collections, dialect = DUCKDB_DIALECT) {
|
|
|
386
421
|
uri TEXT PRIMARY KEY,
|
|
387
422
|
cid TEXT,
|
|
388
423
|
did TEXT NOT NULL,
|
|
424
|
+
space TEXT,
|
|
389
425
|
indexed_at ${dialect.timestampType} NOT NULL,
|
|
390
426
|
data ${dialect.jsonType}
|
|
391
427
|
);
|
|
392
428
|
CREATE INDEX IF NOT EXISTS idx_${nsid.replace(/\./g, '_')}_indexed ON "${nsid}"(indexed_at DESC);
|
|
393
|
-
CREATE INDEX IF NOT EXISTS idx_${nsid.replace(/\./g, '_')}_author ON "${nsid}"(did)
|
|
429
|
+
CREATE INDEX IF NOT EXISTS idx_${nsid.replace(/\./g, '_')}_author ON "${nsid}"(did);
|
|
430
|
+
CREATE INDEX IF NOT EXISTS idx_${nsid.replace(/\./g, '_')}_space ON "${nsid}"(space);`;
|
|
394
431
|
schemas.push({ collection: nsid, tableName: `"${nsid}"`, columns: [], refColumns: [], children: [], unions: [] });
|
|
395
432
|
ddlStatements.push(genericDDL);
|
|
396
433
|
continue;
|
package/dist/dev-entry.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev-entry.d.ts","sourceRoot":"","sources":["../src/dev-entry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dev-entry.d.ts","sourceRoot":"","sources":["../src/dev-entry.ts"],"names":[],"mappings":"AA+HA,eAAO,MAAM,OAAO,yCAKlB,CAAA;AAEF,yEAAyE;AACzE,wBAAsB,YAAY,kBAEjC;AAED,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACpC,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA"}
|
package/dist/dev-entry.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Boots hatk infrastructure and exports the fetch handler.
|
|
4
4
|
*/
|
|
5
5
|
import { loadConfig } from "./config.js";
|
|
6
|
-
import { loadLexicons, storeLexicons, discoverCollections, buildSchemas } from "./database/schema.js";
|
|
6
|
+
import { validatableLexicons, loadLexicons, storeLexicons, discoverCollections, buildSchemas, } from "./database/schema.js";
|
|
7
7
|
import { discoverViews } from "./views.js";
|
|
8
8
|
import { initDatabase, migrateSchema, getSchemaDump } from "./database/db.js";
|
|
9
9
|
import { createAdapter } from "./database/adapter-factory.js";
|
|
@@ -32,7 +32,7 @@ configureRelay(config.relay);
|
|
|
32
32
|
configurePlc(config.plc);
|
|
33
33
|
configureCdn(config.cdn);
|
|
34
34
|
const lexicons = loadLexicons(resolve(configDir, 'lexicons'));
|
|
35
|
-
const lexiconErrors = validateLexicons(
|
|
35
|
+
const lexiconErrors = validateLexicons(validatableLexicons(lexicons));
|
|
36
36
|
if (lexiconErrors) {
|
|
37
37
|
for (const [nsid, errors] of Object.entries(lexiconErrors)) {
|
|
38
38
|
for (const err of errors)
|
package/dist/feeds.d.ts
CHANGED
|
@@ -17,6 +17,8 @@ export interface PaginateResult<T> {
|
|
|
17
17
|
export interface FeedContext {
|
|
18
18
|
db: {
|
|
19
19
|
query: (sql: string, params?: unknown[]) => Promise<unknown[]>;
|
|
20
|
+
/** Raw SQL with the permissioned-space guard off. See `spaces/guard.ts`. */
|
|
21
|
+
unfiltered: (sql: string, params?: unknown[]) => Promise<unknown[]>;
|
|
20
22
|
};
|
|
21
23
|
params: Record<string, string>;
|
|
22
24
|
cursor?: string;
|
|
@@ -34,6 +36,18 @@ export interface FeedContext {
|
|
|
34
36
|
paginate: <T extends {
|
|
35
37
|
uri: string;
|
|
36
38
|
}>(sql: string, opts?: PaginateOpts) => Promise<PaginateResult<T>>;
|
|
39
|
+
/**
|
|
40
|
+
* The permissioned-space gate, for SQL this feed builds without `paginate`.
|
|
41
|
+
*
|
|
42
|
+
* `paginate` applies it already. This is for a feed that runs its own query
|
|
43
|
+
* — a raw `ctx.db.query` over a record table has to carry it, or it serves
|
|
44
|
+
* space rows to whoever asks. See `spaceFilterSql`.
|
|
45
|
+
*/
|
|
46
|
+
spaceFilter: (alias: string, startIdx: number) => {
|
|
47
|
+
sql: string;
|
|
48
|
+
params: string[];
|
|
49
|
+
nextIdx: number;
|
|
50
|
+
};
|
|
37
51
|
}
|
|
38
52
|
type FeedGenerate = (ctx: FeedContext & {
|
|
39
53
|
ok: (value: FeedResult) => Checked<FeedResult>;
|
package/dist/feeds.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feeds.d.ts","sourceRoot":"","sources":["../src/feeds.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"feeds.d.ts","sourceRoot":"","sources":["../src/feeds.ts"],"names":[],"mappings":"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"}
|
package/dist/feeds.js
CHANGED
|
@@ -9,8 +9,10 @@ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExte
|
|
|
9
9
|
import { resolve } from 'node:path';
|
|
10
10
|
import { readdirSync } from 'node:fs';
|
|
11
11
|
import { log } from "./logger.js";
|
|
12
|
-
import {
|
|
12
|
+
import { packCursor, unpackCursor, isTakendownDid, filterTakendownDids, resolveHandleToDid, } from "./database/db.js";
|
|
13
13
|
import { resolveRecords, buildBaseContext } from "./hydrate.js";
|
|
14
|
+
import { spaceFilterSql } from "./spaces/visibility.js";
|
|
15
|
+
import { guardedQuerySQL, unfilteredQuerySQL } from "./spaces/guard.js";
|
|
14
16
|
export function createPaginate(deps) {
|
|
15
17
|
return async (sql, opts) => {
|
|
16
18
|
const { db, cursor, limit, packCursor: pack, unpackCursor: unpack } = deps;
|
|
@@ -25,6 +27,16 @@ export function createPaginate(deps) {
|
|
|
25
27
|
const op = order === 'ASC' ? '>' : '<';
|
|
26
28
|
let paramIdx = userParams.length + 1;
|
|
27
29
|
const sqlParams = [...userParams];
|
|
30
|
+
// The permissioned-space gate, applied to whatever table the ordering
|
|
31
|
+
// names — the same table `cid` is read from. Feed SQL is hand-written and
|
|
32
|
+
// nothing can inject a predicate into a string somebody else wrote, so
|
|
33
|
+
// building it here is the only way every feed gets it without every feed
|
|
34
|
+
// author remembering to. Outside a viewer's scope it is `space IS NULL`
|
|
35
|
+
// and binds nothing, which is what it compiles to on an instance that
|
|
36
|
+
// indexes no space.
|
|
37
|
+
const gate = spaceFilterSql(prefix.replace(/\.$/, ''), paramIdx);
|
|
38
|
+
sqlParams.push(...gate.params);
|
|
39
|
+
paramIdx = gate.nextIdx;
|
|
28
40
|
// Build cursor condition
|
|
29
41
|
let cursorCondition = '';
|
|
30
42
|
if (cursor) {
|
|
@@ -35,15 +47,12 @@ export function createPaginate(deps) {
|
|
|
35
47
|
paramIdx += 3;
|
|
36
48
|
}
|
|
37
49
|
}
|
|
38
|
-
// Detect existing WHERE and append cursor condition
|
|
50
|
+
// Detect existing WHERE and append the gate and the cursor condition
|
|
39
51
|
let fullSql = sql;
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
}
|
|
44
|
-
else {
|
|
45
|
-
fullSql += ` WHERE ${cursorCondition}`;
|
|
46
|
-
}
|
|
52
|
+
const appended = [gate.sql, ...(cursorCondition ? [cursorCondition] : [])];
|
|
53
|
+
if (appended.length) {
|
|
54
|
+
const joiner = /\bWHERE\b/i.test(sql) ? 'AND' : 'WHERE';
|
|
55
|
+
fullSql += ` ${joiner} ${appended.join(' AND ')}`;
|
|
47
56
|
}
|
|
48
57
|
fullSql += ` ORDER BY ${orderBy} ${order}, ${cidCol} ${order} LIMIT $${paramIdx}`;
|
|
49
58
|
sqlParams.push(limit + 1);
|
|
@@ -70,14 +79,14 @@ export function registerFeed(name, generator) {
|
|
|
70
79
|
view: generator.view,
|
|
71
80
|
generate: async (params, cursor, limit, viewer) => {
|
|
72
81
|
const paginateDeps = {
|
|
73
|
-
db: { query:
|
|
82
|
+
db: { query: guardedQuerySQL, unfiltered: unfilteredQuerySQL },
|
|
74
83
|
cursor,
|
|
75
84
|
limit,
|
|
76
85
|
packCursor,
|
|
77
86
|
unpackCursor,
|
|
78
87
|
};
|
|
79
88
|
const ctx = {
|
|
80
|
-
db: { query:
|
|
89
|
+
db: { query: guardedQuerySQL, unfiltered: unfilteredQuerySQL },
|
|
81
90
|
params,
|
|
82
91
|
cursor,
|
|
83
92
|
limit,
|
|
@@ -87,6 +96,7 @@ export function registerFeed(name, generator) {
|
|
|
87
96
|
isTakendown: isTakendownDid,
|
|
88
97
|
filterTakendownDids,
|
|
89
98
|
paginate: createPaginate(paginateDeps),
|
|
99
|
+
spaceFilter: spaceFilterSql,
|
|
90
100
|
};
|
|
91
101
|
const result = await generator.generate(ctx);
|
|
92
102
|
if (Array.isArray(result)) {
|
|
@@ -123,14 +133,14 @@ export async function initFeeds(feedsDir) {
|
|
|
123
133
|
view: generator.view,
|
|
124
134
|
generate: async (params, cursor, limit, viewer) => {
|
|
125
135
|
const paginateDeps = {
|
|
126
|
-
db: { query:
|
|
136
|
+
db: { query: guardedQuerySQL, unfiltered: unfilteredQuerySQL },
|
|
127
137
|
cursor,
|
|
128
138
|
limit,
|
|
129
139
|
packCursor,
|
|
130
140
|
unpackCursor,
|
|
131
141
|
};
|
|
132
142
|
const ctx = {
|
|
133
|
-
db: { query:
|
|
143
|
+
db: { query: guardedQuerySQL, unfiltered: unfilteredQuerySQL },
|
|
134
144
|
params,
|
|
135
145
|
cursor,
|
|
136
146
|
limit,
|
|
@@ -140,6 +150,7 @@ export async function initFeeds(feedsDir) {
|
|
|
140
150
|
isTakendown: isTakendownDid,
|
|
141
151
|
filterTakendownDids,
|
|
142
152
|
paginate: createPaginate(paginateDeps),
|
|
153
|
+
spaceFilter: spaceFilterSql,
|
|
143
154
|
};
|
|
144
155
|
const result = await generator.generate(ctx);
|
|
145
156
|
if (Array.isArray(result)) {
|
package/dist/hooks.d.ts
CHANGED
|
@@ -9,6 +9,13 @@ export type OnLoginCtx = Omit<BaseContext, 'db'> & {
|
|
|
9
9
|
db: {
|
|
10
10
|
query: (sql: string, params?: unknown[]) => Promise<unknown[]>;
|
|
11
11
|
run: (sql: string, params?: unknown[]) => Promise<void>;
|
|
12
|
+
/**
|
|
13
|
+
* Raw SQL with the permissioned-space guard off. A hook is not serving a
|
|
14
|
+
* viewer, and discovering what a space contains — which spaces a
|
|
15
|
+
* community lists, say — is exactly a read over space rows that no scope
|
|
16
|
+
* is open for. See `spaces/guard.ts`.
|
|
17
|
+
*/
|
|
18
|
+
unfiltered: (sql: string, params?: unknown[]) => Promise<unknown[]>;
|
|
12
19
|
};
|
|
13
20
|
/** Trigger a backfill for a DID and wait for it to complete. */
|
|
14
21
|
ensureRepo: (did: string) => Promise<void>;
|
|
@@ -43,6 +50,8 @@ export type OnCommitCtx = {
|
|
|
43
50
|
db: {
|
|
44
51
|
query: (sql: string, params?: unknown[]) => Promise<unknown[]>;
|
|
45
52
|
run: (sql: string, params?: unknown[]) => Promise<void>;
|
|
53
|
+
/** Raw SQL with the permissioned-space guard off. See `spaces/guard.ts`. */
|
|
54
|
+
unfiltered: (sql: string, params?: unknown[]) => Promise<unknown[]>;
|
|
46
55
|
};
|
|
47
56
|
/** Typed record lookup (same as BaseContext). */
|
|
48
57
|
lookup: BaseContext['lookup'];
|
package/dist/hooks.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAmCA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAK9C,OAAO,EAAoB,KAAK,WAAW,EAAE,MAAM,cAAc,CAAA;AACjE,OAAO,EAAqC,KAAK,aAAa,EAAE,MAAM,WAAW,CAAA;AAEjF,0EAA0E;AAC1E,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG;IACjD,0CAA0C;IAC1C,GAAG,EAAE,MAAM,CAAA;IACX,gDAAgD;IAChD,EAAE,EAAE;QACF,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAA;QAC9D,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"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"}
|
package/dist/hooks.js
CHANGED
|
@@ -125,7 +125,7 @@ export async function fireOnLoginHook(did, oauthConfig) {
|
|
|
125
125
|
const hookPromise = onLoginHook({
|
|
126
126
|
...base,
|
|
127
127
|
did,
|
|
128
|
-
db: { query: base.db.query, run: runSQL },
|
|
128
|
+
db: { query: base.db.query, run: runSQL, unfiltered: base.db.unfiltered },
|
|
129
129
|
ensureRepo,
|
|
130
130
|
createRecord: async (collection, record, opts) => {
|
|
131
131
|
if (!oauthConfig)
|
|
@@ -170,7 +170,7 @@ export function fireOnCommitHooks(items) {
|
|
|
170
170
|
record: item.record,
|
|
171
171
|
repo: item.authorDid,
|
|
172
172
|
uri: item.uri,
|
|
173
|
-
db: { query: base.db.query, run: runSQL },
|
|
173
|
+
db: { query: base.db.query, run: runSQL, unfiltered: base.db.unfiltered },
|
|
174
174
|
lookup: base.lookup,
|
|
175
175
|
push,
|
|
176
176
|
})
|
package/dist/hydrate.d.ts
CHANGED
|
@@ -7,12 +7,54 @@ export interface BaseContext {
|
|
|
7
7
|
} | null;
|
|
8
8
|
db: {
|
|
9
9
|
query: (sql: string, params?: unknown[]) => Promise<unknown[]>;
|
|
10
|
+
/**
|
|
11
|
+
* Raw SQL with the permissioned-space guard off. Named so it can be found
|
|
12
|
+
* with grep: for results never served to a viewer, such as an admin
|
|
13
|
+
* rollup. See `spaces/guard.ts`.
|
|
14
|
+
*/
|
|
15
|
+
unfiltered: (sql: string, params?: unknown[]) => Promise<unknown[]>;
|
|
10
16
|
};
|
|
11
17
|
getRecords: <R = unknown>(collection: string, uris: string[]) => Promise<Map<string, Row<R>>>;
|
|
12
18
|
lookup: <R = unknown>(collection: string, field: string, values: string[]) => Promise<Map<string, Row<R>>>;
|
|
13
19
|
count: (collection: string, field: string, values: string[]) => Promise<Map<string, number>>;
|
|
14
20
|
labels: (uris: string[]) => Promise<Map<string, unknown[]>>;
|
|
15
21
|
blobUrl: (did: string, ref: unknown, preset?: string) => string | undefined;
|
|
22
|
+
/**
|
|
23
|
+
* The permissioned-space gate, for hand-written SQL.
|
|
24
|
+
*
|
|
25
|
+
* Every helper on this context applies it already. Raw SQL through
|
|
26
|
+
* `ctx.db.query` cannot — nothing can inject a predicate into a string
|
|
27
|
+
* somebody else wrote — so a query that selects from a collection a space
|
|
28
|
+
* writes into has to apply it itself:
|
|
29
|
+
*
|
|
30
|
+
* ```ts
|
|
31
|
+
* const gate = ctx.spaceFilter('t', 2)
|
|
32
|
+
* ctx.db.query(
|
|
33
|
+
* `SELECT t.* FROM "app.example.post" t WHERE t.did = $1 AND ${gate.sql}`,
|
|
34
|
+
* ['did:plc:someone', ...gate.params],
|
|
35
|
+
* )
|
|
36
|
+
* ```
|
|
37
|
+
*
|
|
38
|
+
* Outside a viewer's scope this is `t.space IS NULL` and binds nothing, so on
|
|
39
|
+
* an instance that indexes no space it costs one predicate on an indexed
|
|
40
|
+
* column and changes no result.
|
|
41
|
+
*/
|
|
42
|
+
spaceFilter: (alias: string, startIdx: number) => {
|
|
43
|
+
sql: string;
|
|
44
|
+
params: string[];
|
|
45
|
+
nextIdx: number;
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Every record of a collection in a space the viewer may read. Empty for a
|
|
49
|
+
* space outside their scope; see `requireSpace` for the explicit refusal.
|
|
50
|
+
*/
|
|
51
|
+
spaceRecords: <R = unknown>(collection: string, space: string) => Promise<Row<R>[]>;
|
|
52
|
+
/** Every record where `field` is one of `values` — the many-rows counterpart of `lookup`. */
|
|
53
|
+
records: <R = unknown>(collection: string, field: string, values: string[]) => Promise<Row<R>[]>;
|
|
54
|
+
/** Throw `NotAuthorized` unless the viewer may read this space. */
|
|
55
|
+
requireSpace: (space: string) => void;
|
|
56
|
+
/** The URL this appview serves a space blob at, for the viewer asking. */
|
|
57
|
+
spaceBlobUrl: (space: string, repo: string, cid: string) => string;
|
|
16
58
|
}
|
|
17
59
|
/** Fetch records for URIs, reshape them, and filter out taken-down DIDs. */
|
|
18
60
|
export declare function resolveRecords(uris: string[]): Promise<Row<unknown>[]>;
|
package/dist/hydrate.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hydrate.d.ts","sourceRoot":"","sources":["../src/hydrate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hydrate.d.ts","sourceRoot":"","sources":["../src/hydrate.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AAEzC,YAAY,EAAE,GAAG,EAAE,CAAA;AAInB,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;IAC/C,EAAE,EAAE;QACF,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAA;QAC9D;;;;WAIG;QACH,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAA;KACpE,CAAA;IACD,UAAU,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC7F,MAAM,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC1G,KAAK,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IAC5F,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CAAA;IAC3D,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAA;IAC3E;;;;;;;;;;;;;;;;;;;OAmBG;IACH,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;IACpG;;;OAGG;IACH,YAAY,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;IACnF,6FAA6F;IAC7F,OAAO,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;IAChG,mEAAmE;IACnE,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACrC,0EAA0E;IAC1E,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,MAAM,CAAA;CACnE;AAID,4EAA4E;AAC5E,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAsC5E;AAID,yCAAyC;AACzC,wBAAgB,gBAAgB,CAAC,MAAM,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,GAAG,WAAW,CAuB7F"}
|
package/dist/hydrate.js
CHANGED
|
@@ -1,15 +1,23 @@
|
|
|
1
|
-
import { getRecordsMap, countByFieldBatch, lookupByFieldBatch,
|
|
1
|
+
import { getRecordsMap, countByFieldBatch, lookupByFieldBatch, queryLabelsForUris, filterTakendownDids, getRecordsByUris, reshapeRow, } from "./database/db.js";
|
|
2
2
|
import { blobUrl } from "./xrpc.js";
|
|
3
|
+
import { collectionFromRecordUri } from "./spaces/uri.js";
|
|
4
|
+
import { spaceFilterSql } from "./spaces/visibility.js";
|
|
5
|
+
import { guardedQuerySQL, unfilteredQuerySQL } from "./spaces/guard.js";
|
|
6
|
+
import { records, requireSpace, spaceRecords } from "./spaces/records.js";
|
|
7
|
+
import { spaceBlobUrl } from "./spaces/blob.js";
|
|
3
8
|
// --- Record Resolution ---
|
|
4
9
|
/** Fetch records for URIs, reshape them, and filter out taken-down DIDs. */
|
|
5
10
|
export async function resolveRecords(uris) {
|
|
6
11
|
if (uris.length === 0)
|
|
7
12
|
return [];
|
|
8
|
-
// Group URIs by collection for batch fetching
|
|
13
|
+
// Group URIs by collection for batch fetching. A space record's collection
|
|
14
|
+
// sits in a different segment than a repo record's, so the position is read
|
|
15
|
+
// by a parser that knows both shapes rather than inline.
|
|
9
16
|
const byCollection = new Map();
|
|
10
17
|
for (const uri of uris) {
|
|
11
|
-
const
|
|
12
|
-
|
|
18
|
+
const col = collectionFromRecordUri(uri);
|
|
19
|
+
if (!col)
|
|
20
|
+
continue;
|
|
13
21
|
if (!byCollection.has(col))
|
|
14
22
|
byCollection.set(col, []);
|
|
15
23
|
byCollection.get(col).push(uri);
|
|
@@ -43,7 +51,7 @@ export async function resolveRecords(uris) {
|
|
|
43
51
|
export function buildBaseContext(viewer) {
|
|
44
52
|
return {
|
|
45
53
|
viewer,
|
|
46
|
-
db: { query:
|
|
54
|
+
db: { query: guardedQuerySQL, unfiltered: unfilteredQuerySQL },
|
|
47
55
|
getRecords: getRecordsMap,
|
|
48
56
|
lookup: async (collection, field, values) => {
|
|
49
57
|
if (values.length === 0)
|
|
@@ -59,5 +67,10 @@ export function buildBaseContext(viewer) {
|
|
|
59
67
|
},
|
|
60
68
|
labels: queryLabelsForUris,
|
|
61
69
|
blobUrl,
|
|
70
|
+
spaceFilter: spaceFilterSql,
|
|
71
|
+
spaceRecords,
|
|
72
|
+
records,
|
|
73
|
+
requireSpace,
|
|
74
|
+
spaceBlobUrl,
|
|
62
75
|
};
|
|
63
76
|
}
|
package/dist/indexer.d.ts
CHANGED
|
@@ -49,6 +49,18 @@ export declare function _flushForTests(): Promise<void>;
|
|
|
49
49
|
*/
|
|
50
50
|
/** Wait for a DID's backfill to complete if one is in flight. */
|
|
51
51
|
export declare function awaitBackfill(did: string): Promise<void>;
|
|
52
|
+
/**
|
|
53
|
+
* Track a repo no signal collection will ever point at.
|
|
54
|
+
*
|
|
55
|
+
* Backfill and the stream find repos by what they write into the signal
|
|
56
|
+
* collections. A writer in a followed space is wanted for another reason:
|
|
57
|
+
* their public profile is what puts a name and a face on everything they
|
|
58
|
+
* wrote there, and an app that only indexes the community's own records
|
|
59
|
+
* would render every member as a DID. So the space engine names them here,
|
|
60
|
+
* and an unknown one is backfilled like a repo the stream just surfaced.
|
|
61
|
+
* Idempotent and cheap: a repo already known is a map lookup.
|
|
62
|
+
*/
|
|
63
|
+
export declare function trackRepo(did: string): void;
|
|
52
64
|
export declare function triggerAutoBackfill(did: string, attempt?: number): Promise<void>;
|
|
53
65
|
/**
|
|
54
66
|
* Indexing behaviour shared by every stream source. Both the relay firehose
|
package/dist/indexer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"indexer.d.ts","sourceRoot":"","sources":["../src/indexer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"indexer.d.ts","sourceRoot":"","sources":["../src/indexer.ts"],"names":[],"mappings":"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"}
|
package/dist/indexer.js
CHANGED
|
@@ -258,6 +258,26 @@ export function awaitBackfill(did) {
|
|
|
258
258
|
const entry = backfillPromises.get(did);
|
|
259
259
|
return entry ? entry.promise : Promise.resolve();
|
|
260
260
|
}
|
|
261
|
+
/**
|
|
262
|
+
* Track a repo no signal collection will ever point at.
|
|
263
|
+
*
|
|
264
|
+
* Backfill and the stream find repos by what they write into the signal
|
|
265
|
+
* collections. A writer in a followed space is wanted for another reason:
|
|
266
|
+
* their public profile is what puts a name and a face on everything they
|
|
267
|
+
* wrote there, and an app that only indexes the community's own records
|
|
268
|
+
* would render every member as a DID. So the space engine names them here,
|
|
269
|
+
* and an unknown one is backfilled like a repo the stream just surfaced.
|
|
270
|
+
* Idempotent and cheap: a repo already known is a map lookup.
|
|
271
|
+
*/
|
|
272
|
+
export function trackRepo(did) {
|
|
273
|
+
if (indexerPinnedRepos && !indexerPinnedRepos.has(did))
|
|
274
|
+
return;
|
|
275
|
+
const status = repoStatusCache.get(did);
|
|
276
|
+
if (status && status !== 'unknown')
|
|
277
|
+
return;
|
|
278
|
+
repoStatusCache.set(did, 'pending');
|
|
279
|
+
void triggerAutoBackfill(did);
|
|
280
|
+
}
|
|
261
281
|
export async function triggerAutoBackfill(did, attempt = 0) {
|
|
262
282
|
if (backfillInFlight.has(did))
|
|
263
283
|
return;
|
package/dist/lex-types.d.ts
CHANGED
package/dist/lex-types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lex-types.d.ts","sourceRoot":"","sources":["../src/lex-types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lex-types.d.ts","sourceRoot":"","sources":["../src/lex-types.ts"],"names":[],"mappings":"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"}
|