@hatk/hatk 0.0.1-alpha.62 → 0.0.1-alpha.63

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.
Files changed (68) hide show
  1. package/dist/backfill.js +6 -6
  2. package/dist/car.d.ts.map +1 -1
  3. package/dist/car.js +2 -2
  4. package/dist/cbor.js +1 -1
  5. package/dist/cli.js +3 -3
  6. package/dist/config.d.ts.map +1 -1
  7. package/dist/database/adapter-factory.js +4 -4
  8. package/dist/database/adapters/duckdb-search.d.ts.map +1 -1
  9. package/dist/database/adapters/duckdb.d.ts.map +1 -1
  10. package/dist/database/adapters/sqlite-search.d.ts.map +1 -1
  11. package/dist/database/adapters/sqlite.d.ts.map +1 -1
  12. package/dist/database/db.d.ts.map +1 -1
  13. package/dist/database/db.js +12 -11
  14. package/dist/database/fts.js +4 -4
  15. package/dist/database/index.js +4 -4
  16. package/dist/database/schema.d.ts.map +1 -1
  17. package/dist/database/schema.js +1 -1
  18. package/dist/dev-entry.js +21 -21
  19. package/dist/feeds.d.ts +4 -4
  20. package/dist/feeds.d.ts.map +1 -1
  21. package/dist/feeds.js +3 -3
  22. package/dist/hooks.d.ts.map +1 -1
  23. package/dist/hooks.js +10 -8
  24. package/dist/hydrate.d.ts.map +1 -1
  25. package/dist/hydrate.js +2 -2
  26. package/dist/indexer.d.ts.map +1 -1
  27. package/dist/indexer.js +16 -12
  28. package/dist/labels.d.ts +1 -1
  29. package/dist/labels.d.ts.map +1 -1
  30. package/dist/labels.js +2 -2
  31. package/dist/lexicon-resolve.d.ts.map +1 -1
  32. package/dist/lexicons/com/atproto/repo/strongRef.json +1 -4
  33. package/dist/main.js +25 -25
  34. package/dist/mst.js +1 -1
  35. package/dist/oauth/db.d.ts.map +1 -1
  36. package/dist/oauth/db.js +10 -2
  37. package/dist/oauth/dpop.js +1 -1
  38. package/dist/oauth/server.d.ts +3 -3
  39. package/dist/oauth/server.d.ts.map +1 -1
  40. package/dist/oauth/server.js +11 -11
  41. package/dist/oauth/session.js +1 -1
  42. package/dist/opengraph.d.ts +1 -1
  43. package/dist/opengraph.d.ts.map +1 -1
  44. package/dist/opengraph.js +2 -2
  45. package/dist/pds-proxy.d.ts.map +1 -1
  46. package/dist/pds-proxy.js +7 -7
  47. package/dist/push.d.ts.map +1 -1
  48. package/dist/push.js +11 -9
  49. package/dist/renderer.d.ts +1 -1
  50. package/dist/renderer.d.ts.map +1 -1
  51. package/dist/renderer.js +1 -1
  52. package/dist/response.js +1 -1
  53. package/dist/scanner.js +1 -1
  54. package/dist/seed.js +1 -1
  55. package/dist/server-init.js +9 -9
  56. package/dist/server.d.ts.map +1 -1
  57. package/dist/server.js +19 -19
  58. package/dist/setup.d.ts +1 -1
  59. package/dist/setup.d.ts.map +1 -1
  60. package/dist/setup.js +2 -2
  61. package/dist/test.js +14 -14
  62. package/dist/views.js +2 -2
  63. package/dist/vite-plugin.js +1 -1
  64. package/dist/xrpc-client.d.ts.map +1 -1
  65. package/dist/xrpc.d.ts.map +1 -1
  66. package/dist/xrpc.js +5 -5
  67. package/package.json +2 -2
  68. package/public/admin.html +37 -20
package/dist/main.js CHANGED
@@ -9,32 +9,32 @@ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExte
9
9
  };
10
10
  import { mkdirSync, writeFileSync, existsSync } from 'node:fs';
11
11
  import { dirname, resolve } from 'node:path';
12
- import { registerHatkResolveHook } from "./resolve-hatk.js";
13
- import { log } from "./logger.js";
14
- import { loadConfig } from "./config.js";
15
- import { loadLexicons, storeLexicons, discoverCollections, buildSchemas } from "./database/schema.js";
16
- import { discoverViews } from "./views.js";
17
- import { initDatabase, getCursor, querySQL, getSqlDialect, getSchemaDump, migrateSchema } from "./database/db.js";
18
- import { createAdapter } from "./database/adapter-factory.js";
19
- import { getDialect } from "./database/dialect.js";
20
- import { setSearchPort } from "./database/fts.js";
21
- import { initFeeds, listFeeds } from "./feeds.js";
22
- import { initXrpc, listXrpc, configureRelay, configureCdn, configureOAuth, callXrpc } from "./xrpc.js";
23
- import { initOpengraph } from "./opengraph.js";
24
- import { initLabels, getLabelDefinitions } from "./labels.js";
25
- import { startIndexer } from "./indexer.js";
26
- import { rebuildAllIndexes } from "./database/fts.js";
27
- import { createHandler, registerCoreHandlers } from "./server.js";
28
- import { serve } from "./adapter.js";
12
+ import { registerHatkResolveHook } from './resolve-hatk.js';
13
+ import { log } from './logger.js';
14
+ import { loadConfig } from './config.js';
15
+ import { loadLexicons, storeLexicons, discoverCollections, buildSchemas } from './database/schema.js';
16
+ import { discoverViews } from './views.js';
17
+ import { initDatabase, getCursor, querySQL, getSqlDialect, getSchemaDump, migrateSchema } from './database/db.js';
18
+ import { createAdapter } from './database/adapter-factory.js';
19
+ import { getDialect } from './database/dialect.js';
20
+ import { setSearchPort } from './database/fts.js';
21
+ import { initFeeds, listFeeds } from './feeds.js';
22
+ import { initXrpc, listXrpc, configureRelay, configureCdn, configureOAuth, callXrpc } from './xrpc.js';
23
+ import { initOpengraph } from './opengraph.js';
24
+ import { initLabels, getLabelDefinitions } from './labels.js';
25
+ import { startIndexer } from './indexer.js';
26
+ import { rebuildAllIndexes } from './database/fts.js';
27
+ import { createHandler, registerCoreHandlers } from './server.js';
28
+ import { serve } from './adapter.js';
29
29
  import { validateLexicons } from '@bigmoves/lexicon';
