@hatk/hatk 0.0.1-alpha.6 → 0.0.1-alpha.60
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 +19 -0
- package/dist/adapter.d.ts.map +1 -0
- package/dist/adapter.js +108 -0
- package/dist/backfill.d.ts +2 -2
- package/dist/backfill.d.ts.map +1 -1
- package/dist/backfill.js +78 -31
- package/dist/car.d.ts +42 -10
- package/dist/car.d.ts.map +1 -1
- package/dist/car.js +154 -14
- package/dist/cli.js +243 -1043
- package/dist/config.d.ts +31 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +40 -9
- package/dist/database/adapter-factory.d.ts +6 -0
- package/dist/database/adapter-factory.d.ts.map +1 -0
- package/dist/database/adapter-factory.js +20 -0
- package/dist/database/adapters/duckdb-search.d.ts +12 -0
- package/dist/database/adapters/duckdb-search.d.ts.map +1 -0
- package/dist/database/adapters/duckdb-search.js +27 -0
- package/dist/database/adapters/duckdb.d.ts +25 -0
- package/dist/database/adapters/duckdb.d.ts.map +1 -0
- package/dist/database/adapters/duckdb.js +161 -0
- package/dist/database/adapters/sqlite-search.d.ts +23 -0
- package/dist/database/adapters/sqlite-search.d.ts.map +1 -0
- package/dist/database/adapters/sqlite-search.js +74 -0
- package/dist/database/adapters/sqlite.d.ts +18 -0
- package/dist/database/adapters/sqlite.d.ts.map +1 -0
- package/dist/database/adapters/sqlite.js +88 -0
- package/dist/{db.d.ts → database/db.d.ts} +57 -6
- package/dist/database/db.d.ts.map +1 -0
- package/dist/{db.js → database/db.js} +730 -549
- package/dist/database/dialect.d.ts +45 -0
- package/dist/database/dialect.d.ts.map +1 -0
- package/dist/database/dialect.js +72 -0
- package/dist/{fts.d.ts → database/fts.d.ts} +7 -0
- package/dist/database/fts.d.ts.map +1 -0
- package/dist/{fts.js → database/fts.js} +116 -32
- package/dist/database/index.d.ts +7 -0
- package/dist/database/index.d.ts.map +1 -0
- package/dist/database/index.js +6 -0
- package/dist/database/ports.d.ts +50 -0
- package/dist/database/ports.d.ts.map +1 -0
- package/dist/database/ports.js +1 -0
- package/dist/{schema.d.ts → database/schema.d.ts} +14 -3
- package/dist/database/schema.d.ts.map +1 -0
- package/dist/{schema.js → database/schema.js} +81 -41
- package/dist/dev-entry.d.ts +8 -0
- package/dist/dev-entry.d.ts.map +1 -0
- package/dist/dev-entry.js +112 -0
- package/dist/feeds.d.ts +12 -8
- package/dist/feeds.d.ts.map +1 -1
- package/dist/feeds.js +51 -6
- package/dist/hooks.d.ts +85 -0
- package/dist/hooks.d.ts.map +1 -0
- package/dist/hooks.js +161 -0
- package/dist/hydrate.d.ts +7 -6
- package/dist/hydrate.d.ts.map +1 -1
- package/dist/hydrate.js +4 -16
- package/dist/indexer.d.ts +22 -0
- package/dist/indexer.d.ts.map +1 -1
- package/dist/indexer.js +123 -32
- package/dist/labels.d.ts +36 -0
- package/dist/labels.d.ts.map +1 -1
- package/dist/labels.js +71 -6
- package/dist/lexicon-resolve.d.ts.map +1 -1
- package/dist/lexicon-resolve.js +27 -112
- package/dist/lexicons/com/atproto/label/defs.json +75 -0
- package/dist/lexicons/com/atproto/moderation/defs.json +30 -0
- package/dist/lexicons/com/atproto/repo/strongRef.json +24 -0
- package/dist/lexicons/dev/hatk/applyWrites.json +87 -0
- package/dist/lexicons/dev/hatk/createRecord.json +40 -0
- package/dist/lexicons/dev/hatk/createReport.json +48 -0
- package/dist/lexicons/dev/hatk/deleteRecord.json +25 -0
- package/dist/lexicons/dev/hatk/describeCollections.json +41 -0
- package/dist/lexicons/dev/hatk/describeFeeds.json +29 -0
- package/dist/lexicons/dev/hatk/describeLabels.json +45 -0
- package/dist/lexicons/dev/hatk/getFeed.json +30 -0
- package/dist/lexicons/dev/hatk/getPreferences.json +19 -0
- package/dist/lexicons/dev/hatk/getRecord.json +26 -0
- package/dist/lexicons/dev/hatk/getRecords.json +32 -0
- package/dist/lexicons/dev/hatk/putPreference.json +28 -0
- package/dist/lexicons/dev/hatk/putRecord.json +41 -0
- package/dist/lexicons/dev/hatk/searchRecords.json +32 -0
- package/dist/lexicons/dev/hatk/uploadBlob.json +23 -0
- package/dist/logger.d.ts +29 -0
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +29 -0
- package/dist/main.js +137 -67
- package/dist/mst.d.ts +18 -1
- package/dist/mst.d.ts.map +1 -1
- package/dist/mst.js +19 -8
- package/dist/oauth/db.d.ts +3 -1
- package/dist/oauth/db.d.ts.map +1 -1
- package/dist/oauth/db.js +48 -19
- package/dist/oauth/server.d.ts +24 -0
- package/dist/oauth/server.d.ts.map +1 -1
- package/dist/oauth/server.js +198 -22
- package/dist/oauth/session.d.ts +11 -0
- package/dist/oauth/session.d.ts.map +1 -0
- package/dist/oauth/session.js +65 -0
- package/dist/opengraph.d.ts +10 -0
- package/dist/opengraph.d.ts.map +1 -1
- package/dist/opengraph.js +80 -40
- package/dist/pds-proxy.d.ts +60 -0
- package/dist/pds-proxy.d.ts.map +1 -0
- package/dist/pds-proxy.js +277 -0
- package/dist/push.d.ts +34 -0
- package/dist/push.d.ts.map +1 -0
- package/dist/push.js +184 -0
- package/dist/renderer.d.ts +27 -0
- package/dist/renderer.d.ts.map +1 -0
- package/dist/renderer.js +46 -0
- package/dist/resolve-hatk.d.ts +6 -0
- package/dist/resolve-hatk.d.ts.map +1 -0
- package/dist/resolve-hatk.js +20 -0
- package/dist/response.d.ts +16 -0
- package/dist/response.d.ts.map +1 -0
- package/dist/response.js +69 -0
- package/dist/scanner.d.ts +21 -0
- package/dist/scanner.d.ts.map +1 -0
- package/dist/scanner.js +88 -0
- package/dist/seed.d.ts +19 -0
- package/dist/seed.d.ts.map +1 -1
- package/dist/seed.js +43 -4
- package/dist/server-init.d.ts +8 -0
- package/dist/server-init.d.ts.map +1 -0
- package/dist/server-init.js +62 -0
- package/dist/server.d.ts +26 -3
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +629 -635
- package/dist/setup.d.ts +28 -1
- package/dist/setup.d.ts.map +1 -1
- package/dist/setup.js +50 -3
- package/dist/templates/feed.tpl +14 -0
- package/dist/templates/hook.tpl +5 -0
- package/dist/templates/label.tpl +15 -0
- package/dist/templates/og.tpl +17 -0
- package/dist/templates/seed.tpl +11 -0
- package/dist/templates/setup.tpl +5 -0
- package/dist/templates/test-feed.tpl +19 -0
- package/dist/templates/test-xrpc.tpl +19 -0
- package/dist/templates/xrpc.tpl +41 -0
- package/dist/test.d.ts +1 -1
- package/dist/test.d.ts.map +1 -1
- package/dist/test.js +39 -32
- package/dist/views.js +1 -1
- package/dist/vite-plugin.d.ts +1 -1
- package/dist/vite-plugin.d.ts.map +1 -1
- package/dist/vite-plugin.js +254 -66
- package/dist/xrpc.d.ts +75 -11
- package/dist/xrpc.d.ts.map +1 -1
- package/dist/xrpc.js +189 -39
- package/package.json +14 -7
- package/public/admin.html +133 -54
- package/dist/db.d.ts.map +0 -1
- package/dist/fts.d.ts.map +0 -1
- package/dist/oauth/hooks.d.ts +0 -10
- package/dist/oauth/hooks.d.ts.map +0 -1
- package/dist/oauth/hooks.js +0 -40
- package/dist/schema.d.ts.map +0 -1
- package/dist/test-browser.d.ts +0 -14
- package/dist/test-browser.d.ts.map +0 -1
- package/dist/test-browser.js +0 -26
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
2
|
+
import { log } from "./logger.js";
|
|
3
|
+
import { scanServerDir } from "./scanner.js";
|
|
4
|
+
import { registerFeed, listFeeds } from "./feeds.js";
|
|
5
|
+
import { registerXrpcHandler, listXrpc } from "./xrpc.js";
|
|
6
|
+
import { registerLabelModule, getLabelDefinitions, clearLabels } from "./labels.js";
|
|
7
|
+
import { registerOgHandler } from "./opengraph.js";
|
|
8
|
+
import { registerHook } from "./hooks.js";
|
|
9
|
+
import { runSetupHandler } from "./setup.js";
|
|
10
|
+
import { registerRenderer } from "./renderer.js";
|
|
11
|
+
/**
|
|
12
|
+
* Scan the server/ directory and register all discovered handlers.
|
|
13
|
+
* Setup scripts run immediately (in sorted order).
|
|
14
|
+
*/
|
|
15
|
+
export async function initServer(serverDir, opts) {
|
|
16
|
+
if (!existsSync(serverDir)) {
|
|
17
|
+
log(`[server] No server/ directory found, skipping`);
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
const scanned = await scanServerDir(serverDir);
|
|
21
|
+
// 1. Run setup scripts first (sorted by name) — skipped in test context
|
|
22
|
+
if (!opts?.skipSetup) {
|
|
23
|
+
for (const entry of scanned.setup.sort((a, b) => a.name.localeCompare(b.name))) {
|
|
24
|
+
await runSetupHandler(entry.name, entry.mod.handler);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
// 2. Register feeds
|
|
28
|
+
for (const entry of scanned.feeds) {
|
|
29
|
+
const feedName = entry.name.includes('/') ? entry.name.split('/').pop() : entry.name;
|
|
30
|
+
registerFeed(feedName, entry.mod);
|
|
31
|
+
}
|
|
32
|
+
// 3. Register XRPC handlers
|
|
33
|
+
for (const entry of scanned.queries) {
|
|
34
|
+
registerXrpcHandler(entry.mod.nsid, entry.mod);
|
|
35
|
+
}
|
|
36
|
+
for (const entry of scanned.procedures) {
|
|
37
|
+
registerXrpcHandler(entry.mod.nsid, entry.mod);
|
|
38
|
+
}
|
|
39
|
+
// 4. Register hooks
|
|
40
|
+
for (const entry of scanned.hooks) {
|
|
41
|
+
registerHook(entry.mod.event, entry.mod.handler, entry.mod);
|
|
42
|
+
}
|
|
43
|
+
// 5. Register labels (clear first for hot-reload)
|
|
44
|
+
clearLabels();
|
|
45
|
+
for (const entry of scanned.labels) {
|
|
46
|
+
registerLabelModule(entry.name, entry.mod);
|
|
47
|
+
}
|
|
48
|
+
// 6. Register OG handlers
|
|
49
|
+
for (const entry of scanned.og) {
|
|
50
|
+
registerOgHandler(entry.mod);
|
|
51
|
+
}
|
|
52
|
+
// 7. Register renderer
|
|
53
|
+
if (scanned.renderer) {
|
|
54
|
+
registerRenderer(scanned.renderer.mod.handler);
|
|
55
|
+
}
|
|
56
|
+
log(`[server] Initialized from server/ directory:`);
|
|
57
|
+
log(` Feeds: ${listFeeds()
|
|
58
|
+
.map((f) => f.name)
|
|
59
|
+
.join(', ') || 'none'}`);
|
|
60
|
+
log(` XRPC: ${listXrpc().join(', ') || 'none'}`);
|
|
61
|
+
log(` Labels: ${getLabelDefinitions().length} definitions`);
|
|
62
|
+
}
|
package/dist/server.d.ts
CHANGED
|
@@ -1,6 +1,29 @@
|
|
|
1
|
-
import { type Server, type IncomingMessage } from 'node:http';
|
|
2
1
|
import type { OAuthConfig } from './config.ts';
|
|
3
|
-
|
|
2
|
+
/**
|
|
3
|
+
* Register built-in dev.hatk.* XRPC handlers in the handler registry.
|
|
4
|
+
* This makes them available to callXrpc() for use in SSR and server code.
|
|
5
|
+
*/
|
|
6
|
+
export declare function registerCoreHandlers(collections: string[], oauth: OAuthConfig | null): void;
|
|
7
|
+
export interface HandlerConfig {
|
|
8
|
+
collections: string[];
|
|
9
|
+
publicDir: string | null;
|
|
10
|
+
oauth: OAuthConfig | null;
|
|
11
|
+
admins: string[];
|
|
12
|
+
renderer?: (request: Request, manifest: any) => Promise<{
|
|
13
|
+
html: string;
|
|
14
|
+
head?: string;
|
|
15
|
+
}>;
|
|
16
|
+
resolveViewer?: (request: Request) => {
|
|
17
|
+
did: string;
|
|
18
|
+
} | null;
|
|
19
|
+
onResync?: () => void;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Create a Web Standard request handler for all hatk routes.
|
|
23
|
+
* Returns a pure function: (Request) → Promise<Response>
|
|
24
|
+
*/
|
|
25
|
+
export declare function createHandler(config: HandlerConfig): (request: Request) => Promise<Response>;
|
|
26
|
+
export declare function startServer(port: number, collections: string[], publicDir: string | null, oauth: OAuthConfig | null, admins?: string[], resolveViewer?: (request: Request) => {
|
|
4
27
|
did: string;
|
|
5
|
-
} | null): Server;
|
|
28
|
+
} | null, onResync?: () => void): import('node:http').Server;
|
|
6
29
|
//# sourceMappingURL=server.d.ts.map
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAyDA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AA2B9C;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI,CAgM3F;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,KAAK,EAAE,WAAW,GAAG,IAAI,CAAA;IACzB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,KAAK,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACxF,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;IAC5D,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;CACtB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CA+zB5F;AAGD,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EAAE,EACrB,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,KAAK,EAAE,WAAW,GAAG,IAAI,EACzB,MAAM,GAAE,MAAM,EAAO,EACrB,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,EAC5D,QAAQ,CAAC,EAAE,MAAM,IAAI,GACpB,OAAO,WAAW,EAAE,MAAM,CAG5B"}
|