@nostrify/policies 0.36.4 → 0.36.6

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 (132) hide show
  1. package/.turbo/turbo-build.log +28 -5
  2. package/.turbo/turbo-setup.log +22 -0
  3. package/.turbo/turbo-test.log +4 -0
  4. package/AntiDuplicationPolicy.test.ts +54 -41
  5. package/AntiDuplicationPolicy.ts +7 -3
  6. package/AnyPolicy.test.ts +15 -14
  7. package/AnyPolicy.ts +5 -2
  8. package/AuthorPolicy.test.ts +8 -7
  9. package/AuthorPolicy.ts +9 -3
  10. package/CHANGELOG.md +18 -0
  11. package/DomainPolicy.test.ts +130 -77
  12. package/DomainPolicy.ts +3 -3
  13. package/FiltersPolicy.test.ts +14 -7
  14. package/FiltersPolicy.ts +5 -2
  15. package/HashtagPolicy.test.ts +25 -14
  16. package/HashtagPolicy.ts +5 -2
  17. package/HellthreadPolicy.test.ts +10 -9
  18. package/HellthreadPolicy.ts +6 -3
  19. package/InvertPolicy.test.ts +10 -9
  20. package/InvertPolicy.ts +8 -2
  21. package/KeywordPolicy.test.ts +18 -12
  22. package/KeywordPolicy.ts +5 -2
  23. package/NoOpPolicy.test.ts +8 -7
  24. package/NoOpPolicy.ts +1 -1
  25. package/OpenAIPolicy.test.ts +22 -9
  26. package/OpenAIPolicy.ts +5 -2
  27. package/PipePolicy.test.ts +18 -17
  28. package/PipePolicy.ts +5 -2
  29. package/PowPolicy.test.ts +14 -13
  30. package/PowPolicy.ts +6 -3
  31. package/PubkeyBanPolicy.test.ts +15 -8
  32. package/PubkeyBanPolicy.ts +5 -2
  33. package/ReadOnlyPolicy.test.ts +9 -8
  34. package/ReadOnlyPolicy.ts +1 -1
  35. package/RegexPolicy.test.ts +19 -10
  36. package/RegexPolicy.ts +5 -2
  37. package/ReplyBotPolicy.test.ts +43 -27
  38. package/ReplyBotPolicy.ts +6 -3
  39. package/SizePolicy.test.ts +9 -8
  40. package/SizePolicy.ts +6 -2
  41. package/WhitelistPolicy.test.ts +15 -8
  42. package/WhitelistPolicy.ts +6 -2
  43. package/WoTPolicy.test.ts +48 -22
  44. package/WoTPolicy.ts +5 -2
  45. package/dist/AntiDuplicationPolicy.d.ts +2 -2
  46. package/dist/AntiDuplicationPolicy.d.ts.map +1 -1
  47. package/dist/AntiDuplicationPolicy.js +41 -56
  48. package/dist/AnyPolicy.d.ts +1 -1
  49. package/dist/AnyPolicy.d.ts.map +1 -1
  50. package/dist/AnyPolicy.js +17 -16
  51. package/dist/AuthorPolicy.d.ts +1 -1
  52. package/dist/AuthorPolicy.d.ts.map +1 -1
  53. package/dist/AuthorPolicy.js +19 -20
  54. package/dist/DomainPolicy.d.ts +2 -2
  55. package/dist/DomainPolicy.d.ts.map +1 -1
  56. package/dist/DomainPolicy.js +57 -59
  57. package/dist/FiltersPolicy.d.ts +1 -1
  58. package/dist/FiltersPolicy.d.ts.map +1 -1
  59. package/dist/FiltersPolicy.js +15 -24
  60. package/dist/HashtagPolicy.d.ts +1 -1
  61. package/dist/HashtagPolicy.d.ts.map +1 -1
  62. package/dist/HashtagPolicy.js +16 -23
  63. package/dist/HellthreadPolicy.d.ts +1 -1
  64. package/dist/HellthreadPolicy.d.ts.map +1 -1
  65. package/dist/HellthreadPolicy.js +18 -17
  66. package/dist/InvertPolicy.d.ts +1 -1
  67. package/dist/InvertPolicy.d.ts.map +1 -1
  68. package/dist/InvertPolicy.js +18 -18
  69. package/dist/KeywordPolicy.d.ts +1 -1
  70. package/dist/KeywordPolicy.d.ts.map +1 -1
  71. package/dist/KeywordPolicy.js +16 -23
  72. package/dist/NoOpPolicy.d.ts +1 -1
  73. package/dist/NoOpPolicy.d.ts.map +1 -1
  74. package/dist/NoOpPolicy.js +8 -7
  75. package/dist/OpenAIPolicy.d.ts +1 -1
  76. package/dist/OpenAIPolicy.d.ts.map +1 -1
  77. package/dist/OpenAIPolicy.js +35 -55
  78. package/dist/PipePolicy.d.ts +1 -1
  79. package/dist/PipePolicy.d.ts.map +1 -1
  80. package/dist/PipePolicy.js +16 -33
  81. package/dist/PowPolicy.d.ts +1 -1
  82. package/dist/PowPolicy.d.ts.map +1 -1
  83. package/dist/PowPolicy.js +25 -30
  84. package/dist/PubkeyBanPolicy.d.ts +1 -1
  85. package/dist/PubkeyBanPolicy.d.ts.map +1 -1
  86. package/dist/PubkeyBanPolicy.js +16 -22
  87. package/dist/ReadOnlyPolicy.d.ts +1 -1
  88. package/dist/ReadOnlyPolicy.d.ts.map +1 -1
  89. package/dist/ReadOnlyPolicy.js +8 -7
  90. package/dist/RegexPolicy.d.ts +1 -1
  91. package/dist/RegexPolicy.d.ts.map +1 -1
  92. package/dist/RegexPolicy.js +14 -20
  93. package/dist/ReplyBotPolicy.d.ts +1 -1
  94. package/dist/ReplyBotPolicy.d.ts.map +1 -1
  95. package/dist/ReplyBotPolicy.js +39 -38
  96. package/dist/SizePolicy.d.ts +1 -1
  97. package/dist/SizePolicy.d.ts.map +1 -1
  98. package/dist/SizePolicy.js +17 -25
  99. package/dist/WhitelistPolicy.d.ts +1 -1
  100. package/dist/WhitelistPolicy.d.ts.map +1 -1
  101. package/dist/WhitelistPolicy.js +23 -29
  102. package/dist/WoTPolicy.d.ts +2 -2
  103. package/dist/WoTPolicy.d.ts.map +1 -1
  104. package/dist/WoTPolicy.js +34 -33
  105. package/dist/mod.d.ts +20 -20
  106. package/dist/mod.js +42 -21
  107. package/dist/mod.js.map +7 -1
  108. package/dist/tsconfig.tsbuildinfo +1 -1
  109. package/mod.ts +20 -20
  110. package/package.json +10 -6
  111. package/tsconfig.json +3 -1
  112. package/.turbo/daemon/7bb8240f68f7ad88-turbo.log.2025-07-29 +0 -0
  113. package/dist/AntiDuplicationPolicy.js.map +0 -1
  114. package/dist/AnyPolicy.js.map +0 -1
  115. package/dist/AuthorPolicy.js.map +0 -1
  116. package/dist/DomainPolicy.js.map +0 -1
  117. package/dist/FiltersPolicy.js.map +0 -1
  118. package/dist/HashtagPolicy.js.map +0 -1
  119. package/dist/HellthreadPolicy.js.map +0 -1
  120. package/dist/InvertPolicy.js.map +0 -1
  121. package/dist/KeywordPolicy.js.map +0 -1
  122. package/dist/NoOpPolicy.js.map +0 -1
  123. package/dist/OpenAIPolicy.js.map +0 -1
  124. package/dist/PipePolicy.js.map +0 -1
  125. package/dist/PowPolicy.js.map +0 -1
  126. package/dist/PubkeyBanPolicy.js.map +0 -1
  127. package/dist/ReadOnlyPolicy.js.map +0 -1
  128. package/dist/RegexPolicy.js.map +0 -1
  129. package/dist/ReplyBotPolicy.js.map +0 -1
  130. package/dist/SizePolicy.js.map +0 -1
  131. package/dist/WhitelistPolicy.js.map +0 -1
  132. package/dist/WoTPolicy.js.map +0 -1