30
- import { relayHttpUrl } from "./config.js";
31
- import { runBackfill } from "./backfill.js";
32
- import { initOAuth } from "./oauth/server.js";
33
- import { parseSessionCookie, getSessionCookieName } from "./oauth/session.js";
34
- import { loadOnLoginHook } from "./hooks.js";
35
- import { initPush, isPushEnabled } from "./push.js";
36
- import { initSetup } from "./setup.js";
37
- import { initServer } from "./server-init.js";
30
+ import { relayHttpUrl } from './config.js';
31
+ import { runBackfill } from './backfill.js';
32
+ import { initOAuth } from './oauth/server.js';
33
+ import { parseSessionCookie, getSessionCookieName } from './oauth/session.js';
34
+ import { loadOnLoginHook } from './hooks.js';
35
+ import { initPush, isPushEnabled } from './push.js';
36
+ import { initSetup } from './setup.js';
37
+ import { initServer } from './server-init.js';
38
38
  const configPath = process.argv[2] || 'hatk.config.ts';
39
39
  const configDir = dirname(resolve(configPath));
40
40
  registerHatkResolveHook();
package/dist/mst.js CHANGED
@@ -1,4 +1,4 @@
1
- import { cborDecode } from "./cbor.js";
1
+ import { cborDecode } from './cbor.js';
2
2
  /**
3
3
  * Walk an AT Protocol Merkle Search Tree (MST) in key order, yielding every record entry.
4
4
  *
@@ -1 +1 @@
1
- {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/oauth/db.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/oauth/db.ts"],"names":[],"mappings":"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"}
package/dist/oauth/db.js CHANGED
@@ -1,5 +1,5 @@
1
1
  // packages/hatk/src/oauth/db.ts
2
- import { querySQL, runSQL } from "../database/db.js";
2
+ import { querySQL, runSQL } from '../database/db.js';
3
3
  // --- DDL ---
4
4
  export const OAUTH_DDL = `
5
5
  CREATE TABLE IF NOT EXISTS _oauth_keys (
@@ -126,7 +126,15 @@ export async function consumeAuthCode(code) {
126
126
  // --- Sessions ---
127
127
  export async function storeSession(did, data) {
128
128
  await runSQL(`INSERT OR REPLACE INTO _oauth_sessions (did, pds_endpoint, pds_auth_server, access_token, refresh_token, dpop_jkt, token_expires_at, updated_at)
129
- VALUES ($1,$2,$3,$4,$5,$6,$7,CURRENT_TIMESTAMP)`, [did, data.pdsEndpoint, data.pdsAuthServer || null, data.accessToken, data.refreshToken || null, data.dpopJkt, data.tokenExpiresAt || null]);
129
+ VALUES ($1,$2,$3,$4,$5,$6,$7,CURRENT_TIMESTAMP)`, [
130
+ did,
131
+ data.pdsEndpoint,
132
+ data.pdsAuthServer || null,
133
+ data.accessToken,
134
+ data.refreshToken || null,
135
+ data.dpopJkt,
136
+ data.tokenExpiresAt || null,
137
+ ]);
130
138
  }
131
139
  export async function getSession(did) {
132
140
  const rows = await querySQL('SELECT * FROM _oauth_sessions WHERE did = $1', [did]);
@@ -1,5 +1,5 @@
1
1
  // packages/hatk/src/oauth/dpop.ts
2
- import { parseJwt, importPublicKey, verifyEs256, computeJwkThumbprint, sha256, base64UrlEncode, signJwt, importPrivateKey, } from "./crypto.js";
2
+ import { parseJwt, importPublicKey, verifyEs256, computeJwkThumbprint, sha256, base64UrlEncode, signJwt, importPrivateKey, } from './crypto.js';
3
3
  /** Validate a DPoP proof JWT from a client request. */
