@atproto/bsync 0.0.25 → 0.0.26

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 (129) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/bin/migration-create.ts +1 -1
  3. package/dist/client.d.ts +1 -1
  4. package/dist/client.d.ts.map +1 -1
  5. package/dist/client.js +7 -12
  6. package/dist/client.js.map +1 -1
  7. package/dist/config.js +16 -24
  8. package/dist/config.js.map +1 -1
  9. package/dist/context.d.ts +7 -7
  10. package/dist/context.d.ts.map +1 -1
  11. package/dist/context.js +8 -36
  12. package/dist/context.js.map +1 -1
  13. package/dist/db/index.d.ts +7 -5
  14. package/dist/db/index.d.ts.map +1 -1
  15. package/dist/db/index.js +26 -101
  16. package/dist/db/index.js.map +1 -1
  17. package/dist/db/migrations/20240108T220751294Z-init.js +4 -8
  18. package/dist/db/migrations/20240108T220751294Z-init.js.map +1 -1
  19. package/dist/db/migrations/20240717T224303472Z-notif-ops.js +4 -8
  20. package/dist/db/migrations/20240717T224303472Z-notif-ops.js.map +1 -1
  21. package/dist/db/migrations/20250527T022203400Z-add-operation.js +5 -9
  22. package/dist/db/migrations/20250527T022203400Z-add-operation.js.map +1 -1
  23. package/dist/db/migrations/20250603T163446567Z-alter-operation.js +2 -6
  24. package/dist/db/migrations/20250603T163446567Z-alter-operation.js.map +1 -1
  25. package/dist/db/migrations/index.d.ts +4 -4
  26. package/dist/db/migrations/index.d.ts.map +1 -1
  27. package/dist/db/migrations/index.js +4 -40
  28. package/dist/db/migrations/index.js.map +1 -1
  29. package/dist/db/migrations/provider.js +2 -11
  30. package/dist/db/migrations/provider.js.map +1 -1
  31. package/dist/db/schema/index.d.ts +5 -5
  32. package/dist/db/schema/index.d.ts.map +1 -1
  33. package/dist/db/schema/index.js +1 -2
  34. package/dist/db/schema/index.js.map +1 -1
  35. package/dist/db/schema/mute_item.js +1 -4
  36. package/dist/db/schema/mute_item.js.map +1 -1
  37. package/dist/db/schema/mute_op.d.ts +1 -1
  38. package/dist/db/schema/mute_op.d.ts.map +1 -1
  39. package/dist/db/schema/mute_op.js +2 -5
  40. package/dist/db/schema/mute_op.js.map +1 -1
  41. package/dist/db/schema/notif_item.js +1 -4
  42. package/dist/db/schema/notif_item.js.map +1 -1
  43. package/dist/db/schema/notif_op.js +2 -5
  44. package/dist/db/schema/notif_op.js.map +1 -1
  45. package/dist/db/schema/operation.d.ts +2 -2
  46. package/dist/db/schema/operation.d.ts.map +1 -1
  47. package/dist/db/schema/operation.js +2 -5
  48. package/dist/db/schema/operation.js.map +1 -1
  49. package/dist/db/types.d.ts +3 -1
  50. package/dist/db/types.d.ts.map +1 -1
  51. package/dist/db/types.js +1 -2
  52. package/dist/db/types.js.map +1 -1
  53. package/dist/index.d.ts +7 -7
  54. package/dist/index.d.ts.map +1 -1
  55. package/dist/index.js +37 -88
  56. package/dist/index.js.map +1 -1
  57. package/dist/logger.js +8 -11
  58. package/dist/logger.js.map +1 -1
  59. package/dist/proto/bsync_connect.d.ts +1 -1
  60. package/dist/proto/bsync_connect.d.ts.map +1 -1
  61. package/dist/proto/bsync_connect.js +27 -30
  62. package/dist/proto/bsync_connect.js.map +1 -1
  63. package/dist/proto/bsync_pb.js +215 -747
  64. package/dist/proto/bsync_pb.js.map +1 -1
  65. package/dist/routes/add-mute-operation.d.ts +2 -2
  66. package/dist/routes/add-mute-operation.d.ts.map +1 -1
  67. package/dist/routes/add-mute-operation.js +28 -30
  68. package/dist/routes/add-mute-operation.js.map +1 -1
  69. package/dist/routes/add-notif-operation.d.ts +2 -2
  70. package/dist/routes/add-notif-operation.d.ts.map +1 -1
  71. package/dist/routes/add-notif-operation.js +14 -16
  72. package/dist/routes/add-notif-operation.js.map +1 -1
  73. package/dist/routes/auth.d.ts +1 -1
  74. package/dist/routes/auth.d.ts.map +1 -1
  75. package/dist/routes/auth.js +4 -8
  76. package/dist/routes/auth.js.map +1 -1
  77. package/dist/routes/delete-operations.d.ts +2 -2
  78. package/dist/routes/delete-operations.d.ts.map +1 -1
  79. package/dist/routes/delete-operations.js +11 -13
  80. package/dist/routes/delete-operations.js.map +1 -1
  81. package/dist/routes/index.d.ts +1 -1
  82. package/dist/routes/index.d.ts.map +1 -1
  83. package/dist/routes/index.js +19 -24
  84. package/dist/routes/index.js.map +1 -1
  85. package/dist/routes/put-operation.d.ts +2 -2
  86. package/dist/routes/put-operation.d.ts.map +1 -1
  87. package/dist/routes/put-operation.js +25 -27
  88. package/dist/routes/put-operation.js.map +1 -1
  89. package/dist/routes/scan-mute-operations.d.ts +2 -2
  90. package/dist/routes/scan-mute-operations.d.ts.map +1 -1
  91. package/dist/routes/scan-mute-operations.js +13 -15
  92. package/dist/routes/scan-mute-operations.js.map +1 -1
  93. package/dist/routes/scan-notif-operations.d.ts +2 -2
  94. package/dist/routes/scan-notif-operations.d.ts.map +1 -1
  95. package/dist/routes/scan-notif-operations.js +13 -15
  96. package/dist/routes/scan-notif-operations.js.map +1 -1
  97. package/dist/routes/scan-operations.d.ts +2 -2
  98. package/dist/routes/scan-operations.d.ts.map +1 -1
  99. package/dist/routes/scan-operations.js +13 -15
  100. package/dist/routes/scan-operations.js.map +1 -1
  101. package/dist/routes/util.js +12 -20
  102. package/dist/routes/util.js.map +1 -1
  103. package/jest.config.cjs +21 -0
  104. package/package.json +14 -9
  105. package/src/client.ts +1 -1
  106. package/src/context.ts +9 -9
  107. package/src/db/index.ts +13 -9
  108. package/src/db/migrations/index.ts +4 -4
  109. package/src/db/schema/index.ts +5 -5
  110. package/src/db/schema/mute_op.ts +1 -1
  111. package/src/db/schema/operation.ts +2 -2
  112. package/src/db/types.ts +3 -1
  113. package/src/index.ts +17 -13
  114. package/src/proto/bsync_connect.ts +1 -1
  115. package/src/routes/add-mute-operation.ts +10 -7
  116. package/src/routes/add-notif-operation.ts +7 -7
  117. package/src/routes/auth.ts +1 -1
  118. package/src/routes/delete-operations.ts +5 -5
  119. package/src/routes/index.ts +9 -9
  120. package/src/routes/put-operation.ts +11 -8
  121. package/src/routes/scan-mute-operations.ts +6 -6
  122. package/src/routes/scan-notif-operations.ts +6 -6
  123. package/src/routes/scan-operations.ts +6 -6
  124. package/tests/delete-operations.test.ts +2 -2
  125. package/tests/mutes.test.ts +2 -2
  126. package/tests/notifications.test.ts +2 -2
  127. package/tests/operations.test.ts +2 -2
  128. package/tsconfig.build.tsbuildinfo +1 -1
  129. package/jest.config.js +0 -7