@@ -1,5 +1,28 @@
1
-
2
-
3
- > @nostrify/policies@0.36.3 build /home/sid/repos/NSpec/packages/policies
4
- > tsc -p tsconfig.json
5
-
1
+
2
+ > @nostrify/policies@0.36.5 build /home/sid/repos/nostrify/packages/policies
3
+ > tsc -p tsconfig.json && node ../../esbuild.config.js --package ./
4
+
5
+
6
+ dist/DomainPolicy.js 2.1kb
7
+ dist/ReplyBotPolicy.js 1.4kb
8
+ dist/mod.js 1.3kb
9
+ dist/AntiDuplicationPolicy.js 1.2kb
10
+ dist/WoTPolicy.js 1.0kb
11
+ dist/OpenAIPolicy.js 985b
12
+ dist/PowPolicy.js 667b
13
+ dist/AuthorPolicy.js 640b
14
+ dist/HellthreadPolicy.js 494b
15
+ dist/WhitelistPolicy.js 490b
16
+ dist/SizePolicy.js 453b
17
+ dist/HashtagPolicy.js 425b
18
+ dist/AnyPolicy.js 412b
19
+ dist/KeywordPolicy.js 411b
20
+ dist/FiltersPolicy.js 410b
21
+ dist/InvertPolicy.js 385b
22
+ dist/PipePolicy.js 383b
23
+ dist/PubkeyBanPolicy.js 367b
24
+ dist/RegexPolicy.js 332b
25
+ dist/ReadOnlyPolicy.js 187b
26
+ ...and 1 more output file...
27
+
28
+ ⚡ Done in 51ms
@@ -0,0 +1,22 @@
1
+
2
+
3
+ > @nostrify/policies@0.36.5 setup /home/sid/repos/nostrify/packages/policies
4
+ > pnpm i
5
+
6
+ (node:1234136) [DEP0169] DeprecationWarning: `url.parse()` behavior is not standardized and prone to errors that have security implications. Use the WHATWG URL API instead. CVEs are not issued for `url.parse()` vulnerabilities.
7
+ (Use `node --trace-deprecation ...` to show where the warning was created)
8
+ Scope: all 9 workspace projects
9
+ ../.. | Progress: resolved 1, reused 0, downloaded 0, added 0
10
+ ../.. | +1 +
11
+ ../.. | Progress: resolved 1, reused 0, downloaded 0, added 0
12
+ ../.. | Progress: resolved 1, reused 1, downloaded 0, added 0
13
+ ../.. | Progress: resolved 1, reused 1, downloaded 0, added 0, done
14
+  WARN  Failed to create bin at /home/sid/repos/nostrify/node_modules/.pnpm/node_modules/.bin/semver. ENOENT: no such file or directory, chmod '/home/sid/repos/nostrify/node_modules/.pnpm/node_modules/.bin/semver'
15
+  WARN  Failed to create bin at /home/sid/repos/nostrify/node_modules/.pnpm/node_modules/.bin/arborist. ENOENT: no such file or directory, chmod '/home/sid/repos/nostrify/node_modules/.pnpm/node_modules/.bin/arborist'
16
+  WARN  Failed to create bin at /home/sid/repos/nostrify/node_modules/.pnpm/node_modules/.bin/vite. ENOENT: no such file or directory, chmod '/home/sid/repos/nostrify/node_modules/.pnpm/node_modules/.bin/vite'
17
+  WARN  Failed to create bin at /home/sid/repos/nostrify/node_modules/.pnpm/node_modules/.bin/color-support. ENOENT: no such file or directory, chmod '/home/sid/repos/nostrify/node_modules/.pnpm/node_modules/.bin/color-support'
18
+  WARN  Failed to create bin at /home/sid/repos/nostrify/node_modules/.pnpm/node_modules/.bin/uglifyjs. ENOENT: no such file or directory, chmod '/home/sid/repos/nostrify/node_modules/.pnpm/node_modules/.bin/uglifyjs'
19
+  WARN  1 other warnings
20
+  WARN  2 other warnings
21
+  WARN  3 other warnings
22
+  WARN  4 other warnings
@@ -0,0 +1,4 @@
1
+
2
+ > @nostrify/policies@0.36.5 test /home/sid/repos/nostrify/packages/policies
3
+ > node --test "**/*.test.ts"
4
+
@@ -1,50 +1,63 @@
1
- import { genEvent } from '@nostrify/nostrify/test';
2
- import { assertEquals } from '@std/assert';
1
+ import { test } from "node:test";
2
+ import { genEvent } from "@nostrify/nostrify/test";
3
+ import { deepStrictEqual } from "node:assert";
4
+ import { openKv } from "@deno/kv";
3
5
 
