@nostrify/policies 0.36.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/daemon/7bb8240f68f7ad88-turbo.log.2025-07-29 +0 -0
- package/.turbo/turbo-build.log +5 -0
- package/AntiDuplicationPolicy.test.ts +50 -0
- package/AntiDuplicationPolicy.ts +78 -0
- package/AnyPolicy.test.ts +57 -0
- package/AnyPolicy.ts +21 -0
- package/AuthorPolicy.test.ts +23 -0
- package/AuthorPolicy.ts +23 -0
- package/CHANGELOG.md +66 -0
- package/DomainPolicy.test.ts +246 -0
- package/DomainPolicy.ts +96 -0
- package/FiltersPolicy.test.ts +14 -0
- package/FiltersPolicy.ts +27 -0
- package/HashtagPolicy.test.ts +34 -0
- package/HashtagPolicy.ts +25 -0
- package/HellthreadPolicy.test.ts +23 -0
- package/HellthreadPolicy.ts +27 -0
- package/InvertPolicy.test.ts +19 -0
- package/InvertPolicy.ts +17 -0
- package/KeywordPolicy.test.ts +28 -0
- package/KeywordPolicy.ts +25 -0
- package/LICENSE +21 -0
- package/NoOpPolicy.test.ts +18 -0
- package/NoOpPolicy.ts +9 -0
- package/OpenAIPolicy.test.ts +42 -0
- package/OpenAIPolicy.ts +113 -0
- package/PipePolicy.test.ts +58 -0
- package/PipePolicy.ts +36 -0
- package/PowPolicy.test.ts +27 -0
- package/PowPolicy.ts +41 -0
- package/PubkeyBanPolicy.test.ts +17 -0
- package/PubkeyBanPolicy.ts +24 -0
- package/README.md +34 -0
- package/ReadOnlyPolicy.test.ts +19 -0
- package/ReadOnlyPolicy.ts +9 -0
- package/RegexPolicy.test.ts +17 -0
- package/RegexPolicy.ts +22 -0
- package/ReplyBotPolicy.test.ts +50 -0
- package/ReplyBotPolicy.ts +59 -0
- package/SizePolicy.test.ts +21 -0
- package/SizePolicy.ts +35 -0
- package/WhitelistPolicy.test.ts +17 -0
- package/WhitelistPolicy.ts +32 -0
- package/WoTPolicy.test.ts +35 -0
- package/WoTPolicy.ts +61 -0
- package/dist/AntiDuplicationPolicy.d.ts +43 -0
- package/dist/AntiDuplicationPolicy.d.ts.map +1 -0
- package/dist/AntiDuplicationPolicy.js +63 -0
- package/dist/AntiDuplicationPolicy.js.map +1 -0
- package/dist/AnyPolicy.d.ts +8 -0
- package/dist/AnyPolicy.d.ts.map +1 -0
- package/dist/AnyPolicy.js +23 -0
- package/dist/AnyPolicy.js.map +1 -0
- package/dist/AuthorPolicy.d.ts +9 -0
- package/dist/AuthorPolicy.d.ts.map +1 -0
- package/dist/AuthorPolicy.js +27 -0
- package/dist/AuthorPolicy.js.map +1 -0
- package/dist/DomainPolicy.d.ts +21 -0
- package/dist/DomainPolicy.d.ts.map +1 -0
- package/dist/DomainPolicy.js +68 -0
- package/dist/DomainPolicy.js.map +1 -0
- package/dist/FiltersPolicy.d.ts +18 -0
- package/dist/FiltersPolicy.d.ts.map +1 -0
- package/dist/FiltersPolicy.js +30 -0
- package/dist/FiltersPolicy.js.map +1 -0
- package/dist/HashtagPolicy.d.ts +16 -0
- package/dist/HashtagPolicy.d.ts.map +1 -0
- package/dist/HashtagPolicy.js +29 -0
- package/dist/HashtagPolicy.js.map +1 -0
- package/dist/HellthreadPolicy.d.ts +14 -0
- package/dist/HellthreadPolicy.d.ts.map +1 -0
- package/dist/HellthreadPolicy.js +23 -0
- package/dist/HellthreadPolicy.js.map +1 -0
- package/dist/InvertPolicy.d.ts +9 -0
- package/dist/InvertPolicy.d.ts.map +1 -0
- package/dist/InvertPolicy.js +24 -0
- package/dist/InvertPolicy.js.map +1 -0
- package/dist/KeywordPolicy.d.ts +16 -0
- package/dist/KeywordPolicy.d.ts.map +1 -0
- package/dist/KeywordPolicy.js +29 -0
- package/dist/KeywordPolicy.js.map +1 -0
- package/dist/NoOpPolicy.d.ts +6 -0
- package/dist/NoOpPolicy.d.ts.map +1 -0
- package/dist/NoOpPolicy.js +12 -0
- package/dist/NoOpPolicy.js.map +1 -0
- package/dist/OpenAIPolicy.d.ts +80 -0
- package/dist/OpenAIPolicy.d.ts.map +1 -0
- package/dist/OpenAIPolicy.js +62 -0
- package/dist/OpenAIPolicy.js.map +1 -0
- package/dist/PipePolicy.d.ts +26 -0
- package/dist/PipePolicy.d.ts.map +1 -0
- package/dist/PipePolicy.js +39 -0
- package/dist/PipePolicy.js.map +1 -0
- package/dist/PowPolicy.d.ts +21 -0
- package/dist/PowPolicy.d.ts.map +1 -0
- package/dist/PowPolicy.js +36 -0
- package/dist/PowPolicy.js.map +1 -0
- package/dist/PubkeyBanPolicy.d.ts +15 -0
- package/dist/PubkeyBanPolicy.d.ts.map +1 -0
- package/dist/PubkeyBanPolicy.js +28 -0
- package/dist/PubkeyBanPolicy.js.map +1 -0
- package/dist/ReadOnlyPolicy.d.ts +6 -0
- package/dist/ReadOnlyPolicy.d.ts.map +1 -0
- package/dist/ReadOnlyPolicy.js +12 -0
- package/dist/ReadOnlyPolicy.js.map +1 -0
- package/dist/RegexPolicy.d.ts +15 -0
- package/dist/RegexPolicy.d.ts.map +1 -0
- package/dist/RegexPolicy.js +26 -0
- package/dist/RegexPolicy.js.map +1 -0
- package/dist/ReplyBotPolicy.d.ts +25 -0
- package/dist/ReplyBotPolicy.d.ts.map +1 -0
- package/dist/ReplyBotPolicy.js +45 -0
- package/dist/ReplyBotPolicy.js.map +1 -0
- package/dist/SizePolicy.d.ts +23 -0
- package/dist/SizePolicy.d.ts.map +1 -0
- package/dist/SizePolicy.js +31 -0
- package/dist/SizePolicy.js.map +1 -0
- package/dist/WhitelistPolicy.d.ts +16 -0
- package/dist/WhitelistPolicy.d.ts.map +1 -0
- package/dist/WhitelistPolicy.js +35 -0
- package/dist/WhitelistPolicy.js.map +1 -0
- package/dist/WoTPolicy.d.ts +26 -0
- package/dist/WoTPolicy.d.ts.map +1 -0
- package/dist/WoTPolicy.js +42 -0
- package/dist/WoTPolicy.js.map +1 -0
- package/dist/mod.d.ts +21 -0
- package/dist/mod.d.ts.map +1 -0
- package/dist/mod.js +44 -0
- package/dist/mod.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/mod.ts +20 -0
- package/package.json +20 -0
- package/tsconfig.json +14 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PowPolicy = void 0;
|
|
4
|
+
const nostr_tools_1 = require("nostr-tools");
|
|
5
|
+
/**
|
|
6
|
+
* Reject events which don't meet Proof-of-Work ([NIP-13](https://github.com/nostr-protocol/nips/blob/master/13.md)) criteria.
|
|
7
|
+
*
|
|
8
|
+
* ```ts
|
|
9
|
+
* new PowPolicy({ difficulty: 20 });
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
12
|
+
class PowPolicy {
|
|
13
|
+
opts;
|
|
14
|
+
constructor(opts = {}) {
|
|
15
|
+
this.opts = opts;
|
|
16
|
+
}
|
|
17
|
+
// deno-lint-ignore require-await
|
|
18
|
+
async call({ id, tags }) {
|
|
19
|
+
const { difficulty = 1 } = this.opts;
|
|
20
|
+
const pow = nostr_tools_1.nip13.getPow(id);
|
|
21
|
+
const nonce = tags.find(([name]) => name === 'nonce');
|
|
22
|
+
if (pow >= difficulty && nonce && Number(nonce[2]) >= difficulty) {
|
|
23
|
+
return ['OK', id, true, ''];
|
|
24
|
+
}
|
|
25
|
+
return ['OK', id, false, `pow: insufficient proof-of-work (difficulty ${difficulty})`];
|
|
26
|
+
}
|
|
27
|
+
get info() {
|
|
28
|
+
return {
|
|
29
|
+
limitation: {
|
|
30
|
+
min_pow_difficulty: this.opts.difficulty,
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
exports.PowPolicy = PowPolicy;
|
|
36
|
+
//# sourceMappingURL=PowPolicy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PowPolicy.js","sourceRoot":"","sources":["../PowPolicy.ts"],"names":[],"mappings":";;;AACA,6CAAoC;AAQpC;;;;;;GAMG;AACH,MAAa,SAAS;IACA;IAApB,YAAoB,OAAsB,EAAE;QAAxB,SAAI,GAAJ,IAAI,CAAoB;IAAG,CAAC;IAEhD,iCAAiC;IACjC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAc;QACjC,MAAM,EAAE,UAAU,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;QAErC,MAAM,GAAG,GAAG,mBAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;QAEtD,IAAI,GAAG,IAAI,UAAU,IAAI,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,EAAE,CAAC;YACjE,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QAC9B,CAAC;QAED,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,+CAA+C,UAAU,GAAG,CAAC,CAAC;IACzF,CAAC;IAED,IAAI,IAAI;QACN,OAAO;YACL,UAAU,EAAE;gBACV,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU;aACzC;SACF,CAAC;IACJ,CAAC;CACF;AAxBD,8BAwBC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { NostrEvent, NostrRelayOK, NPolicy } from '@nostrify/types';
|
|
2
|
+
/**
|
|
3
|
+
* Ban events from individual pubkeys.
|
|
4
|
+
*
|
|
5
|
+
* ```ts
|
|
6
|
+
* // Ban a specific pubkey.
|
|
7
|
+
* new PubkeyBanPolicy(['e810fafa1e89cdf80cced8e013938e87e21b699b24c8570537be92aec4b12c18']);
|
|
8
|
+
* ```
|
|
9
|
+
*/
|
|
10
|
+
export declare class PubkeyBanPolicy implements NPolicy {
|
|
11
|
+
private pubkeys;
|
|
12
|
+
constructor(pubkeys: Iterable<string>);
|
|
13
|
+
call({ id, pubkey }: NostrEvent): Promise<NostrRelayOK>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=PubkeyBanPolicy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PubkeyBanPolicy.d.ts","sourceRoot":"","sources":["../PubkeyBanPolicy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAEpE;;;;;;;GAOG;AACH,qBAAa,eAAgB,YAAW,OAAO;IACjC,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC;IAGvC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC;CAS9D"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PubkeyBanPolicy = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Ban events from individual pubkeys.
|
|
6
|
+
*
|
|
7
|
+
* ```ts
|
|
8
|
+
* // Ban a specific pubkey.
|
|
9
|
+
* new PubkeyBanPolicy(['e810fafa1e89cdf80cced8e013938e87e21b699b24c8570537be92aec4b12c18']);
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
12
|
+
class PubkeyBanPolicy {
|
|
13
|
+
pubkeys;
|
|
14
|
+
constructor(pubkeys) {
|
|
15
|
+
this.pubkeys = pubkeys;
|
|
16
|
+
}
|
|
17
|
+
// deno-lint-ignore require-await
|
|
18
|
+
async call({ id, pubkey }) {
|
|
19
|
+
for (const p of this.pubkeys) {
|
|
20
|
+
if (p === pubkey) {
|
|
21
|
+
return ['OK', id, false, 'blocked: pubkey is banned'];
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return ['OK', id, true, ''];
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
exports.PubkeyBanPolicy = PubkeyBanPolicy;
|
|
28
|
+
//# sourceMappingURL=PubkeyBanPolicy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PubkeyBanPolicy.js","sourceRoot":"","sources":["../PubkeyBanPolicy.ts"],"names":[],"mappings":";;;AAEA;;;;;;;GAOG;AACH,MAAa,eAAe;IACN;IAApB,YAAoB,OAAyB;QAAzB,YAAO,GAAP,OAAO,CAAkB;IAAG,CAAC;IAEjD,iCAAiC;IACjC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAc;QACnC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC,KAAK,MAAM,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,2BAA2B,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;QAED,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IAC9B,CAAC;CACF;AAbD,0CAaC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { NostrEvent, NostrRelayOK, NPolicy } from '@nostrify/types';
|
|
2
|
+
/** This policy rejects all messages. */
|
|
3
|
+
export declare class ReadOnlyPolicy implements NPolicy {
|
|
4
|
+
call(event: NostrEvent): Promise<NostrRelayOK>;
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=ReadOnlyPolicy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReadOnlyPolicy.d.ts","sourceRoot":"","sources":["../ReadOnlyPolicy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAEpE,wCAAwC;AACxC,qBAAa,cAAe,YAAW,OAAO;IAEtC,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC;CAGrD"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ReadOnlyPolicy = void 0;
|
|
4
|
+
/** This policy rejects all messages. */
|
|
5
|
+
class ReadOnlyPolicy {
|
|
6
|
+
// deno-lint-ignore require-await
|
|
7
|
+
async call(event) {
|
|
8
|
+
return ['OK', event.id, false, 'blocked: the relay is read-only'];
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
exports.ReadOnlyPolicy = ReadOnlyPolicy;
|
|
12
|
+
//# sourceMappingURL=ReadOnlyPolicy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReadOnlyPolicy.js","sourceRoot":"","sources":["../ReadOnlyPolicy.ts"],"names":[],"mappings":";;;AAEA,wCAAwC;AACxC,MAAa,cAAc;IACzB,iCAAiC;IACjC,KAAK,CAAC,IAAI,CAAC,KAAiB;QAC1B,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,iCAAiC,CAAC,CAAC;IACpE,CAAC;CACF;AALD,wCAKC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { NostrEvent, NostrRelayOK, NPolicy } from '@nostrify/types';
|
|
2
|
+
/**
|
|
3
|
+
* Reject events whose content matches the regex.
|
|
4
|
+
*
|
|
5
|
+
* ```ts
|
|
6
|
+
* // Ban events matching a regex.
|
|
7
|
+
* new RegexPolicy(/(🟠|🔥|😳)ChtaGPT/i);
|
|
8
|
+
* ```
|
|
9
|
+
*/
|
|
10
|
+
export declare class RegexPolicy implements NPolicy {
|
|
11
|
+
private regex;
|
|
12
|
+
constructor(regex: RegExp);
|
|
13
|
+
call({ id, content }: NostrEvent): Promise<NostrRelayOK>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=RegexPolicy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RegexPolicy.d.ts","sourceRoot":"","sources":["../RegexPolicy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAEpE;;;;;;;GAOG;AACH,qBAAa,WAAY,YAAW,OAAO;IAC7B,OAAO,CAAC,KAAK;gBAAL,KAAK,EAAE,MAAM;IAG3B,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC;CAO/D"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RegexPolicy = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Reject events whose content matches the regex.
|
|
6
|
+
*
|
|
7
|
+
* ```ts
|
|
8
|
+
* // Ban events matching a regex.
|
|
9
|
+
* new RegexPolicy(/(🟠|🔥|😳)ChtaGPT/i);
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
12
|
+
class RegexPolicy {
|
|
13
|
+
regex;
|
|
14
|
+
constructor(regex) {
|
|
15
|
+
this.regex = regex;
|
|
16
|
+
}
|
|
17
|
+
// deno-lint-ignore require-await
|
|
18
|
+
async call({ id, content }) {
|
|
19
|
+
if (this.regex.test(content)) {
|
|
20
|
+
return ['OK', id, false, 'blocked: text matches a banned expression'];
|
|
21
|
+
}
|
|
22
|
+
return ['OK', id, true, ''];
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
exports.RegexPolicy = RegexPolicy;
|
|
26
|
+
//# sourceMappingURL=RegexPolicy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RegexPolicy.js","sourceRoot":"","sources":["../RegexPolicy.ts"],"names":[],"mappings":";;;AAEA;;;;;;;GAOG;AACH,MAAa,WAAW;IACF;IAApB,YAAoB,KAAa;QAAb,UAAK,GAAL,KAAK,CAAQ;IAAG,CAAC;IAErC,iCAAiC;IACjC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,EAAc;QACpC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,2CAA2C,CAAC,CAAC;QACxE,CAAC;QAED,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IAC9B,CAAC;CACF;AAXD,kCAWC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { NostrEvent, NostrRelayOK, NPolicy, NStore } from '@nostrify/types';
|
|
2
|
+
/** Options for the ReplyBotPolicy. */
|
|
3
|
+
export interface ReplyBotPolicyOpts {
|
|
4
|
+
/** The store to use for fetching events. */
|
|
5
|
+
store: NStore;
|
|
6
|
+
/** The minimum time in seconds between two posts. */
|
|
7
|
+
threshold?: number;
|
|
8
|
+
/** The kinds of events to apply the policy to. */
|
|
9
|
+
kinds?: number[];
|
|
10
|
+
}
|
|
11
|
+
/** Block events that reply too quickly to another event. */
|
|
12
|
+
export declare class ReplyBotPolicy implements NPolicy {
|
|
13
|
+
private opts;
|
|
14
|
+
constructor(opts: ReplyBotPolicyOpts);
|
|
15
|
+
call(event: NostrEvent, signal?: AbortSignal): Promise<NostrRelayOK>;
|
|
16
|
+
/** Tag is a NIP-10 root tag. */
|
|
17
|
+
private static isRootTag;
|
|
18
|
+
/** Tag is a NIP-10 reply tag. */
|
|
19
|
+
private static isReplyTag;
|
|
20
|
+
/** Tag is an "e" tag without a NIP-10 marker. */
|
|
21
|
+
private static isLegacyReplyTag;
|
|
22
|
+
/** Get the "e" tag for the event being replied to, first according to the NIPs then falling back to the legacy way. */
|
|
23
|
+
private static findReplyTag;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=ReplyBotPolicy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReplyBotPolicy.d.ts","sourceRoot":"","sources":["../ReplyBotPolicy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE5E,sCAAsC;AACtC,MAAM,WAAW,kBAAkB;IACjC,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,4DAA4D;AAC5D,qBAAa,cAAe,YAAW,OAAO;IAChC,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,kBAAkB;IAEtC,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IAuB1E,gCAAgC;IAChC,OAAO,CAAC,MAAM,CAAC,SAAS;IAIxB,iCAAiC;IACjC,OAAO,CAAC,MAAM,CAAC,UAAU;IAIzB,iDAAiD;IACjD,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAI/B,uHAAuH;IACvH,OAAO,CAAC,MAAM,CAAC,YAAY;CAG5B"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ReplyBotPolicy = void 0;
|
|
4
|
+
/** Block events that reply too quickly to another event. */
|
|
5
|
+
class ReplyBotPolicy {
|
|
6
|
+
opts;
|
|
7
|
+
constructor(opts) {
|
|
8
|
+
this.opts = opts;
|
|
9
|
+
}
|
|
10
|
+
async call(event, signal) {
|
|
11
|
+
const { store, threshold = 1, kinds = [1] } = this.opts;
|
|
12
|
+
if (kinds.includes(event.kind)) {
|
|
13
|
+
const [, replyToId] = ReplyBotPolicy.findReplyTag(event.tags) ?? [];
|
|
14
|
+
if (replyToId) {
|
|
15
|
+
const [prevEvent] = await store.query([{ ids: [replyToId] }], { signal });
|
|
16
|
+
if (prevEvent) {
|
|
17
|
+
const diff = event.created_at - prevEvent.created_at;
|
|
18
|
+
const pTag = prevEvent.tags.find(([name, value]) => name === 'p' && value === event.pubkey);
|
|
19
|
+
if (diff <= threshold && !pTag) {
|
|
20
|
+
return ['OK', event.id, false, 'rate-limited: replied too quickly'];
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return ['OK', event.id, true, ''];
|
|
26
|
+
}
|
|
27
|
+
/** Tag is a NIP-10 root tag. */
|
|
28
|
+
static isRootTag(tag) {
|
|
29
|
+
return tag[0] === 'e' && tag[3] === 'root';
|
|
30
|
+
}
|
|
31
|
+
/** Tag is a NIP-10 reply tag. */
|
|
32
|
+
static isReplyTag(tag) {
|
|
33
|
+
return tag[0] === 'e' && tag[3] === 'reply';
|
|
34
|
+
}
|
|
35
|
+
/** Tag is an "e" tag without a NIP-10 marker. */
|
|
36
|
+
static isLegacyReplyTag(tag) {
|
|
37
|
+
return tag[0] === 'e' && !tag[3];
|
|
38
|
+
}
|
|
39
|
+
/** Get the "e" tag for the event being replied to, first according to the NIPs then falling back to the legacy way. */
|
|
40
|
+
static findReplyTag(tags) {
|
|
41
|
+
return tags.find(this.isReplyTag) || tags.find(this.isRootTag) || tags.findLast(this.isLegacyReplyTag);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.ReplyBotPolicy = ReplyBotPolicy;
|
|
45
|
+
//# sourceMappingURL=ReplyBotPolicy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReplyBotPolicy.js","sourceRoot":"","sources":["../ReplyBotPolicy.ts"],"names":[],"mappings":";;;AAYA,4DAA4D;AAC5D,MAAa,cAAc;IACL;IAApB,YAAoB,IAAwB;QAAxB,SAAI,GAAJ,IAAI,CAAoB;IAAG,CAAC;IAEhD,KAAK,CAAC,IAAI,CAAC,KAAiB,EAAE,MAAoB;QAChD,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;QAExD,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,MAAM,CAAC,EAAE,SAAS,CAAC,GAAG,cAAc,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAEpE,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;gBAE1E,IAAI,SAAS,EAAE,CAAC;oBACd,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;oBACrD,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK,GAAG,IAAI,KAAK,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC;oBAE5F,IAAI,IAAI,IAAI,SAAS,IAAI,CAAC,IAAI,EAAE,CAAC;wBAC/B,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,mCAAmC,CAAC,CAAC;oBACtE,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,gCAAgC;IACxB,MAAM,CAAC,SAAS,CAAC,GAAa;QACpC,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC;IAC7C,CAAC;IAED,iCAAiC;IACzB,MAAM,CAAC,UAAU,CAAC,GAAa;QACrC,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC;IAC9C,CAAC;IAED,iDAAiD;IACzC,MAAM,CAAC,gBAAgB,CAAC,GAAa;QAC3C,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;IAED,uHAAuH;IAC/G,MAAM,CAAC,YAAY,CAAC,IAAgB;QAC1C,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACzG,CAAC;CACF;AA7CD,wCA6CC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { NostrEvent, NostrRelayOK, NPolicy } from '@nostrify/types';
|
|
2
|
+
/** Policy options for `SizePolicy`. */
|
|
3
|
+
interface SizePolicyOpts {
|
|
4
|
+
/** Maximum size of the message content in bytes. Default: 8192 (8KB) */
|
|
5
|
+
maxBytes?: number;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Reject events larger than a specified size in bytes.
|
|
9
|
+
*
|
|
10
|
+
* ```ts
|
|
11
|
+
* // Reject events larger than the default size (8KB) .
|
|
12
|
+
* new SizePolicy();
|
|
13
|
+
* // Reject events larger than a custom size (15KB).
|
|
14
|
+
* new SizePolicy({ maxBytes: 15 * 1024 });
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export declare class SizePolicy implements NPolicy {
|
|
18
|
+
private opts;
|
|
19
|
+
constructor(opts?: SizePolicyOpts);
|
|
20
|
+
call(event: NostrEvent): Promise<NostrRelayOK>;
|
|
21
|
+
}
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=SizePolicy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SizePolicy.d.ts","sourceRoot":"","sources":["../SizePolicy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAEpE,uCAAuC;AACvC,UAAU,cAAc;IACtB,wEAAwE;IACxE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;GASG;AACH,qBAAa,UAAW,YAAW,OAAO;IAC5B,OAAO,CAAC,IAAI;gBAAJ,IAAI,GAAE,cAAmB;IAGvC,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC;CAYrD"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SizePolicy = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Reject events larger than a specified size in bytes.
|
|
6
|
+
*
|
|
7
|
+
* ```ts
|
|
8
|
+
* // Reject events larger than the default size (8KB) .
|
|
9
|
+
* new SizePolicy();
|
|
10
|
+
* // Reject events larger than a custom size (15KB).
|
|
11
|
+
* new SizePolicy({ maxBytes: 15 * 1024 });
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
class SizePolicy {
|
|
15
|
+
opts;
|
|
16
|
+
constructor(opts = {}) {
|
|
17
|
+
this.opts = opts;
|
|
18
|
+
}
|
|
19
|
+
// deno-lint-ignore require-await
|
|
20
|
+
async call(event) {
|
|
21
|
+
const { maxBytes = 8 * 1024 } = this.opts;
|
|
22
|
+
const json = JSON.stringify(event);
|
|
23
|
+
const size = new TextEncoder().encode(json).length;
|
|
24
|
+
if (size > maxBytes) {
|
|
25
|
+
return ['OK', event.id, false, `blocked: event is too large`];
|
|
26
|
+
}
|
|
27
|
+
return ['OK', event.id, true, ''];
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
exports.SizePolicy = SizePolicy;
|
|
31
|
+
//# sourceMappingURL=SizePolicy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SizePolicy.js","sourceRoot":"","sources":["../SizePolicy.ts"],"names":[],"mappings":";;;AAQA;;;;;;;;;GASG;AACH,MAAa,UAAU;IACD;IAApB,YAAoB,OAAuB,EAAE;QAAzB,SAAI,GAAJ,IAAI,CAAqB;IAAG,CAAC;IAEjD,iCAAiC;IACjC,KAAK,CAAC,IAAI,CAAC,KAAiB;QAC1B,MAAM,EAAE,QAAQ,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;QAE1C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;QAEnD,IAAI,IAAI,GAAG,QAAQ,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,6BAA6B,CAAC,CAAC;QAChE,CAAC;QAED,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IACpC,CAAC;CACF;AAhBD,gCAgBC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { NostrEvent, NostrRelayInfo, NostrRelayOK, NPolicy } from '@nostrify/types';
|
|
2
|
+
/**
|
|
3
|
+
* Allows only the listed pubkeys to post. All other events are rejected.
|
|
4
|
+
*
|
|
5
|
+
* ```ts
|
|
6
|
+
* // Only the given pubkey may post.
|
|
7
|
+
* new WhitelistPolicy(['e810fafa1e89cdf80cced8e013938e87e21b699b24c8570537be92aec4b12c18']);
|
|
8
|
+
* ```
|
|
9
|
+
*/
|
|
10
|
+
export declare class WhitelistPolicy implements NPolicy {
|
|
11
|
+
private pubkeys;
|
|
12
|
+
constructor(pubkeys: Iterable<string>);
|
|
13
|
+
call({ id, pubkey }: NostrEvent): Promise<NostrRelayOK>;
|
|
14
|
+
get info(): NostrRelayInfo;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=WhitelistPolicy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WhitelistPolicy.d.ts","sourceRoot":"","sources":["../WhitelistPolicy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAEpF;;;;;;;GAOG;AACH,qBAAa,eAAgB,YAAW,OAAO;IACjC,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC;IAGvC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC;IAU7D,IAAI,IAAI,IAAI,cAAc,CAMzB;CACF"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WhitelistPolicy = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Allows only the listed pubkeys to post. All other events are rejected.
|
|
6
|
+
*
|
|
7
|
+
* ```ts
|
|
8
|
+
* // Only the given pubkey may post.
|
|
9
|
+
* new WhitelistPolicy(['e810fafa1e89cdf80cced8e013938e87e21b699b24c8570537be92aec4b12c18']);
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
12
|
+
class WhitelistPolicy {
|
|
13
|
+
pubkeys;
|
|
14
|
+
constructor(pubkeys) {
|
|
15
|
+
this.pubkeys = pubkeys;
|
|
16
|
+
}
|
|
17
|
+
// deno-lint-ignore require-await
|
|
18
|
+
async call({ id, pubkey }) {
|
|
19
|
+
for (const p of this.pubkeys) {
|
|
20
|
+
if (p === pubkey) {
|
|
21
|
+
return ['OK', id, true, ''];
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return ['OK', id, false, 'blocked: only certain pubkeys are allowed to post'];
|
|
25
|
+
}
|
|
26
|
+
get info() {
|
|
27
|
+
return {
|
|
28
|
+
limitation: {
|
|
29
|
+
restricted_writes: true,
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
exports.WhitelistPolicy = WhitelistPolicy;
|
|
35
|
+
//# sourceMappingURL=WhitelistPolicy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WhitelistPolicy.js","sourceRoot":"","sources":["../WhitelistPolicy.ts"],"names":[],"mappings":";;;AAEA;;;;;;;GAOG;AACH,MAAa,eAAe;IACN;IAApB,YAAoB,OAAyB;QAAzB,YAAO,GAAP,OAAO,CAAkB;IAAG,CAAC;IAEjD,iCAAiC;IACjC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAc;QACnC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC,KAAK,MAAM,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;QAED,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,mDAAmD,CAAC,CAAC;IAChF,CAAC;IAED,IAAI,IAAI;QACN,OAAO;YACL,UAAU,EAAE;gBACV,iBAAiB,EAAE,IAAI;aACxB;SACF,CAAC;IACJ,CAAC;CACF;AArBD,0CAqBC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { NostrEvent, NostrRelayOK, NPolicy, NStore } from '@nostrify/types';
|
|
2
|
+
/** Options for the `WoTPolicy`. */
|
|
3
|
+
interface WoTPolicyOpts {
|
|
4
|
+
/** Store to get kind 3 follow lists from. */
|
|
5
|
+
store: NStore;
|
|
6
|
+
/** Initial set of trusted pubkeys to query follow lists for. */
|
|
7
|
+
pubkeys: Iterable<string>;
|
|
8
|
+
/**
|
|
9
|
+
* How many levels of follow lists to query.
|
|
10
|
+
* `0` will just whitelist the given `pubkeys` without checking their follow lists.
|
|
11
|
+
* `1` will query their follows,
|
|
12
|
+
* `2` will query their follows follows, etc.
|
|
13
|
+
*/
|
|
14
|
+
depth: number;
|
|
15
|
+
}
|
|
16
|
+
/** Whitelist pubkeys the given user follows, people those users follow, etc. up to `depth`. */
|
|
17
|
+
export declare class WoTPolicy implements NPolicy {
|
|
18
|
+
private opts;
|
|
19
|
+
private pubkeys;
|
|
20
|
+
constructor(opts: WoTPolicyOpts);
|
|
21
|
+
call(event: NostrEvent): Promise<NostrRelayOK>;
|
|
22
|
+
/** Retrieve the complete set of pubkeys to whitelist. */
|
|
23
|
+
private getPubkeys;
|
|
24
|
+
}
|
|
25
|
+
export {};
|
|
26
|
+
//# sourceMappingURL=WoTPolicy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WoTPolicy.d.ts","sourceRoot":"","sources":["../WoTPolicy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE5E,mCAAmC;AACnC,UAAU,aAAa;IACrB,6CAA6C;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,gEAAgE;IAChE,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1B;;;;;OAKG;IACH,KAAK,EAAE,MAAM,CAAC;CACf;AAED,+FAA+F;AAC/F,qBAAa,SAAU,YAAW,OAAO;IAG3B,OAAO,CAAC,IAAI;IAFxB,OAAO,CAAC,OAAO,CAAmC;gBAE9B,IAAI,EAAE,aAAa;IAEjC,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC;IAWpD,yDAAyD;YAC3C,UAAU;CAyBzB"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WoTPolicy = void 0;
|
|
4
|
+
/** Whitelist pubkeys the given user follows, people those users follow, etc. up to `depth`. */
|
|
5
|
+
class WoTPolicy {
|
|
6
|
+
opts;
|
|
7
|
+
pubkeys;
|
|
8
|
+
constructor(opts) {
|
|
9
|
+
this.opts = opts;
|
|
10
|
+
}
|
|
11
|
+
async call(event) {
|
|
12
|
+
this.pubkeys ??= this.getPubkeys();
|
|
13
|
+
const pubkeys = await this.pubkeys;
|
|
14
|
+
if (pubkeys.has(event.pubkey)) {
|
|
15
|
+
return ['OK', event.id, true, ''];
|
|
16
|
+
}
|
|
17
|
+
return ['OK', event.id, false, 'blocked: only certain pubkeys are allowed to post'];
|
|
18
|
+
}
|
|
19
|
+
/** Retrieve the complete set of pubkeys to whitelist. */
|
|
20
|
+
async getPubkeys() {
|
|
21
|
+
const { store, depth } = this.opts;
|
|
22
|
+
const pubkeys = new Set([...this.opts.pubkeys]);
|
|
23
|
+
const authors = new Set(pubkeys);
|
|
24
|
+
for (let i = 0; i < depth; i++) {
|
|
25
|
+
const events = await store.query([{ kinds: [3], authors: [...authors] }]);
|
|
26
|
+
authors.clear();
|
|
27
|
+
for (const event of events) {
|
|
28
|
+
for (const [name, value] of event.tags) {
|
|
29
|
+
if (name === 'p') {
|
|
30
|
+
if (!pubkeys.has(value)) { // Avoid infinite loops.
|
|
31
|
+
authors.add(value);
|
|
32
|
+
}
|
|
33
|
+
pubkeys.add(value);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return pubkeys;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.WoTPolicy = WoTPolicy;
|
|
42
|
+
//# sourceMappingURL=WoTPolicy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WoTPolicy.js","sourceRoot":"","sources":["../WoTPolicy.ts"],"names":[],"mappings":";;;AAiBA,+FAA+F;AAC/F,MAAa,SAAS;IAGA;IAFZ,OAAO,CAAmC;IAElD,YAAoB,IAAmB;QAAnB,SAAI,GAAJ,IAAI,CAAe;IAAG,CAAC;IAE3C,KAAK,CAAC,IAAI,CAAC,KAAiB;QAC1B,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC;QAEnC,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QACpC,CAAC;QAED,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,mDAAmD,CAAC,CAAC;IACtF,CAAC;IAED,yDAAyD;IACjD,KAAK,CAAC,UAAU;QACtB,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;QAEnC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAS,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QACxD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;QAEjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/B,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;YAE1E,OAAO,CAAC,KAAK,EAAE,CAAC;YAEhB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;oBACvC,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;wBACjB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,wBAAwB;4BACjD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;wBACrB,CAAC;wBACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oBACrB,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AA1CD,8BA0CC"}
|
package/dist/mod.d.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export { AntiDuplicationPolicy } from './AntiDuplicationPolicy';
|
|
2
|
+
export { AnyPolicy } from './AnyPolicy';
|
|
3
|
+
export { AuthorPolicy } from './AuthorPolicy';
|
|
4
|
+
export { DomainPolicy } from './DomainPolicy';
|
|
5
|
+
export { FiltersPolicy } from './FiltersPolicy';
|
|
6
|
+
export { HashtagPolicy } from './HashtagPolicy';
|
|
7
|
+
export { HellthreadPolicy } from './HellthreadPolicy';
|
|
8
|
+
export { InvertPolicy } from './InvertPolicy';
|
|
9
|
+
export { KeywordPolicy } from './KeywordPolicy';
|
|
10
|
+
export { NoOpPolicy } from './NoOpPolicy';
|
|
11
|
+
export { OpenAIPolicy } from './OpenAIPolicy';
|
|
12
|
+
export { PipePolicy } from './PipePolicy';
|
|
13
|
+
export { PowPolicy } from './PowPolicy';
|
|
14
|
+
export { PubkeyBanPolicy } from './PubkeyBanPolicy';
|
|
15
|
+
export { ReadOnlyPolicy } from './ReadOnlyPolicy';
|
|
16
|
+
export { RegexPolicy } from './RegexPolicy';
|
|
17
|
+
export { ReplyBotPolicy } from './ReplyBotPolicy';
|
|
18
|
+
export { SizePolicy } from './SizePolicy';
|
|
19
|
+
export { WhitelistPolicy } from './WhitelistPolicy';
|
|
20
|
+
export { WoTPolicy } from './WoTPolicy';
|
|
21
|
+
//# sourceMappingURL=mod.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../mod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/mod.js
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WoTPolicy = exports.WhitelistPolicy = exports.SizePolicy = exports.ReplyBotPolicy = exports.RegexPolicy = exports.ReadOnlyPolicy = exports.PubkeyBanPolicy = exports.PowPolicy = exports.PipePolicy = exports.OpenAIPolicy = exports.NoOpPolicy = exports.KeywordPolicy = exports.InvertPolicy = exports.HellthreadPolicy = exports.HashtagPolicy = exports.FiltersPolicy = exports.DomainPolicy = exports.AuthorPolicy = exports.AnyPolicy = exports.AntiDuplicationPolicy = void 0;
|
|
4
|
+
var AntiDuplicationPolicy_1 = require("./AntiDuplicationPolicy");
|
|
5
|
+
Object.defineProperty(exports, "AntiDuplicationPolicy", { enumerable: true, get: function () { return AntiDuplicationPolicy_1.AntiDuplicationPolicy; } });
|
|
6
|
+
var AnyPolicy_1 = require("./AnyPolicy");
|
|
7
|
+
Object.defineProperty(exports, "AnyPolicy", { enumerable: true, get: function () { return AnyPolicy_1.AnyPolicy; } });
|
|
8
|
+
var AuthorPolicy_1 = require("./AuthorPolicy");
|
|
9
|
+
Object.defineProperty(exports, "AuthorPolicy", { enumerable: true, get: function () { return AuthorPolicy_1.AuthorPolicy; } });
|
|
10
|
+
var DomainPolicy_1 = require("./DomainPolicy");
|
|
11
|
+
Object.defineProperty(exports, "DomainPolicy", { enumerable: true, get: function () { return DomainPolicy_1.DomainPolicy; } });
|
|
12
|
+
var FiltersPolicy_1 = require("./FiltersPolicy");
|
|
13
|
+
Object.defineProperty(exports, "FiltersPolicy", { enumerable: true, get: function () { return FiltersPolicy_1.FiltersPolicy; } });
|
|
14
|
+
var HashtagPolicy_1 = require("./HashtagPolicy");
|
|
15
|
+
Object.defineProperty(exports, "HashtagPolicy", { enumerable: true, get: function () { return HashtagPolicy_1.HashtagPolicy; } });
|
|
16
|
+
var HellthreadPolicy_1 = require("./HellthreadPolicy");
|
|
17
|
+
Object.defineProperty(exports, "HellthreadPolicy", { enumerable: true, get: function () { return HellthreadPolicy_1.HellthreadPolicy; } });
|
|
18
|
+
var InvertPolicy_1 = require("./InvertPolicy");
|
|
19
|
+
Object.defineProperty(exports, "InvertPolicy", { enumerable: true, get: function () { return InvertPolicy_1.InvertPolicy; } });
|
|
20
|
+
var KeywordPolicy_1 = require("./KeywordPolicy");
|
|
21
|
+
Object.defineProperty(exports, "KeywordPolicy", { enumerable: true, get: function () { return KeywordPolicy_1.KeywordPolicy; } });
|
|
22
|
+
var NoOpPolicy_1 = require("./NoOpPolicy");
|
|
23
|
+
Object.defineProperty(exports, "NoOpPolicy", { enumerable: true, get: function () { return NoOpPolicy_1.NoOpPolicy; } });
|
|
24
|
+
var OpenAIPolicy_1 = require("./OpenAIPolicy");
|
|
25
|
+
Object.defineProperty(exports, "OpenAIPolicy", { enumerable: true, get: function () { return OpenAIPolicy_1.OpenAIPolicy; } });
|
|
26
|
+
var PipePolicy_1 = require("./PipePolicy");
|
|
27
|
+
Object.defineProperty(exports, "PipePolicy", { enumerable: true, get: function () { return PipePolicy_1.PipePolicy; } });
|
|
28
|
+
var PowPolicy_1 = require("./PowPolicy");
|
|
29
|
+
Object.defineProperty(exports, "PowPolicy", { enumerable: true, get: function () { return PowPolicy_1.PowPolicy; } });
|
|
30
|
+
var PubkeyBanPolicy_1 = require("./PubkeyBanPolicy");
|
|
31
|
+
Object.defineProperty(exports, "PubkeyBanPolicy", { enumerable: true, get: function () { return PubkeyBanPolicy_1.PubkeyBanPolicy; } });
|
|
32
|
+
var ReadOnlyPolicy_1 = require("./ReadOnlyPolicy");
|
|
33
|
+
Object.defineProperty(exports, "ReadOnlyPolicy", { enumerable: true, get: function () { return ReadOnlyPolicy_1.ReadOnlyPolicy; } });
|
|
34
|
+
var RegexPolicy_1 = require("./RegexPolicy");
|
|
35
|
+
Object.defineProperty(exports, "RegexPolicy", { enumerable: true, get: function () { return RegexPolicy_1.RegexPolicy; } });
|
|
36
|
+
var ReplyBotPolicy_1 = require("./ReplyBotPolicy");
|
|
37
|
+
Object.defineProperty(exports, "ReplyBotPolicy", { enumerable: true, get: function () { return ReplyBotPolicy_1.ReplyBotPolicy; } });
|
|
38
|
+
var SizePolicy_1 = require("./SizePolicy");
|
|
39
|
+
Object.defineProperty(exports, "SizePolicy", { enumerable: true, get: function () { return SizePolicy_1.SizePolicy; } });
|
|
40
|
+
var WhitelistPolicy_1 = require("./WhitelistPolicy");
|
|
41
|
+
Object.defineProperty(exports, "WhitelistPolicy", { enumerable: true, get: function () { return WhitelistPolicy_1.WhitelistPolicy; } });
|
|
42
|
+
var WoTPolicy_1 = require("./WoTPolicy");
|
|
43
|
+
Object.defineProperty(exports, "WoTPolicy", { enumerable: true, get: function () { return WoTPolicy_1.WoTPolicy; } });
|
|
44
|
+
//# sourceMappingURL=mod.js.map
|
package/dist/mod.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mod.js","sourceRoot":"","sources":["../mod.ts"],"names":[],"mappings":";;;AAAA,iEAAgE;AAAvD,8HAAA,qBAAqB,OAAA;AAC9B,yCAAwC;AAA/B,sGAAA,SAAS,OAAA;AAClB,+CAA8C;AAArC,4GAAA,YAAY,OAAA;AACrB,+CAA8C;AAArC,4GAAA,YAAY,OAAA;AACrB,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AACtB,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AACtB,uDAAsD;AAA7C,oHAAA,gBAAgB,OAAA;AACzB,+CAA8C;AAArC,4GAAA,YAAY,OAAA;AACrB,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AACtB,2CAA0C;AAAjC,wGAAA,UAAU,OAAA;AACnB,+CAA8C;AAArC,4GAAA,YAAY,OAAA;AACrB,2CAA0C;AAAjC,wGAAA,UAAU,OAAA;AACnB,yCAAwC;AAA/B,sGAAA,SAAS,OAAA;AAClB,qDAAoD;AAA3C,kHAAA,eAAe,OAAA;AACxB,mDAAkD;AAAzC,gHAAA,cAAc,OAAA;AACvB,6CAA4C;AAAnC,0GAAA,WAAW,OAAA;AACpB,mDAAkD;AAAzC,gHAAA,cAAc,OAAA;AACvB,2CAA0C;AAAjC,wGAAA,UAAU,OAAA;AACnB,qDAAoD;AAA3C,kHAAA,eAAe,OAAA;AACxB,yCAAwC;AAA/B,sGAAA,SAAS,OAAA"}
|