@@ -1,19 +1,15 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.validateNamespace = exports.isValidAtUri = exports.isValidDid = exports.combineSignals = exports.validCursor = void 0;
4
- const connect_1 = require("@connectrpc/connect");
5
- const syntax_1 = require("@atproto/syntax");
6
- const validCursor = (cursor) => {
1
+ import { Code, ConnectError } from '@connectrpc/connect';
2
+ import { InvalidDidError, ensureValidAtUri, ensureValidDid, ensureValidNsid, } from '@atproto/syntax';
3
+ export const validCursor = (cursor) => {
7
4
  if (cursor === '')
8
5
  return null;
9
6
  const int = parseInt(cursor, 10);
10
7
  if (isNaN(int) || int < 0) {
11
- throw new connect_1.ConnectError('invalid cursor', connect_1.Code.InvalidArgument);
8
+ throw new ConnectError('invalid cursor', Code.InvalidArgument);
12
9
  }
13
10
  return int;
14
11
  };
15
- exports.validCursor = validCursor;
16
- const combineSignals = (a, b) => {
12
+ export const combineSignals = (a, b) => {
17
13
  const controller = new AbortController();
18
14
  for (const signal of [a, b]) {
19
15
  if (signal.aborted) {
@@ -27,40 +23,36 @@ const combineSignals = (a, b) => {
27
23
  }
28
24
  return controller.signal;
29
25
  };
30
- exports.combineSignals = combineSignals;
31
- const isValidDid = (did) => {
26
+ export const isValidDid = (did) => {
32
27
  try {
33
- (0, syntax_1.ensureValidDid)(did);
28
+ ensureValidDid(did);
34
29
  return true;
35
30
  }
36
31
  catch (err) {
37
- if (err instanceof syntax_1.InvalidDidError) {
32
+ if (err instanceof InvalidDidError) {
38
33
  return false;
39
34
  }
40
35
  throw err;
41
36
  }
42
37
  };
43
- exports.isValidDid = isValidDid;
44
- const isValidAtUri = (uri) => {
38
+ export const isValidAtUri = (uri) => {
45
39
  try {
46
- (0, syntax_1.ensureValidAtUri)(uri);
40
+ ensureValidAtUri(uri);
47
41
  return true;
48
42
  }
49
43
  catch {
50
44
  return false;
51
45
  }
52
46
  };
53
- exports.isValidAtUri = isValidAtUri;
54
- const validateNamespace = (namespace) => {
47
+ export const validateNamespace = (namespace) => {
55
48
  const parts = namespace.split('#');
56
49
  if (parts.length !== 1 && parts.length !== 2) {
57
50
  throw new Error('namespace must be in the format "nsid[#fragment]"');
58
51
  }
59
52
  const [nsid, fragment] = parts;
60
- (0, syntax_1.ensureValidNsid)(nsid);
53
+ ensureValidNsid(nsid);
61
54
  if (fragment && !/^[a-zA-Z][a-zA-Z0-9]*$/.test(fragment)) {
62
55
  throw new Error('namespace fragment must be a valid identifier');
63
56
  }
64
57
  };
65
- exports.validateNamespace = validateNamespace;
66
58
  //# sourceMappingURL=util.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/routes/util.ts"],"names":[],"mappings":";;;AAAA,iDAAwD;AACxD,4CAKwB;AAEjB,MAAM,WAAW,GAAG,CAAC,MAAc,EAAiB,EAAE;IAC3D,IAAI,MAAM,KAAK,EAAE;QAAE,OAAO,IAAI,CAAA;IAC9B,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;IAChC,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,sBAAY,CAAC,gBAAgB,EAAE,cAAI,CAAC,eAAe,CAAC,CAAA;IAChE,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA;AAPY,QAAA,WAAW,eAOvB;AAEM,MAAM,cAAc,GAAG,CAAC,CAAc,EAAE,CAAc,EAAE,EAAE;IAC/D,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;IACxC,KAAK,MAAM,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QAC5B,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,UAAU,CAAC,KAAK,EAAE,CAAA;YAClB,OAAO,MAAM,CAAA;QACf,CAAC;QACD,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;YACtE,2EAA2E;YAC3E,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,UAAU,CAAC,MAAM,CAAA;AAC1B,CAAC,CAAA;AAbY,QAAA,cAAc,kBAa1B;AAEM,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,EAAE;IACxC,IAAI,CAAC;QACH,IAAA,uBAAc,EAAC,GAAG,CAAC,CAAA;QACnB,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,wBAAe,EAAE,CAAC;YACnC,OAAO,KAAK,CAAA;QACd,CAAC;QACD,MAAM,GAAG,CAAA;IACX,CAAC;AACH,CAAC,CAAA;AAVY,QAAA,UAAU,cAUtB;AAEM,MAAM,YAAY,GAAG,CAAC,GAAW,EAAE,EAAE;IAC1C,IAAI,CAAC;QACH,IAAA,yBAAgB,EAAC,GAAG,CAAC,CAAA;QACrB,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC,CAAA;AAPY,QAAA,YAAY,gBAOxB;AAEM,MAAM,iBAAiB,GAAG,CAAC,SAAiB,EAAQ,EAAE;IAC3D,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAElC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;IACtE,CAAC;IAED,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAA;IAE9B,IAAA,wBAAe,EAAC,IAAI,CAAC,CAAA;IACrB,IAAI,QAAQ,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzD,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAA;IAClE,CAAC;AACH,CAAC,CAAA;AAbY,QAAA,iBAAiB,qBAa7B","sourcesContent":["import { Code, ConnectError } from '@connectrpc/connect'\nimport {\n InvalidDidError,\n ensureValidAtUri,\n ensureValidDid,\n ensureValidNsid,\n} from '@atproto/syntax'\n\nexport const validCursor = (cursor: string): number | null => {\n if (cursor === '') return null\n const int = parseInt(cursor, 10)\n if (isNaN(int) || int < 0) {\n throw new ConnectError('invalid cursor', Code.InvalidArgument)\n }\n return int\n}\n\nexport const combineSignals = (a: AbortSignal, b: AbortSignal) => {\n const controller = new AbortController()\n for (const signal of [a, b]) {\n if (signal.aborted) {\n controller.abort()\n return signal\n }\n signal.addEventListener('abort', () => controller.abort(signal.reason), {\n // @ts-ignore https://github.com/DefinitelyTyped/DefinitelyTyped/pull/68625\n signal: controller.signal,\n })\n }\n return controller.signal\n}\n\nexport const isValidDid = (did: string) => {\n try {\n ensureValidDid(did)\n return true\n } catch (err) {\n if (err instanceof InvalidDidError) {\n return false\n }\n throw err\n }\n}\n\nexport const isValidAtUri = (uri: string) => {\n try {\n ensureValidAtUri(uri)\n return true\n } catch {\n return false\n }\n}\n\nexport const validateNamespace = (namespace: string): void => {\n const parts = namespace.split('#')\n\n if (parts.length !== 1 && parts.length !== 2) {\n throw new Error('namespace must be in the format \"nsid[#fragment]\"')\n }\n\n const [nsid, fragment] = parts\n\n ensureValidNsid(nsid)\n if (fragment && !/^[a-zA-Z][a-zA-Z0-9]*$/.test(fragment)) {\n throw new Error('namespace fragment must be a valid identifier')\n }\n}\n"]}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/routes/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AACxD,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,eAAe,GAChB,MAAM,iBAAiB,CAAA;AAExB,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,MAAc,EAAiB,EAAE;IAC3D,IAAI,MAAM,KAAK,EAAE;QAAE,OAAO,IAAI,CAAA;IAC9B,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;IAChC,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,YAAY,CAAC,gBAAgB,EAAE,IAAI,CAAC,eAAe,CAAC,CAAA;IAChE,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAc,EAAE,CAAc,EAAE,EAAE;IAC/D,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;IACxC,KAAK,MAAM,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QAC5B,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,UAAU,CAAC,KAAK,EAAE,CAAA;YAClB,OAAO,MAAM,CAAA;QACf,CAAC;QACD,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;YACtE,2EAA2E;YAC3E,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,UAAU,CAAC,MAAM,CAAA;AAC1B,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,EAAE;IACxC,IAAI,CAAC;QACH,cAAc,CAAC,GAAG,CAAC,CAAA;QACnB,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,eAAe,EAAE,CAAC;YACnC,OAAO,KAAK,CAAA;QACd,CAAC;QACD,MAAM,GAAG,CAAA;IACX,CAAC;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,GAAW,EAAE,EAAE;IAC1C,IAAI,CAAC;QACH,gBAAgB,CAAC,GAAG,CAAC,CAAA;QACrB,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,SAAiB,EAAQ,EAAE;IAC3D,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAElC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;IACtE,CAAC;IAED,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAA;IAE9B,eAAe,CAAC,IAAI,CAAC,CAAA;IACrB,IAAI,QAAQ,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzD,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAA;IAClE,CAAC;AACH,CAAC,CAAA","sourcesContent":["import { Code, ConnectError } from '@connectrpc/connect'\nimport {\n InvalidDidError,\n ensureValidAtUri,\n ensureValidDid,\n ensureValidNsid,\n} from '@atproto/syntax'\n\nexport const validCursor = (cursor: string): number | null => {\n if (cursor === '') return null\n const int = parseInt(cursor, 10)\n if (isNaN(int) || int < 0) {\n throw new ConnectError('invalid cursor', Code.InvalidArgument)\n }\n return int\n}\n\nexport const combineSignals = (a: AbortSignal, b: AbortSignal) => {\n const controller = new AbortController()\n for (const signal of [a, b]) {\n if (signal.aborted) {\n controller.abort()\n return signal\n }\n signal.addEventListener('abort', () => controller.abort(signal.reason), {\n // @ts-ignore https://github.com/DefinitelyTyped/DefinitelyTyped/pull/68625\n signal: controller.signal,\n })\n }\n return controller.signal\n}\n\nexport const isValidDid = (did: string) => {\n try {\n ensureValidDid(did)\n return true\n } catch (err) {\n if (err instanceof InvalidDidError) {\n return false\n }\n throw err\n }\n}\n\nexport const isValidAtUri = (uri: string) => {\n try {\n ensureValidAtUri(uri)\n return true\n } catch {\n return false\n }\n}\n\nexport const validateNamespace = (namespace: string): void => {\n const parts = namespace.split('#')\n\n if (parts.length !== 1 && parts.length !== 2) {\n throw new Error('namespace must be in the format \"nsid[#fragment]\"')\n }\n\n const [nsid, fragment] = parts\n\n ensureValidNsid(nsid)\n if (fragment && !/^[a-zA-Z][a-zA-Z0-9]*$/.test(fragment)) {\n throw new Error('namespace fragment must be a valid identifier')\n }\n}\n"]}
@@ -0,0 +1,21 @@
1
+ /** @type {import('jest').Config} */
2
+ module.exports = {
3
+ displayName: 'Bsync',
4
+ transform: {
5
+ '^.+\\.(t|j)s$': [
6
+ '@swc/jest',
7
+ {
8
+ jsc: {
9
+ parser: { syntax: 'typescript', importAttributes: true },
10
+ experimental: { keepImportAttributes: true },
11
+ transform: {},
12
+ },
13
+ module: { type: 'es6' },
14
+ },
15
+ ],
16
+ },
17
+ extensionsToTreatAsEsm: ['.ts'],
18
+ transformIgnorePatterns: [],
19
+ setupFiles: ['<rootDir>/../../test.setup.ts'],
20
+ moduleNameMapper: { '^(\\.\\.?\\/.+)\\.js$': ['$1.ts', '$1.js'] },
21
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atproto/bsync",
3
- "version": "0.0.25",
3
+ "version": "0.0.26",
4
4
  "license": "MIT",
5
5
  "description": "Sychronizing service for app.bsky App View (Bluesky API)",
6
6
  "keywords": [
@@ -13,10 +13,8 @@
13
13
  "url": "https://github.com/bluesky-social/atproto",
14
14
  "directory": "packages/bsync"
15
15
  },
16
- "main": "dist/index.js",
17
- "types": "dist/index.d.ts",
18
16
  "engines": {
19
- "node": ">=18.7.0"
17
+ "node": ">=22"
20
18
  },
21
19
  "dependencies": {
22
20
  "@bufbuild/protobuf": "^1.5.0",
@@ -27,8 +25,8 @@
27
25
  "pg": "^8.10.0",
28
26
  "pino-http": "^8.2.1",
29
27
  "typed-emitter": "^2.1.0",
30
- "@atproto/common": "^0.5.14",
31
- "@atproto/syntax": "^0.5.1"
28
+ "@atproto/syntax": "^0.6.0",
29
+ "@atproto/common": "^0.6.0"
32
30
  },
33
31
  "devDependencies": {
34
32
  "@bufbuild/buf": "^1.28.1",
@@ -36,14 +34,21 @@
36
34
  "@connectrpc/protoc-gen-connect-es": "^1.1.4",
37
35
  "@types/pg": "^8.6.6",
38
36
  "get-port": "^5.1.1",
39
- "jest": "^28.1.2",
37
+ "jest": "^30.0.0",
40
38
  "ts-node": "^10.8.2",
41
- "typescript": "^5.6.3"
39
+ "typescript": "^6.0.3"
40
+ },
41
+ "type": "module",
42
+ "exports": {
43
+ ".": {
44
+ "types": "./dist/index.d.ts",
45
+ "default": "./dist/index.js"
46
+ }
42
47
  },
43
48
  "scripts": {
44
49
  "build": "tsc --build tsconfig.build.json",
45
50
  "start": "node --enable-source-maps dist/bin.js",
46
- "test": "../dev-infra/with-test-db.sh jest",
51
+ "test": "NODE_OPTIONS=--experimental-vm-modules ../dev-infra/with-test-db.sh jest",
47
52
  "test:log": "tail -50 test.log | pino-pretty",
48
53
  "test:updateSnapshot": "jest --updateSnapshot",
49
54
  "migration:create": "ts-node ./bin/migration-create.ts",
package/src/client.ts CHANGED
@@ -7,7 +7,7 @@ import {
7
7
  ConnectTransportOptions,
8
8
  createConnectTransport,
9
9
  } from '@connectrpc/connect-node'
10
- import { Service } from './proto/bsync_connect'
10
+ import { Service } from './proto/bsync_connect.js'
11
11
 
12
12
  export type BsyncClient = PromiseClient<typeof Service>
13
13
 
package/src/context.ts CHANGED
@@ -1,10 +1,10 @@
1
- import { EventEmitter } from 'node:stream'
2
- import TypedEventEmitter from 'typed-emitter'
3
- import { ServerConfig } from './config'
4
- import { Database } from './db'
5
- import { createMuteOpChannel } from './db/schema/mute_op'
6
- import { createNotifOpChannel } from './db/schema/notif_op'
7
- import { createOperationChannel } from './db/schema/operation'
1
+ import { EventEmitter } from 'node:events'
2
+ import type TypedEmitter from 'typed-emitter'
3
+ import { ServerConfig } from './config.js'
4
+ import { Database } from './db/index.js'
5
+ import { createMuteOpChannel } from './db/schema/mute_op.js'
6
+ import { createNotifOpChannel } from './db/schema/notif_op.js'
7
+ import { createOperationChannel } from './db/schema/operation.js'
8
8
 
9
9
  export type AppContextOptions = {
10
10
  db: Database
@@ -16,13 +16,13 @@ export class AppContext {
16
16
  db: Database
17
17
  cfg: ServerConfig
18
18
  shutdown: AbortSignal
19
- events: TypedEventEmitter<AppEvents>
19
+ events: TypedEmitter.default<AppEvents>
20
20
 
21
21
  constructor(opts: AppContextOptions) {
22
22
  this.db = opts.db
23
23
  this.cfg = opts.cfg
24
24
  this.shutdown = opts.shutdown
25
- this.events = new EventEmitter() as TypedEventEmitter<AppEvents>
25
+ this.events = new EventEmitter() as TypedEmitter.default<AppEvents>
26
26
  }
27
27
 
28
28
  static async fromConfig(
package/src/db/index.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import assert from 'node:assert'
2
- import { EventEmitter } from 'node:stream'
2
+ import { EventEmitter } from 'node:events'
3
3
  import {
4
4
  Kysely,
5
5
  KyselyPlugin,
@@ -11,13 +11,17 @@ import {
11
11
  RootOperationNode,
12
12
  UnknownRow,
13
13
  } from 'kysely'
14
- import { Pool as PgPool, types as pgTypes } from 'pg'
15
- import TypedEmitter from 'typed-emitter'
16
- import { dbLogger } from '../logger'
17
- import * as migrations from './migrations'
18
- import { DbMigrationProvider } from './migrations/provider'
19
- import { DatabaseSchema, DatabaseSchemaType } from './schema'
20
- import { PgOptions } from './types'
14
+ // eslint-disable-next-line import/default
15
+ import pg from 'pg'
16
+ // eslint-disable-next-line import/no-named-as-default-member
17
+ const { Pool: PgPool, types: pgTypes } = pg
18
+ type PgPool = InstanceType<typeof PgPool>
19
+ import type TypedEmitter from 'typed-emitter'
20
+ import { dbLogger } from '../logger.js'
21
+ import * as migrations from './migrations/index.js'
22
+ import { DbMigrationProvider } from './migrations/provider.js'
23
+ import { DatabaseSchema, DatabaseSchemaType } from './schema/index.js'
24
+ import { PgOptions } from './types.js'
21
25
 
22
26
  export class Database {
23
27
  pool: PgPool
@@ -187,7 +191,7 @@ class LeakyTxPlugin implements KyselyPlugin {
187
191
  }
188
192
  }
189
193
 
190
- type TxnEmitter = TypedEmitter<TxnEvents>
194
+ type TxnEmitter = TypedEmitter.default<TxnEvents>
191
195
 
192
196
  type TxnEvents = {
193
197
  commit: () => void
@@ -2,7 +2,7 @@
2
2
  // It's important that every migration is exported from here with the proper name. We'd simplify
3
3
  // this with kysely's FileMigrationProvider, but it doesn't play nicely with the build process.
4
4
 
5
- export * as _20240108T220751294Z from './20240108T220751294Z-init'
6
- export * as _20240717T224303472Z from './20240717T224303472Z-notif-ops'
7
- export * as _20250527T022203400Z from './20250527T022203400Z-add-operation'
8
- export * as _20250603T163446567Z from './20250603T163446567Z-alter-operation'
5
+ export * as _20240108T220751294Z from './20240108T220751294Z-init.js'
6
+ export * as _20240717T224303472Z from './20240717T224303472Z-notif-ops.js'
7
+ export * as _20250527T022203400Z from './20250527T022203400Z-add-operation.js'
8
+ export * as _20250603T163446567Z from './20250603T163446567Z-alter-operation.js'
@@ -1,9 +1,9 @@
1
1
  import { Kysely } from 'kysely'
2
- import * as muteItem from './mute_item'
3
- import * as muteOp from './mute_op'
4
- import * as notifItem from './notif_item'
5
- import * as notifOp from './notif_op'
6
- import * as op from './operation'
2
+ import * as muteItem from './mute_item.js'
3
+ import * as muteOp from './mute_op.js'
4
+ import * as notifItem from './notif_item.js'
5
+ import * as notifOp from './notif_op.js'
6
+ import * as op from './operation.js'
7
7
 
8
8
  export type DatabaseSchemaType = muteItem.PartialDB &
9
9
  muteOp.PartialDB &
@@ -1,5 +1,5 @@
1
1
  import { GeneratedAlways, Selectable } from 'kysely'
2
- import { MuteOperation_Type } from '../../proto/bsync_pb'
2
+ import { MuteOperation_Type } from '../../proto/bsync_pb.js'
3
3
 
4
4
  export interface MuteOp {
5
5
  id: GeneratedAlways<number>
@@ -1,5 +1,5 @@
1
1
  import { GeneratedAlways } from 'kysely'
2
- import { Method } from '../../proto/bsync_pb'
2
+ import { Method } from '../../proto/bsync_pb.js'
3
3
 
4
4
  export type OperationMethod = Method.CREATE | Method.UPDATE | Method.DELETE
5
5
 
@@ -9,7 +9,7 @@ export interface Operation {
9
9
  namespace: string
10
10
  key: string
11
11
  method: OperationMethod
12
- payload: Uint8Array
12
+ payload: Uint8Array<ArrayBuffer>
13
13
  createdAt: GeneratedAlways<Date>
14
14
  }
15
15
 
package/src/db/types.ts CHANGED
@@ -1,5 +1,7 @@
1
1
  import { DynamicModule, RawBuilder, SelectQueryBuilder } from 'kysely'
2
- import { Pool as PgPool } from 'pg'
2
+ // eslint-disable-next-line import/default
3
+ import pg from 'pg'
4
+ type PgPool = pg.Pool
3
5
 
4
6
  export type DbRef = RawBuilder | ReturnType<DynamicModule['ref']>
5
7
 
package/src/index.ts CHANGED
@@ -1,20 +1,24 @@
1
1
  import events from 'node:events'
2
2
  import http from 'node:http'
3
3
  import { connectNodeAdapter } from '@connectrpc/connect-node'
4
- import { HttpTerminator, createHttpTerminator } from 'http-terminator'
5
- import { ServerConfig } from './config'
6
- import { AppContext, AppContextOptions } from './context'
7
- import { createMuteOpChannel } from './db/schema/mute_op'
8
- import { createNotifOpChannel } from './db/schema/notif_op'
9
- import { createOperationChannel } from './db/schema/operation'
10
- import { dbLogger, loggerMiddleware } from './logger'
11
- import routes from './routes'
4
+ // eslint-disable-next-line import/default, import/no-named-as-default-member
5
+ import httpTerminator from 'http-terminator'
6
+ // eslint-disable-next-line import/no-named-as-default-member
7
+ const { createHttpTerminator } = httpTerminator
8
+ type HttpTerminator = ReturnType<typeof createHttpTerminator>
9
+ import { ServerConfig } from './config.js'
10
+ import { AppContext, AppContextOptions } from './context.js'
11
+ import { createMuteOpChannel } from './db/schema/mute_op.js'
12
+ import { createNotifOpChannel } from './db/schema/notif_op.js'
13
+ import { createOperationChannel } from './db/schema/operation.js'
14
+ import { dbLogger, loggerMiddleware } from './logger.js'
15
+ import routes from './routes/index.js'
12
16
 
13
- export * from './config'
14
- export * from './client'
15
- export { Database } from './db'
16
- export { AppContext } from './context'
17
- export { httpLogger } from './logger'
17
+ export * from './config.js'
18
+ export * from './client.js'
19
+ export { Database } from './db/index.js'
20
+ export { AppContext } from './context.js'
21
+ export { httpLogger } from './logger.js'
18
22
 
19
23
  export class BsyncService {
20
24
  public ctx: AppContext
@@ -3,7 +3,7 @@
3
3
  /* eslint-disable */
4
4
  // @ts-nocheck
5
5
 
6
- import { AddMuteOperationRequest, AddMuteOperationResponse, AddNotifOperationRequest, AddNotifOperationResponse, DeleteOperationsByActorAndNamespaceRequest, DeleteOperationsByActorAndNamespaceResponse, PingRequest, PingResponse, PutOperationRequest, PutOperationResponse, ScanMuteOperationsRequest, ScanMuteOperationsResponse, ScanNotifOperationsRequest, ScanNotifOperationsResponse, ScanOperationsRequest, ScanOperationsResponse } from "./bsync_pb";
6
+ import { AddMuteOperationRequest, AddMuteOperationResponse, AddNotifOperationRequest, AddNotifOperationResponse, DeleteOperationsByActorAndNamespaceRequest, DeleteOperationsByActorAndNamespaceResponse, PingRequest, PingResponse, PutOperationRequest, PutOperationResponse, ScanMuteOperationsRequest, ScanMuteOperationsResponse, ScanNotifOperationsRequest, ScanNotifOperationsResponse, ScanOperationsRequest, ScanOperationsResponse } from "./bsync_pb.js";
7
7
  import { MethodKind } from "@bufbuild/protobuf";
8
8
 
9
9
  /**
@@ -1,13 +1,16 @@
1
1
  import { Code, ConnectError, ServiceImpl } from '@connectrpc/connect'
2
2
  import { sql } from 'kysely'
3
3
  import { AtUri } from '@atproto/syntax'
4
- import { AppContext } from '../context'
5
- import { Database } from '../db'
6
- import { createMuteOpChannel } from '../db/schema/mute_op'
7
- import { Service } from '../proto/bsync_connect'
8
- import { AddMuteOperationResponse, MuteOperation_Type } from '../proto/bsync_pb'
9
- import { authWithApiKey } from './auth'
10
- import { isValidAtUri, isValidDid } from './util'
4
+ import { AppContext } from '../context.js'
5
+ import { Database } from '../db/index.js'
6
+ import { createMuteOpChannel } from '../db/schema/mute_op.js'
7
+ import { Service } from '../proto/bsync_connect.js'
8
+ import {
9
+ AddMuteOperationResponse,
10
+ MuteOperation_Type,
11
+ } from '../proto/bsync_pb.js'
12
+ import { authWithApiKey } from './auth.js'
13
+ import { isValidAtUri, isValidDid } from './util.js'
11
14
 
12
15
  export default (ctx: AppContext): Partial<ServiceImpl<typeof Service>> => ({
13
16
  async addMuteOperation(req, handlerCtx) {
@@ -1,12 +1,12 @@
1
1
  import { Code, ConnectError, ServiceImpl } from '@connectrpc/connect'
2
2
  import { sql } from 'kysely'
3
- import { AppContext } from '../context'
4
- import { Database } from '../db'
5
- import { createNotifOpChannel } from '../db/schema/notif_op'
6
- import { Service } from '../proto/bsync_connect'
7
- import { AddNotifOperationResponse } from '../proto/bsync_pb'
8
- import { authWithApiKey } from './auth'
9
- import { isValidDid } from './util'
3
+ import { AppContext } from '../context.js'
4
+ import { Database } from '../db/index.js'
5
+ import { createNotifOpChannel } from '../db/schema/notif_op.js'
6
+ import { Service } from '../proto/bsync_connect.js'
7
+ import { AddNotifOperationResponse } from '../proto/bsync_pb.js'
8
+ import { authWithApiKey } from './auth.js'
9
+ import { isValidDid } from './util.js'
10
10
 
11
11
  export default (ctx: AppContext): Partial<ServiceImpl<typeof Service>> => ({
12
12
  async addNotifOperation(req, handlerCtx) {
@@ -1,5 +1,5 @@
1
1
  import { Code, ConnectError, HandlerContext } from '@connectrpc/connect'
2
- import { AppContext } from '../context'
2
+ import { AppContext } from '../context.js'
3
3
 
4
4
  const BEARER = 'Bearer '
5
5
 
@@ -1,9 +1,9 @@
1
1
  import { Code, ConnectError, ServiceImpl } from '@connectrpc/connect'
2
- import { AppContext } from '../context'
3
- import { Service } from '../proto/bsync_connect'
4
- import { DeleteOperationsByActorAndNamespaceResponse } from '../proto/bsync_pb'
5
- import { authWithApiKey } from './auth'
6
- import { isValidDid, validateNamespace } from './util'
2
+ import { AppContext } from '../context.js'
3
+ import { Service } from '../proto/bsync_connect.js'
4
+ import { DeleteOperationsByActorAndNamespaceResponse } from '../proto/bsync_pb.js'
5
+ import { authWithApiKey } from './auth.js'
6
+ import { isValidDid, validateNamespace } from './util.js'
7
7
 
8
8
  export default (ctx: AppContext): Partial<ServiceImpl<typeof Service>> => ({
9
9
  /**
@@ -1,14 +1,14 @@
1
1
  import { ConnectRouter } from '@connectrpc/connect'
2
2
  import { sql } from 'kysely'
3
- import { AppContext } from '../context'
4
- import { Service } from '../proto/bsync_connect'
5
- import addMuteOperation from './add-mute-operation'
6
- import addNotifOperation from './add-notif-operation'
7
- import deleteOperations from './delete-operations'
8
- import putOperation from './put-operation'
9
- import scanMuteOperations from './scan-mute-operations'
10
- import scanNotifOperations from './scan-notif-operations'
11
- import scanOperations from './scan-operations'
3
+ import { AppContext } from '../context.js'
4
+ import { Service } from '../proto/bsync_connect.js'
5
+ import addMuteOperation from './add-mute-operation.js'
6
+ import addNotifOperation from './add-notif-operation.js'
7
+ import deleteOperations from './delete-operations.js'
8
+ import putOperation from './put-operation.js'
9
+ import scanMuteOperations from './scan-mute-operations.js'
10
+ import scanNotifOperations from './scan-notif-operations.js'
11
+ import scanOperations from './scan-operations.js'
12
12
 
13
13
  export default (ctx: AppContext) => (router: ConnectRouter) => {
14
14
  return router.service(Service, {
@@ -1,17 +1,20 @@
1
1
  import { Code, ConnectError, ServiceImpl } from '@connectrpc/connect'
2
2
  import { sql } from 'kysely'
3
3
  import { ensureValidRecordKey } from '@atproto/syntax'
4
- import { AppContext } from '../context'
5
- import { Database } from '../db'
6
- import { OperationMethod, createOperationChannel } from '../db/schema/operation'
7
- import { Service } from '../proto/bsync_connect'
4
+ import { AppContext } from '../context.js'
5
+ import { Database } from '../db/index.js'
6
+ import {
7
+ OperationMethod,
8
+ createOperationChannel,
9
+ } from '../db/schema/operation.js'
10
+ import { Service } from '../proto/bsync_connect.js'
8
11
  import {
9
12
  Method,
10
13
  PutOperationRequest,
11
14
  PutOperationResponse,
12
- } from '../proto/bsync_pb'
13
- import { authWithApiKey } from './auth'
14
- import { isValidDid, validateNamespace } from './util'
15
+ } from '../proto/bsync_pb.js'
16
+ import { authWithApiKey } from './auth.js'
17
+ import { isValidDid, validateNamespace } from './util.js'
15
18
 
16
19
  export default (ctx: AppContext): Partial<ServiceImpl<typeof Service>> => ({
17
20
  async putOperation(req, handlerCtx) {
@@ -107,6 +110,6 @@ type Operation = {
107
110
  actorDid: string
108
111
  namespace: string
109
112
  key: string
110
- payload: Uint8Array
113
+ payload: Uint8Array<ArrayBuffer>
111
114
  method: OperationMethod
112
115
  }
@@ -1,11 +1,11 @@
1
1
  import { once } from 'node:events'
2
2
  import { ServiceImpl } from '@connectrpc/connect'
3
- import { AppContext } from '../context'
4
- import { createMuteOpChannel } from '../db/schema/mute_op'
5
- import { Service } from '../proto/bsync_connect'
6
- import { ScanMuteOperationsResponse } from '../proto/bsync_pb'
7
- import { authWithApiKey } from './auth'
8
- import { combineSignals, validCursor } from './util'
3
+ import { AppContext } from '../context.js'
4
+ import { createMuteOpChannel } from '../db/schema/mute_op.js'
5
+ import { Service } from '../proto/bsync_connect.js'
6
+ import { ScanMuteOperationsResponse } from '../proto/bsync_pb.js'
7
+ import { authWithApiKey } from './auth.js'
8
+ import { combineSignals, validCursor } from './util.js'
9
9
 
10
10
  export default (ctx: AppContext): Partial<ServiceImpl<typeof Service>> => ({
11
11
  async scanMuteOperations(req, handlerCtx) {
@@ -1,11 +1,11 @@
1
1
  import { once } from 'node:events'
2
2
  import { ServiceImpl } from '@connectrpc/connect'
3
- import { AppContext } from '../context'
4
- import { createNotifOpChannel } from '../db/schema/notif_op'
5
- import { Service } from '../proto/bsync_connect'
6
- import { ScanNotifOperationsResponse } from '../proto/bsync_pb'
7
- import { authWithApiKey } from './auth'
8
- import { combineSignals, validCursor } from './util'
3
+ import { AppContext } from '../context.js'
4
+ import { createNotifOpChannel } from '../db/schema/notif_op.js'
5
+ import { Service } from '../proto/bsync_connect.js'
6
+ import { ScanNotifOperationsResponse } from '../proto/bsync_pb.js'
7
+ import { authWithApiKey } from './auth.js'
8
+ import { combineSignals, validCursor } from './util.js'
9
9
 
10
10
  export default (ctx: AppContext): Partial<ServiceImpl<typeof Service>> => ({
11
11
  async scanNotifOperations(req, handlerCtx) {
@@ -1,11 +1,11 @@
1
1
  import { once } from 'node:events'
2
2
  import { ServiceImpl } from '@connectrpc/connect'
3
- import { AppContext } from '../context'
4
- import { createOperationChannel } from '../db/schema/operation'
5
- import { Service } from '../proto/bsync_connect'
6
- import { ScanOperationsResponse } from '../proto/bsync_pb'
7
- import { authWithApiKey } from './auth'
8
- import { combineSignals, validCursor } from './util'
3
+ import { AppContext } from '../context.js'
4
+ import { createOperationChannel } from '../db/schema/operation.js'
5
+ import { Service } from '../proto/bsync_connect.js'
6
+ import { ScanOperationsResponse } from '../proto/bsync_pb.js'
7
+ import { authWithApiKey } from './auth.js'
8
+ import { combineSignals, validCursor } from './util.js'
9
9
 
10
10
  export default (ctx: AppContext): Partial<ServiceImpl<typeof Service>> => ({
11
11
  async scanOperations(req, handlerCtx) {
@@ -6,8 +6,8 @@ import {
6
6
  authWithApiKey,
7
7
  createClient,
8
8
  envToCfg,
9
- } from '../src'
10
- import { Method } from '../src/proto/bsync_pb'
9
+ } from '../src/index.js'
10
+ import { Method } from '../src/proto/bsync_pb.js'
11
11
 
12
12
  describe('operations', () => {
13
13
  let bsync: BsyncService
@@ -8,8 +8,8 @@ import {
8
8
  authWithApiKey,
9
9
  createClient,
10
10
  envToCfg,
11
- } from '../src'
12
- import { MuteOperation, MuteOperation_Type } from '../src/proto/bsync_pb'
11
+ } from '../src/index.js'
12
+ import { MuteOperation, MuteOperation_Type } from '../src/proto/bsync_pb.js'
13
13
 
14
14
  describe('mutes', () => {
15
15
  let bsync: BsyncService
@@ -8,8 +8,8 @@ import {
8
8
  authWithApiKey,
9
9
  createClient,
10
10
  envToCfg,
11
- } from '../src'
12
- import { NotifOperation } from '../src/proto/bsync_pb'
11
+ } from '../src/index.js'
12
+ import { NotifOperation } from '../src/proto/bsync_pb.js'
13
13
 
14
14
  describe('notifications', () => {
15
15
  let bsync: BsyncService
@@ -9,8 +9,8 @@ import {
9
9
  authWithApiKey,
10
10
  createClient,
11
11
  envToCfg,
12
- } from '../src'
13
- import { Method, Operation } from '../src/proto/bsync_pb'
12
+ } from '../src/index.js'
13
+ import { Method, Operation } from '../src/proto/bsync_pb.js'
14
14
 
15
15
  describe('operations', () => {
16
16
  let bsync: BsyncService
@@ -1 +1 @@
1
- {"root":["./src/client.ts","./src/config.ts","./src/context.ts","./src/index.ts","./src/logger.ts","./src/db/index.ts","./src/db/types.ts","./src/db/migrations/20240108T220751294Z-init.ts","./src/db/migrations/20240717T224303472Z-notif-ops.ts","./src/db/migrations/20250527T022203400Z-add-operation.ts","./src/db/migrations/20250603T163446567Z-alter-operation.ts","./src/db/migrations/index.ts","./src/db/migrations/provider.ts","./src/db/schema/index.ts","./src/db/schema/mute_item.ts","./src/db/schema/mute_op.ts","./src/db/schema/notif_item.ts","./src/db/schema/notif_op.ts","./src/db/schema/operation.ts","./src/proto/bsync_connect.ts","./src/proto/bsync_pb.ts","./src/routes/add-mute-operation.ts","./src/routes/add-notif-operation.ts","./src/routes/auth.ts","./src/routes/delete-operations.ts","./src/routes/index.ts","./src/routes/put-operation.ts","./src/routes/scan-mute-operations.ts","./src/routes/scan-notif-operations.ts","./src/routes/scan-operations.ts","./src/routes/util.ts"],"version":"5.8.2"}
1
+ {"root":["./src/client.ts","./src/config.ts","./src/context.ts","./src/index.ts","./src/logger.ts","./src/db/index.ts","./src/db/types.ts","./src/db/migrations/20240108T220751294Z-init.ts","./src/db/migrations/20240717T224303472Z-notif-ops.ts","./src/db/migrations/20250527T022203400Z-add-operation.ts","./src/db/migrations/20250603T163446567Z-alter-operation.ts","./src/db/migrations/index.ts","./src/db/migrations/provider.ts","./src/db/schema/index.ts","./src/db/schema/mute_item.ts","./src/db/schema/mute_op.ts","./src/db/schema/notif_item.ts","./src/db/schema/notif_op.ts","./src/db/schema/operation.ts","./src/proto/bsync_connect.ts","./src/proto/bsync_pb.ts","./src/routes/add-mute-operation.ts","./src/routes/add-notif-operation.ts","./src/routes/auth.ts","./src/routes/delete-operations.ts","./src/routes/index.ts","./src/routes/put-operation.ts","./src/routes/scan-mute-operations.ts","./src/routes/scan-notif-operations.ts","./src/routes/scan-operations.ts","./src/routes/util.ts"],"version":"6.0.3"}
package/jest.config.js DELETED
@@ -1,7 +0,0 @@
1
- /** @type {import('jest').Config} */
2
- module.exports = {
3
- displayName: 'Bsync',
4
- transform: { '^.+\\.(t|j)s$': '@swc/jest' },
5
- setupFiles: ['<rootDir>/../../jest.setup.ts'],
6
- moduleNameMapper: { '^(\\.\\.?\\/.+)\\.js$': ['$1.ts', '$1.js'] },
7
- }