@pkcprotocol/pkc-js 0.0.100 → 0.0.102

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 (110) hide show
  1. package/README.md +1 -0
  2. package/dist/browser/clients/rpc-client/rpc-schema-util.d.ts +4 -2
  3. package/dist/browser/clients/rpc-client/schema.d.ts +4 -2
  4. package/dist/browser/community/schema.d.ts +125 -51
  5. package/dist/browser/community/schema.js +20 -4
  6. package/dist/browser/community/schema.js.map +1 -1
  7. package/dist/browser/domain-util.d.ts +3 -0
  8. package/dist/browser/domain-util.js +16 -0
  9. package/dist/browser/domain-util.js.map +1 -0
  10. package/dist/browser/errors.d.ts +5 -0
  11. package/dist/browser/errors.js +5 -0
  12. package/dist/browser/errors.js.map +1 -1
  13. package/dist/browser/generated-version.d.ts +1 -1
  14. package/dist/browser/generated-version.js +1 -1
  15. package/dist/browser/index-with-compile-cache.d.ts +18 -12
  16. package/dist/browser/index.d.ts +18 -12
  17. package/dist/browser/pkc-error.d.ts +1 -1
  18. package/dist/browser/publications/community-edit/schema.d.ts +16 -8
  19. package/dist/browser/pubsub-messages/schema.d.ts +8 -4
  20. package/dist/browser/rpc/src/lib/pkc-js/index.d.ts +9 -6
  21. package/dist/browser/rpc/src/schema.d.ts +54 -36
  22. package/dist/browser/runtime/node/community/challenges/exclude/exclude.d.ts +1 -1
  23. package/dist/browser/runtime/node/community/challenges/exclude/exclude.js +41 -16
  24. package/dist/browser/runtime/node/community/challenges/exclude/exclude.js.map +1 -1
  25. package/dist/browser/runtime/node/community/challenges/exclude/utils.d.ts +2 -3
  26. package/dist/browser/runtime/node/community/challenges/exclude/utils.js +1 -15
  27. package/dist/browser/runtime/node/community/challenges/exclude/utils.js.map +1 -1
  28. package/dist/browser/runtime/node/community/challenges/index.js +1 -1
  29. package/dist/browser/runtime/node/community/challenges/index.js.map +1 -1
  30. package/dist/browser/runtime/node/community/challenges/pkc-js-challenges/blacklist.js +18 -13
  31. package/dist/browser/runtime/node/community/challenges/pkc-js-challenges/blacklist.js.map +1 -1
  32. package/dist/browser/runtime/node/community/challenges/pkc-js-challenges/whitelist.js +18 -13
  33. package/dist/browser/runtime/node/community/challenges/pkc-js-challenges/whitelist.js.map +1 -1
  34. package/dist/browser/runtime/node/community/db-handler.d.ts +3 -2
  35. package/dist/browser/runtime/node/community/db-handler.js +20 -2
  36. package/dist/browser/runtime/node/community/db-handler.js.map +1 -1
  37. package/dist/browser/runtime/node/community/local-community/author-identity.d.ts +19 -0
  38. package/dist/browser/runtime/node/community/local-community/author-identity.js +50 -0
  39. package/dist/browser/runtime/node/community/local-community/author-identity.js.map +1 -0
  40. package/dist/browser/runtime/node/community/local-community/publication-validation.js +14 -22
  41. package/dist/browser/runtime/node/community/local-community/publication-validation.js.map +1 -1
  42. package/dist/browser/schema/schema-util.d.ts +36 -18
  43. package/dist/browser/schema.d.ts +72 -48
  44. package/dist/browser/test/test-util.d.ts +17 -10
  45. package/dist/browser/test/test-util.js +1 -1
  46. package/dist/browser/test/test-util.js.map +1 -1
  47. package/dist/browser/util.d.ts +1 -4
  48. package/dist/browser/util.js +4 -10
  49. package/dist/browser/util.js.map +1 -1
  50. package/dist/browser/version.js +1 -1
  51. package/dist/bundled/bundle-manifest.json +27 -25
  52. package/dist/bundled/chunks/{helia-for-pkc-Cq6VWePV.js → helia-for-pkc-ZbhRl9a-.js} +2 -2
  53. package/dist/bundled/chunks/{local-community-CcHbWkoT.js → local-community-Cu95rtju.js} +1 -1
  54. package/dist/bundled/chunks/{local-community-ph-pl_pg.js → local-community-L-1IkV1x.js} +26 -20
  55. package/dist/bundled/chunks/{node-2PkhAerB.js → node-DaN6R9HB.js} +5 -5
  56. package/dist/bundled/chunks/{rpc-local-community-BK1FjUk2.js → rpc-local-community-aV790d8_.js} +94 -35
  57. package/dist/bundled/chunks/{schema-CYR820MD.js → schema-gif6qroG.js} +31 -19
  58. package/dist/bundled/chunks/{util-gAVw5PrE.js → util-BsJoElMm.js} +1 -1
  59. package/dist/bundled/index.js +1 -1
  60. package/dist/bundled/rpc/src/index.js +4 -4
  61. package/dist/node/clients/rpc-client/rpc-schema-util.d.ts +4 -2
  62. package/dist/node/clients/rpc-client/schema.d.ts +4 -2
  63. package/dist/node/community/schema.d.ts +125 -51
  64. package/dist/node/community/schema.js +20 -4
  65. package/dist/node/community/schema.js.map +1 -1
  66. package/dist/node/domain-util.d.ts +3 -0
  67. package/dist/node/domain-util.js +16 -0
  68. package/dist/node/domain-util.js.map +1 -0
  69. package/dist/node/errors.d.ts +5 -0
  70. package/dist/node/errors.js +5 -0
  71. package/dist/node/errors.js.map +1 -1
  72. package/dist/node/generated-version.d.ts +1 -1
  73. package/dist/node/generated-version.js +1 -1
  74. package/dist/node/index-with-compile-cache.d.ts +18 -12
  75. package/dist/node/index.d.ts +18 -12
  76. package/dist/node/pkc-error.d.ts +1 -1
  77. package/dist/node/publications/community-edit/schema.d.ts +16 -8
  78. package/dist/node/pubsub-messages/schema.d.ts +8 -4
  79. package/dist/node/rpc/src/lib/pkc-js/index.d.ts +9 -6
  80. package/dist/node/rpc/src/schema.d.ts +54 -36
  81. package/dist/node/runtime/node/community/challenges/exclude/exclude.d.ts +1 -1
  82. package/dist/node/runtime/node/community/challenges/exclude/exclude.js +41 -16
  83. package/dist/node/runtime/node/community/challenges/exclude/exclude.js.map +1 -1
  84. package/dist/node/runtime/node/community/challenges/exclude/utils.d.ts +2 -3
  85. package/dist/node/runtime/node/community/challenges/exclude/utils.js +1 -15
  86. package/dist/node/runtime/node/community/challenges/exclude/utils.js.map +1 -1
  87. package/dist/node/runtime/node/community/challenges/index.js +1 -1
  88. package/dist/node/runtime/node/community/challenges/index.js.map +1 -1
  89. package/dist/node/runtime/node/community/challenges/pkc-js-challenges/blacklist.js +18 -13
  90. package/dist/node/runtime/node/community/challenges/pkc-js-challenges/blacklist.js.map +1 -1
  91. package/dist/node/runtime/node/community/challenges/pkc-js-challenges/whitelist.js +18 -13
  92. package/dist/node/runtime/node/community/challenges/pkc-js-challenges/whitelist.js.map +1 -1
  93. package/dist/node/runtime/node/community/db-handler.d.ts +3 -2
  94. package/dist/node/runtime/node/community/db-handler.js +20 -2
  95. package/dist/node/runtime/node/community/db-handler.js.map +1 -1
  96. package/dist/node/runtime/node/community/local-community/author-identity.d.ts +19 -0
  97. package/dist/node/runtime/node/community/local-community/author-identity.js +50 -0
  98. package/dist/node/runtime/node/community/local-community/author-identity.js.map +1 -0
  99. package/dist/node/runtime/node/community/local-community/publication-validation.js +14 -22
  100. package/dist/node/runtime/node/community/local-community/publication-validation.js.map +1 -1
  101. package/dist/node/schema/schema-util.d.ts +36 -18
  102. package/dist/node/schema.d.ts +72 -48
  103. package/dist/node/test/test-util.d.ts +17 -10
  104. package/dist/node/test/test-util.js +1 -1
  105. package/dist/node/test/test-util.js.map +1 -1
  106. package/dist/node/util.d.ts +1 -4
  107. package/dist/node/util.js +4 -10
  108. package/dist/node/util.js.map +1 -1
  109. package/dist/node/version.js +1 -1
  110. package/package.json +4 -3