4
- import { AntiDuplicationPolicy } from './AntiDuplicationPolicy.ts';
6
+ import { AntiDuplicationPolicy } from "./AntiDuplicationPolicy.ts";
5
7
 
6
- Deno.test('AntiDuplicationPolicy', async () => {
7
- using kv = await Deno.openKv(':memory:');
8
+ await test("AntiDuplicationPolicy", async () => {
9
+ const kv = await openKv(":memory:");
10
+ try {
11
+ const policy = new AntiDuplicationPolicy({ kv });
12
+ const content =
13
+ "Spicy peppermint apricot mediterranean ginger carrot spiced juice edamame hummus";
8
14
 
9
- const policy = new AntiDuplicationPolicy({ kv });
10
- const content = 'Spicy peppermint apricot mediterranean ginger carrot spiced juice edamame hummus';
15
+ const event1 = genEvent({ kind: 1, content });
11
16
 
12
- const event1 = genEvent({ kind: 1, content });
17
+ deepStrictEqual((await policy.call(event1))[2], true);
18
+ deepStrictEqual((await policy.call(event1))[2], false);
19
+ deepStrictEqual((await policy.call(event1))[2], false);
13
20
 
14
- assertEquals((await policy.call(event1))[2], true);
15
- assertEquals((await policy.call(event1))[2], false);
16
- assertEquals((await policy.call(event1))[2], false);
21
+ const event2 = genEvent({ kind: 1, content: "a" });
17
22
 
18
- const event2 = genEvent({ kind: 1, content: 'a' });
19
-
20
- assertEquals((await policy.call(event2))[2], true);
21
- assertEquals((await policy.call(event2))[2], true);
22
- assertEquals((await policy.call(event2))[2], true);
23
+ deepStrictEqual((await policy.call(event2))[2], true);
24
+ deepStrictEqual((await policy.call(event2))[2], true);
25
+ } finally {
26
+ await kv.close();
27
+ }
23
28
  });
24
29
 
25
- Deno.test('AntiDuplicationPolicy with deobfuscate', async () => {
26
- using kv = await Deno.openKv(':memory:');
27
-
28
- const policy = new AntiDuplicationPolicy({
29
- kv,
30
- deobfuscate: ({ content }) => (
31
- content
32
- .replace(/[\p{Emoji}\p{Emoji_Modifier}\p{Emoji_Component}\p{Emoji_Modifier_Base}\p{Emoji_Presentation}]/gu, '')
33
- .replace(/\s/g, '')
34
- .toLowerCase()
35
- ),
36
- });
37
-
38
- const event1 = genEvent({
39
- kind: 1,
40
- content: 'Spicy peppermint apricot mediterranean ginger carrot spiced juice edamame hummus',
41
- });
42
-
43
- const event2 = genEvent({
44
- kind: 1,
45
- content: 'Spicy 🌶️ peppermint apricot 🍑 mediterranean 🌊 ginger carrot 🥕 spiced 🌶️ juice 🥤 edamame 🌱 hummus ',
46
- });
47
-
48
- assertEquals((await policy.call(event1))[2], true);
49
- assertEquals((await policy.call(event2))[2], false);
30
+ await test("AntiDuplicationPolicy with deobfuscate", async () => {
31
+ const kv = await openKv(":memory:");
32
+ try {
33
+ const policy = new AntiDuplicationPolicy({
34
+ kv,
35
+ deobfuscate: ({ content }) => (
36
+ content
37
+ .replace(
38
+ /[\p{Emoji}\p{Emoji_Modifier}\p{Emoji_Component}\p{Emoji_Modifier_Base}\p{Emoji_Presentation}]/gu,
39
+ "",
40
+ )
41
+ .replace(/\s/g, "")
42
+ .toLowerCase()
43
+ ),
44
+ });
45
+
46
+ const event1 = genEvent({
47
+ kind: 1,
48
+ content:
49
+ "Spicy peppermint apricot mediterranean ginger carrot spiced juice edamame hummus",
50
+ });
51
+
52
+ const event2 = genEvent({
53
+ kind: 1,
54
+ content:
55
+ "Spicy 🌶️ peppermint apricot 🍑 mediterranean 🌊 ginger carrot 🥕 spiced 🌶️ juice 🥤 edamame 🌱 hummus ",
56
+ });
57
+
58
+ deepStrictEqual((await policy.call(event1))[2], true);
59
+ deepStrictEqual((await policy.call(event2))[2], false);
60
+ } finally {
61
+ await kv.close();
62
+ }
50
63
  });
@@ -1,5 +1,5 @@
1
- import { NostrEvent, NostrRelayOK, NPolicy } from '@nostrify/types';
2
- import { Kv, KvKey } from '@deno/kv';
1
+ import type { NostrEvent, NostrRelayOK, NPolicy } from '@nostrify/types';
2
+ import type { Kv, KvKey } from '@deno/kv';
3
3
 
4
4
  /** Policy options for `AntiDuplicationPolicy`. */
5
5
  interface AntiDuplicationPolicyOpts {
@@ -31,7 +31,11 @@ interface AntiDuplicationPolicyOpts {
31
31
  * ```
32
32
  */
33
33
  export class AntiDuplicationPolicy implements NPolicy {
34
- constructor(private opts: AntiDuplicationPolicyOpts) {}
34
+ private opts: AntiDuplicationPolicyOpts;
35
+
36
+ constructor(opts: AntiDuplicationPolicyOpts) {
37
+ this.opts = opts;
38
+ }
35
39
 
36
40
  async call(event: NostrEvent): Promise<NostrRelayOK> {
37
41
  const { id, kind } = event;
package/AnyPolicy.test.ts CHANGED
@@ -1,11 +1,12 @@
1
- import { assertEquals } from '@std/assert';
2
- import { finalizeEvent, generateSecretKey } from 'nostr-tools';
1
+ import { test } from "node:test";
2
+ import { deepStrictEqual } from "node:assert";
3
+ import { finalizeEvent, generateSecretKey } from "nostr-tools";
3
4
 
4
- import { AnyPolicy } from './AnyPolicy.ts';
5
- import { NoOpPolicy } from './NoOpPolicy.ts';
6
- import { ReadOnlyPolicy } from './ReadOnlyPolicy.ts';
5
+ import { AnyPolicy } from "./AnyPolicy.ts";
6
+ import { NoOpPolicy } from "./NoOpPolicy.ts";
7
+ import { ReadOnlyPolicy } from "./ReadOnlyPolicy.ts";
7
8
 
8
- Deno.test('accepts when all policies accept', async () => {
9
+ await test("accepts when all policies accept", async () => {
9
10
  const policy = new AnyPolicy([
10
11
  new NoOpPolicy(),
11
12
  new NoOpPolicy(),
@@ -13,16 +14,16 @@ Deno.test('accepts when all policies accept', async () => {
13
14
  ]);
14
15
 
15
16
  const event = finalizeEvent(
16
- { kind: 1, content: '', tags: [], created_at: 0 },
17
+ { kind: 1, content: "", tags: [], created_at: 0 },
17
18
  generateSecretKey(),
18
19
  );
19
20
 
20
21
  const [_, _eventId, ok] = await policy.call(event);
21
22
 
22
- assertEquals(ok, true);
23
+ deepStrictEqual(ok, true);
23
24
  });
24
25
 
25
- Deno.test('accepts when some policies reject', async () => {
26
+ await test("accepts when some policies reject", async () => {
26
27
  const policy = new AnyPolicy([
27
28
  new NoOpPolicy(),
28
29
  new ReadOnlyPolicy(),
@@ -30,16 +31,16 @@ Deno.test('accepts when some policies reject', async () => {
30
31
  ]);
31
32
 
32
33
  const event = finalizeEvent(
33
- { kind: 1, content: '', tags: [], created_at: 0 },
34
+ { kind: 1, content: "", tags: [], created_at: 0 },
34
35
  generateSecretKey(),
35
36
  );
36
37
 
37
38
  const [_, _eventId, ok] = await policy.call(event);
38
39
 
39
- assertEquals(ok, true);
40
+ deepStrictEqual(ok, true);
40
41
  });
41
42
 
42
- Deno.test('rejects when all policies reject', async () => {
43
+ await test("rejects when all policies reject", async () => {
43
44
  const policy = new AnyPolicy([
44
45
  new ReadOnlyPolicy(),
45
46
  new ReadOnlyPolicy(),
@@ -47,11 +48,11 @@ Deno.test('rejects when all policies reject', async () => {
47
48
  ]);
48
49
 
49
50
  const event = finalizeEvent(
50
- { kind: 1, content: '', tags: [], created_at: 0 },
51
+ { kind: 1, content: "", tags: [], created_at: 0 },
51
52
  generateSecretKey(),
52
53
  );
53
54
 
54
55
  const [_, _eventId, ok] = await policy.call(event);
55
56
 
56
- assertEquals(ok, false);
57
+ deepStrictEqual(ok, false);
57
58
  });
package/AnyPolicy.ts CHANGED
@@ -1,8 +1,11 @@
1
- import { NostrEvent, NostrRelayOK, NPolicy } from '@nostrify/types';
1
+ import type { NostrEvent, NostrRelayOK, NPolicy } from '@nostrify/types';
2
2
 
3
3
  /** Similar to `PipePolicy`, but passes if at least one policy passes. */
4
4
  export class AnyPolicy implements NPolicy {
5
- constructor(private policies: NPolicy[]) {}
5
+ private policies: NPolicy[];
6
+ constructor(policies: NPolicy[]) {
7
+ this.policies = policies;
8
+ }
6
9
 
7
10
  async call(event: NostrEvent, signal?: AbortSignal): Promise<NostrRelayOK> {
8
11
  let result: NostrRelayOK = ['OK', event.id, false, 'blocked: no policy passed'];
@@ -1,10 +1,11 @@
1
- import { genEvent, MockRelay } from '@nostrify/nostrify/test';
2
- import { assertEquals } from '@std/assert';
3
- import { generateSecretKey } from 'nostr-tools';
1
+ import { test } from "node:test";
2
+ import { genEvent, MockRelay } from "@nostrify/nostrify/test";
3
+ import { deepStrictEqual } from "node:assert";
4
+ import { generateSecretKey } from "nostr-tools";
4
5
 
5
- import { AuthorPolicy } from './AuthorPolicy.ts';
6
+ import { AuthorPolicy } from "./AuthorPolicy.ts";
6
7
 
7
- Deno.test('AuthorPolicy', async () => {
8
+ await test("AuthorPolicy", async () => {
8
9
  const store = new MockRelay();
9
10
  const policy = new AuthorPolicy(store);
10
11
 
@@ -13,11 +14,11 @@ Deno.test('AuthorPolicy', async () => {
13
14
 
14
15
  const [, , ok1] = await policy.call(event);
15
16
 
16
- assertEquals(ok1, false);
17
+ deepStrictEqual(ok1, false);
17
18
 
18
19
  await store.event(genEvent({ kind: 0 }, sk));
19
20
 
20
21
  const [, , ok2] = await policy.call(event);
21
22
 
22
- assertEquals(ok2, true);
23
+ deepStrictEqual(ok2, true);
23
24
  });
package/AuthorPolicy.ts CHANGED
@@ -1,13 +1,19 @@
1
- import { NostrEvent, NostrRelayOK, NPolicy, NStore } from '@nostrify/types';
1
+ import type { NostrEvent, NostrRelayOK, NPolicy, NStore } from '@nostrify/types';
2
2
 
3
3
  /** Rejects events by authors without a kind 0, then optionally applies another policy to the kind 0. */
4
4
  export class AuthorPolicy implements NPolicy {
5
- constructor(private store: NStore, private policy?: NPolicy) {}
5
+ private store: NStore;
6
+ private policy?: NPolicy;
7
+
8
+ constructor(store: NStore, policy?: NPolicy) {
9
+ this.store = store;
10
+ this.policy = policy;
11
+ }
6
12
 
7
13
  async call(event: NostrEvent, signal?: AbortSignal): Promise<NostrRelayOK> {
8
14
  const author: NostrEvent | undefined = event.kind === 0 ? event : await this.store
9
15
  .query([{ kinds: [0], authors: [event.pubkey], limit: 1 }], { signal })
10
- .then(([event]) => event);
16
+ .then(([event]: NostrEvent[]) => event);
11
17
 
12
18
  if (!author) {
13
19
  return ['OK', event.id, false, 'blocked: author is missing a kind 0 event'];
package/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.36.6
4
+
5
+ ### Patch Changes
6
+
7
+ - Get tests passing in CI, use esbuild to build final JS files
8
+ - Updated dependencies
9
+ - @nostrify/nostrify@0.46.8
10
+ - @nostrify/types@0.36.4
11
+
12
+ ## 0.36.5
13
+
14
+ ### Patch Changes
15
+
16
+ - fix imports in workspace packages
17
+ - Updated dependencies
18
+ - @nostrify/nostrify@0.46.7
19
+ - @nostrify/types@0.36.3
20
+
3
21
  ## 0.36.4
4
22
 
5
23
  ### Patch Changes