@atproto/bsync 0.0.0 → 0.0.2-next.0

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 (97) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/LICENSE.txt +1 -1
  3. package/buf.gen.yaml +2 -3
  4. package/dist/client.d.ts +2 -1
  5. package/dist/client.d.ts.map +1 -0
  6. package/dist/client.js +17 -0
  7. package/dist/client.js.map +1 -0
  8. package/dist/config.d.ts +1 -0
  9. package/dist/config.d.ts.map +1 -0
  10. package/dist/config.js +53 -0
  11. package/dist/config.js.map +1 -0
  12. package/dist/context.d.ts +5 -1
  13. package/dist/context.d.ts.map +1 -0
  14. package/dist/context.js +54 -0
  15. package/dist/context.js.map +1 -0
  16. package/dist/db/index.d.ts +1 -0
  17. package/dist/db/index.d.ts.map +1 -0
  18. package/dist/db/index.js +216 -0
  19. package/dist/db/index.js.map +1 -0
  20. package/dist/db/migrations/20240108T220751294Z-init.d.ts +1 -0
  21. package/dist/db/migrations/20240108T220751294Z-init.d.ts.map +1 -0
  22. package/dist/db/migrations/20240108T220751294Z-init.js +28 -0
  23. package/dist/db/migrations/20240108T220751294Z-init.js.map +1 -0
  24. package/dist/db/migrations/index.d.ts +1 -0
  25. package/dist/db/migrations/index.d.ts.map +1 -0
  26. package/dist/db/migrations/index.js +31 -0
  27. package/dist/db/migrations/index.js.map +1 -0
  28. package/dist/db/migrations/provider.d.ts +1 -0
  29. package/dist/db/migrations/provider.d.ts.map +1 -0
  30. package/dist/db/migrations/provider.js +18 -0
  31. package/dist/db/migrations/provider.js.map +1 -0
  32. package/dist/db/schema/index.d.ts +1 -0
  33. package/dist/db/schema/index.d.ts.map +1 -0
  34. package/dist/db/schema/index.js +3 -0
  35. package/dist/db/schema/index.js.map +1 -0
  36. package/dist/db/schema/mute_item.d.ts +1 -0
  37. package/dist/db/schema/mute_item.d.ts.map +1 -0
  38. package/dist/db/schema/mute_item.js +5 -0
  39. package/dist/db/schema/mute_item.js.map +1 -0
  40. package/dist/db/schema/mute_op.d.ts +2 -1
  41. package/dist/db/schema/mute_op.d.ts.map +1 -0
  42. package/dist/db/schema/mute_op.js +6 -0
  43. package/dist/db/schema/mute_op.js.map +1 -0
  44. package/dist/db/types.d.ts +1 -0
  45. package/dist/db/types.d.ts.map +1 -0
  46. package/dist/db/types.js +3 -0
  47. package/dist/db/types.js.map +1 -0
  48. package/dist/index.d.ts +3 -1
  49. package/dist/index.d.ts.map +1 -0
  50. package/dist/index.js +130 -76448
  51. package/dist/index.js.map +1 -7
  52. package/dist/logger.d.ts +1 -0
  53. package/dist/logger.d.ts.map +1 -0
  54. package/dist/logger.js +25 -0
  55. package/dist/logger.js.map +1 -0
  56. package/dist/{gen → proto}/bsync_connect.d.ts +18 -1
  57. package/dist/proto/bsync_connect.d.ts.map +1 -0
  58. package/dist/proto/bsync_connect.js +49 -0
  59. package/dist/proto/bsync_connect.js.map +1 -0
  60. package/dist/{gen → proto}/bsync_pb.d.ts +75 -0
  61. package/dist/proto/bsync_pb.d.ts.map +1 -0
  62. package/dist/proto/bsync_pb.js +461 -0
  63. package/dist/proto/bsync_pb.js.map +1 -0
  64. package/dist/routes/add-mute-operation.d.ts +2 -1
  65. package/dist/routes/add-mute-operation.d.ts.map +1 -0
  66. package/dist/routes/add-mute-operation.js +136 -0
  67. package/dist/routes/add-mute-operation.js.map +1 -0
  68. package/dist/routes/auth.d.ts +1 -0
  69. package/dist/routes/auth.d.ts.map +1 -0
  70. package/dist/routes/auth.js +17 -0
  71. package/dist/routes/auth.js.map +1 -0
  72. package/dist/routes/index.d.ts +1 -0
  73. package/dist/routes/index.d.ts.map +1 -0
  74. package/dist/routes/index.js +21 -0
  75. package/dist/routes/index.js.map +1 -0
  76. package/dist/routes/scan-mute-operations.d.ts +2 -1
  77. package/dist/routes/scan-mute-operations.d.ts.map +1 -0
  78. package/dist/routes/scan-mute-operations.js +80 -0
  79. package/dist/routes/scan-mute-operations.js.map +1 -0
  80. package/jest.config.js +3 -3
  81. package/package.json +9 -9
  82. package/src/client.ts +1 -1
  83. package/src/context.ts +5 -1
  84. package/src/db/index.ts +33 -31
  85. package/src/db/schema/mute_op.ts +1 -1
  86. package/src/index.ts +17 -2
  87. package/src/{gen → proto}/bsync_connect.ts +1 -1
  88. package/src/routes/add-mute-operation.ts +2 -2
  89. package/src/routes/index.ts +1 -1
  90. package/src/routes/scan-mute-operations.ts +22 -3
  91. package/tests/mutes.test.ts +1 -1
  92. package/tsconfig.build.json +6 -2
  93. package/tsconfig.json +3 -10
  94. package/tsconfig.tests.json +7 -0
  95. package/babel.config.js +0 -3
  96. package/build.js +0 -18
  97. /package/src/{gen → proto}/bsync_pb.ts +0 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,16 @@