4
4
  export async function parseDpopProof(proof, method, url, expectedJkt, accessToken) {
5
5
  const { header, payload, signatureInput, signature } = parseJwt(proof);
@@ -42,9 +42,6 @@ export declare function getProtectedResourceMetadata(issuer: string, config: OAu
42
42
  };
43
43
  export declare function getJwks(): {
44
44
  keys: {
45
- kid: string;
46
- use: string;
47
- alg: string;
48
45
  crv?: string;
49
46
  d?: string;
50
47
  dp?: string;
@@ -61,6 +58,9 @@ export declare function getJwks(): {
61
58
  qi?: string;
62
59
  x?: string;
63
60
  y?: string;
61
+ kid: string;
62
+ use: string;
63
+ alg: string;
64
64
  }[];
65
65
  };
66
66
  export declare function getClientMetadata(issuer: string, config: OAuthConfig): {
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/oauth/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/oauth/server.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,13 @@
1
1
  // packages/hatk/src/oauth/server.ts
2
- import { generateKeyPair, importPrivateKey, computeJwkThumbprint, signJwt, parseJwt, verifyEs256, importPublicKey, randomToken, sha256, base64UrlEncode, } from "./crypto.js";
3
- import { parseDpopProof, createDpopProof } from "./dpop.js";
4
- import { initSession } from "./session.js";
5
- import { resolveClient, validateRedirectUri, isLoopbackClient } from "./client.js";
6
- import { discoverAuthServer, resolveHandle, fetchProtectedResourceMetadata, fetchAuthServerMetadata } from "./discovery.js";
7
- import { getServerKey, storeServerKey, storeOAuthRequest, getOAuthRequest, deleteOAuthRequest, storeAuthCode, consumeAuthCode, storeSession, deleteSession, checkAndStoreDpopJti, cleanupExpiredOAuth, storeRefreshToken, getRefreshToken, revokeRefreshToken, } from "./db.js";
8
- import { emit } from "../logger.js";
9
- import { querySQL } from "../database/db.js";
10
- import { fireOnLoginHook } from "../hooks.js";
2
+ import { generateKeyPair, importPrivateKey, computeJwkThumbprint, signJwt, parseJwt, verifyEs256, importPublicKey, randomToken, sha256, base64UrlEncode, } from './crypto.js';
3
+ import { parseDpopProof, createDpopProof } from './dpop.js';
4
+ import { initSession } from './session.js';
5
+ import { resolveClient, validateRedirectUri, isLoopbackClient } from './client.js';
6
+ import { discoverAuthServer, resolveHandle, fetchProtectedResourceMetadata, fetchAuthServerMetadata, } from './discovery.js';
7
+ import { getServerKey, storeServerKey, storeOAuthRequest, getOAuthRequest, deleteOAuthRequest, storeAuthCode, consumeAuthCode, storeSession, deleteSession, checkAndStoreDpopJti, cleanupExpiredOAuth, storeRefreshToken, getRefreshToken, revokeRefreshToken, } from './db.js';
8
+ import { emit } from '../logger.js';
9
+ import { querySQL } from '../database/db.js';
10
+ import { fireOnLoginHook } from '../hooks.js';
11
11
  const SERVER_KEY_KID = 'appview-oauth-key';
12
12
  /**
13
13
  * RFC 6749 §5.2 OAuth token-endpoint error.
@@ -447,7 +447,7 @@ export async function serverLogin(config, handle, options) {
447
447
  // --- OAuth Callback (PDS redirects here) ---
448
448
  export async function handleCallback(config, code, state, iss) {
449
449
  // Find the matching OAuth request by pds_state (unique per PAR)
450
- const { querySQL } = await import("../database/db.js");
450
+ const { querySQL } = await import('../database/db.js');
451
451
  let request = null;
452
452
  if (state) {
453
453
  const rows = await querySQL(`SELECT * FROM _oauth_requests WHERE pds_state = $1 AND expires_at > $2`, [
@@ -536,7 +536,7 @@ export async function handleCallback(config, code, state, iss) {
536
536
  await storeAuthCode(clientCode, request.request_uri);
537
537
  // Update the request with the DID (in case it wasn't set during PAR)
538
538
  if (!request.did && did) {
539
- const { runSQL } = await import("../database/db.js");
539
+ const { runSQL } = await import('../database/db.js');
540
540
  await runSQL('UPDATE _oauth_requests SET did = $1 WHERE request_uri = $2', [did, request.request_uri]);
541
541
  }
542
542
  // Build redirect back to client
@@ -1,6 +1,6 @@
1
1
  // SSR session cookie — AES-GCM encrypted HttpOnly cookie for server-side viewer resolution.
2
2
  // Separate from OAuth protocol flows but uses the same server keypair for key derivation.
3
- import { base64UrlEncode, base64UrlDecode } from "./crypto.js";
3
+ import { base64UrlEncode, base64UrlDecode } from './crypto.js';
4
4
  let _privateJwk;
5
5
  let _cookieName = '__hatk_session';
6
6
  const MAX_AGE = 30 * 24 * 60 * 60; // 30 days in seconds
@@ -29,7 +29,7 @@ export interface OpengraphResult {
29
29
  };
30
30
  }
31
31
  export declare function defineOG(path: string, generate: (ctx: OpengraphContext) => Promise<OpengraphResult>): {
32
- __type: "og";
32
+ __type: 'og';
33
33
  path: string;
34
34
  generate: (ctx: OpengraphContext) => Promise<OpengraphResult>;
35
35
  };
@@ -1 +1 @@
1
- {"version":3,"file":"opengraph.d.ts","sourceRoot":"","sources":["../src/opengraph.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAE5C,4CAA4C;AAC5C,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE;QACL,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;QAC3B,QAAQ,CAAC,EAAE,CAAC,UAAU,GAAG,MAAM,CAAC,EAAE,GAAG,MAAM,CAAA;QAC3C,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KACnB,CAAA;CACF;AAED,uDAAuD;AACvD,MAAM,WAAW,gBAAiB,SAAQ,WAAW;IACnD,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;CACpD;AAED,qDAAqD;AACrD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,UAAU,CAAA;IACnB,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAA;KAAE,CAAA;IAC5D,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAChD;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,gBAAgB,KAAK,OAAO,CAAC,eAAe,CAAC;;;oBAA7C,gBAAgB,KAAK,OAAO,CAAC,eAAe,CAAC;EAEnG;AAkCD,wBAAsB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA0EhE;AAED,kEAAkE;AAClE,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IACvC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,CAAC,GAAG,EAAE,gBAAgB,KAAK,OAAO,CAAC,eAAe,CAAC,CAAA;CAC9D,GAAG,IAAI,CAsDP;AAED,wBAAsB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA+BrF;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAyC3E"}
1
+ {"version":3,"file":"opengraph.d.ts","sourceRoot":"","sources":["../src/opengraph.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAE5C,4CAA4C;AAC5C,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE;QACL,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;QAC3B,QAAQ,CAAC,EAAE,CAAC,UAAU,GAAG,MAAM,CAAC,EAAE,GAAG,MAAM,CAAA;QAC3C,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KACnB,CAAA;CACF;AAED,uDAAuD;AACvD,MAAM,WAAW,gBAAiB,SAAQ,WAAW;IACnD,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;CACpD;AAED,qDAAqD;AACrD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,UAAU,CAAA;IACnB,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAA;KAAE,CAAA;IAC5D,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAChD;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,gBAAgB,KAAK,OAAO,CAAC,eAAe,CAAC;YACjF,IAAI;;oBADgC,gBAAgB,KAAK,OAAO,CAAC,eAAe,CAAC;EAEnG;AAkCD,wBAAsB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA0EhE;AAED,kEAAkE;AAClE,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IACvC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,CAAC,GAAG,EAAE,gBAAgB,KAAK,OAAO,CAAC,eAAe,CAAC,CAAA;CAC9D,GAAG,IAAI,CAsDP;AAED,wBAAsB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA+BrF;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAyC3E"}
package/dist/opengraph.js CHANGED
@@ -8,7 +8,7 @@ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExte
8
8
  };
9
9
  import { resolve } from 'node:path';
10
10
  import { readFileSync, readdirSync } from 'node:fs';
11
- import { log } from "./logger.js";
11
+ import { log } from './logger.js';
12
12
  // Lazy-imported to avoid CJS require() issues in Vite's module runner
13
13
  let _satori = null;
14
14
  let _Resvg = null;
@@ -22,7 +22,7 @@ async function getResvg() {
22
22
  _Resvg = (await import('@resvg/resvg-js')).Resvg;
23
23
  return _Resvg;
24
24
  }
25
- import { buildXrpcContext } from "./xrpc.js";
25
+ import { buildXrpcContext } from './xrpc.js';
26
26
  export function defineOG(path, generate) {
27
27
  return { __type: 'og', path, generate };
28
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"pds-proxy.d.ts","sourceRoot":"","sources":["../src/pds-proxy.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAU9C,qBAAa,UAAW,SAAQ,KAAK;IAE1B,MAAM,EAAE,MAAM;gBAAd,MAAM,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM;CAIlB;AAED,qBAAa,sBAAuB,SAAQ,UAAU;;CAIrD;AAuHD,wBAAsB,eAAe,CACnC,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,EACvB,KAAK,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAC3F,OAAO,CAAC;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAwCzC;AAED,wBAAsB,eAAe,CACnC,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,EACvB,KAAK,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC1C,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAyBlC;AAED,wBAAsB,YAAY,CAChC,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,EACvB,KAAK,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1F,OAAO,CAAC;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAqCzC;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAChC;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAYD,wBAAsB,cAAc,CAClC,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,EACvB,KAAK,EAAE;IAAE,MAAM,EAAE,aAAa,EAAE,CAAA;CAAE,GACjC,OAAO,CAAC;IAAE,OAAO,CAAC,EAAE,iBAAiB,EAAE,CAAA;CAAE,CAAC,CAgE5C;AAED,wBAAsB,aAAa,CACjC,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,EACvB,IAAI,EAAE,UAAU,EAChB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,CAS5B"}
1
+ {"version":3,"file":"pds-proxy.d.ts","sourceRoot":"","sources":["../src/pds-proxy.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAU9C,qBAAa,UAAW,SAAQ,KAAK;IAE1B,MAAM,EAAE,MAAM;IADvB,YACS,MAAM,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,EAGhB;CACF;AAED,qBAAa,sBAAuB,SAAQ,UAAU;IACpD,cAEC;CACF;AAuHD,wBAAsB,eAAe,CACnC,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,EACvB,KAAK,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAC3F,OAAO,CAAC;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAwCzC;AAED,wBAAsB,eAAe,CACnC,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,EACvB,KAAK,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC1C,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAyBlC;AAED,wBAAsB,YAAY,CAChC,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,EACvB,KAAK,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1F,OAAO,CAAC;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAqCzC;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAChC;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAYD,wBAAsB,cAAc,CAClC,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,EACvB,KAAK,EAAE;IAAE,MAAM,EAAE,aAAa,EAAE,CAAA;CAAE,GACjC,OAAO,CAAC;IAAE,OAAO,CAAC,EAAE,iBAAiB,EAAE,CAAA;CAAE,CAAC,CAgE5C;AAED,wBAAsB,aAAa,CACjC,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,EACvB,IAAI,EAAE,UAAU,EAChB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,CAS5B"}
package/dist/pds-proxy.js CHANGED
@@ -1,12 +1,12 @@
1
1
  // Shared PDS proxy functions — used by both HTTP route handlers and XRPC handlers.
2
- import { getSession, getServerKey, deleteSession } from "./oauth/db.js";
3
- import { createDpopProof } from "./oauth/dpop.js";
4
- import { refreshPdsSession } from "./oauth/server.js";
2
+ import { getSession, getServerKey, deleteSession } from './oauth/db.js';
3
+ import { createDpopProof } from './oauth/dpop.js';
4
+ import { refreshPdsSession } from './oauth/server.js';
5
5
  import { validateRecord } from '@bigmoves/lexicon';
6
- import { getLexiconArray } from "./database/schema.js";
7
- import { insertRecord, deleteRecord as dbDeleteRecord } from "./database/db.js";
8
- import { emit } from "./logger.js";
9
- import { runLabelRules } from "./labels.js";
6
+ import { getLexiconArray } from './database/schema.js';
7
+ import { insertRecord, deleteRecord as dbDeleteRecord } from './database/db.js';
8
+ import { emit } from './logger.js';
9
+ import { runLabelRules } from './labels.js';
10
10
  export class ProxyError extends Error {
11
11
  status;
12
12
  constructor(status, message) {
@@ -1 +1 @@
1
- {"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../src/push.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,UAAU,CAAA;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC9C;AAOD,iEAAiE;AACjE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CASpE;AAED,iDAAiD;AACjD,wBAAgB,aAAa,IAAI,OAAO,CAEvC;AAED,4DAA4D;AAC5D,wBAAgB,kBAAkB,IAAI,aAAa,CAElD;AAoJD,4DAA4D;AAC5D,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAO/F;AAED,2BAA2B;AAC3B,wBAAsB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE9D;AAED,6CAA6C;AAC7C,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/E"}
1
+ {"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../src/push.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,UAAU,CAAA;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC9C;AAOD,iEAAiE;AACjE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CASpE;AAED,iDAAiD;AACjD,wBAAgB,aAAa,IAAI,OAAO,CAEvC;AAED,4DAA4D;AAC5D,wBAAgB,kBAAkB,IAAI,aAAa,CAElD;AAsJD,4DAA4D;AAC5D,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAO/F;AAED,2BAA2B;AAC3B,wBAAsB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE9D;AAED,6CAA6C;AAC7C,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/E"}
package/dist/push.js CHANGED
@@ -10,8 +10,8 @@ import { connect } from 'node:http2';
10
10
  import { readFileSync } from 'node:fs';
11
11
  import { createSign } from 'node:crypto';
12
12
  import { resolve } from 'node:path';
13
- import { emit } from "./logger.js";
14
- import { runSQL, querySQL } from "./database/db.js";
13
+ import { emit } from './logger.js';
14
+ import { runSQL, querySQL } from './database/db.js';
15
15
  let pushConfig = null;
16
16
  let apnsKey = null;
17
17
  let cachedJwt = null;
@@ -63,9 +63,7 @@ function getHttp2Session() {
63
63
  if (http2Session && !http2Session.closed && !http2Session.destroyed) {
64
64
  return http2Session;
65
65
  }
66
- const host = pushConfig?.apns.production !== false
67
- ? 'https://api.push.apple.com'
68
- : 'https://api.sandbox.push.apple.com';
66
+ const host = pushConfig?.apns.production !== false ? 'https://api.push.apple.com' : 'https://api.sandbox.push.apple.com';
69
67
  emit('push', 'connecting', { host });
70
68
  http2Session = connect(host, {
71
69
  peerMaxConcurrentStreams: 100,
@@ -86,7 +84,7 @@ function getHttp2Session() {
86
84
  async function send(payload) {
87
85
  if (!pushConfig || !apnsKey)
88
86
  return;
89
- const tokens = await querySQL(`SELECT token, platform FROM _push_tokens WHERE did = $1`, [payload.did]);
87
+ const tokens = (await querySQL(`SELECT token, platform FROM _push_tokens WHERE did = $1`, [payload.did]));
90
88
  if (tokens.length === 0)
91
89
  return;
92
90
  const jwt = getApnsJwt();
@@ -113,7 +111,7 @@ async function sendToApns(token, payload, jwt, original) {
113
111
  const headers = {
114
112
  ':method': 'POST',
115
113
  ':path': `/3/device/${token}`,
116
- 'authorization': `bearer ${jwt}`,
114
+ authorization: `bearer ${jwt}`,
117
115
  'apns-topic': pushConfig.apns.bundleId,
118
116
  'apns-push-type': 'alert',
119
117
  };
@@ -123,8 +121,12 @@ async function sendToApns(token, payload, jwt, original) {
123
121
  return new Promise((resolve) => {
124
122
  const req = session.request(headers);
125
123
  let settled = false;
126
- const done = () => { if (settled)
127
- return; settled = true; resolve(); };
124
+ const done = () => {
125
+ if (settled)
126
+ return;
127
+ settled = true;
128
+ resolve();
129
+ };
128
130
  req.setTimeout(15_000, () => {
129
131
  req.close();
130
132
  emit('push', 'send_error', { did: original.did, error: 'APNs request timed out' });
@@ -7,7 +7,7 @@ export interface RenderResult {
7
7
  }
8
8
  export type RendererHandler = (request: Request, manifest: SSRManifest) => Promise<RenderResult>;
9
9
  export declare function defineRenderer(handler: RendererHandler): {
10
- __type: "renderer";
10
+ __type: 'renderer';
11
11
  handler: RendererHandler;
12
12
  };
13
13
  export declare function registerRenderer(handler: RendererHandler): void;
@@ -1 +1 @@
1
- {"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IAC1B,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CACpC;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,KAAK,OAAO,CAAC,YAAY,CAAC,CAAA;AAKhG,wBAAgB,cAAc,CAAC,OAAO,EAAE,eAAe;;;EAEtD;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAG/D;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI,CAE1D;AAED,wBAAgB,WAAW,IAAI,eAAe,GAAG,IAAI,CAEpD;AAED,wBAAgB,cAAc,IAAI,WAAW,GAAG,IAAI,CAEnD;AAED;;;;;;;;GAQG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAsBnH"}
1
+ {"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IAC1B,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CACpC;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,KAAK,OAAO,CAAC,YAAY,CAAC,CAAA;AAKhG,wBAAgB,cAAc,CAAC,OAAO,EAAE,eAAe;YACpC,UAAU;;EAC5B;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAG/D;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI,CAE1D;AAED,wBAAgB,WAAW,IAAI,eAAe,GAAG,IAAI,CAEpD;AAED,wBAAgB,cAAc,IAAI,WAAW,GAAG,IAAI,CAEnD;AAED;;;;;;;;GAQG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAsBnH"}
package/dist/renderer.js CHANGED
@@ -1,4 +1,4 @@
1
- import { log } from "./logger.js";
1
+ import { log } from './logger.js';
2
2
  let renderer = null;
3
3
  let ssrManifest = null;
4
4
  export function defineRenderer(handler) {
package/dist/response.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { gzipSync } from 'node:zlib';
2
- import { normalizeValue } from "./database/db.js";
2
+ import { normalizeValue } from './database/db.js';
3
3
  /**
4
4
  * Create a JSON Response with optional gzip compression.
5
5
  * Mirrors the old jsonResponse/sendJson behavior.
package/dist/scanner.js CHANGED
@@ -8,7 +8,7 @@ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExte
8
8
  };
9
9
  import { resolve, relative } from 'node:path';
10
10
  import { readdirSync, statSync, existsSync } from 'node:fs';
11
- import { log } from "./logger.js";
11
+ import { log } from './logger.js';
12
12
  /** Recursively collect .ts/.js files, skipping _ prefixed and dot files */
13
13
  function walkDir(dir) {
14
14
  const results = [];
package/dist/seed.js CHANGED
@@ -23,7 +23,7 @@
23
23
  * )
24
24
  * ```
25
25
  */
26
- import { loadLexicons } from "./database/schema.js";
26
+ import { loadLexicons } from './database/schema.js';
27
27
  import { validateRecord } from '@bigmoves/lexicon';
28
28
  import { resolve } from 'node:path';
29
29
  import { readFileSync } from 'node:fs';
@@ -1,13 +1,13 @@
1
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";
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
11
  /**
12
12
  * Scan the server/ directory and register all discovered handlers.
13
13
  * Setup scripts run immediately (in sorted order).
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AA0DA,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,CA00B5F;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"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AA0DA,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,CA02B5F;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"}
package/dist/server.js CHANGED
@@ -1,21 +1,21 @@
1
1
  import { existsSync } from 'node:fs';
2
2
  import { readFile } from 'node:fs/promises';
3
3
  import { join, extname } from 'node:path';
4
- import { queryRecords, getRecordByUri, searchRecords, getSchema, reshapeRow, setRepoStatus, getRepoStatus, getRepoRetryInfo, queryLabelsForUris, insertLabels, searchAccounts, listReposPaginated, getCollectionCounts, getRepoStatusCounts, getDatabaseSize, deleteLabels, getRecentRecords, listActiveRepoDids, removeRepo, getRepoHandle, getPreferences, putPreference, insertReport, queryReports, resolveReport, getOpenReportCount, } from "./database/db.js";
5
- import { executeFeed, listFeeds } from "./feeds.js";
6
- import { executeXrpc, InvalidRequestError, NotFoundError, registerCoreXrpcHandler } from "./xrpc.js";
7
- import { resolveRecords } from "./hydrate.js";
8
- import { handleOpengraphRequest, buildOgMeta } from "./opengraph.js";
9
- import { getLabelDefinitions, rescanLabels } from "./labels.js";
10
- import { triggerAutoBackfill } from "./indexer.js";
11
- import { emit, timer } from "./logger.js";
12
- import { getAuthServerMetadata, getProtectedResourceMetadata, getJwks, getClientMetadata, handlePar, buildAuthorizeRedirect, handleCallback, serverLogin, handleToken, authenticate, OAuthError, } from "./oauth/server.js";
13
- import { createSessionCookie, sessionCookieHeader, clearSessionCookieHeader, parseSessionCookie, } from "./oauth/session.js";
14
- import { getOAuthRequest } from "./oauth/db.js";
15
- import { pdsCreateRecord, pdsDeleteRecord, pdsPutRecord, pdsApplyWrites, pdsUploadBlob, ProxyError, ScopeMissingProxyError, } from "./pds-proxy.js";
16
- import { json, jsonError, cors, withCors, file, notFound } from "./response.js";
17
- import { serve } from "./adapter.js";
18
- import { renderPage } from "./renderer.js";
4
+ import { queryRecords, getRecordByUri, searchRecords, getSchema, reshapeRow, setRepoStatus, getRepoStatus, getRepoRetryInfo, queryLabelsForUris, insertLabels, searchAccounts, listReposPaginated, getCollectionCounts, getRepoStatusCounts, getDatabaseSize, deleteLabels, getRecentRecords, listActiveRepoDids, removeRepo, getRepoHandle, getPreferences, putPreference, insertReport, queryReports, resolveReport, getOpenReportCount, } from './database/db.js';
5
+ import { executeFeed, listFeeds } from './feeds.js';
6
+ import { executeXrpc, InvalidRequestError, NotFoundError, registerCoreXrpcHandler } from './xrpc.js';
7
+ import { resolveRecords } from './hydrate.js';
8
+ import { handleOpengraphRequest, buildOgMeta } from './opengraph.js';
9
+ import { getLabelDefinitions, rescanLabels } from './labels.js';
10
+ import { triggerAutoBackfill } from './indexer.js';
11
+ import { emit, timer } from './logger.js';
12
+ import { getAuthServerMetadata, getProtectedResourceMetadata, getJwks, getClientMetadata, handlePar, buildAuthorizeRedirect, handleCallback, serverLogin, handleToken, authenticate, OAuthError, } from './oauth/server.js';
13
+ import { createSessionCookie, sessionCookieHeader, clearSessionCookieHeader, parseSessionCookie, } from './oauth/session.js';
14
+ import { getOAuthRequest } from './oauth/db.js';
15
+ import { pdsCreateRecord, pdsDeleteRecord, pdsPutRecord, pdsApplyWrites, pdsUploadBlob, ProxyError, ScopeMissingProxyError, } from './pds-proxy.js';
16
+ import { json, jsonError, cors, withCors, file, notFound } from './response.js';
17
+ import { serve } from './adapter.js';
18
+ import { renderPage } from './renderer.js';
19
19
  function scopeMissingResponse(acceptEncoding, handle) {
20
20
  const res = withCors(json({ error: 'ScopeMissingError', ...(handle ? { handle } : {}) }, 401, acceptEncoding));
21
21
  res.headers.append('Set-Cookie', clearSessionCookieHeader());
@@ -168,7 +168,7 @@ export function registerCoreHandlers(collections, oauth) {
168
168
  const platform = body.platform || 'apns';
169
169
  if (!['apns', 'fcm', 'web'].includes(platform))
170
170
  throw new InvalidRequestError('Invalid platform');
171
- const { registerToken } = await import("./push.js");
171
+ const { registerToken } = await import('./push.js');
172
172
  await registerToken(viewer.did, body.token, platform);
173
173
  return { success: true };
174
174
  });
@@ -178,7 +178,7 @@ export function registerCoreHandlers(collections, oauth) {
178
178
  const body = input;
179
179
  if (!body.token || typeof body.token !== 'string')
180
180
  throw new InvalidRequestError('Missing or invalid token');
181
- const { unregisterToken } = await import("./push.js");
181
+ const { unregisterToken } = await import('./push.js');
182
182
  await unregisterToken(viewer.did, body.token);
183
183
  return { success: true };
184
184
  });
@@ -743,7 +743,7 @@ export function createHandler(config) {
743
743
  const did = url.searchParams.get('did');
744
744
  if (!did)
745
745
  return withCors(jsonError(400, 'did required', acceptEncoding));
746
- const handle = await getRepoHandle(did) ?? did;
746
+ const handle = (await getRepoHandle(did)) ?? did;
747
747
  const cookieValue = await createSessionCookie({ did, handle });
748
748
  const secure = url.protocol === 'https:';
749
749
  return new Response(JSON.stringify({ ok: true }), {
@@ -817,7 +817,7 @@ export function createHandler(config) {
817
817
  return withCors(jsonError(400, 'Missing code', acceptEncoding));
818
818
  const result = await handleCallback(oauth, code, state, iss);
819
819
  const isSecure = requestOrigin.startsWith('https');
820
- const handle = await getRepoHandle(result.did) ?? result.did;
820
+ const handle = (await getRepoHandle(result.did)) ?? result.did;
821
821
  const cookie = await createSessionCookie({ did: result.did, handle });
822
822
  // Server-initiated login stores redirectUri as '/' — redirect cleanly without code/iss params
823
823
  const redirectTo = result.clientRedirectUri.startsWith('/?code=') ? '/' : result.clientRedirectUri;
package/dist/setup.d.ts CHANGED
@@ -16,7 +16,7 @@ export interface SetupContext {
16
16
  }
17
17
  export type SetupHandler = (ctx: SetupContext) => Promise<void>;
18
18
  export declare function defineSetup(handler: SetupHandler): {
19
- __type: "setup";
19
+ __type: 'setup';
20
20
  handler: SetupHandler;
21
21
  };
22
22
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAEvD,8DAA8D;AAC9D,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE;QACF,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;QACtD,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;QACnD,QAAQ,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,GAAG,EAAE,CAAA;SAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;QAC9E,kBAAkB,EAAE,CAClB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,CAAC,EAAE;YAAE,UAAU,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;YAAC,SAAS,CAAC,EAAE,MAAM,CAAA;SAAE,KAChE,OAAO,CAAC,YAAY,CAAC,CAAA;KAC3B,CAAA;CACF;AAED,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;AAE/D,wBAAgB,WAAW,CAAC,OAAO,EAAE,YAAY;;;EAEhD;AAkBD;;;;;;;;;GASG;AACH,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqB/D;AAED,sDAAsD;AACtD,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAOxF"}
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAEvD,8DAA8D;AAC9D,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE;QACF,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;QACtD,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;QACnD,QAAQ,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,GAAG,EAAE,CAAA;SAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;QAC9E,kBAAkB,EAAE,CAClB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,CAAC,EAAE;YAAE,UAAU,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;YAAC,SAAS,CAAC,EAAE,MAAM,CAAA;SAAE,KAChE,OAAO,CAAC,YAAY,CAAC,CAAA;KAC3B,CAAA;CACF;AAED,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;AAE/D,wBAAgB,WAAW,CAAC,OAAO,EAAE,YAAY;YAC9B,OAAO;;EACzB;AAkBD;;;;;;;;;GASG;AACH,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqB/D;AAED,sDAAsD;AACtD,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAOxF"}
package/dist/setup.js CHANGED
@@ -32,8 +32,8 @@ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExte
32
32
  */
33
33
  import { resolve, relative } from 'node:path';
34
34
  import { readdirSync, statSync } from 'node:fs';
35
- import { log } from "./logger.js";
36
- import { querySQL, runSQL, runBatch, createBulkInserterSQL } from "./database/db.js";
35
+ import { log } from './logger.js';
36
+ import { querySQL, runSQL, runBatch, createBulkInserterSQL } from './database/db.js';
37
37
  export function defineSetup(handler) {
38
38
  return { __type: 'setup', handler };
39
39
  }
package/dist/test.js CHANGED
@@ -1,20 +1,20 @@
1
1
  import { resolve, dirname } from 'node:path';
2
2
  import { readdirSync, readFileSync } from 'node:fs';
3
- import { registerHatkResolveHook } from "./resolve-hatk.js";
3
+ import { registerHatkResolveHook } from './resolve-hatk.js';
4
4
  import YAML from 'yaml';
5
- import { loadConfig } from "./config.js";
6
- import { loadLexicons, storeLexicons, discoverCollections, generateTableSchema, generateCreateTableSQL, } from "./database/schema.js";
7
- import { initDatabase, querySQL, runSQL, insertRecord, closeDatabase } from "./database/db.js";
8
- import { createAdapter } from "./database/adapter-factory.js";
9
- import { SQLITE_DIALECT } from "./database/dialect.js";
10
- import { setSearchPort } from "./database/fts.js";
11
- import { executeFeed, listFeeds, createPaginate } from "./feeds.js";
12
- import { executeXrpc, listXrpc, configureRelay, configureCdn } from "./xrpc.js";
13
- import { initServer } from "./server-init.js";
14
- import { discoverViews } from "./views.js";
5
+ import { loadConfig } from './config.js';
6
+ import { loadLexicons, storeLexicons, discoverCollections, generateTableSchema, generateCreateTableSQL, } from './database/schema.js';
7
+ import { initDatabase, querySQL, runSQL, insertRecord, closeDatabase } from './database/db.js';
8
+ import { createAdapter } from './database/adapter-factory.js';
9
+ import { SQLITE_DIALECT } from './database/dialect.js';
10
+ import { setSearchPort } from './database/fts.js';
11
+ import { executeFeed, listFeeds, createPaginate } from './feeds.js';
12
+ import { executeXrpc, listXrpc, configureRelay, configureCdn } from './xrpc.js';
13
+ import { initServer } from './server-init.js';
14
+ import { discoverViews } from './views.js';
15
15
  import { validateLexicons } from '@bigmoves/lexicon';
16
- import { packCursor, unpackCursor, isTakendownDid, filterTakendownDids } from "./database/db.js";
17
- import { seed as createSeedHelpers } from "./seed.js";
16
+ import { packCursor, unpackCursor, isTakendownDid, filterTakendownDids } from './database/db.js';
17
+ import { seed as createSeedHelpers } from './seed.js';
18
18
  /**
19
19
  * Find the project's hatk.config.ts by walking up from cwd.
20
20
  * Returns the resolved config path, or falls back to 'hatk.config.ts'.
@@ -225,7 +225,7 @@ function interpolateHelpers(value) {
225
225
  export async function startTestServer() {
226
226
  const ctx = await createTestContext();
227
227
  // Import startServer — it creates the HTTP server and returns it
228
- const { startServer } = await import("./server.js");
228
+ const { startServer } = await import('./server.js');
229
229
  // Start server on port 0 (random available port)
230
230
  const resolveViewer = (request) => {
231
231
  const did = request.headers.get('x-test-viewer');
package/dist/views.js CHANGED
@@ -2,8 +2,8 @@
2
2
  // Supports two patterns:
3
3
  // 1. Inline views: defined in the record lexicon with ref: "#main" (e.g., playView)
4
4
  // 2. Defs views: defined in a defs lexicon, associated by naming convention (e.g., profileView)
5
- import { log } from "./logger.js";
6
- import { getAllLexicons, getLexicon } from "./database/schema.js";
5
+ import { log } from './logger.js';
6
+ import { getAllLexicons, getLexicon } from './database/schema.js';
7
7
  // --- Registry ---
8
8
  /** All views keyed by full NSID (e.g., "fm.teal.alpha.feed.play#playView") */
9
9
  const views = new Map();
@@ -2,7 +2,7 @@ import { createRunnableDevEnvironment } from 'vite';
2
2
  import { resolve } from 'node:path';
3
3
  import { existsSync } from 'node:fs';
4
4
  import { execSync } from 'node:child_process';
5
- import { isHatkRoute } from "./adapter.js";
5
+ import { isHatkRoute } from './adapter.js';
6
6
  /** Boot the local PDS if a docker-compose.yml exists. */
7
7
  async function ensurePds() {
8
8
  if (!existsSync(resolve('docker-compose.yml')))
@@ -1 +1 @@
1
- {"version":3,"file":"xrpc-client.d.ts","sourceRoot":"","sources":["../src/xrpc-client.ts"],"names":[],"mappings":"AAGA,KAAK,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS;IAAE,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAClF,KAAK,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS;IAAE,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,GAAG,CAAC,GAAG,CAAC,CAAA;AAE7D,UAAU,aAAa;IACrB,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;CAChC;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,aAAkB;UAuBzD,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,QAC9B,CAAC,WACE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACrD,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAUpB,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,QAC7B,CAAC,UACC,CAAC,CAAC,CAAC,CAAC,SAAS;QAAE,KAAK,EAAE,MAAM,CAAC,CAAA;KAAE,GAAG,CAAC,GAAG,SAAS,WAC9C,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAC3B,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;WAclB,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,QAC/B,CAAC,QACD,IAAI,GAAG,WAAW,eACX,MAAM,GAClB,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EAalC"}
1
+ {"version":3,"file":"xrpc-client.d.ts","sourceRoot":"","sources":["../src/xrpc-client.ts"],"names":[],"mappings":"AAGA,KAAK,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS;IAAE,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAClF,KAAK,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS;IAAE,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,GAAG,CAAC,GAAG,CAAC,CAAA;AAE7D,UAAU,aAAa;IACrB,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;CAChC;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,aAAkB;IAuB/D,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,QAC9B,CAAC,WACE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACrD,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAUzB,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,QAC7B,CAAC,UACC,CAAC,CAAC,CAAC,CAAC,SAAS;QAAE,KAAK,EAAE,MAAM,CAAC,CAAA;KAAE,GAAG,CAAC,GAAG,SAAS,WAC9C,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAC3B,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAczB,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,QAC/B,CAAC,QACD,IAAI,GAAG,WAAW,eACX,MAAM,GAClB,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EAalC"}