@hatk/hatk 0.0.1-alpha.44 → 0.0.1-alpha.45
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/cli.js +7 -491
- package/dist/database/db.d.ts +2 -0
- package/dist/database/db.d.ts.map +1 -1
- package/dist/database/db.js +4 -0
- package/dist/indexer.d.ts.map +1 -1
- package/dist/indexer.js +11 -2
- package/dist/main.js +0 -9
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { mkdirSync, writeFileSync, existsSync, unlinkSync, readdirSync, readFileSync
|
|
2
|
+
import { mkdirSync, writeFileSync, existsSync, unlinkSync, readdirSync, readFileSync } from 'node:fs';
|
|
3
3
|
import { resolve, join } from 'node:path';
|
|
4
4
|
import { execSync, spawn } from 'node:child_process';
|
|
5
5
|
import { loadLexicons } from "./database/schema.js";
|
|
@@ -69,9 +69,6 @@ function usage() {
|
|
|
69
69
|
console.log(`
|
|
70
70
|
Usage: hatk <command> [options]
|
|
71
71
|
|
|
72
|
-
Getting Started
|
|
73
|
-
new <name> [--svelte] [--duckdb] [--template <t>] Create a new hatk project
|
|
74
|
-
|
|
75
72
|
Running
|
|
76
73
|
start Start the hatk server
|
|
77
74
|
dev Start PDS, seed, and run hatk
|
|
@@ -192,493 +189,12 @@ const dirs = {
|
|
|
192
189
|
};
|
|
193
190
|
// --- Commands ---
|
|
194
191
|
if (command === 'new') {
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
const templateName = templateIdx !== -1 ? args[templateIdx + 1] : null;
|
|
202
|
-
if (templateIdx !== -1 && !templateName) {
|
|
203
|
-
console.error('Usage: hatk new <name> --template <template-name>');
|
|
204
|
-
process.exit(1);
|
|
205
|
-
}
|
|
206
|
-
const dir = resolve(name);
|
|
207
|
-
if (existsSync(dir)) {
|
|
208
|
-
console.error(`Directory ${name} already exists`);
|
|
209
|
-
process.exit(1);
|
|
210
|
-
}
|
|
211
|
-
if (templateName) {
|
|
212
|
-
const repo = `https://github.com/hatk-dev/hatk-template-${templateName}.git`;
|
|
213
|
-
console.log(`Cloning template ${templateName}...`);
|
|
214
|
-
try {
|
|
215
|
-
execSync(`git clone --depth 1 ${repo} ${dir}`, { stdio: 'inherit' });
|
|
216
|
-
}
|
|
217
|
-
catch {
|
|
218
|
-
console.error(`Failed to clone template: ${repo}`);
|
|
219
|
-
process.exit(1);
|
|
220
|
-
}
|
|
221
|
-
execSync(`rm -rf ${join(dir, '.git')}`);
|
|
222
|
-
const pkgPath = join(dir, 'package.json');
|
|
223
|
-
if (existsSync(pkgPath)) {
|
|
224
|
-
const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
|
|
225
|
-
pkg.name = name;
|
|
226
|
-
writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + '\n');
|
|
227
|
-
}
|
|
228
|
-
console.log(`\nCreated ${name}/ from template ${templateName}`);
|
|
229
|
-
console.log(`\n cd ${name}`);
|
|
230
|
-
console.log(` npm install`);
|
|
231
|
-
console.log(` hatk dev`);
|
|
232
|
-
process.exit(0);
|
|
233
|
-
}
|
|
234
|
-
const withSvelte = args.includes('--svelte');
|
|
235
|
-
const withDuckdb = args.includes('--duckdb');
|
|
236
|
-
const dbEngine = withDuckdb ? 'duckdb' : 'sqlite';
|
|
237
|
-
mkdirSync(dir);
|
|
238
|
-
const subs = [
|
|
239
|
-
'lexicons',
|
|
240
|
-
'server',
|
|
241
|
-
'seeds',
|
|
242
|
-
'public',
|
|
243
|
-
'test',
|
|
244
|
-
'test/server',
|
|
245
|
-
'test/integration',
|
|
246
|
-
'test/browser',
|
|
247
|
-
'test/fixtures',
|
|
248
|
-
];
|
|
249
|
-
if (withSvelte)
|
|
250
|
-
subs.push('src', 'src/routes', 'src/lib');
|
|
251
|
-
for (const sub of subs) {
|
|
252
|
-
mkdirSync(join(dir, sub));
|
|
253
|
-
}
|
|
254
|
-
writeFileSync(join(dir, 'hatk.config.ts'), `import { defineConfig } from '@hatk/hatk/config'
|
|
255
|
-
|
|
256
|
-
export default defineConfig({
|
|
257
|
-
relay: 'ws://localhost:2583',
|
|
258
|
-
plc: 'http://localhost:2582',
|
|
259
|
-
port: 3000,
|
|
260
|
-
databaseEngine: '${dbEngine}',
|
|
261
|
-
database: 'data/hatk.db',
|
|
262
|
-
admins: [],
|
|
263
|
-
backfill: {
|
|
264
|
-
parallelism: 10,
|
|
265
|
-
},
|
|
266
|
-
})
|
|
267
|
-
`);
|
|
268
|
-
writeFileSync(join(dir, 'public', 'index.html'), `<!DOCTYPE html>
|
|
269
|
-
<html><head><title>${name}</title></head>
|
|
270
|
-
<body><h1>${name}</h1></body></html>
|
|
271
|
-
`);
|
|
272
|
-
// Copy core framework lexicons (dev.hatk.* and dependencies like com.atproto.repo.strongRef)
|
|
273
|
-
const builtinLexDir = join(import.meta.dirname, 'lexicons');
|
|
274
|
-
cpSync(builtinLexDir, join(dir, 'lexicons'), { recursive: true });
|
|
275
|
-
writeFileSync(join(dir, 'seeds', 'seed.ts'), loadTemplate('seed.tpl', ''));
|
|
276
|
-
writeFileSync(join(dir, 'docker-compose.yml'), `services:
|
|
277
|
-
plc:
|
|
278
|
-
build:
|
|
279
|
-
context: https://github.com/did-method-plc/did-method-plc.git
|
|
280
|
-
dockerfile: packages/server/Dockerfile
|
|
281
|
-
ports:
|
|
282
|
-
- '2582:2582'
|
|
283
|
-
environment:
|
|
284
|
-
- DATABASE_URL=postgres://plc:plc@postgres:5432/plc
|
|
285
|
-
- PORT=2582
|
|
286
|
-
command: ['dumb-init', 'node', '--enable-source-maps', '../dist/bin.js']
|
|
287
|
-
depends_on:
|
|
288
|
-
postgres:
|
|
289
|
-
condition: service_healthy
|
|
290
|
-
healthcheck:
|
|
291
|
-
test: ['CMD-SHELL', 'wget -q --spider http://localhost:2582/_health || exit 1']
|
|
292
|
-
interval: 2s
|
|
293
|
-
timeout: 5s
|
|
294
|
-
retries: 15
|
|
295
|
-
|
|
296
|
-
pds:
|
|
297
|
-
image: ghcr.io/bluesky-social/pds:latest
|
|
298
|
-
ports:
|
|
299
|
-
- '2583:2583'
|
|
300
|
-
environment:
|
|
301
|
-
- PDS_HOSTNAME=localhost
|
|
302
|
-
- PDS_PORT=2583
|
|
303
|
-
- PDS_DID_PLC_URL=http://plc:2582
|
|
304
|
-
- PDS_DATA_DIRECTORY=/pds
|
|
305
|
-
- PDS_BLOBSTORE_DISK_LOCATION=/pds/blobs
|
|
306
|
-
- PDS_JWT_SECRET=dev-jwt-secret
|
|
307
|
-
- PDS_ADMIN_PASSWORD=dev-admin
|
|
308
|
-
- PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX=0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
|
|
309
|
-
- PDS_INVITE_REQUIRED=false
|
|
310
|
-
- PDS_DEV_MODE=true
|
|
311
|
-
- LOG_ENABLED=true
|
|
312
|
-
volumes:
|
|
313
|
-
- pds_data:/pds
|
|
314
|
-
depends_on:
|
|
315
|
-
plc:
|
|
316
|
-
condition: service_healthy
|
|
317
|
-
healthcheck:
|
|
318
|
-
test: ['CMD-SHELL', 'wget -q --spider http://localhost:2583/xrpc/_health || exit 1']
|
|
319
|
-
interval: 2s
|
|
320
|
-
timeout: 5s
|
|
321
|
-
retries: 15
|
|
322
|
-
|
|
323
|
-
postgres:
|
|
324
|
-
image: postgres:16-alpine
|
|
325
|
-
environment:
|
|
326
|
-
- POSTGRES_USER=plc
|
|
327
|
-
- POSTGRES_PASSWORD=plc
|
|
328
|
-
- POSTGRES_DB=plc
|
|
329
|
-
volumes:
|
|
330
|
-
- plc_data:/var/lib/postgresql/data
|
|
331
|
-
healthcheck:
|
|
332
|
-
test: ['CMD-SHELL', 'pg_isready -U plc']
|
|
333
|
-
interval: 2s
|
|
334
|
-
timeout: 5s
|
|
335
|
-
retries: 10
|
|
336
|
-
|
|
337
|
-
volumes:
|
|
338
|
-
pds_data:
|
|
339
|
-
plc_data:
|
|
340
|
-
`);
|
|
341
|
-
writeFileSync(join(dir, '.dockerignore'), `node_modules
|
|
342
|
-
data
|
|
343
|
-
.svelte-kit
|
|
344
|
-
public
|
|
345
|
-
`);
|
|
346
|
-
writeFileSync(join(dir, 'Dockerfile'), `FROM node:25-slim
|
|
347
|
-
WORKDIR /app
|
|
348
|
-
COPY package.json package-lock.json ./
|
|
349
|
-
RUN npm ci
|
|
350
|
-
COPY . .
|
|
351
|
-
RUN node_modules/.bin/hatk build
|
|
352
|
-
RUN npm prune --omit=dev
|
|
353
|
-
EXPOSE 3000
|
|
354
|
-
CMD ["node", "--experimental-strip-types", "--max-old-space-size=512", "node_modules/@hatk/hatk/dist/main.js", "hatk.config.ts"]
|
|
355
|
-
`);
|
|
356
|
-
const pkgDeps = { '@hatk/oauth-client': '*', hatk: '*' };
|
|
357
|
-
if (!withDuckdb) {
|
|
358
|
-
pkgDeps['better-sqlite3'] = '^11';
|
|
359
|
-
}
|
|
360
|
-
const pkgDevDeps = {
|
|
361
|
-
'@playwright/test': '^1',
|
|
362
|
-
oxfmt: '^0.35.0',
|
|
363
|
-
oxlint: '^1',
|
|
364
|
-
typescript: '^5',
|
|
365
|
-
vite: '^6',
|
|
366
|
-
vitest: '^4',
|
|
367
|
-
'@types/node': '^22',
|
|
368
|
-
};
|
|
369
|
-
if (withSvelte) {
|
|
370
|
-
pkgDevDeps['@sveltejs/adapter-static'] = '^3';
|
|
371
|
-
pkgDevDeps['@sveltejs/kit'] = '^2';
|
|
372
|
-
pkgDevDeps['@sveltejs/vite-plugin-svelte'] = '^5';
|
|
373
|
-
pkgDevDeps['svelte'] = '^5';
|
|
374
|
-
pkgDevDeps['svelte-check'] = '^4';
|
|
375
|
-
}
|
|
376
|
-
writeFileSync(join(dir, 'package.json'), JSON.stringify({
|
|
377
|
-
name,
|
|
378
|
-
private: true,
|
|
379
|
-
type: 'module',
|
|
380
|
-
scripts: {
|
|
381
|
-
start: 'hatk start',
|
|
382
|
-
dev: 'hatk dev',
|
|
383
|
-
build: 'hatk build',
|
|
384
|
-
check: 'hatk check',
|
|
385
|
-
format: 'hatk format',
|
|
386
|
-
},
|
|
387
|
-
dependencies: pkgDeps,
|
|
388
|
-
devDependencies: pkgDevDeps,
|
|
389
|
-
}, null, 2) + '\n');
|
|
390
|
-
writeFileSync(join(dir, 'tsconfig.server.json'), JSON.stringify({
|
|
391
|
-
compilerOptions: {
|
|
392
|
-
target: 'ES2022',
|
|
393
|
-
module: 'Node16',
|
|
394
|
-
moduleResolution: 'Node16',
|
|
395
|
-
strict: true,
|
|
396
|
-
esModuleInterop: true,
|
|
397
|
-
skipLibCheck: true,
|
|
398
|
-
noEmit: true,
|
|
399
|
-
allowImportingTsExtensions: true,
|
|
400
|
-
resolveJsonModule: true,
|
|
401
|
-
},
|
|
402
|
-
include: ['server', 'seeds', 'hatk.generated.ts', 'hatk.config.ts'],
|
|
403
|
-
}, null, 2) + '\n');
|
|
404
|
-
writeFileSync(join(dir, 'playwright.config.ts'), `import { defineConfig } from '@playwright/test'
|
|
405
|
-
|
|
406
|
-
export default defineConfig({
|
|
407
|
-
testDir: 'test/browser',
|
|
408
|
-
use: { baseURL: 'http://127.0.0.1:3000' },
|
|
409
|
-
globalSetup: './test/browser/global-setup.ts',
|
|
410
|
-
})
|
|
411
|
-
`);
|
|
412
|
-
writeFileSync(join(dir, 'test/browser/global-setup.ts'), `import { execSync } from 'node:child_process'
|
|
413
|
-
import { existsSync } from 'node:fs'
|
|
414
|
-
|
|
415
|
-
export default function globalSetup() {
|
|
416
|
-
if (existsSync('src/app.html')) {
|
|
417
|
-
execSync('npx vite build', { stdio: 'inherit' })
|
|
418
|
-
}
|
|
419
|
-
}
|
|
420
|
-
`);
|
|
421
|
-
writeFileSync(join(dir, '.gitignore'), `node_modules/
|
|
422
|
-
*.db
|
|
423
|
-
data/
|
|
424
|
-
test-results/
|
|
425
|
-
.svelte-kit/
|
|
426
|
-
.DS_Store
|
|
427
|
-
public/
|
|
428
|
-
`);
|
|
429
|
-
writeFileSync(join(dir, '.oxlintrc.json'), `{
|
|
430
|
-
"ignorePatterns": ["public", "data", ".svelte-kit", "hatk.generated.ts"]
|
|
431
|
-
}
|
|
432
|
-
`);
|
|
433
|
-
writeFileSync(join(dir, '.oxfmtrc.json'), `{
|
|
434
|
-
"semi": false,
|
|
435
|
-
"singleQuote": true,
|
|
436
|
-
"trailingComma": "all",
|
|
437
|
-
"printWidth": 120,
|
|
438
|
-
"tabWidth": 2,
|
|
439
|
-
"ignorePatterns": ["public", "data", ".svelte-kit", "hatk.generated.ts"]
|
|
440
|
-
}
|
|
441
|
-
`);
|
|
442
|
-
if (withSvelte) {
|
|
443
|
-
writeFileSync(join(dir, 'svelte.config.js'), `import adapter from '@sveltejs/adapter-static'
|
|
444
|
-
|
|
445
|
-
export default {
|
|
446
|
-
kit: {
|
|
447
|
-
adapter: adapter({
|
|
448
|
-
pages: 'public',
|
|
449
|
-
assets: 'public',
|
|
450
|
-
fallback: 'index.html',
|
|
451
|
-
}),
|
|
452
|
-
paths: { base: '' },
|
|
453
|
-
alias: {
|
|
454
|
-
$hatk: './hatk.generated.ts',
|
|
455
|
-
},
|
|
456
|
-
},
|
|
457
|
-
}
|
|
458
|
-
`);
|
|
459
|
-
writeFileSync(join(dir, 'vite.config.ts'), `import { sveltekit } from '@sveltejs/kit/vite'
|
|
460
|
-
import { hatk } from '@hatk/hatk/vite-plugin'
|
|
461
|
-
import { defineConfig } from 'vite'
|
|
462
|
-
|
|
463
|
-
export default defineConfig({
|
|
464
|
-
plugins: [sveltekit(), hatk()],
|
|
465
|
-
})
|
|
466
|
-
`);
|
|
467
|
-
writeFileSync(join(dir, 'tsconfig.json'), JSON.stringify({
|
|
468
|
-
extends: './.svelte-kit/tsconfig.json',
|
|
469
|
-
compilerOptions: {
|
|
470
|
-
allowJs: true,
|
|
471
|
-
checkJs: false,
|
|
472
|
-
esModuleInterop: true,
|
|
473
|
-
forceConsistentCasingInFileNames: true,
|
|
474
|
-
resolveJsonModule: true,
|
|
475
|
-
skipLibCheck: true,
|
|
476
|
-
sourceMap: true,
|
|
477
|
-
strict: true,
|
|
478
|
-
moduleResolution: 'bundler',
|
|
479
|
-
allowImportingTsExtensions: true,
|
|
480
|
-
},
|
|
481
|
-
}, null, 2) + '\n');
|
|
482
|
-
writeFileSync(join(dir, 'src/app.html'), `<!doctype html>
|
|
483
|
-
<html lang="en">
|
|
484
|
-
<head>
|
|
485
|
-
<meta charset="utf-8" />
|
|
486
|
-
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
487
|
-
<meta name="description" content="${name}" />
|
|
488
|
-
<title>${name}</title>
|
|
489
|
-
%sveltekit.head%
|
|
490
|
-
</head>
|
|
491
|
-
<body data-sveltekit-preload-data="hover">
|
|
492
|
-
<div style="display: contents">%sveltekit.body%</div>
|
|
493
|
-
</body>
|
|
494
|
-
</html>
|
|
495
|
-
`);
|
|
496
|
-
writeFileSync(join(dir, 'src/app.css'), `*,
|
|
497
|
-
*::before,
|
|
498
|
-
*::after {
|
|
499
|
-
box-sizing: border-box;
|
|
500
|
-
margin: 0;
|
|
501
|
-
padding: 0;
|
|
502
|
-
}
|
|
503
|
-
|
|
504
|
-
:root {
|
|
505
|
-
--bg-root: #080b12;
|
|
506
|
-
--bg-surface: #0f1419;
|
|
507
|
-
--bg-elevated: #161d27;
|
|
508
|
-
--bg-hover: #1c2633;
|
|
509
|
-
--border: #1e293b;
|
|
510
|
-
--teal: #14b8a6;
|
|
511
|
-
--text-primary: #e2e8f0;
|
|
512
|
-
--text-secondary: #94a3b8;
|
|
513
|
-
--text-muted: #64748b;
|
|
514
|
-
}
|
|
515
|
-
|
|
516
|
-
html {
|
|
517
|
-
background: var(--bg-root);
|
|
518
|
-
color: var(--text-primary);
|
|
519
|
-
}
|
|
520
|
-
|
|
521
|
-
body {
|
|
522
|
-
font-family: -apple-system, system-ui, sans-serif;
|
|
523
|
-
font-size: 15px;
|
|
524
|
-
line-height: 1.5;
|
|
525
|
-
min-height: 100vh;
|
|
526
|
-
}
|
|
527
|
-
|
|
528
|
-
a {
|
|
529
|
-
color: inherit;
|
|
530
|
-
text-decoration: none;
|
|
531
|
-
}
|
|
532
|
-
`);
|
|
533
|
-
writeFileSync(join(dir, 'src/routes/+layout.svelte'), `<script lang="ts">
|
|
534
|
-
import type { Snippet } from 'svelte'
|
|
535
|
-
import '../app.css'
|
|
536
|
-
|
|
537
|
-
let { children }: { children: Snippet } = $props()
|
|
538
|
-
</script>
|
|
539
|
-
|
|
540
|
-
{@render children()}
|
|
541
|
-
`);
|
|
542
|
-
writeFileSync(join(dir, 'src/routes/+page.svelte'), `<h1>${name}</h1>
|
|
543
|
-
<p>Your hatk server is running.</p>
|
|
544
|
-
`);
|
|
545
|
-
writeFileSync(join(dir, 'src/error.html'), `<!doctype html>
|
|
546
|
-
<html lang="en">
|
|
547
|
-
<head>
|
|
548
|
-
<meta charset="utf-8" />
|
|
549
|
-
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
550
|
-
<title>%sveltekit.error.message% — ${name}</title>
|
|
551
|
-
<style>
|
|
552
|
-
* { box-sizing: border-box; margin: 0; padding: 0; }
|
|
553
|
-
body {
|
|
554
|
-
font-family: -apple-system, system-ui, sans-serif;
|
|
555
|
-
background: #080b12; color: #e2e8f0;
|
|
556
|
-
min-height: 100vh; display: flex; align-items: center; justify-content: center;
|
|
557
|
-
}
|
|
558
|
-
.error-page { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 8px; padding: 24px; }
|
|
559
|
-
.error-code { font-size: 72px; font-weight: 800; color: #14b8a6; line-height: 1; }
|
|
560
|
-
.error-title { font-size: 24px; font-weight: 800; }
|
|
561
|
-
.error-link {
|
|
562
|
-
margin-top: 16px; padding: 10px 24px; background: #14b8a6; color: #000;
|
|
563
|
-
border-radius: 20px; font-weight: 600; font-size: 14px; text-decoration: none;
|
|
564
|
-
}
|
|
565
|
-
</style>
|
|
566
|
-
</head>
|
|
567
|
-
<body>
|
|
568
|
-
<div class="error-page">
|
|
569
|
-
<span class="error-code">%sveltekit.status%</span>
|
|
570
|
-
<h1 class="error-title">%sveltekit.error.message%</h1>
|
|
571
|
-
<a href="/" class="error-link">Back to home</a>
|
|
572
|
-
</div>
|
|
573
|
-
</body>
|
|
574
|
-
</html>
|
|
575
|
-
`);
|
|
576
|
-
writeFileSync(join(dir, 'src/routes/+error.svelte'), `<script lang="ts">
|
|
577
|
-
import { page } from '$app/state'
|
|
578
|
-
</script>
|
|
579
|
-
|
|
580
|
-
<div style="display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 80vh; gap: 8px;">
|
|
581
|
-
<span style="font-size: 72px; font-weight: 800; color: var(--teal);">{page.status}</span>
|
|
582
|
-
<h1 style="font-size: 24px; font-weight: 800;">{page.error?.message}</h1>
|
|
583
|
-
<a href="/" style="margin-top: 16px; padding: 10px 24px; background: var(--teal); color: #000; border-radius: 20px; font-weight: 600; font-size: 14px;">Back to home</a>
|
|
584
|
-
</div>
|
|
585
|
-
`);
|
|
586
|
-
}
|
|
587
|
-
let agentsMd = `# hatk project
|
|
588
|
-
|
|
589
|
-
This is an AT Protocol application built with [hatk](https://github.com/hatk-dev/hatk).
|
|
590
|
-
Read the project's lexicons in \`lexicons/\` to understand the data model.
|
|
591
|
-
Types are generated from lexicons into \`hatk.generated.ts\` — never edit this file directly.
|
|
592
|
-
|
|
593
|
-
## Project structure
|
|
594
|
-
|
|
595
|
-
| Directory | Purpose |
|
|
596
|
-
|-------------|------------------------------------------------------|
|
|
597
|
-
| \`lexicons/\` | AT Protocol lexicon schemas (JSON). Defines collections and XRPC methods |
|
|
598
|
-
| \`server/\` | All server-side code: feeds, XRPC handlers, hooks, labels, OG routes, setup scripts |
|
|
599
|
-
| \`seeds/\` | Test data seeding scripts for local development |
|
|
600
|
-
| \`test/\` | Test files (vitest). Run with \`vp test\` |
|
|
601
|
-
| \`public/\` | Static files served at the root |
|
|
602
|
-
`;
|
|
603
|
-
if (withSvelte) {
|
|
604
|
-
agentsMd += `| \`src/\` | SvelteKit frontend (routes, components, styles) |
|
|
605
|
-
|
|
606
|
-
`;
|
|
607
|
-
}
|
|
608
|
-
else {
|
|
609
|
-
agentsMd += `
|
|
610
|
-
`;
|
|
611
|
-
}
|
|
612
|
-
agentsMd += `## Key files
|
|
613
|
-
|
|
614
|
-
- \`hatk.config.ts\` — project configuration (see \`defineConfig\` for type info)
|
|
615
|
-
- \`hatk.generated.ts\` — auto-generated server types and helpers. Regenerate with \`hatk generate types\`
|
|
616
|
-
- \`hatk.generated.client.ts\` — auto-generated client-safe types and \`callXrpc\`. Never import \`hatk.generated.ts\` from frontend code
|
|
617
|
-
|
|
618
|
-
## The \`$hatk\` alias
|
|
619
|
-
|
|
620
|
-
Server files in \`server/\` import from \`$hatk\`:
|
|
621
|
-
\`\`\`ts
|
|
622
|
-
import { defineFeed, views, type Status } from "$hatk"
|
|
623
|
-
\`\`\`
|
|
624
|
-
`;
|
|
625
|
-
if (withSvelte) {
|
|
626
|
-
agentsMd += `
|
|
627
|
-
SvelteKit routes and components import from \`$hatk/client\`:
|
|
628
|
-
\`\`\`ts
|
|
629
|
-
import { callXrpc, getViewer } from "$hatk/client"
|
|
630
|
-
\`\`\`
|
|
631
|
-
|
|
632
|
-
\`$hatk\` resolves to \`hatk.generated.ts\` and \`$hatk/client\` to \`hatk.generated.client.ts\`.
|
|
633
|
-
The Vite plugin handles this in dev/build. In tests and production, a Node.js module resolve hook handles it.
|
|
634
|
-
`;
|
|
635
|
-
}
|
|
636
|
-
else {
|
|
637
|
-
agentsMd += `
|
|
638
|
-
\`$hatk\` resolves to \`hatk.generated.ts\`. The Vite plugin handles this in dev/build.
|
|
639
|
-
In tests and production, a Node.js module resolve hook handles it.
|
|
640
|
-
`;
|
|
641
|
-
}
|
|
642
|
-
agentsMd += `
|
|
643
|
-
## Commands
|
|
644
|
-
|
|
645
|
-
Run \`npx hatk --help\` for the full list of commands.
|
|
646
|
-
|
|
647
|
-
Use \`npx hatk generate\` to scaffold new feeds, xrpc handlers, labels, and lexicons
|
|
648
|
-
rather than creating files manually. These generate files with the correct imports.
|
|
649
|
-
|
|
650
|
-
After modifying lexicons, always run \`npx hatk generate types\` to update the generated types.
|
|
651
|
-
`;
|
|
652
|
-
if (withSvelte) {
|
|
653
|
-
agentsMd += `
|
|
654
|
-
## Running
|
|
655
|
-
|
|
656
|
-
- \`vp dev\` — start dev server (hatk + SvelteKit + PDS)
|
|
657
|
-
- \`vp build\` — build for production (SvelteKit outputs to \`build/\`)
|
|
658
|
-
- \`hatk start\` — start production server (hatk + SvelteKit via \`build/handler.js\`)
|
|
659
|
-
- \`vp test\` — run tests
|
|
660
|
-
`;
|
|
661
|
-
}
|
|
662
|
-
writeFileSync(join(dir, 'AGENTS.md'), agentsMd);
|
|
663
|
-
console.log(`Created ${name}/`);
|
|
664
|
-
console.log(` hatk.config.ts`);
|
|
665
|
-
console.log(` lexicons/ — lexicon JSON files (core + your own)`);
|
|
666
|
-
console.log(` server/ — feeds, XRPC handlers, hooks, labels, OG routes, setup`);
|
|
667
|
-
console.log(` seeds/ — seed fixture data (hatk seed)`);
|
|
668
|
-
console.log(` test/ — test files (hatk test)`);
|
|
669
|
-
console.log(` public/ — static files`);
|
|
670
|
-
console.log(` docker-compose.yml — local PDS for development`);
|
|
671
|
-
console.log(` Dockerfile — production container`);
|
|
672
|
-
if (withSvelte) {
|
|
673
|
-
console.log(` src/ — SvelteKit frontend`);
|
|
674
|
-
console.log(` svelte.config.js`);
|
|
675
|
-
console.log(` vite.config.ts`);
|
|
676
|
-
}
|
|
677
|
-
// Generate types so the project is ready to go
|
|
678
|
-
execSync('npx hatk generate types', { stdio: 'inherit', cwd: dir });
|
|
679
|
-
if (withSvelte) {
|
|
680
|
-
execSync('npx svelte-kit sync', { stdio: 'inherit', cwd: dir });
|
|
681
|
-
}
|
|
192
|
+
console.error('`hatk new` has been removed. Create a new project with:');
|
|
193
|
+
console.error('');
|
|
194
|
+
console.error(' vp create github:hatk-dev/hatk-template-starter');
|
|
195
|
+
console.error('');
|
|
196
|
+
console.error('Install vp first: curl -fsSL https://vite.plus | bash');
|
|
197
|
+
process.exit(1);
|
|
682
198
|
}
|
|
683
199
|
else if (command === 'generate') {
|
|
684
200
|
const type = args[1];
|
package/dist/database/db.d.ts
CHANGED
|
@@ -25,6 +25,8 @@ export declare function setRepoStatus(did: string, status: string, rev?: string,
|
|
|
25
25
|
retryAfter?: number;
|
|
26
26
|
handle?: string | null;
|
|
27
27
|
}): Promise<void>;
|
|
28
|
+
/** Update the handle for a DID if it exists in _repos. */
|
|
29
|
+
export declare function updateRepoHandle(did: string, handle: string): Promise<void>;
|
|
28
30
|
export declare function getRepoRev(did: string): Promise<string | null>;
|
|
29
31
|
export declare function getRepoRetryInfo(did: string): Promise<{
|
|
30
32
|
retryCount: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/database/db.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/database/db.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAkB,MAAM,aAAa,CAAA;AAC9D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAA;AAI1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC9C,OAAO,EAAc,KAAK,UAAU,EAAE,MAAM,cAAc,CAAA;AAM1D,wBAAgB,eAAe,IAAI,YAAY,CAE9C;AACD,wBAAgB,aAAa,IAAI,UAAU,CAE1C;AAED,wBAAgB,aAAa,IAAI,IAAI,CAEpC;AAMD,wBAAsB,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,EAAE,CAAA;CAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAcnG;AAMD,wBAAsB,YAAY,CAChC,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,WAAW,EAAE,EAC3B,aAAa,EAAE,MAAM,EAAE,GACtB,OAAO,CAAC,IAAI,CAAC,CA0Gf;AAED,UAAU,eAAe;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAA;IACjC,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAoED,wBAAsB,aAAa,CAAC,YAAY,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CA6F3F;AA0CD,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAGnE;AAED,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEzE;AAED,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAGvE;AAED,wBAAsB,aAAa,CACjC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,GAAG,CAAC,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAC1E,OAAO,CAAC,IAAI,CAAC,CA0Bf;AAED,0DAA0D;AAC1D,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEjF;AAED,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAGpE;AAED,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAI9G;AAED,wBAAsB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAOlF;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAG1D;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAG5D;AAED,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE3D;AAED,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAGvE;AAED,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAE3F;AAED,wBAAsB,kBAAkB,CACtC,IAAI,GAAE;IACJ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,CAAC,CAAC,EAAE,MAAM,CAAA;CACN,GACL,OAAO,CAAC;IAAE,KAAK,EAAE,GAAG,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CA2B1C;AAED,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAO3E;AAED,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAK3E;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAcvE;AAED,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGhE;AAED,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAI/D;AAED,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAQxF;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,CAiCrD;AAED,wBAAgB,aAAa,CAC3B,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC1B;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,GAAG,EAAE,CAAA;CAAE,CA+BhC;AAED,wBAAsB,YAAY,CAChC,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC1B,OAAO,CAAC,IAAI,CAAC,CAqGf;AAWD,wBAAsB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBjF;AAED,wBAAsB,YAAY,CAChC,MAAM,EAAE,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GAClG,OAAO,CAAC,IAAI,CAAC,CAmBf;AAED,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EAAE,GACb,OAAO,CACR,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAAC,CAC7G,CAqBA;AAED,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAA;IAClB,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAC5B;AAED,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAqN9E;AAuCD,UAAU,SAAS;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;CACvB;AAED,wBAAsB,YAAY,CAChC,UAAU,EAAE,MAAM,EAClB,IAAI,GAAE,SAAc,GACnB,OAAO,CAAC;IAAE,OAAO,EAAE,GAAG,EAAE,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAoF9C;AAED,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAgCrE;AAED,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAqCzF;AAED,qEAAqE;AACrE,wBAAsB,aAAa,CAAC,CAAC,GAAG,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CASjH;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,aAAa,CACjC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAC9D,OAAO,CAAC;IAAE,OAAO,EAAE,GAAG,EAAE,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA2H9C;AAGD,wBAAsB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,OAAO,EAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAEtF;AAED,wBAAsB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,OAAO,EAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/E;AAED,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAClE,OAAO,CAAC,OAAO,YAAY,EAAE,YAAY,CAAC,CAE5C;AAED,wBAAgB,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAErE;AAED,wBAAsB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAKpG;AAED,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EAAE,GACf,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAc9B;AAED,wBAAsB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAKvG;AAED,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EAAE,GACf,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CA6B7B;AAED,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EAAE,GACf,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CASpC;AAED,wBAAsB,eAAe,CACnC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,GAC7C,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAOxB;AAKD,wBAAgB,cAAc,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,CAI1C;AAED,wBAAsB,YAAY,CAAC,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAW5G;AAED,wBAAgB,UAAU,CACxB,GAAG,EAAE,GAAG,EACR,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAC3C,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GACvD,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,CAiGrB;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAGhE;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CASpF;AAED,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAIlE;AAED,wBAAsB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAKtF;AAED,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAOxE;AAED,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAO3E;AAED,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGlE;AAED,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAW9E;AAED,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAOvF;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAK9E;AAED,wBAAsB,YAAY,CAAC,MAAM,EAAE;IACzC,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;CACnB,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC,CAO1B;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE;IACvC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,GAAG,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CA8B7C;AAED,wBAAsB,aAAa,CACjC,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,UAAU,GAAG,WAAW,EAChC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAevD;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC,CAK1D"}
|
package/dist/database/db.js
CHANGED
|
@@ -354,6 +354,10 @@ export async function setRepoStatus(did, status, rev, opts) {
|
|
|
354
354
|
await run(`INSERT OR IGNORE INTO _repos (did, status) VALUES ($1, $2)`, [did, status]);
|
|
355
355
|
}
|
|
356
356
|
}
|
|
357
|
+
/** Update the handle for a DID if it exists in _repos. */
|
|
358
|
+
export async function updateRepoHandle(did, handle) {
|
|
359
|
+
await run(`UPDATE _repos SET handle = $1 WHERE did = $2`, [handle, did]);
|
|
360
|
+
}
|
|
357
361
|
export async function getRepoRev(did) {
|
|
358
362
|
const rows = await all(`SELECT rev FROM _repos WHERE did = $1`, [did]);
|
|
359
363
|
return rows[0]?.rev ?? null;
|
package/dist/indexer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"indexer.d.ts","sourceRoot":"","sources":["../src/indexer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"indexer.d.ts","sourceRoot":"","sources":["../src/indexer.ts"],"names":[],"mappings":"AAyJA;;;;;;;GAOG;AACH,iEAAiE;AACjE,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGxD;AAED,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,SAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CA4EjF;AAED,8CAA8C;AAC9C,UAAU,WAAW;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACxB,iBAAiB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC/B,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACzB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAyBD;;;;;;;;;GASG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,CAmDxE"}
|
package/dist/indexer.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { cborDecode } from "./cbor.js";
|
|
2
2
|
import { parseCarFrame } from "./car.js";
|
|
3
|
-
import { insertRecord, deleteRecord, setCursor, setRepoStatus, getRepoRetryInfo, listAllRepoStatuses, getDatabasePort, } from "./database/db.js";
|
|
3
|
+
import { insertRecord, deleteRecord, setCursor, setRepoStatus, getRepoRetryInfo, listAllRepoStatuses, getDatabasePort, updateRepoHandle, } from "./database/db.js";
|
|
4
4
|
import { backfillRepo } from "./backfill.js";
|
|
5
5
|
import { rebuildAllIndexes } from "./database/fts.js";
|
|
6
6
|
import { log, emit, timer } from "./logger.js";
|
|
@@ -260,7 +260,7 @@ export async function startIndexer(opts) {
|
|
|
260
260
|
}
|
|
261
261
|
log(`[indexer] Warmed repo status cache with ${statuses.length} entries`);
|
|
262
262
|
}
|
|
263
|
-
startMemoryDiagnostics()
|
|
263
|
+
// startMemoryDiagnostics()
|
|
264
264
|
let wsUrl = `${relayUrl}/xrpc/com.atproto.sync.subscribeRepos`;
|
|
265
265
|
if (cursor) {
|
|
266
266
|
wsUrl += `?cursor=${cursor}`;
|
|
@@ -297,6 +297,15 @@ export async function startIndexer(opts) {
|
|
|
297
297
|
function processMessage(bytes, collections) {
|
|
298
298
|
const header = cborDecode(bytes, 0);
|
|
299
299
|
const body = cborDecode(bytes, header.offset);
|
|
300
|
+
// Handle identity events (handle changes)
|
|
301
|
+
if (header.value.t === '#identity') {
|
|
302
|
+
const did = body.value.did;
|
|
303
|
+
const handle = body.value.handle;
|
|
304
|
+
if (did && handle && repoStatusCache.has(did)) {
|
|
305
|
+
updateRepoHandle(did, handle).catch(() => { });
|
|
306
|
+
}
|
|
307
|
+
return;
|
|
308
|
+
}
|
|
300
309
|
if (header.value.op !== 1 || header.value.t !== '#commit')
|
|
301
310
|
return;
|
|
302
311
|
if (!body.value.blocks || !body.value.ops)
|
package/dist/main.js
CHANGED
|
@@ -34,14 +34,9 @@ import { parseSessionCookie, getSessionCookieName } from "./oauth/session.js";
|
|
|
34
34
|
import { loadOnLoginHook } from "./hooks.js";
|
|
35
35
|
import { initSetup } from "./setup.js";
|
|
36
36
|
import { initServer } from "./server-init.js";
|
|
37
|
-
function logMemory(phase) {
|
|
38
|
-
const mem = process.memoryUsage();
|
|
39
|
-
log(`[mem] ${phase}: heap=${Math.round(mem.heapUsed / 1024 / 1024)}MB rss=${Math.round(mem.rss / 1024 / 1024)}MB external=${Math.round(mem.external / 1024 / 1024)}MB arrayBuffers=${Math.round(mem.arrayBuffers / 1024 / 1024)}MB`);
|
|
40
|
-
}
|
|
41
37
|
const configPath = process.argv[2] || 'hatk.config.ts';
|
|
42
38
|
const configDir = dirname(resolve(configPath));
|
|
43
39
|
registerHatkResolveHook();
|
|
44
|
-
logMemory('startup');
|
|
45
40
|
// 1. Load config
|
|
46
41
|
const config = await loadConfig(configPath);
|
|
47
42
|
configureRelay(config.relay);
|
|
@@ -82,7 +77,6 @@ if (config.database !== ':memory:') {
|
|
|
82
77
|
const { adapter, searchPort } = await createAdapter(config.databaseEngine);
|
|
83
78
|
setSearchPort(searchPort);
|
|
84
79
|
await initDatabase(adapter, config.database, schemas, ddlStatements);
|
|
85
|
-
logMemory('after-db-init');
|
|
86
80
|
log(`[main] Database initialized (${config.databaseEngine}, ${config.database === ':memory:' ? 'in-memory' : config.database})`);
|
|
87
81
|
// Auto-migrate schema if lexicons changed
|
|
88
82
|
const migrationChanges = await migrateSchema(schemas);
|
|
@@ -138,7 +132,6 @@ if (config.oauth) {
|
|
|
138
132
|
await initOAuth(config.oauth, config.plc, config.relay);
|
|
139
133
|
log(`[main] OAuth initialized (issuer: ${config.oauth.issuer})`);
|
|
140
134
|
}
|
|
141
|
-
logMemory('before-server');
|
|
142
135
|
// 5. Start server immediately (don't wait for backfill)
|
|
143
136
|
const collectionSet = new Set(collections);
|
|
144
137
|
const backfillOpts = {
|
|
@@ -157,7 +150,6 @@ function runBackfillAndRestart() {
|
|
|
157
150
|
})
|
|
158
151
|
.then((recordCount) => {
|
|
159
152
|
if (recordCount > 0 && !process.env.DEV_MODE) {
|
|
160
|
-
logMemory('after-backfill');
|
|
161
153
|
log('[main] Restarting to reclaim memory...');
|
|
162
154
|
process.exit(1);
|
|
163
155
|
}
|
|
@@ -193,7 +185,6 @@ log(` Collections: ${collections.join(', ')}`);
|
|
|
193
185
|
log(` Feeds: ${listFeeds()
|
|
194
186
|
.map((f) => f.name)
|
|
195
187
|
.join(', ')}`);
|
|
196
|
-
logMemory('after-server');
|
|
197
188
|
// 6. Start indexer with cursor
|
|
198
189
|
const cursor = await getCursor('relay');
|
|
199
190
|
startIndexer({
|