1
+ # @atproto/bsync
2
+
3
+ ## 0.0.2-next.0
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies []:
8
+ - @atproto/common@0.3.4-next.0
9
+ - @atproto/syntax@0.2.1-next.0
10
+
11
+ ## 0.0.1
12
+
13
+ ### Patch Changes
14
+
15
+ - Updated dependencies [[`0c815b964`](https://github.com/bluesky-social/atproto/commit/0c815b964c030aa0f277c40bf9786f130dc320f4)]:
16
+ - @atproto/syntax@0.2.0
package/LICENSE.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  Dual MIT/Apache-2.0 License
2
2
 
3
- Copyright (c) 2022-2023 Bluesky PBC, and Contributors
3
+ Copyright (c) 2022-2024 Bluesky PBC, and Contributors
4
4
 
5
5
  Except as otherwise noted in individual files, this software is licensed under the MIT license (<http://opensource.org/licenses/MIT>), or the Apache License, Version 2.0 (<http://www.apache.org/licenses/LICENSE-2.0>).
6
6
 
package/buf.gen.yaml CHANGED
@@ -4,10 +4,9 @@ plugins:
4
4
  opt:
5
5
  - target=ts
6
6
  - import_extension=.ts
7
-
8
- out: src/gen
7
+ out: src/proto
9
8
  - plugin: connect-es
10
9
  opt:
11
10
  - target=ts
12
11
  - import_extension=.ts
13
- out: src/gen
12
+ out: src/proto
package/dist/client.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { Interceptor, PromiseClient } from '@connectrpc/connect';
2
2
  import { ConnectTransportOptions } from '@connectrpc/connect-node';
3
- import { Service } from './gen/bsync_connect';
3
+ import { Service } from './proto/bsync_connect';
4
4
  export type BsyncClient = PromiseClient<typeof Service>;
5
5
  export declare const createClient: (opts: ConnectTransportOptions) => BsyncClient;
6
6
  export declare const authWithApiKey: (apiKey: string) => Interceptor;
7
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,aAAa,EAEd,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,uBAAuB,EAExB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAE/C,MAAM,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO,OAAO,CAAC,CAAA;AAEvD,eAAO,MAAM,YAAY,SAAU,uBAAuB,KAAG,WAG5D,CAAA;AAED,eAAO,MAAM,cAAc,WAChB,MAAM,KAAG,WAKjB,CAAA"}
package/dist/client.js ADDED
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.authWithApiKey = exports.createClient = void 0;
4
+ const connect_1 = require("@connectrpc/connect");
5
+ const connect_node_1 = require("@connectrpc/connect-node");
6
+ const bsync_connect_1 = require("./proto/bsync_connect");
7
+ const createClient = (opts) => {
8
+ const transport = (0, connect_node_1.createConnectTransport)(opts);
9
+ return (0, connect_1.createPromiseClient)(bsync_connect_1.Service, transport);
10
+ };
11
+ exports.createClient = createClient;
12
+ const authWithApiKey = (apiKey) => (next) => (req) => {
13
+ req.header.set('authorization', `Bearer ${apiKey}`);
14
+ return next(req);
15
+ };
16
+ exports.authWithApiKey = authWithApiKey;
17
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":";;;AAAA,iDAI4B;AAC5B,2DAGiC;AACjC,yDAA+C;AAIxC,MAAM,YAAY,GAAG,CAAC,IAA6B,EAAe,EAAE;IACzE,MAAM,SAAS,GAAG,IAAA,qCAAsB,EAAC,IAAI,CAAC,CAAA;IAC9C,OAAO,IAAA,6BAAmB,EAAC,uBAAO,EAAE,SAAS,CAAC,CAAA;AAChD,CAAC,CAAA;AAHY,QAAA,YAAY,gBAGxB;AAEM,MAAM,cAAc,GACzB,CAAC,MAAc,EAAe,EAAE,CAChC,CAAC,IAAI,EAAE,EAAE,CACT,CAAC,GAAG,EAAE,EAAE;IACN,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,MAAM,EAAE,CAAC,CAAA;IACnD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAA;AAClB,CAAC,CAAA;AANU,QAAA,cAAc,kBAMxB"}
package/dist/config.d.ts CHANGED
@@ -34,3 +34,4 @@ export type ServerEnvironment = {
34
34
  apiKeys: string[];
35
35
  };
36
36
  export {};
37
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,QAAQ,QAAS,iBAAiB,KAAG,YA2BjD,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,aAAa,CAAA;IACtB,EAAE,EAAE,cAAc,CAAA;IAClB,IAAI,EAAE,UAAU,CAAA;CACjB,CAAA;AAED,KAAK,aAAa,GAAG;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,iBAAiB,EAAE,MAAM,CAAA;CAC1B,CAAA;AAED,KAAK,cAAc,GAAG;IACpB,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,KAAK,UAAU,GAAG;IAChB,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CACrB,CAAA;AAED,eAAO,MAAM,OAAO,QAAO,iBAgB1B,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAE9B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAE1B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAA;IAEnB,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB,CAAA"}
package/dist/config.js ADDED
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.readEnv = exports.envToCfg = void 0;
7
+ const node_assert_1 = __importDefault(require("node:assert"));
8
+ const common_1 = require("@atproto/common");
9
+ const envToCfg = (env) => {
10
+ const serviceCfg = {
11
+ port: env.port ?? 2585,
12
+ version: env.version ?? 'unknown',
13
+ longPollTimeoutMs: env.longPollTimeoutMs ?? 10000,
14
+ };
15
+ (0, node_assert_1.default)(env.dbUrl, 'missing postgres url');
16
+ const dbCfg = {
17
+ url: env.dbUrl,
18
+ schema: env.dbSchema,
19
+ poolSize: env.dbPoolSize,
20
+ poolMaxUses: env.dbPoolMaxUses,
21
+ poolIdleTimeoutMs: env.dbPoolIdleTimeoutMs,
22
+ migrate: env.dbMigrate,
23
+ };
24
+ (0, node_assert_1.default)(env.apiKeys.length > 0, 'missing api keys');
25
+ const authCfg = {
26
+ apiKeys: new Set(env.apiKeys),
27
+ };
28
+ return {
29
+ service: serviceCfg,
30
+ db: dbCfg,
31
+ auth: authCfg,
32
+ };
33
+ };
34
+ exports.envToCfg = envToCfg;
35
+ const readEnv = () => {
36
+ return {
37
+ // service
38
+ port: (0, common_1.envInt)('BSYNC_PORT'),
39
+ version: (0, common_1.envStr)('BSYNC_VERSION'),
40
+ longPollTimeoutMs: (0, common_1.envInt)('BSYNC_LONG_POLL_TIMEOUT_MS'),
41
+ // database
42
+ dbUrl: (0, common_1.envStr)('BSYNC_DB_POSTGRES_URL'),
43
+ dbSchema: (0, common_1.envStr)('BSYNC_DB_POSTGRES_SCHEMA'),
44
+ dbPoolSize: (0, common_1.envInt)('BSYNC_DB_POOL_SIZE'),
45
+ dbPoolMaxUses: (0, common_1.envInt)('BSYNC_DB_POOL_MAX_USES'),
46
+ dbPoolIdleTimeoutMs: (0, common_1.envInt)('BSYNC_DB_POOL_IDLE_TIMEOUT_MS'),
47
+ dbMigrate: (0, common_1.envBool)('BSYNC_DB_MIGRATE'),
48
+ // secrets
49
+ apiKeys: (0, common_1.envList)('BSYNC_API_KEYS'),
50
+ };
51
+ };
52
+ exports.readEnv = readEnv;
53
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;;;;AAAA,8DAAgC;AAChC,4CAAkE;AAE3D,MAAM,QAAQ,GAAG,CAAC,GAAsB,EAAgB,EAAE;IAC/D,MAAM,UAAU,GAA4B;QAC1C,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI;QACtB,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,SAAS;QACjC,iBAAiB,EAAE,GAAG,CAAC,iBAAiB,IAAI,KAAK;KAClD,CAAA;IAED,IAAA,qBAAM,EAAC,GAAG,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAA;IACzC,MAAM,KAAK,GAAuB;QAChC,GAAG,EAAE,GAAG,CAAC,KAAK;QACd,MAAM,EAAE,GAAG,CAAC,QAAQ;QACpB,QAAQ,EAAE,GAAG,CAAC,UAAU;QACxB,WAAW,EAAE,GAAG,CAAC,aAAa;QAC9B,iBAAiB,EAAE,GAAG,CAAC,mBAAmB;QAC1C,OAAO,EAAE,GAAG,CAAC,SAAS;KACvB,CAAA;IAED,IAAA,qBAAM,EAAC,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,kBAAkB,CAAC,CAAA;IAClD,MAAM,OAAO,GAAyB;QACpC,OAAO,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC;KAC9B,CAAA;IAED,OAAO;QACL,OAAO,EAAE,UAAU;QACnB,EAAE,EAAE,KAAK;QACT,IAAI,EAAE,OAAO;KACd,CAAA;AACH,CAAC,CAAA;AA3BY,QAAA,QAAQ,YA2BpB;AA2BM,MAAM,OAAO,GAAG,GAAsB,EAAE;IAC7C,OAAO;QACL,UAAU;QACV,IAAI,EAAE,IAAA,eAAM,EAAC,YAAY,CAAC;QAC1B,OAAO,EAAE,IAAA,eAAM,EAAC,eAAe,CAAC;QAChC,iBAAiB,EAAE,IAAA,eAAM,EAAC,4BAA4B,CAAC;QACvD,WAAW;QACX,KAAK,EAAE,IAAA,eAAM,EAAC,uBAAuB,CAAC;QACtC,QAAQ,EAAE,IAAA,eAAM,EAAC,0BAA0B,CAAC;QAC5C,UAAU,EAAE,IAAA,eAAM,EAAC,oBAAoB,CAAC;QACxC,aAAa,EAAE,IAAA,eAAM,EAAC,wBAAwB,CAAC;QAC/C,mBAAmB,EAAE,IAAA,eAAM,EAAC,+BAA+B,CAAC;QAC5D,SAAS,EAAE,IAAA,gBAAO,EAAC,kBAAkB,CAAC;QACtC,UAAU;QACV,OAAO,EAAE,IAAA,gBAAO,EAAC,gBAAgB,CAAC;KACnC,CAAA;AACH,CAAC,CAAA;AAhBY,QAAA,OAAO,WAgBnB"}
package/dist/context.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ /// <reference types="node" />
1
2
  import TypedEventEmitter from 'typed-emitter';
2
3
  import { ServerConfig } from './config';
3
4
  import Database from './db';
@@ -5,15 +6,18 @@ import { createMuteOpChannel } from './db/schema/mute_op';
5
6
  export type AppContextOptions = {
6
7
  db: Database;
7
8
  cfg: ServerConfig;
9
+ shutdown: AbortSignal;
8
10
  };
9
11
  export declare class AppContext {
10
12
  db: Database;
11
13
  cfg: ServerConfig;
14
+ shutdown: AbortSignal;
12
15
  events: TypedEventEmitter<AppEvents>;
13
16
  constructor(opts: AppContextOptions);
14
- static fromConfig(cfg: ServerConfig, overrides?: Partial<AppContextOptions>): Promise<AppContext>;
17
+ static fromConfig(cfg: ServerConfig, shutdown: AbortSignal, overrides?: Partial<AppContextOptions>): Promise<AppContext>;
15
18
  }
16
19
  export default AppContext;
17
20
  export type AppEvents = {
18
21
  [createMuteOpChannel]: () => void;
19
22
  };
23
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":";AAAA,OAAO,iBAAiB,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,QAAQ,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAGzD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,EAAE,EAAE,QAAQ,CAAA;IACZ,GAAG,EAAE,YAAY,CAAA;IACjB,QAAQ,EAAE,WAAW,CAAA;CACtB,CAAA;AAED,qBAAa,UAAU;IACrB,EAAE,EAAE,QAAQ,CAAA;IACZ,GAAG,EAAE,YAAY,CAAA;IACjB,QAAQ,EAAE,WAAW,CAAA;IACrB,MAAM,EAAE,iBAAiB,CAAC,SAAS,CAAC,CAAA;gBAExB,IAAI,EAAE,iBAAiB;WAOtB,UAAU,CACrB,GAAG,EAAE,YAAY,EACjB,QAAQ,EAAE,WAAW,EACrB,SAAS,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,GACrC,OAAO,CAAC,UAAU,CAAC;CAUvB;AAED,eAAe,UAAU,CAAA;AAEzB,MAAM,MAAM,SAAS,GAAG;IACtB,CAAC,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAA;CAClC,CAAA"}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.AppContext = void 0;
7
+ const db_1 = __importDefault(require("./db"));
8
+ const mute_op_1 = require("./db/schema/mute_op");
9
+ const stream_1 = require("stream");
10
+ class AppContext {
11
+ constructor(opts) {
12
+ Object.defineProperty(this, "db", {
13
+ enumerable: true,
14
+ configurable: true,
15
+ writable: true,
16
+ value: void 0
17
+ });
18
+ Object.defineProperty(this, "cfg", {
19
+ enumerable: true,
20
+ configurable: true,
21
+ writable: true,
22
+ value: void 0
23
+ });
24
+ Object.defineProperty(this, "shutdown", {
25
+ enumerable: true,
26
+ configurable: true,
27
+ writable: true,
28
+ value: void 0
29
+ });
30
+ Object.defineProperty(this, "events", {
31
+ enumerable: true,
32
+ configurable: true,
33
+ writable: true,
34
+ value: void 0
35
+ });
36
+ this.db = opts.db;
37
+ this.cfg = opts.cfg;
38
+ this.shutdown = opts.shutdown;
39
+ this.events = new stream_1.EventEmitter();
40
+ }
41
+ static async fromConfig(cfg, shutdown, overrides) {
42
+ const db = new db_1.default({
43
+ url: cfg.db.url,
44
+ schema: cfg.db.schema,
45
+ poolSize: cfg.db.poolSize,
46
+ poolMaxUses: cfg.db.poolMaxUses,
47
+ poolIdleTimeoutMs: cfg.db.poolIdleTimeoutMs,
48
+ });
49
+ return new AppContext({ db, cfg, shutdown, ...overrides });
50
+ }
51
+ }
52
+ exports.AppContext = AppContext;
53
+ exports.default = AppContext;
54
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":";;;;;;AAEA,8CAA2B;AAC3B,iDAAyD;AACzD,mCAAqC;AAQrC,MAAa,UAAU;IAMrB,YAAY,IAAuB;QALnC;;;;;WAAY;QACZ;;;;;WAAiB;QACjB;;;;;WAAqB;QACrB;;;;;WAAoC;QAGlC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAA;QACjB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAA;QACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAA;QAC7B,IAAI,CAAC,MAAM,GAAG,IAAI,qBAAY,EAAkC,CAAA;IAClE,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,UAAU,CACrB,GAAiB,EACjB,QAAqB,EACrB,SAAsC;QAEtC,MAAM,EAAE,GAAG,IAAI,YAAQ,CAAC;YACtB,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG;YACf,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,MAAM;YACrB,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,QAAQ;YACzB,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC,WAAW;YAC/B,iBAAiB,EAAE,GAAG,CAAC,EAAE,CAAC,iBAAiB;SAC5C,CAAC,CAAA;QACF,OAAO,IAAI,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,SAAS,EAAE,CAAC,CAAA;IAC5D,CAAC;CACF;AA3BD,gCA2BC;AAED,kBAAe,UAAU,CAAA"}
@@ -29,3 +29,4 @@ type TxnEmitter = TypedEmitter<TxnEvents>;
29
29
  type TxnEvents = {
30
30
  commit: () => void;
31
31
  };
32
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,QAAQ,EAOT,MAAM,QAAQ,CAAA;AACf,OAAO,YAAY,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,IAAI,IAAI,MAAM,EAAoB,MAAM,IAAI,CAAA;AACrD,OAAO,cAAsC,MAAM,UAAU,CAAA;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAMnC,qBAAa,QAAQ;IAQV,IAAI,EAAE,SAAS;IAPxB,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,cAAc,CAAA;IAClB,QAAQ,EAAE,QAAQ,CAAA;IAClB,KAAK,aAAmC;IACxC,SAAS,UAAQ;gBAGR,IAAI,EAAE,SAAS,EACtB,SAAS,CAAC,EAAE;QAAE,EAAE,EAAE,cAAc,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;IAkDlD,IAAI,MAAM,IAAI,MAAM,GAAG,SAAS,CAE/B;IAED,IAAI,aAAa,YAEhB;IAED,iBAAiB;IAIjB,oBAAoB;IAId,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAwBlE,QAAQ,CAAC,EAAE,EAAE,MAAM,IAAI;IAKjB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAMtB,gBAAgB,CAAC,SAAS,EAAE,MAAM;IAclC,sBAAsB;CAa7B;AAED,eAAe,QAAQ,CAAA;AA6BvB,KAAK,UAAU,GAAG,YAAY,CAAC,SAAS,CAAC,CAAA;AAEzC,KAAK,SAAS,GAAG;IACf,MAAM,EAAE,MAAM,IAAI,CAAA;CACnB,CAAA"}
@@ -0,0 +1,216 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.Database = void 0;
30
+ const assert_1 = __importDefault(require("assert"));
31
+ const kysely_1 = require("kysely");
32
+ const pg_1 = require("pg");
33
+ const logger_1 = require("../logger");
34
+ const stream_1 = require("stream");
35
+ const migrations = __importStar(require("./migrations"));
36
+ const provider_1 = require("./migrations/provider");
37
+ class Database {
38
+ constructor(opts, instances) {
39
+ Object.defineProperty(this, "opts", {
40
+ enumerable: true,
41
+ configurable: true,
42
+ writable: true,
43
+ value: opts
44
+ });
45
+ Object.defineProperty(this, "pool", {
46
+ enumerable: true,
47
+ configurable: true,
48
+ writable: true,
49
+ value: void 0
50
+ });
51
+ Object.defineProperty(this, "db", {
52
+ enumerable: true,
53
+ configurable: true,
54
+ writable: true,
55
+ value: void 0
56
+ });
57
+ Object.defineProperty(this, "migrator", {
58
+ enumerable: true,
59
+ configurable: true,
60
+ writable: true,
61
+ value: void 0
62
+ });
63
+ Object.defineProperty(this, "txEvt", {
64
+ enumerable: true,
65
+ configurable: true,
66
+ writable: true,
67
+ value: new stream_1.EventEmitter()
68
+ });
69
+ Object.defineProperty(this, "destroyed", {
70
+ enumerable: true,
71
+ configurable: true,
72
+ writable: true,
73
+ value: false
74
+ });
75
+ // if instances are provided, use those
76
+ if (instances) {
77
+ this.db = instances.db;
78
+ this.pool = instances.pool;
79
+ }
80
+ else {
81
+ // else create a pool & connect
82
+ const { schema, url } = opts;
83
+ const pool = opts.pool ??
84
+ new pg_1.Pool({
85
+ connectionString: url,
86
+ max: opts.poolSize,
87
+ maxUses: opts.poolMaxUses,
88
+ idleTimeoutMillis: opts.poolIdleTimeoutMs,
89
+ });
90
+ // Select count(*) and other pg bigints as js integer
91
+ pg_1.types.setTypeParser(pg_1.types.builtins.INT8, (n) => parseInt(n, 10));
92
+ // Setup schema usage, primarily for test parallelism (each test suite runs in its own pg schema)
93
+ if (schema && !/^[a-z_]+$/i.test(schema)) {
94
+ throw new Error(`Postgres schema must only contain [A-Za-z_]: ${schema}`);
95
+ }
96
+ pool.on('error', onPoolError);
97
+ pool.on('connect', (client) => {
98
+ client.on('error', onClientError);
99
+ if (schema) {
100
+ // Shared objects such as extensions will go in the public schema
101
+ client.query(`SET search_path TO "${schema}",public;`);
102
+ }
103
+ });
104
+ this.pool = pool;
105
+ this.db = new kysely_1.Kysely({
106
+ dialect: new kysely_1.PostgresDialect({ pool }),
107
+ });
108
+ }
109
+ this.migrator = new kysely_1.Migrator({
110
+ db: this.db,
111
+ migrationTableSchema: opts.schema,
112
+ provider: new provider_1.DbMigrationProvider(migrations),
113
+ });
114
+ }
115
+ get schema() {
116
+ return this.opts.schema;
117
+ }
118
+ get isTransaction() {
119
+ return this.db.isTransaction;
120
+ }
121
+ assertTransaction() {
122
+ (0, assert_1.default)(this.isTransaction, 'Transaction required');
123
+ }
124
+ assertNotTransaction() {
125
+ (0, assert_1.default)(!this.isTransaction, 'Cannot be in a transaction');
126
+ }
127
+ async transaction(fn) {
128
+ const leakyTxPlugin = new LeakyTxPlugin();
129
+ const { dbTxn, txRes } = await this.db
130
+ .withPlugin(leakyTxPlugin)
131
+ .transaction()
132
+ .execute(async (txn) => {
133
+ const dbTxn = new Database(this.opts, {
134
+ db: txn,
135
+ pool: this.pool,
136
+ });
137
+ const txRes = await fn(dbTxn)
138
+ .catch(async (err) => {
139
+ leakyTxPlugin.endTx();
140
+ // ensure that all in-flight queries are flushed & the connection is open
141
+ await dbTxn.db.getExecutor().provideConnection(noopAsync);
142
+ throw err;
143
+ })
144
+ .finally(() => leakyTxPlugin.endTx());
145
+ return { dbTxn, txRes };
146
+ });
147
+ dbTxn?.txEvt.emit('commit');
148
+ return txRes;
149
+ }
150
+ onCommit(fn) {
151
+ this.assertTransaction();
152
+ this.txEvt.once('commit', fn);
153
+ }
154
+ async close() {
155
+ if (this.destroyed)
156
+ return;
157
+ await this.db.destroy();
158
+ this.destroyed = true;
159
+ }
160
+ async migrateToOrThrow(migration) {
161
+ if (this.schema) {
162
+ await this.db.schema.createSchema(this.schema).ifNotExists().execute();
163
+ }
164
+ const { error, results } = await this.migrator.migrateTo(migration);
165
+ if (error) {
166
+ throw error;
167
+ }
168
+ if (!results) {
169
+ throw new Error('An unknown failure occurred while migrating');
170
+ }
171
+ return results;
172
+ }
173
+ async migrateToLatestOrThrow() {
174
+ if (this.schema) {
175
+ await this.db.schema.createSchema(this.schema).ifNotExists().execute();
176
+ }
177
+ const { error, results } = await this.migrator.migrateToLatest();
178
+ if (error) {
179
+ throw error;
180
+ }
181
+ if (!results) {
182
+ throw new Error('An unknown failure occurred while migrating');
183
+ }
184
+ return results;
185
+ }
186
+ }
187
+ exports.Database = Database;
188
+ exports.default = Database;
189
+ const onPoolError = (err) => logger_1.dbLogger.error({ err }, 'db pool error');
190
+ const onClientError = (err) => logger_1.dbLogger.error({ err }, 'db client error');
191
+ // utils
192
+ // -------
193
+ class LeakyTxPlugin {
194
+ constructor() {
195
+ Object.defineProperty(this, "txOver", {
196
+ enumerable: true,
197
+ configurable: true,
198
+ writable: true,
199
+ value: false
200
+ });
201
+ }
202
+ endTx() {
203
+ this.txOver = true;
204
+ }
205
+ transformQuery(args) {
206
+ if (this.txOver) {
207
+ throw new Error('tx already failed');
208
+ }
209
+ return args.node;
210
+ }
211
+ async transformResult(args) {
212
+ return args.result;
213
+ }
214
+ }
215
+ const noopAsync = async () => { };
216
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
1
  import { Kysely } from 'kysely';
2
2
  export declare function up(db: Kysely<unknown>): Promise<void>;
3
3
  export declare function down(db: Kysely<unknown>): Promise<void>;
4
+ //# sourceMappingURL=20240108T220751294Z-init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"20240108T220751294Z-init.d.ts","sourceRoot":"","sources":["../../../src/db/migrations/20240108T220751294Z-init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAO,MAAM,QAAQ,CAAA;AAEpC,wBAAsB,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAkB3D;AAED,wBAAsB,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAG7D"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.down = exports.up = void 0;
4
+ const kysely_1 = require("kysely");
5
+ async function up(db) {
6
+ await db.schema
7
+ .createTable('mute_op')
8
+ .addColumn('id', 'bigserial', (col) => col.primaryKey())
9
+ .addColumn('type', 'int2', (col) => col.notNull()) // integer enum: 0->add, 1->remove, 2->clear
10
+ .addColumn('actorDid', 'varchar', (col) => col.notNull())
11
+ .addColumn('subject', 'varchar', (col) => col.notNull())
12
+ .addColumn('createdAt', 'timestamptz', (col) => col.notNull().defaultTo((0, kysely_1.sql) `CURRENT_TIMESTAMP`))
13
+ .execute();
14
+ await db.schema
15
+ .createTable('mute_item')
16
+ .addColumn('actorDid', 'varchar', (col) => col.notNull())
17
+ .addColumn('subject', 'varchar', (col) => col.notNull())
18
+ .addColumn('fromId', 'bigint', (col) => col.notNull())
19
+ .addPrimaryKeyConstraint('mute_item_pkey', ['actorDid', 'subject'])
20
+ .execute();
21
+ }
22
+ exports.up = up;
23
+ async function down(db) {
24
+ await db.schema.dropTable('mute_item').execute();
25
+ await db.schema.dropTable('mute_op').execute();
26
+ }
27
+ exports.down = down;
28
+ //# sourceMappingURL=20240108T220751294Z-init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"20240108T220751294Z-init.js","sourceRoot":"","sources":["../../../src/db/migrations/20240108T220751294Z-init.ts"],"names":[],"mappings":";;;AAAA,mCAAoC;AAE7B,KAAK,UAAU,EAAE,CAAC,EAAmB;IAC1C,MAAM,EAAE,CAAC,MAAM;SACZ,WAAW,CAAC,SAAS,CAAC;SACtB,SAAS,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;SACvD,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,4CAA4C;SAC9F,SAAS,CAAC,UAAU,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SACxD,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SACvD,SAAS,CAAC,WAAW,EAAE,aAAa,EAAE,CAAC,GAAG,EAAE,EAAE,CAC7C,GAAG,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,IAAA,YAAG,EAAA,mBAAmB,CAAC,CAChD;SACA,OAAO,EAAE,CAAA;IACZ,MAAM,EAAE,CAAC,MAAM;SACZ,WAAW,CAAC,WAAW,CAAC;SACxB,SAAS,CAAC,UAAU,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SACxD,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SACvD,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SACrD,uBAAuB,CAAC,gBAAgB,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;SAClE,OAAO,EAAE,CAAA;AACd,CAAC;AAlBD,gBAkBC;AAEM,KAAK,UAAU,IAAI,CAAC,EAAmB;IAC5C,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAA;IAChD,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAA;AAChD,CAAC;AAHD,oBAGC"}
@@ -1 +1,2 @@
1
1
  export * as _20240108T220751294Z from './20240108T220751294Z-init';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/db/migrations/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,oBAAoB,MAAM,4BAA4B,CAAA"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ // NOTE this file can be edited by hand, but it is also appended to by the migration:create command.
3
+ // It's important that every migration is exported from here with the proper name. We'd simplify
4
+ // this with kysely's FileMigrationProvider, but it doesn't play nicely with the build process.
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || function (mod) {
22
+ if (mod && mod.__esModule) return mod;
23
+ var result = {};
24
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
25
+ __setModuleDefault(result, mod);
26
+ return result;
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports._20240108T220751294Z = void 0;
30
+ exports._20240108T220751294Z = __importStar(require("./20240108T220751294Z-init"));
31
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/db/migrations/index.ts"],"names":[],"mappings":";AAAA,oGAAoG;AACpG,gGAAgG;AAChG,+FAA+F;;;;;;;;;;;;;;;;;;;;;;;;;;AAE/F,mFAAkE"}
@@ -4,3 +4,4 @@ export declare class DbMigrationProvider implements MigrationProvider {
4
4
  constructor(migrations: Record<string, Migration>);
5
5
  getMigrations(): Promise<Record<string, Migration>>;
6
6
  }
7
+ //# sourceMappingURL=provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/db/migrations/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAA;AAErD,qBAAa,mBAAoB,YAAW,iBAAiB;IAC/C,OAAO,CAAC,UAAU;gBAAV,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC;IACnD,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CAG1D"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DbMigrationProvider = void 0;
4
+ class DbMigrationProvider {
5
+ constructor(migrations) {
6
+ Object.defineProperty(this, "migrations", {
7
+ enumerable: true,
8
+ configurable: true,
9
+ writable: true,
10
+ value: migrations
11
+ });
12
+ }
13
+ async getMigrations() {
14
+ return this.migrations;
15
+ }
16
+ }
17
+ exports.DbMigrationProvider = DbMigrationProvider;
18
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../src/db/migrations/provider.ts"],"names":[],"mappings":";;;AAEA,MAAa,mBAAmB;IAC9B,YAAoB,UAAqC;QAA7C;;;;mBAAQ,UAAU;WAA2B;IAAG,CAAC;IAC7D,KAAK,CAAC,aAAa;QACjB,OAAO,IAAI,CAAC,UAAU,CAAA;IACxB,CAAC;CACF;AALD,kDAKC"}
@@ -4,3 +4,4 @@ import * as muteItem from './mute_item';
4
4
  export type DatabaseSchemaType = muteItem.PartialDB & muteOp.PartialDB;
5
5
  export type DatabaseSchema = Kysely<DatabaseSchemaType>;
6
6
  export default DatabaseSchema;
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/db/schema/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,KAAK,MAAM,MAAM,WAAW,CAAA;AACnC,OAAO,KAAK,QAAQ,MAAM,aAAa,CAAA;AAEvC,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAA;AAEtE,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAA;AAEvD,eAAe,cAAc,CAAA"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/db/schema/index.ts"],"names":[],"mappings":""}
@@ -9,3 +9,4 @@ export declare const tableName = "mute_item";
9
9
  export type PartialDB = {
10
10
  [tableName]: MuteItem;
11
11
  };
12
+ //# sourceMappingURL=mute_item.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mute_item.d.ts","sourceRoot":"","sources":["../../../src/db/schema/mute_item.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AAEnC,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAA;AAEhD,eAAO,MAAM,SAAS,cAAc,CAAA;AAEpC,MAAM,MAAM,SAAS,GAAG;IAAE,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAA;CAAE,CAAA"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.tableName = void 0;
4
+ exports.tableName = 'mute_item';
5
+ //# sourceMappingURL=mute_item.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mute_item.js","sourceRoot":"","sources":["../../../src/db/schema/mute_item.ts"],"names":[],"mappings":";;;AAUa,QAAA,SAAS,GAAG,WAAW,CAAA"}