@@ -67,6 +67,7 @@ export declare const CreateCommunityEditPublicationOptionsSchema: import("zod").
67
67
  noCrossposts: import("zod").ZodOptional<import("zod").ZodBoolean>;
68
68
  maxCrosspostDepth: import("zod").ZodOptional<import("zod").ZodNumber>;
69
69
  noNestedReplies: import("zod").ZodOptional<import("zod").ZodBoolean>;
70
+ noArchive: import("zod").ZodOptional<import("zod").ZodBoolean>;
70
71
  safeForWork: import("zod").ZodOptional<import("zod").ZodBoolean>;
71
72
  authorFlairs: import("zod").ZodOptional<import("zod").ZodBoolean>;
72
73
  requireAuthorFlairs: import("zod").ZodOptional<import("zod").ZodBoolean>;
@@ -126,12 +127,13 @@ export declare const CreateCommunityEditPublicationOptionsSchema: import("zod").
126
127
  replyCount: import("zod").ZodOptional<import("zod").ZodNumber>;
127
128
  firstCommentTimestamp: import("zod").ZodOptional<import("zod").ZodNumber>;
128
129
  challenges: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodNumber>>;
129
- role: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodUnion<[import("zod").ZodEnum<{
130
+ roles: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodUnion<[import("zod").ZodEnum<{
130
131
  owner: "owner";
131
132
  admin: "admin";
132
133
  moderator: "moderator";
133
134
  }>, import("zod").ZodString]>>>;
134
- address: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
135
+ publicKeys: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
136
+ names: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
135
137
  rateLimit: import("zod").ZodOptional<import("zod").ZodNumber>;
136
138
  rateLimitChallengeSuccess: import("zod").ZodOptional<import("zod").ZodBoolean>;
137
139
  publicationType: import("zod").ZodOptional<import("zod").ZodObject<{
@@ -228,6 +230,7 @@ export declare const CreateCommunityEditPublicationOptionsWithRefinementSchema:
228
230
  noCrossposts: import("zod").ZodOptional<import("zod").ZodBoolean>;
229
231
  maxCrosspostDepth: import("zod").ZodOptional<import("zod").ZodNumber>;
230
232
  noNestedReplies: import("zod").ZodOptional<import("zod").ZodBoolean>;
233
+ noArchive: import("zod").ZodOptional<import("zod").ZodBoolean>;
231
234
  safeForWork: import("zod").ZodOptional<import("zod").ZodBoolean>;
232
235
  authorFlairs: import("zod").ZodOptional<import("zod").ZodBoolean>;
233
236
  requireAuthorFlairs: import("zod").ZodOptional<import("zod").ZodBoolean>;
@@ -287,12 +290,13 @@ export declare const CreateCommunityEditPublicationOptionsWithRefinementSchema:
287
290
  replyCount: import("zod").ZodOptional<import("zod").ZodNumber>;
288
291
  firstCommentTimestamp: import("zod").ZodOptional<import("zod").ZodNumber>;
289
292
  challenges: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodNumber>>;
290
- role: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodUnion<[import("zod").ZodEnum<{
293
+ roles: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodUnion<[import("zod").ZodEnum<{
291
294
  owner: "owner";
292
295
  admin: "admin";
293
296
  moderator: "moderator";
294
297
  }>, import("zod").ZodString]>>>;
295
- address: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
298
+ publicKeys: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
299
+ names: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
296
300
  rateLimit: import("zod").ZodOptional<import("zod").ZodNumber>;
297
301
  rateLimitChallengeSuccess: import("zod").ZodOptional<import("zod").ZodBoolean>;
298
302
  publicationType: import("zod").ZodOptional<import("zod").ZodObject<{
@@ -385,6 +389,7 @@ export declare const CommunityEditPubsubMessagePublicationSchema: import("zod").
385
389
  noCrossposts: import("zod").ZodOptional<import("zod").ZodBoolean>;
386
390
  maxCrosspostDepth: import("zod").ZodOptional<import("zod").ZodNumber>;
387
391
  noNestedReplies: import("zod").ZodOptional<import("zod").ZodBoolean>;
392
+ noArchive: import("zod").ZodOptional<import("zod").ZodBoolean>;
388
393
  safeForWork: import("zod").ZodOptional<import("zod").ZodBoolean>;
389
394
  authorFlairs: import("zod").ZodOptional<import("zod").ZodBoolean>;
390
395
  requireAuthorFlairs: import("zod").ZodOptional<import("zod").ZodBoolean>;
@@ -444,12 +449,13 @@ export declare const CommunityEditPubsubMessagePublicationSchema: import("zod").
444
449
  replyCount: import("zod").ZodOptional<import("zod").ZodNumber>;
445
450
  firstCommentTimestamp: import("zod").ZodOptional<import("zod").ZodNumber>;
446
451
  challenges: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodNumber>>;
447
- role: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodUnion<[import("zod").ZodEnum<{
452
+ roles: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodUnion<[import("zod").ZodEnum<{
448
453
  owner: "owner";
449
454
  admin: "admin";
450
455
  moderator: "moderator";
451
456
  }>, import("zod").ZodString]>>>;
452
- address: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
457
+ publicKeys: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
458
+ names: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
453
459
  rateLimit: import("zod").ZodOptional<import("zod").ZodNumber>;
454
460
  rateLimitChallengeSuccess: import("zod").ZodOptional<import("zod").ZodBoolean>;
455
461
  publicationType: import("zod").ZodOptional<import("zod").ZodObject<{
@@ -544,6 +550,7 @@ export declare const CommunityEditPublicationChallengeRequestToEncryptSchema: im
544
550
  noCrossposts: import("zod").ZodOptional<import("zod").ZodBoolean>;
545
551
  maxCrosspostDepth: import("zod").ZodOptional<import("zod").ZodNumber>;
546
552
  noNestedReplies: import("zod").ZodOptional<import("zod").ZodBoolean>;
553
+ noArchive: import("zod").ZodOptional<import("zod").ZodBoolean>;
547
554
  safeForWork: import("zod").ZodOptional<import("zod").ZodBoolean>;
548
555
  authorFlairs: import("zod").ZodOptional<import("zod").ZodBoolean>;
549
556
  requireAuthorFlairs: import("zod").ZodOptional<import("zod").ZodBoolean>;
@@ -603,12 +610,13 @@ export declare const CommunityEditPublicationChallengeRequestToEncryptSchema: im
603
610
  replyCount: import("zod").ZodOptional<import("zod").ZodNumber>;
604
611
  firstCommentTimestamp: import("zod").ZodOptional<import("zod").ZodNumber>;
605
612
  challenges: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodNumber>>;
606
- role: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodUnion<[import("zod").ZodEnum<{
613
+ roles: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodUnion<[import("zod").ZodEnum<{
607
614
  owner: "owner";
608
615
  admin: "admin";
609
616
  moderator: "moderator";
610
617
  }>, import("zod").ZodString]>>>;
611
- address: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
618
+ publicKeys: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
619
+ names: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
612
620
  rateLimit: import("zod").ZodOptional<import("zod").ZodNumber>;
613
621
  rateLimitChallengeSuccess: import("zod").ZodOptional<import("zod").ZodBoolean>;
614
622
  publicationType: import("zod").ZodOptional<import("zod").ZodObject<{
@@ -319,6 +319,7 @@ export declare const DecryptedChallengeRequestPublicationSchema: z.ZodObject<{
319
319
  noCrossposts: z.ZodOptional<z.ZodBoolean>;
320
320
  maxCrosspostDepth: z.ZodOptional<z.ZodNumber>;
321
321
  noNestedReplies: z.ZodOptional<z.ZodBoolean>;
322
+ noArchive: z.ZodOptional<z.ZodBoolean>;
322
323
  safeForWork: z.ZodOptional<z.ZodBoolean>;
323
324
  authorFlairs: z.ZodOptional<z.ZodBoolean>;
324
325
  requireAuthorFlairs: z.ZodOptional<z.ZodBoolean>;
@@ -378,12 +379,13 @@ export declare const DecryptedChallengeRequestPublicationSchema: z.ZodObject<{
378
379
  replyCount: z.ZodOptional<z.ZodNumber>;
379
380
  firstCommentTimestamp: z.ZodOptional<z.ZodNumber>;
380
381
  challenges: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
381
- role: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodEnum<{
382
+ roles: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodEnum<{
382
383
  owner: "owner";
383
384
  admin: "admin";
384
385
  moderator: "moderator";
385
386
  }>, z.ZodString]>>>;
386
- address: z.ZodOptional<z.ZodArray<z.ZodString>>;
387
+ publicKeys: z.ZodOptional<z.ZodArray<z.ZodString>>;
388
+ names: z.ZodOptional<z.ZodArray<z.ZodString>>;
387
389
  rateLimit: z.ZodOptional<z.ZodNumber>;
388
390
  rateLimitChallengeSuccess: z.ZodOptional<z.ZodBoolean>;
389
391
  publicationType: z.ZodOptional<z.ZodObject<{
@@ -700,6 +702,7 @@ export declare const DecryptedChallengeRequestSchema: z.ZodObject<{
700
702
  noCrossposts: z.ZodOptional<z.ZodBoolean>;
701
703
  maxCrosspostDepth: z.ZodOptional<z.ZodNumber>;
702
704
  noNestedReplies: z.ZodOptional<z.ZodBoolean>;
705
+ noArchive: z.ZodOptional<z.ZodBoolean>;
703
706
  safeForWork: z.ZodOptional<z.ZodBoolean>;
704
707
  authorFlairs: z.ZodOptional<z.ZodBoolean>;
705
708
  requireAuthorFlairs: z.ZodOptional<z.ZodBoolean>;
@@ -759,12 +762,13 @@ export declare const DecryptedChallengeRequestSchema: z.ZodObject<{
759
762
  replyCount: z.ZodOptional<z.ZodNumber>;
760
763
  firstCommentTimestamp: z.ZodOptional<z.ZodNumber>;
761
764
  challenges: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
762
- role: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodEnum<{
765
+ roles: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodEnum<{
763
766
  owner: "owner";
764
767
  admin: "admin";
765
768
  moderator: "moderator";
766
769
  }>, z.ZodString]>>>;
767
- address: z.ZodOptional<z.ZodArray<z.ZodString>>;
770
+ publicKeys: z.ZodOptional<z.ZodArray<z.ZodString>>;
771
+ names: z.ZodOptional<z.ZodArray<z.ZodString>>;
768
772
  rateLimit: z.ZodOptional<z.ZodNumber>;
769
773
  rateLimitChallengeSuccess: z.ZodOptional<z.ZodBoolean>;
770
774
  publicationType: z.ZodOptional<z.ZodObject<{
@@ -28,12 +28,13 @@ declare const PKCJs: {
28
28
  replyCount: import("zod").ZodOptional<import("zod").ZodNumber>;
29
29
  firstCommentTimestamp: import("zod").ZodOptional<import("zod").ZodNumber>;
30
30
  challenges: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodNumber>>;
31
- role: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodUnion<[import("zod").ZodEnum<{
31
+ roles: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodUnion<[import("zod").ZodEnum<{
32
32
  owner: "owner";
33
33
  admin: "admin";
34
34
  moderator: "moderator";
35
35
  }>, import("zod").ZodString]>>>;
36
- address: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
36
+ publicKeys: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
37
+ names: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
37
38
  rateLimit: import("zod").ZodOptional<import("zod").ZodNumber>;
38
39
  rateLimitChallengeSuccess: import("zod").ZodOptional<import("zod").ZodBoolean>;
39
40
  publicationType: import("zod").ZodOptional<import("zod").ZodObject<{
@@ -81,12 +82,13 @@ declare const PKCJs: {
81
82
  replyCount: import("zod").ZodOptional<import("zod").ZodNumber>;
82
83
  firstCommentTimestamp: import("zod").ZodOptional<import("zod").ZodNumber>;
83
84
  challenges: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodNumber>>;
84
- role: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodUnion<[import("zod").ZodEnum<{
85
+ roles: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodUnion<[import("zod").ZodEnum<{
85
86
  owner: "owner";
86
87
  admin: "admin";
87
88
  moderator: "moderator";
88
89
  }>, import("zod").ZodString]>>>;
89
- address: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
90
+ publicKeys: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
91
+ names: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
90
92
  rateLimit: import("zod").ZodOptional<import("zod").ZodNumber>;
91
93
  rateLimitChallengeSuccess: import("zod").ZodOptional<import("zod").ZodBoolean>;
92
94
  publicationType: import("zod").ZodOptional<import("zod").ZodObject<{
@@ -146,12 +148,13 @@ declare const PKCJs: {
146
148
  replyCount: import("zod").ZodOptional<import("zod").ZodNumber>;
147
149
  firstCommentTimestamp: import("zod").ZodOptional<import("zod").ZodNumber>;
148
150
  challenges: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodNumber>>;
149
- role: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodUnion<[import("zod").ZodEnum<{
151
+ roles: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodUnion<[import("zod").ZodEnum<{
150
152
  owner: "owner";
151
153
  admin: "admin";
152
154
  moderator: "moderator";
153
155
  }>, import("zod").ZodString]>>>;
154
- address: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
156
+ publicKeys: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
157
+ names: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
155
158
  rateLimit: import("zod").ZodOptional<import("zod").ZodNumber>;
156
159
  rateLimitChallengeSuccess: import("zod").ZodOptional<import("zod").ZodBoolean>;
157
160
  publicationType: import("zod").ZodOptional<import("zod").ZodObject<{
@@ -61,12 +61,13 @@ export declare const CreatePKCWsServerOptionsSchema: z.ZodObject<{
61
61
  replyCount: z.ZodOptional<z.ZodNumber>;
62
62
  firstCommentTimestamp: z.ZodOptional<z.ZodNumber>;
63
63
  challenges: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
64
- role: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodEnum<{
64
+ roles: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodEnum<{
65
65
  owner: "owner";
66
66
  admin: "admin";
67
67
  moderator: "moderator";
68
68
  }>, z.ZodString]>>>;
69
- address: z.ZodOptional<z.ZodArray<z.ZodString>>;
69
+ publicKeys: z.ZodOptional<z.ZodArray<z.ZodString>>;
70
+ names: z.ZodOptional<z.ZodArray<z.ZodString>>;
70
71
  rateLimit: z.ZodOptional<z.ZodNumber>;
71
72
  rateLimitChallengeSuccess: z.ZodOptional<z.ZodBoolean>;
72
73
  publicationType: z.ZodOptional<z.ZodObject<{
@@ -114,12 +115,13 @@ export declare const CreatePKCWsServerOptionsSchema: z.ZodObject<{
114
115
  replyCount: z.ZodOptional<z.ZodNumber>;
115
116
  firstCommentTimestamp: z.ZodOptional<z.ZodNumber>;
116
117
  challenges: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
117
- role: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodEnum<{
118
+ roles: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodEnum<{
118
119
  owner: "owner";
119
120
  admin: "admin";
120
121
  moderator: "moderator";
121
122
  }>, z.ZodString]>>>;
122
- address: z.ZodOptional<z.ZodArray<z.ZodString>>;
123
+ publicKeys: z.ZodOptional<z.ZodArray<z.ZodString>>;
124
+ names: z.ZodOptional<z.ZodArray<z.ZodString>>;
123
125
  rateLimit: z.ZodOptional<z.ZodNumber>;
124
126
  rateLimitChallengeSuccess: z.ZodOptional<z.ZodBoolean>;
125
127
  publicationType: z.ZodOptional<z.ZodObject<{
@@ -179,12 +181,13 @@ export declare const CreatePKCWsServerOptionsSchema: z.ZodObject<{
179
181
  replyCount: z.ZodOptional<z.ZodNumber>;
180
182
  firstCommentTimestamp: z.ZodOptional<z.ZodNumber>;
181
183
  challenges: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
182
- role: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodEnum<{
184
+ roles: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodEnum<{
183
185
  owner: "owner";
184
186
  admin: "admin";
185
187
  moderator: "moderator";
186
188
  }>, z.ZodString]>>>;
187
- address: z.ZodOptional<z.ZodArray<z.ZodString>>;
189
+ publicKeys: z.ZodOptional<z.ZodArray<z.ZodString>>;
190
+ names: z.ZodOptional<z.ZodArray<z.ZodString>>;
188
191
  rateLimit: z.ZodOptional<z.ZodNumber>;
189
192
  rateLimitChallengeSuccess: z.ZodOptional<z.ZodBoolean>;
190
193
  publicationType: z.ZodOptional<z.ZodObject<{
@@ -269,12 +272,13 @@ export declare const CreatePKCWsServerOptionsSchema: z.ZodObject<{
269
272
  replyCount: z.ZodOptional<z.ZodNumber>;
270
273
  firstCommentTimestamp: z.ZodOptional<z.ZodNumber>;
271
274
  challenges: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
272
- role: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodEnum<{
275
+ roles: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodEnum<{
273
276
  owner: "owner";
274
277
  admin: "admin";
275
278
  moderator: "moderator";
276
279
  }>, z.ZodString]>>>;
277
- address: z.ZodOptional<z.ZodArray<z.ZodString>>;
280
+ publicKeys: z.ZodOptional<z.ZodArray<z.ZodString>>;
281
+ names: z.ZodOptional<z.ZodArray<z.ZodString>>;
278
282
  rateLimit: z.ZodOptional<z.ZodNumber>;
279
283
  rateLimitChallengeSuccess: z.ZodOptional<z.ZodBoolean>;
280
284
  publicationType: z.ZodOptional<z.ZodObject<{
@@ -322,12 +326,13 @@ export declare const CreatePKCWsServerOptionsSchema: z.ZodObject<{
322
326
  replyCount: z.ZodOptional<z.ZodNumber>;
323
327
  firstCommentTimestamp: z.ZodOptional<z.ZodNumber>;
324
328
  challenges: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
325
- role: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodEnum<{
329
+ roles: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodEnum<{
326
330
  owner: "owner";
327
331
  admin: "admin";
328
332
  moderator: "moderator";
329
333
  }>, z.ZodString]>>>;
330
- address: z.ZodOptional<z.ZodArray<z.ZodString>>;
334
+ publicKeys: z.ZodOptional<z.ZodArray<z.ZodString>>;
335
+ names: z.ZodOptional<z.ZodArray<z.ZodString>>;
331
336
  rateLimit: z.ZodOptional<z.ZodNumber>;
332
337
  rateLimitChallengeSuccess: z.ZodOptional<z.ZodBoolean>;
333
338
  publicationType: z.ZodOptional<z.ZodObject<{
@@ -387,12 +392,13 @@ export declare const CreatePKCWsServerOptionsSchema: z.ZodObject<{
387
392
  replyCount: z.ZodOptional<z.ZodNumber>;
388
393
  firstCommentTimestamp: z.ZodOptional<z.ZodNumber>;
389
394
  challenges: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
390
- role: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodEnum<{
395
+ roles: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodEnum<{
391
396
  owner: "owner";
392
397
  admin: "admin";
393
398
  moderator: "moderator";
394
399
  }>, z.ZodString]>>>;
395
- address: z.ZodOptional<z.ZodArray<z.ZodString>>;
400
+ publicKeys: z.ZodOptional<z.ZodArray<z.ZodString>>;
401
+ names: z.ZodOptional<z.ZodArray<z.ZodString>>;
396
402
  rateLimit: z.ZodOptional<z.ZodNumber>;
397
403
  rateLimitChallengeSuccess: z.ZodOptional<z.ZodBoolean>;
398
404
  publicationType: z.ZodOptional<z.ZodObject<{
@@ -520,12 +526,13 @@ export declare const SetNewSettingsPKCWsServerSchema: z.ZodObject<{
520
526
  replyCount: z.ZodOptional<z.ZodNumber>;
521
527
  firstCommentTimestamp: z.ZodOptional<z.ZodNumber>;
522
528
  challenges: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
523
- role: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodEnum<{
529
+ roles: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodEnum<{
524
530
  owner: "owner";
525
531
  admin: "admin";
526
532
  moderator: "moderator";
527
533
  }>, z.ZodString]>>>;
528
- address: z.ZodOptional<z.ZodArray<z.ZodString>>;
534
+ publicKeys: z.ZodOptional<z.ZodArray<z.ZodString>>;
535
+ names: z.ZodOptional<z.ZodArray<z.ZodString>>;
529
536
  rateLimit: z.ZodOptional<z.ZodNumber>;
530
537
  rateLimitChallengeSuccess: z.ZodOptional<z.ZodBoolean>;
531
538
  publicationType: z.ZodOptional<z.ZodObject<{
@@ -573,12 +580,13 @@ export declare const SetNewSettingsPKCWsServerSchema: z.ZodObject<{
573
580
  replyCount: z.ZodOptional<z.ZodNumber>;
574
581
  firstCommentTimestamp: z.ZodOptional<z.ZodNumber>;
575
582
  challenges: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
576
- role: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodEnum<{
583
+ roles: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodEnum<{
577
584
  owner: "owner";
578
585
  admin: "admin";
579
586
  moderator: "moderator";
580
587
  }>, z.ZodString]>>>;
581
- address: z.ZodOptional<z.ZodArray<z.ZodString>>;
588
+ publicKeys: z.ZodOptional<z.ZodArray<z.ZodString>>;
589
+ names: z.ZodOptional<z.ZodArray<z.ZodString>>;
582
590
  rateLimit: z.ZodOptional<z.ZodNumber>;
583
591
  rateLimitChallengeSuccess: z.ZodOptional<z.ZodBoolean>;
584
592
  publicationType: z.ZodOptional<z.ZodObject<{
@@ -638,12 +646,13 @@ export declare const SetNewSettingsPKCWsServerSchema: z.ZodObject<{
638
646
  replyCount: z.ZodOptional<z.ZodNumber>;
639
647
  firstCommentTimestamp: z.ZodOptional<z.ZodNumber>;
640
648
  challenges: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
641
- role: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodEnum<{
649
+ roles: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodEnum<{
642
650
  owner: "owner";
643
651
  admin: "admin";
644
652
  moderator: "moderator";
645
653
  }>, z.ZodString]>>>;
646
- address: z.ZodOptional<z.ZodArray<z.ZodString>>;
654
+ publicKeys: z.ZodOptional<z.ZodArray<z.ZodString>>;
655
+ names: z.ZodOptional<z.ZodArray<z.ZodString>>;
647
656
  rateLimit: z.ZodOptional<z.ZodNumber>;
648
657
  rateLimitChallengeSuccess: z.ZodOptional<z.ZodBoolean>;
649
658
  publicationType: z.ZodOptional<z.ZodObject<{
@@ -679,12 +688,13 @@ export declare const SetNewSettingsPKCWsServerSchema: z.ZodObject<{
679
688
  replyCount: z.ZodOptional<z.ZodNumber>;
680
689
  firstCommentTimestamp: z.ZodOptional<z.ZodNumber>;
681
690
  challenges: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
682
- role: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodEnum<{
691
+ roles: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodEnum<{
683
692
  owner: "owner";
684
693
  admin: "admin";
685
694
  moderator: "moderator";
686
695
  }>, z.ZodString]>>>;
687
- address: z.ZodOptional<z.ZodArray<z.ZodString>>;
696
+ publicKeys: z.ZodOptional<z.ZodArray<z.ZodString>>;
697
+ names: z.ZodOptional<z.ZodArray<z.ZodString>>;
688
698
  rateLimit: z.ZodOptional<z.ZodNumber>;
689
699
  rateLimitChallengeSuccess: z.ZodOptional<z.ZodBoolean>;
690
700
  publicationType: z.ZodOptional<z.ZodObject<{
@@ -732,12 +742,13 @@ export declare const SetNewSettingsPKCWsServerSchema: z.ZodObject<{
732
742
  replyCount: z.ZodOptional<z.ZodNumber>;
733
743
  firstCommentTimestamp: z.ZodOptional<z.ZodNumber>;
734
744
  challenges: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
735
- role: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodEnum<{
745
+ roles: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodEnum<{
736
746
  owner: "owner";
737
747
  admin: "admin";
738
748
  moderator: "moderator";
739
749
  }>, z.ZodString]>>>;
740
- address: z.ZodOptional<z.ZodArray<z.ZodString>>;
750
+ publicKeys: z.ZodOptional<z.ZodArray<z.ZodString>>;
751
+ names: z.ZodOptional<z.ZodArray<z.ZodString>>;
741
752
  rateLimit: z.ZodOptional<z.ZodNumber>;
742
753
  rateLimitChallengeSuccess: z.ZodOptional<z.ZodBoolean>;
743
754
  publicationType: z.ZodOptional<z.ZodObject<{
@@ -797,12 +808,13 @@ export declare const SetNewSettingsPKCWsServerSchema: z.ZodObject<{
797
808
  replyCount: z.ZodOptional<z.ZodNumber>;
798
809
  firstCommentTimestamp: z.ZodOptional<z.ZodNumber>;
799
810
  challenges: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
800
- role: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodEnum<{
811
+ roles: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodEnum<{
801
812
  owner: "owner";
802
813
  admin: "admin";
803
814
  moderator: "moderator";
804
815
  }>, z.ZodString]>>>;
805
- address: z.ZodOptional<z.ZodArray<z.ZodString>>;
816
+ publicKeys: z.ZodOptional<z.ZodArray<z.ZodString>>;
817
+ names: z.ZodOptional<z.ZodArray<z.ZodString>>;
806
818
  rateLimit: z.ZodOptional<z.ZodNumber>;
807
819
  rateLimitChallengeSuccess: z.ZodOptional<z.ZodBoolean>;
808
820
  publicationType: z.ZodOptional<z.ZodObject<{
@@ -916,12 +928,13 @@ export declare const PKCWsServerSettingsSerializedSchema: z.ZodObject<{
916
928
  replyCount: z.ZodOptional<z.ZodNumber>;
917
929
  firstCommentTimestamp: z.ZodOptional<z.ZodNumber>;
918
930
  challenges: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
919
- role: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodEnum<{
931
+ roles: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodEnum<{
920
932
  owner: "owner";
921
933
  admin: "admin";
922
934
  moderator: "moderator";
923
935
  }>, z.ZodString]>>>;
924
- address: z.ZodOptional<z.ZodArray<z.ZodString>>;
936
+ publicKeys: z.ZodOptional<z.ZodArray<z.ZodString>>;
937
+ names: z.ZodOptional<z.ZodArray<z.ZodString>>;
925
938
  rateLimit: z.ZodOptional<z.ZodNumber>;
926
939
  rateLimitChallengeSuccess: z.ZodOptional<z.ZodBoolean>;
927
940
  publicationType: z.ZodOptional<z.ZodObject<{
@@ -969,12 +982,13 @@ export declare const PKCWsServerSettingsSerializedSchema: z.ZodObject<{
969
982
  replyCount: z.ZodOptional<z.ZodNumber>;
970
983
  firstCommentTimestamp: z.ZodOptional<z.ZodNumber>;
971
984
  challenges: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
972
- role: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodEnum<{
985
+ roles: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodEnum<{
973
986
  owner: "owner";
974
987
  admin: "admin";
975
988
  moderator: "moderator";
976
989
  }>, z.ZodString]>>>;
977
- address: z.ZodOptional<z.ZodArray<z.ZodString>>;
990
+ publicKeys: z.ZodOptional<z.ZodArray<z.ZodString>>;
991
+ names: z.ZodOptional<z.ZodArray<z.ZodString>>;
978
992
  rateLimit: z.ZodOptional<z.ZodNumber>;
979
993
  rateLimitChallengeSuccess: z.ZodOptional<z.ZodBoolean>;
980
994
  publicationType: z.ZodOptional<z.ZodObject<{
@@ -1034,12 +1048,13 @@ export declare const PKCWsServerSettingsSerializedSchema: z.ZodObject<{
1034
1048
  replyCount: z.ZodOptional<z.ZodNumber>;
1035
1049
  firstCommentTimestamp: z.ZodOptional<z.ZodNumber>;
1036
1050
  challenges: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
1037
- role: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodEnum<{
1051
+ roles: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodEnum<{
1038
1052
  owner: "owner";
1039
1053
  admin: "admin";
1040
1054
  moderator: "moderator";
1041
1055
  }>, z.ZodString]>>>;
1042
- address: z.ZodOptional<z.ZodArray<z.ZodString>>;
1056
+ publicKeys: z.ZodOptional<z.ZodArray<z.ZodString>>;
1057
+ names: z.ZodOptional<z.ZodArray<z.ZodString>>;
1043
1058
  rateLimit: z.ZodOptional<z.ZodNumber>;
1044
1059
  rateLimitChallengeSuccess: z.ZodOptional<z.ZodBoolean>;
1045
1060
  publicationType: z.ZodOptional<z.ZodObject<{
@@ -1075,12 +1090,13 @@ export declare const PKCWsServerSettingsSerializedSchema: z.ZodObject<{
1075
1090
  replyCount: z.ZodOptional<z.ZodNumber>;
1076
1091
  firstCommentTimestamp: z.ZodOptional<z.ZodNumber>;
1077
1092
  challenges: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
1078
- role: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodEnum<{
1093
+ roles: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodEnum<{
1079
1094
  owner: "owner";
1080
1095
  admin: "admin";
1081
1096
  moderator: "moderator";
1082
1097
  }>, z.ZodString]>>>;
1083
- address: z.ZodOptional<z.ZodArray<z.ZodString>>;
1098
+ publicKeys: z.ZodOptional<z.ZodArray<z.ZodString>>;
1099
+ names: z.ZodOptional<z.ZodArray<z.ZodString>>;
1084
1100
  rateLimit: z.ZodOptional<z.ZodNumber>;
1085
1101
  rateLimitChallengeSuccess: z.ZodOptional<z.ZodBoolean>;
1086
1102
  publicationType: z.ZodOptional<z.ZodObject<{
@@ -1128,12 +1144,13 @@ export declare const PKCWsServerSettingsSerializedSchema: z.ZodObject<{
1128
1144
  replyCount: z.ZodOptional<z.ZodNumber>;
1129
1145
  firstCommentTimestamp: z.ZodOptional<z.ZodNumber>;
1130
1146
  challenges: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
1131
- role: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodEnum<{
1147
+ roles: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodEnum<{
1132
1148
  owner: "owner";
1133
1149
  admin: "admin";
1134
1150
  moderator: "moderator";
1135
1151
  }>, z.ZodString]>>>;
1136
- address: z.ZodOptional<z.ZodArray<z.ZodString>>;
1152
+ publicKeys: z.ZodOptional<z.ZodArray<z.ZodString>>;
1153
+ names: z.ZodOptional<z.ZodArray<z.ZodString>>;
1137
1154
  rateLimit: z.ZodOptional<z.ZodNumber>;
1138
1155
  rateLimitChallengeSuccess: z.ZodOptional<z.ZodBoolean>;
1139
1156
  publicationType: z.ZodOptional<z.ZodObject<{
@@ -1193,12 +1210,13 @@ export declare const PKCWsServerSettingsSerializedSchema: z.ZodObject<{
1193
1210
  replyCount: z.ZodOptional<z.ZodNumber>;
1194
1211
  firstCommentTimestamp: z.ZodOptional<z.ZodNumber>;
1195
1212
  challenges: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
1196
- role: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodEnum<{
1213
+ roles: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodEnum<{
1197
1214
  owner: "owner";
1198
1215
  admin: "admin";
1199
1216
  moderator: "moderator";
1200
1217
  }>, z.ZodString]>>>;
1201
- address: z.ZodOptional<z.ZodArray<z.ZodString>>;
1218
+ publicKeys: z.ZodOptional<z.ZodArray<z.ZodString>>;
1219
+ names: z.ZodOptional<z.ZodArray<z.ZodString>>;
1202
1220
  rateLimit: z.ZodOptional<z.ZodNumber>;
1203
1221
  rateLimitChallengeSuccess: z.ZodOptional<z.ZodBoolean>;
1204
1222
  publicationType: z.ZodOptional<z.ZodObject<{
@@ -2,7 +2,7 @@ import type { Challenge, ChallengeResult, CommunityChallenge } from "../../../..
2
2
  import type { DecryptedChallengeRequestMessageTypeWithCommunityAuthor } from "../../../../../pubsub-messages/types.js";
3
3
  import { LocalCommunity } from "../../local-community.js";
4
4
  import { PKC } from "../../../../../pkc/pkc.js";
5
- declare const shouldExcludePublication: (communityChallenge: CommunityChallenge, request: DecryptedChallengeRequestMessageTypeWithCommunityAuthor, community: LocalCommunity) => boolean;
5
+ declare const shouldExcludePublication: (communityChallenge: CommunityChallenge, request: DecryptedChallengeRequestMessageTypeWithCommunityAuthor, community: LocalCommunity) => Promise<boolean>;
6
6
  declare const shouldExcludeChallengeSuccess: (communityChallenge: Pick<CommunityChallenge, "exclude">, communityChallengeIndex: number, challengeResults: (Challenge | ChallengeResult)[]) => boolean;
7
7
  export declare const _getCommentPendingKeyCountForTesting: () => number;
8
8
  declare const shouldExcludeChallengeCommentCids: (communityChallenge: CommunityChallenge, challengeRequestMessage: DecryptedChallengeRequestMessageTypeWithCommunityAuthor, pkc: PKC) => Promise<boolean>;
@@ -1,11 +1,22 @@
1
1
  //@ts-expect-error
2
2
  import TinyCache from "tinycache";
3
3
  import QuickLRU from "quick-lru";
4
- import { testScore, testFirstCommentTimestamp, testRole, testPublicationType } from "./utils.js";
4
+ import { testScore, testFirstCommentTimestamp, testPublicationType } from "./utils.js";
5
5
  import { testRateLimit } from "./rate-limiter.js";
6
6
  import { derivePublicationFromChallengeRequest } from "../../../../../util.js";
7
+ import { createAuthorIdentityMatcher } from "../../local-community/author-identity.js";
7
8
  import { getPKCAddressFromPublicKeySync } from "../../../../../signer/util.js";
8
- const shouldExcludePublication = (communityChallenge, request, community) => {
9
+ // Does the author hold one of excludeRole in community.roles? Role keys may be key-derived addresses or domains;
10
+ // both are bound to the signer through the identity matcher rather than compared against author.address.
11
+ const testRole = async (excludeRole, getIdentityMatcher, communityRoles) => {
12
+ if (!communityRoles)
13
+ return false; // can't verify roles, so assume the author doesn't have the excluded role
14
+ const roleKeys = Object.keys(communityRoles).filter((roleKey) => excludeRole.includes(communityRoles[roleKey].role));
15
+ if (roleKeys.length === 0)
16
+ return false;
17
+ return getIdentityMatcher().matchesAnyIdentity(roleKeys);
18
+ };
19
+ const shouldExcludePublication = async (communityChallenge, request, community) => {
9
20
  if (!communityChallenge) {
10
21
  throw Error(`shouldExcludePublication invalid communityChallenge argument '${communityChallenge}'`);
11
22
  }
@@ -22,6 +33,10 @@ const shouldExcludePublication = (communityChallenge, request, community) => {
22
33
  }
23
34
  // lazy-loaded author publication counts (only when postCount/replyCount exclude is set)
24
35
  let authorPublicationCounts;
36
+ // Author identity is taken from the signature, never from the publisher-controlled author.address (issue #267).
37
+ // Built lazily: only excludes that name an author identity need it.
38
+ let identityMatcher;
39
+ const getIdentityMatcher = () => (identityMatcher ??= createAuthorIdentityMatcher({ community, publication }));
25
40
  // if match any of the exclude array, should exclude
26
41
  for (const exclude of communityChallenge.exclude) {
27
42
  // if doesn't have any author excludes, shouldn't exclude
@@ -30,10 +45,11 @@ const shouldExcludePublication = (communityChallenge, request, community) => {
30
45
  typeof exclude.postCount !== "number" &&
31
46
  typeof exclude.replyCount !== "number" &&
32
47
  typeof exclude.firstCommentTimestamp !== "number" &&
33
- !exclude.address?.length &&
48
+ !exclude.publicKeys?.length &&
49
+ !exclude.names?.length &&
34
50
  exclude.publicationType === undefined &&
35
51
  exclude.rateLimit === undefined &&
36
- !exclude.role?.length) {
52
+ !exclude.roles?.length) {
37
53
  continue;
38
54
  }
39
55
  // if match all of the exclude item properties, should exclude
@@ -54,16 +70,18 @@ const shouldExcludePublication = (communityChallenge, request, community) => {
54
70
  if (!testRateLimit(exclude, request)) {
55
71
  shouldExclude = false;
56
72
  }
57
- if (exclude.address && !exclude.address.includes(author.address)) {
73
+ if (exclude.publicKeys && !exclude.publicKeys.includes(getIdentityMatcher().signerAddress)) {
74
+ shouldExclude = false;
75
+ }
76
+ if (exclude.names && !(await getIdentityMatcher().matchesAnyIdentity(exclude.names))) {
58
77
  shouldExclude = false;
59
78
  }
60
- if (Array.isArray(exclude.role) && !testRole(exclude.role, publication.author.address, community?.roles)) {
79
+ if (Array.isArray(exclude.roles) && !(await testRole(exclude.roles, getIdentityMatcher, community?.roles))) {
61
80
  shouldExclude = false;
62
81
  }
63
82
  if (typeof exclude.postCount === "number" || typeof exclude.replyCount === "number") {
64
83
  if (!authorPublicationCounts && community?._dbHandler) {
65
- const signerAddress = getPKCAddressFromPublicKeySync(publication.signature.publicKey);
66
- authorPublicationCounts = community._dbHandler.queryAuthorPublicationCounts(signerAddress);
84
+ authorPublicationCounts = community._dbHandler.queryAuthorPublicationCounts(getIdentityMatcher().signerAddress);
67
85
  }
68
86
  if (!testScore(exclude.postCount, authorPublicationCounts?.postCount)) {
69
87
  shouldExclude = false;
@@ -152,13 +170,20 @@ const shouldExcludeChallengeCommentCids = async (communityChallenge, challengeRe
152
170
  }
153
171
  const publication = derivePublicationFromChallengeRequest(challengeRequestMessage);
154
172
  const commentCids = challengeRequestMessage.challengeCommentCids;
155
- const author = publication?.author;
156
173
  if (commentCids && !Array.isArray(commentCids)) {
157
174
  throw Error(`shouldExcludeChallengeCommentCids invalid commentCids argument '${commentCids}'`);
158
175
  }
159
- if (!author?.address || typeof author?.address !== "string") {
160
- throw Error(`shouldExcludeChallengeCommentCids invalid challengeRequestMessage.publication.author.address argument '${author?.address}'`);
161
- }
176
+ // The friendly community's comment must be signed by the same key as this publication; author.address is a
177
+ // publisher-controlled name and can't be used to link the two (issue #267). Derived lazily: only needed once
178
+ // an exclude.community rule is actually evaluated.
179
+ let signerAddress;
180
+ const getSignerAddress = () => {
181
+ if (signerAddress)
182
+ return signerAddress;
183
+ if (typeof publication?.signature?.publicKey !== "string")
184
+ throw Error(`shouldExcludeChallengeCommentCids invalid challengeRequestMessage.publication.signature.publicKey argument '${publication?.signature?.publicKey}'`);
185
+ return (signerAddress = getPKCAddressFromPublicKeySync(publication.signature.publicKey));
186
+ };
162
187
  const _getComment = async (commentCid, addressesSet) => {
163
188
  // comment is cached
164
189
  let cachedComment = commentCache.get(commentCid);
@@ -167,16 +192,16 @@ const shouldExcludeChallengeCommentCids = async (communityChallenge, challengeRe
167
192
  if (!cachedComment) {
168
193
  comment = await pkc.getComment({ cid: commentCid });
169
194
  // only cache useful values
170
- cachedComment = { communityAddress: comment.communityAddress, author: { address: comment.author.address } };
195
+ cachedComment = { communityAddress: comment.communityAddress, author: { publicKey: comment.author.publicKey } };
171
196
  commentCache.set(commentCid, cachedComment);
172
197
  }
173
198
  // community address doesn't match filter
174
199
  if (!addressesSet.has(cachedComment.communityAddress)) {
175
200
  throw Error(`comment doesn't have matching community address`);
176
201
  }
177
- // author address doesn't match author
178
- if (cachedComment?.author?.address !== author.address) {
179
- throw Error(`comment author address doesn't match publication author address`);
202
+ // the comment must be signed by this publication's signer
203
+ if (cachedComment?.author?.publicKey !== getSignerAddress()) {
204
+ throw Error(`comment author signer doesn't match publication signer`);
180
205
  }
181
206
  // comment hasn't been updated yet
182
207
  let cachedCommentUpdate = commentUpdateCache.get(commentCid);