@fedify/fedify 1.10.0-dev.2 → 2.0.0-dev.12

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 (271) hide show
  1. package/README.md +3 -0
  2. package/dist/{actor-eIATKOh7.js → actor-C-FuEZU4.js} +220 -705
  3. package/dist/{actor-C1Euqngb.d.ts → actor-DqFajh9s.d.ts} +2 -2
  4. package/dist/{actor-8zynMl2a.cjs → actor-_9UN5RVT.cjs} +952 -1479
  5. package/dist/{actor-Ydzhc8dj.d.cts → actor-f2NtjyCg.d.cts} +2 -2
  6. package/dist/{actor-Bv7llTFW.js → actor-rOm0sXHU.js} +1 -1
  7. package/dist/{assert_rejects-DiIiJbZn.js → assert_rejects-Ce45JcFg.js} +1 -1
  8. package/dist/{assert_is_error-BPGph1Jx.js → assert_throws-BNXdRGWP.js} +31 -1
  9. package/dist/{builder-C7fApQY_.js → builder-hArjoWjW.js} +3 -4
  10. package/dist/{client-DjT_tegg.d.cts → client-94iWEfQa.d.cts} +3 -75
  11. package/dist/{client-DF8anIB5.d.ts → client-BsGzbnV-.d.ts} +3 -75
  12. package/dist/{client-Bwnrdh_A.js → client-pY7-3icS.js} +3 -22
  13. package/dist/compat/mod.d.cts +10 -12
  14. package/dist/compat/mod.d.ts +10 -12
  15. package/dist/compat/transformers.test.js +20 -20
  16. package/dist/{context-CwUAkopp.d.cts → context-PxGADCsD.d.cts} +152 -27
  17. package/dist/{context-CXUibY4L.d.ts → context-V-XS2_6O.d.ts} +152 -27
  18. package/dist/{authdocloader-TNeksncq.js → docloader-CE1lRhEV.js} +17 -8
  19. package/dist/{esm-aj4vkb76.js → esm-BEFbR5eN.js} +32 -17
  20. package/dist/federation/builder.test.js +9 -12
  21. package/dist/federation/collection.test.js +7 -9
  22. package/dist/federation/handler.test.js +28 -149
  23. package/dist/federation/idempotency.test.js +26 -27
  24. package/dist/federation/inbox.test.js +4 -6
  25. package/dist/federation/keycache.test.js +3 -4
  26. package/dist/federation/kv.test.js +6 -8
  27. package/dist/federation/middleware.test.js +270 -93
  28. package/dist/federation/mod.cjs +9 -11
  29. package/dist/federation/mod.d.cts +10 -12
  30. package/dist/federation/mod.d.ts +10 -12
  31. package/dist/federation/mod.js +9 -11
  32. package/dist/federation/mq.test.js +10 -10
  33. package/dist/federation/negotiation.test.js +26 -0
  34. package/dist/federation/retry.test.js +4 -5
  35. package/dist/federation/router.test.js +6 -8
  36. package/dist/federation/send.test.js +14 -16
  37. package/dist/{http-wsGR6KkT.d.ts → http-BbO0ejuk.d.ts} +2 -2
  38. package/dist/{http-DXmKLE1t.js → http-Bmx7ea3F.js} +2 -2
  39. package/dist/{http-B1_DzfAU.d.cts → http-M8k5mKc0.d.cts} +2 -2
  40. package/dist/{http-DMJrVRf0.js → http-Q_l4fCEE.js} +256 -6
  41. package/dist/{http-CK80ff9S.cjs → http-So5V_Tgv.cjs} +289 -9
  42. package/dist/{inbox-Dt-Q2rJt.js → inbox-B9PjFn2S.js} +2 -7
  43. package/dist/{key-Tt9B2Qkj.js → key-khQpfFdw.js} +3 -2
  44. package/dist/{keycache-CXF4YAON.js → keycache-BU3fsZFa.js} +1 -1
  45. package/dist/{keys-CAUbEZtV.js → keys-BaMFfIdL.js} +2 -1
  46. package/dist/kv-cache-DN9pfMBe.js +94 -0
  47. package/dist/kv-cache-R1oW382l.js +122 -0
  48. package/dist/kv-cache-X2ggcnHI.cjs +134 -0
  49. package/dist/{ld-CqoYKNwB.js → ld-BLMebnep.js} +3 -2
  50. package/dist/{type-E_91dusN.js → lookup-C7SSHgK7.js} +542 -5394
  51. package/dist/{lookup-BXlOCJsH.cjs → lookup-CLaDFNx1.cjs} +134 -5
  52. package/dist/{lookup-8Ik9lSMm.js → lookup-CtC3x1M6.js} +125 -2
  53. package/dist/middleware-BYBwqvTv.cjs +15 -0
  54. package/dist/{middleware-DnXc8LK4.js → middleware-Bda2JO66.js} +38 -84
  55. package/dist/{middleware-nSw7nWf8.js → middleware-C3ml59Hp.js} +43 -146
  56. package/dist/middleware-DC7h2qq-.js +26 -0
  57. package/dist/{middleware-bN29Orv5.cjs → middleware-DFLterpx.cjs} +58 -104
  58. package/dist/middleware-mQR2SM7T.js +15 -0
  59. package/dist/{mod-CDObsV1d.d.ts → mod-BlVovdcy.d.ts} +2 -2
  60. package/dist/{mod-mXx9V0q5.d.cts → mod-BoRKfJPE.d.cts} +2 -2
  61. package/dist/{mod-BUbqxBev.d.cts → mod-BxRCHTz-.d.cts} +2 -2
  62. package/dist/{mod-jQ4OODsl.d.cts → mod-C58MZ7Wx.d.cts} +1 -1
  63. package/dist/{mod-BcObK1Lz.d.ts → mod-Cdo6SYlJ.d.ts} +2 -2
  64. package/dist/{mod-DgcYoyZK.d.ts → mod-D5Z2tISD.d.ts} +3 -3
  65. package/dist/mod-DMpuiKXi.d.cts +107 -0
  66. package/dist/{mod-fjqfsrty.d.cts → mod-DgxG-byT.d.cts} +3 -3
  67. package/dist/{mod-DBzN0aCM.d.ts → mod-Ds0mpFZU.d.ts} +1 -1
  68. package/dist/mod-aAE2wOWV.d.ts +109 -0
  69. package/dist/mod.cjs +19 -34
  70. package/dist/mod.d.cts +15 -17
  71. package/dist/mod.d.ts +15 -17
  72. package/dist/mod.js +14 -16
  73. package/dist/negotiation-C4nFufNk.js +71 -0
  74. package/dist/nodeinfo/client.test.js +30 -111
  75. package/dist/nodeinfo/handler.test.js +25 -26
  76. package/dist/nodeinfo/mod.cjs +3 -6
  77. package/dist/nodeinfo/mod.d.cts +3 -5
  78. package/dist/nodeinfo/mod.d.ts +3 -5
  79. package/dist/nodeinfo/mod.js +3 -4
  80. package/dist/nodeinfo/types.test.js +8 -15
  81. package/dist/{owner-6KSEp9eV.d.cts → owner-B4HbyP8s.d.cts} +3 -3
  82. package/dist/{owner-9jSx_21P.js → owner-XzzTSr4S.js} +3 -2
  83. package/dist/{owner-BbeUDvOu.d.ts → owner-kQRGVXG1.d.ts} +3 -3
  84. package/dist/{proof-BT3OPhWQ.js → proof-B-qOSAuQ.js} +5 -4
  85. package/dist/{proof-BuLnngRI.cjs → proof-BzJkFBBF.cjs} +18 -17
  86. package/dist/{proof-B5YI7sn5.js → proof-C9sfVit1.js} +2 -2
  87. package/dist/{send-DlPE7bKe.js → send-yEkZlxzW.js} +2 -2
  88. package/dist/sig/http.test.js +12 -13
  89. package/dist/sig/key.test.js +9 -11
  90. package/dist/sig/ld.test.js +8 -10
  91. package/dist/sig/mod.cjs +9 -11
  92. package/dist/sig/mod.d.cts +5 -7
  93. package/dist/sig/mod.d.ts +5 -7
  94. package/dist/sig/mod.js +5 -7
  95. package/dist/sig/owner.test.js +11 -13
  96. package/dist/sig/proof.test.js +13 -14
  97. package/dist/src/vocab/accept.yaml +1 -1
  98. package/dist/src/vocab/activity.yaml +1 -1
  99. package/dist/src/vocab/add.yaml +1 -1
  100. package/dist/src/vocab/announce.yaml +1 -1
  101. package/dist/src/vocab/application.yaml +1 -1
  102. package/dist/src/vocab/arrive.yaml +1 -1
  103. package/dist/src/vocab/article.yaml +1 -1
  104. package/dist/src/vocab/audio.yaml +1 -1
  105. package/dist/src/vocab/block.yaml +1 -1
  106. package/dist/src/vocab/chatmessage.yaml +1 -1
  107. package/dist/src/vocab/collection.yaml +1 -1
  108. package/dist/src/vocab/collectionpage.yaml +1 -1
  109. package/dist/src/vocab/create.yaml +1 -1
  110. package/dist/src/vocab/dataintegrityproof.yaml +1 -1
  111. package/dist/src/vocab/delete.yaml +1 -1
  112. package/dist/src/vocab/didservice.yaml +1 -1
  113. package/dist/src/vocab/dislike.yaml +1 -1
  114. package/dist/src/vocab/document.yaml +1 -1
  115. package/dist/src/vocab/emoji.yaml +1 -1
  116. package/dist/src/vocab/emojireact.yaml +1 -1
  117. package/dist/src/vocab/endpoints.yaml +1 -1
  118. package/dist/src/vocab/event.yaml +1 -1
  119. package/dist/src/vocab/export.yaml +1 -1
  120. package/dist/src/vocab/flag.yaml +1 -1
  121. package/dist/src/vocab/follow.yaml +1 -1
  122. package/dist/src/vocab/group.yaml +1 -1
  123. package/dist/src/vocab/hashtag.yaml +1 -1
  124. package/dist/src/vocab/ignore.yaml +1 -1
  125. package/dist/src/vocab/image.yaml +1 -1
  126. package/dist/src/vocab/intransitiveactivity.yaml +1 -1
  127. package/dist/src/vocab/invite.yaml +1 -1
  128. package/dist/src/vocab/join.yaml +1 -1
  129. package/dist/src/vocab/key.yaml +1 -1
  130. package/dist/src/vocab/leave.yaml +1 -1
  131. package/dist/src/vocab/like.yaml +1 -1
  132. package/dist/src/vocab/link.yaml +1 -1
  133. package/dist/src/vocab/listen.yaml +1 -1
  134. package/dist/src/vocab/mention.yaml +1 -1
  135. package/dist/src/vocab/move.yaml +1 -1
  136. package/dist/src/vocab/multikey.yaml +1 -1
  137. package/dist/src/vocab/note.yaml +1 -1
  138. package/dist/src/vocab/object.yaml +1 -1
  139. package/dist/src/vocab/offer.yaml +1 -1
  140. package/dist/src/vocab/orderedcollection.yaml +1 -1
  141. package/dist/src/vocab/orderedcollectionpage.yaml +1 -1
  142. package/dist/src/vocab/organization.yaml +1 -1
  143. package/dist/src/vocab/page.yaml +1 -1
  144. package/dist/src/vocab/person.yaml +1 -1
  145. package/dist/src/vocab/place.yaml +1 -1
  146. package/dist/src/vocab/profile.yaml +1 -1
  147. package/dist/src/vocab/propertyvalue.yaml +1 -1
  148. package/dist/src/vocab/question.yaml +1 -1
  149. package/dist/src/vocab/read.yaml +1 -1
  150. package/dist/src/vocab/reject.yaml +1 -1
  151. package/dist/src/vocab/relationship.yaml +1 -1
  152. package/dist/src/vocab/remove.yaml +1 -1
  153. package/dist/src/vocab/service.yaml +1 -1
  154. package/dist/src/vocab/source.yaml +1 -1
  155. package/dist/src/vocab/tentativeaccept.yaml +1 -1
  156. package/dist/src/vocab/tentativereject.yaml +1 -1
  157. package/dist/src/vocab/tombstone.yaml +1 -1
  158. package/dist/src/vocab/travel.yaml +1 -1
  159. package/dist/src/vocab/undo.yaml +1 -1
  160. package/dist/src/vocab/update.yaml +1 -1
  161. package/dist/src/vocab/video.yaml +1 -1
  162. package/dist/src/vocab/view.yaml +1 -1
  163. package/dist/testing/docloader.test.js +6 -8
  164. package/dist/testing/mod.d.ts +10 -119
  165. package/dist/testing/mod.js +2 -3
  166. package/dist/{testing-B17zODFD.js → testing-D-nLIHkh.js} +1 -2
  167. package/dist/{types-By5LByL1.js → types-BtUjyi5y.js} +5 -166
  168. package/dist/{types-BIgY6c-l.js → types-C2XVl6gj.js} +1 -3
  169. package/dist/{types-Ci8XKEfO.cjs → types-CWgzGaqk.cjs} +6 -179
  170. package/dist/{runtime/authdocloader.test.js → utils/docloader.test.js} +14 -15
  171. package/dist/utils/kv-cache.test.js +209 -0
  172. package/dist/utils/mod.cjs +12 -0
  173. package/dist/utils/mod.d.cts +5 -0
  174. package/dist/utils/mod.d.ts +7 -0
  175. package/dist/utils/mod.js +11 -0
  176. package/dist/vocab/actor.test.js +8 -10
  177. package/dist/vocab/lookup.test.js +8 -10
  178. package/dist/vocab/mod.cjs +3 -4
  179. package/dist/vocab/mod.d.cts +3 -5
  180. package/dist/vocab/mod.d.ts +3 -5
  181. package/dist/vocab/mod.js +3 -4
  182. package/dist/vocab/type.test.js +2 -3
  183. package/dist/vocab/vocab.test.js +7618 -1973
  184. package/dist/{vocab-CDHNj5zp.d.ts → vocab-BCWe1Ih5.d.ts} +9 -25
  185. package/dist/{vocab-BjnZ49Xt.cjs → vocab-C96aggZM.cjs} +5 -5
  186. package/dist/{vocab-Cfs0937i.d.cts → vocab-CeDBzu-f.d.cts} +9 -25
  187. package/dist/{vocab-CthegyUc.js → vocab-axlR_8k0.js} +3 -3
  188. package/dist/webfinger/handler.test.js +24 -25
  189. package/dist/webfinger/lookup.test.js +7 -9
  190. package/dist/webfinger/mod.cjs +2 -3
  191. package/dist/webfinger/mod.d.cts +1 -3
  192. package/dist/webfinger/mod.d.ts +1 -3
  193. package/dist/webfinger/mod.js +2 -3
  194. package/package.json +20 -51
  195. package/dist/assert_throws-BOO88avQ.js +0 -39
  196. package/dist/authdocloader-BEPeTSD8.cjs +0 -58
  197. package/dist/authdocloader-BNIyrORx.js +0 -52
  198. package/dist/denokv-D0nfNQ1x.js +0 -57
  199. package/dist/docloader-CLYexeNv.js +0 -4825
  200. package/dist/docloader-CdsuyjrU.cjs +0 -4891
  201. package/dist/docloader-CxWcuWqQ.d.ts +0 -221
  202. package/dist/docloader-D-MrRyHl.d.cts +0 -219
  203. package/dist/key-BL8DRhuI.js +0 -10
  204. package/dist/key-BU1Vsq8S.cjs +0 -290
  205. package/dist/key-DTzAk78O.js +0 -10
  206. package/dist/key-DWDJFZzD.js +0 -260
  207. package/dist/key-gZEWdYwT.cjs +0 -10
  208. package/dist/lookup-Co4Y1ycg.js +0 -336
  209. package/dist/middleware-09gZVY21.cjs +0 -17
  210. package/dist/middleware-B8Q9c1ys.js +0 -26
  211. package/dist/middleware-DHUCp8iq.js +0 -17
  212. package/dist/mod-CIbqfZW0.d.ts +0 -104
  213. package/dist/mod-Dt-G9ZOS.d.cts +0 -102
  214. package/dist/mq-B7R1Q-M5.d.cts +0 -140
  215. package/dist/mq-CRGm1e_F.d.ts +0 -143
  216. package/dist/nodeinfo/semver.test.js +0 -143
  217. package/dist/runtime/docloader.test.js +0 -588
  218. package/dist/runtime/key.test.d.ts +0 -3
  219. package/dist/runtime/key.test.js +0 -103
  220. package/dist/runtime/langstr.test.d.ts +0 -3
  221. package/dist/runtime/langstr.test.js +0 -40
  222. package/dist/runtime/link.test.d.ts +0 -3
  223. package/dist/runtime/link.test.js +0 -61
  224. package/dist/runtime/mod.cjs +0 -25
  225. package/dist/runtime/mod.d.cts +0 -6
  226. package/dist/runtime/mod.d.ts +0 -8
  227. package/dist/runtime/mod.js +0 -13
  228. package/dist/runtime/multibase/multibase.test.d.ts +0 -3
  229. package/dist/runtime/multibase/multibase.test.js +0 -358
  230. package/dist/runtime/url.test.d.ts +0 -3
  231. package/dist/runtime/url.test.js +0 -45
  232. package/dist/semver-dArNLkR9.js +0 -149
  233. package/dist/vocab/schema.yaml +0 -247
  234. package/dist/x/cfworkers.cjs +0 -100
  235. package/dist/x/cfworkers.d.cts +0 -59
  236. package/dist/x/cfworkers.d.ts +0 -61
  237. package/dist/x/cfworkers.js +0 -98
  238. package/dist/x/cfworkers.test.d.ts +0 -3
  239. package/dist/x/cfworkers.test.js +0 -179
  240. package/dist/x/hono.cjs +0 -61
  241. package/dist/x/hono.d.cts +0 -54
  242. package/dist/x/hono.d.ts +0 -56
  243. package/dist/x/hono.js +0 -60
  244. package/dist/x/sveltekit.cjs +0 -69
  245. package/dist/x/sveltekit.d.cts +0 -46
  246. package/dist/x/sveltekit.d.ts +0 -48
  247. package/dist/x/sveltekit.js +0 -68
  248. /package/dist/{assert_not_equals-f3m3epl3.js → assert_not_equals-C80BG-_5.js} +0 -0
  249. /package/dist/{collection-CSzG2j1P.js → collection-BzWsN9pB.js} +0 -0
  250. /package/dist/{nodeinfo/semver.test.d.ts → federation/negotiation.test.d.ts} +0 -0
  251. /package/dist/{federation-H2_En3j5.cjs → federation-CRpdnOMS.cjs} +0 -0
  252. /package/dist/{federation-D1U8YY9t.js → federation-jcR8-ZxP.js} +0 -0
  253. /package/dist/{kv-C7sopW2E.d.ts → kv-BKNZ-Tb-.d.ts} +0 -0
  254. /package/dist/{kv-63Cil1MD.d.cts → kv-Bxr0Q87_.d.cts} +0 -0
  255. /package/dist/{mod-C2tOeRkN.d.cts → mod-B-hUPT2N.d.cts} +0 -0
  256. /package/dist/{mod-1pDWKvUL.d.ts → mod-CVgZgliM.d.ts} +0 -0
  257. /package/dist/{mod-FZd39qVq.d.cts → mod-CcDPcLJW.d.cts} +0 -0
  258. /package/dist/{mod-g0xFzAP9.d.ts → mod-bjzj5QIb.d.ts} +0 -0
  259. /package/dist/{nodeinfo-DfycQ8Wf.js → nodeinfo-BnthBobC.js} +0 -0
  260. /package/dist/{nodeinfo-Co9lJrWl.cjs → nodeinfo-CdN0rEnZ.cjs} +0 -0
  261. /package/dist/{otel-Chy5T2Xh.js → otel-1BmGPuZc.js} +0 -0
  262. /package/dist/{retry-D4GJ670a.js → retry-CfF8Gn4d.js} +0 -0
  263. /package/dist/{runtime-DPYEDf-o.js → sig-C34-oHBl.js} +0 -0
  264. /package/dist/{runtime-C58AJWSv.cjs → sig-YYj5tCnr.cjs} +0 -0
  265. /package/dist/{std__assert-X-_kMxKM.js → std__assert-DWivtrGR.js} +0 -0
  266. /package/dist/{runtime → utils}/docloader.test.d.ts +0 -0
  267. /package/dist/{runtime/authdocloader.test.d.ts → utils/kv-cache.test.d.ts} +0 -0
  268. /package/dist/{sig-Cj3tk-ig.js → utils-D-Va7aXC.js} +0 -0
  269. /package/dist/{sig-ByHXzqUi.cjs → utils-DyRU1gdZ.cjs} +0 -0
  270. /package/dist/{webfinger-De_bU0iE.js → webfinger-C72Y8lrh.js} +0 -0
  271. /package/dist/{webfinger-BjOEdFPs.cjs → webfinger-vAtLmxOF.cjs} +0 -0
@@ -1,45 +0,0 @@
1
-
2
- import { Temporal } from "@js-temporal/polyfill";
3
- import { URLPattern } from "urlpattern-polyfill";
4
- globalThis.addEventListener = () => {};
5
-
6
- import { UrlError, expandIPv6Address, isValidPublicIPv4Address, isValidPublicIPv6Address, validatePublicUrl } from "../type-E_91dusN.js";
7
- import { assertEquals } from "../assert_equals-DSbWqCm3.js";
8
- import { assert } from "../assert-MZs1qjMx.js";
9
- import "../lookup-Co4Y1ycg.js";
10
- import { test } from "../testing-B17zODFD.js";
11
- import { assertFalse, assertRejects } from "../assert_rejects-DiIiJbZn.js";
12
- import "../assert_is_error-BPGph1Jx.js";
13
-
14
- //#region src/runtime/url.test.ts
15
- test("validatePublicUrl()", async () => {
16
- await assertRejects(() => validatePublicUrl("ftp://localhost"), UrlError);
17
- await assertRejects(() => validatePublicUrl("data:text/plain;base64,SGVsbG8sIFdvcmxkIQ=="), UrlError);
18
- await assertRejects(() => validatePublicUrl("https://localhost"), UrlError);
19
- await assertRejects(() => validatePublicUrl("https://127.0.0.1"), UrlError);
20
- await assertRejects(() => validatePublicUrl("https://[::1]"), UrlError);
21
- });
22
- test("isValidPublicIPv4Address()", () => {
23
- assert(isValidPublicIPv4Address("8.8.8.8"));
24
- assertFalse(isValidPublicIPv4Address("192.168.1.1"));
25
- assertFalse(isValidPublicIPv4Address("127.0.0.1"));
26
- assertFalse(isValidPublicIPv4Address("10.0.0.1"));
27
- assertFalse(isValidPublicIPv4Address("127.16.0.1"));
28
- assertFalse(isValidPublicIPv4Address("169.254.0.1"));
29
- });
30
- test("isValidPublicIPv6Address()", () => {
31
- assert(isValidPublicIPv6Address("2001:db8::1"));
32
- assertFalse(isValidPublicIPv6Address("::1"));
33
- assertFalse(isValidPublicIPv6Address("fc00::1"));
34
- assertFalse(isValidPublicIPv6Address("fe80::1"));
35
- assertFalse(isValidPublicIPv6Address("ff00::1"));
36
- assertFalse(isValidPublicIPv6Address("::"));
37
- });
38
- test("expandIPv6Address()", () => {
39
- assertEquals(expandIPv6Address("::"), "0000:0000:0000:0000:0000:0000:0000:0000");
40
- assertEquals(expandIPv6Address("::1"), "0000:0000:0000:0000:0000:0000:0000:0001");
41
- assertEquals(expandIPv6Address("2001:db8::"), "2001:0db8:0000:0000:0000:0000:0000:0000");
42
- assertEquals(expandIPv6Address("2001:db8::1"), "2001:0db8:0000:0000:0000:0000:0000:0001");
43
- });
44
-
45
- //#endregion
@@ -1,149 +0,0 @@
1
-
2
- import { Temporal } from "@js-temporal/polyfill";
3
- import { URLPattern } from "urlpattern-polyfill";
4
- globalThis.addEventListener = () => {};
5
-
6
- //#region src/nodeinfo/semver.ts
7
- const MAX_LENGTH = 256;
8
- /**
9
- * A single `0`, or a non-zero digit followed by zero or more digits.
10
- */
11
- const NUMERIC_IDENTIFIER = "0|[1-9]\\d*";
12
- /**
13
- * Zero or more digits, followed by a letter or hyphen, and then zero or more letters, digits, or hyphens.
14
- */
15
- const NON_NUMERIC_IDENTIFIER = "\\d*[a-zA-Z-][a-zA-Z0-9-]*";
16
- /**
17
- * Three dot-separated numeric identifiers.
18
- */
19
- const VERSION_CORE = `(?<major>${NUMERIC_IDENTIFIER})\\.(?<minor>${NUMERIC_IDENTIFIER})\\.(?<patch>${NUMERIC_IDENTIFIER})`;
20
- /**
21
- * A numeric identifier, or a non-numeric identifier.
22
- */
23
- const PRERELEASE_IDENTIFIER = `(?:${NUMERIC_IDENTIFIER}|${NON_NUMERIC_IDENTIFIER})`;
24
- /**
25
- * A hyphen, followed by one or more dot-separated pre-release version identifiers.
26
- * @example "-pre.release"
27
- */
28
- const PRERELEASE = `(?:-(?<prerelease>${PRERELEASE_IDENTIFIER}(?:\\.${PRERELEASE_IDENTIFIER})*))`;
29
- /**
30
- * Any combination of digits, letters, or hyphens.
31
- */
32
- const BUILD_IDENTIFIER = "[0-9A-Za-z-]+";
33
- /**
34
- * A plus sign, followed by one or more period-separated build metadata identifiers.
35
- * @example "+build.meta"
36
- */
37
- const BUILD = `(?:\\+(?<buildmetadata>${BUILD_IDENTIFIER}(?:\\.${BUILD_IDENTIFIER})*))`;
38
- /**
39
- * A version, followed optionally by a pre-release version and build metadata.
40
- */
41
- const FULL_VERSION = `v?${VERSION_CORE}${PRERELEASE}?${BUILD}?`;
42
- const FULL_REGEXP = /* @__PURE__ */ new RegExp(`^${FULL_VERSION}$`);
43
- /**
44
- * Attempt to parse a string as a semantic version, returning a SemVer object.
45
- *
46
- * @example Usage
47
- * ```ts
48
- * import { parseSemVer } from "@fedify/fedify/nodeinfo";
49
- * import { assertEquals } from "@std/assert";
50
- *
51
- * const version = parseSemVer("1.2.3");
52
- * assertEquals(version, {
53
- * major: 1,
54
- * minor: 2,
55
- * patch: 3,
56
- * prerelease: [],
57
- * build: [],
58
- * });
59
- * ```
60
- *
61
- * @throws {TypeError} If the input string is invalid.
62
- * @param value The version string to parse
63
- * @returns A valid SemVer
64
- * @since 1.2.0
65
- */
66
- function parseSemVer(value) {
67
- if (typeof value !== "string") throw new TypeError(`Cannot parse version as version must be a string: received ${typeof value}`);
68
- if (value.length > MAX_LENGTH) throw new TypeError(`Cannot parse version as version length is too long: length is ${value.length}, max length is ${MAX_LENGTH}`);
69
- value = value.trim();
70
- const groups = value.match(FULL_REGEXP)?.groups;
71
- if (!groups) throw new TypeError(`Cannot parse version: ${value}`);
72
- const major = parseNumber(groups.major, `Cannot parse version ${value}: invalid major version`);
73
- const minor = parseNumber(groups.minor, `Cannot parse version ${value}: invalid minor version`);
74
- const patch = parseNumber(groups.patch, `Cannot parse version ${value}: invalid patch version`);
75
- const prerelease = groups.prerelease ? parsePrerelease(groups.prerelease) : [];
76
- const build = groups.buildmetadata ? parseBuild(groups.buildmetadata) : [];
77
- return {
78
- major,
79
- minor,
80
- patch,
81
- prerelease,
82
- build
83
- };
84
- }
85
- /**
86
- * Returns true if the value is a valid SemVer number.
87
- *
88
- * Must be a number. Must not be NaN. Can be positive or negative infinity.
89
- * Can be between 0 and MAX_SAFE_INTEGER.
90
- * @param value The value to check
91
- * @returns True if its a valid semver number
92
- */
93
- function isValidNumber(value) {
94
- return typeof value === "number" && !Number.isNaN(value) && (!Number.isFinite(value) || 0 <= value && value <= Number.MAX_SAFE_INTEGER);
95
- }
96
- const NUMERIC_IDENTIFIER_REGEXP = /* @__PURE__ */ new RegExp(`^${NUMERIC_IDENTIFIER}$`);
97
- function parsePrerelease(prerelease) {
98
- return prerelease.split(".").filter(Boolean).map((id) => {
99
- if (NUMERIC_IDENTIFIER_REGEXP.test(id)) {
100
- const number = Number(id);
101
- if (isValidNumber(number)) return number;
102
- }
103
- return id;
104
- });
105
- }
106
- function parseBuild(buildmetadata) {
107
- return buildmetadata.split(".").filter(Boolean);
108
- }
109
- function parseNumber(input, errorMessage) {
110
- const number = Number(input);
111
- if (!isValidNumber(number)) throw new TypeError(errorMessage);
112
- return number;
113
- }
114
- function formatNumber(value) {
115
- return value.toFixed(0);
116
- }
117
- /**
118
- * Format a SemVer object into a string.
119
- *
120
- * @example Usage
121
- * ```ts
122
- * import { formatSemVer } from "@fedify/fedify/nodeinfo";
123
- * import { assertEquals } from "@std/assert";
124
- *
125
- * const semver = {
126
- * major: 1,
127
- * minor: 2,
128
- * patch: 3,
129
- * };
130
- * assertEquals(formatSemVer(semver), "1.2.3");
131
- * ```
132
- *
133
- * @param version The SemVer to format
134
- * @returns The string representation of a semantic version.
135
- * @since 1.2.0
136
- */
137
- function formatSemVer(version) {
138
- const major = formatNumber(version.major);
139
- const minor = formatNumber(version.minor);
140
- const patch = formatNumber(version.patch);
141
- const pre = version.prerelease?.join(".") ?? "";
142
- const build = version.build?.join(".") ?? "";
143
- const primary = `${major}.${minor}.${patch}`;
144
- const release = [primary, pre].filter((v) => v).join("-");
145
- return [release, build].filter((v) => v).join("+");
146
- }
147
-
148
- //#endregion
149
- export { formatSemVer, parseSemVer };
@@ -1,247 +0,0 @@
1
- $schema: "https://json-schema.org/draft/2020-12/schema"
2
- title: Fedify model schema
3
-
4
- $defs:
5
- property:
6
- description: >-
7
- The schema of a property. It is used to generate property accessors of
8
- a class.
9
- anyOf:
10
- - allOf:
11
- - $ref: "#/$defs/property-base"
12
- - $ref: "#/$defs/property-typing"
13
- - type: object
14
- properties:
15
- functional:
16
- description: &functional-description >-
17
- Marks the property that it can have only one value. Turning on
18
- this flag will generate only singular property accessors,
19
- so pluralName and singularAccessor should not be specified.
20
- const: false
21
- pluralName:
22
- description: >-
23
- The plural form of the property name. It is used as the name of
24
- the generated property accessors.
25
- type: string
26
- singularAccessor:
27
- description: >-
28
- Whether to generate singular property accessors. Regardless of
29
- this flag, plural property accessors are generated
30
- (unless functional is turned on).
31
- type: boolean
32
- container:
33
- description: >-
34
- The container type of the property values. It can be unspecified.
35
- enum:
36
- - graph
37
- - list
38
- required:
39
- - pluralName
40
- - allOf:
41
- - $ref: "#/$defs/property-base"
42
- - $ref: "#/$defs/property-typing"
43
- - type: object
44
- properties:
45
- functional:
46
- description: *functional-description
47
- const: true
48
- redundantProperties::
49
- description: >-
50
- If it's present, those redundant properties are also filled with
51
- the same value altogether when the object is serialized into
52
- JSON-LD. When it's deserialized from JSON-LD, it tries to
53
- parse the values of the specified properties in order.
54
- type: array
55
- items:
56
- type: object
57
- properties:
58
- uri:
59
- description: The qualified URI of the property.
60
- type: string
61
- format: uri
62
- compactName:
63
- description: >-
64
- The property name used in the compacted JSON-LD document.
65
- It is used as the key of the property.
66
- type: string
67
- required:
68
- - uri
69
- required:
70
- - functional
71
-
72
- property-base:
73
- type: object
74
- properties:
75
- singularName:
76
- description: >-
77
- The singular form of the property name. It is used as the name of the
78
- generated property accessors.
79
- type: string
80
- uri:
81
- description: The qualified URI of the property.
82
- type: string
83
- format: uri
84
- compactName:
85
- description: >-
86
- The property name used in the compacted JSON-LD document. It is used
87
- as the key of the property.
88
- type: string
89
- subpropertyOf:
90
- description: >-
91
- The qualified URI of the superproperty of the property (if any).
92
- It means that the property is a specialization of the referenced
93
- property.
94
- type: string
95
- format: uri
96
- description:
97
- description: >-
98
- The description of the property. It is used as the doc comment of
99
- the generated property accessors.
100
- type: string
101
- embedContext:
102
- description: >-
103
- Whether the enclosed object should have its own context when
104
- the document is compacted.
105
- type: object
106
- properties:
107
- compactName:
108
- description: >-
109
- The compact name of the property that contains the context.
110
- type: string
111
- inherit:
112
- description: >-
113
- Whether the embedded context should be the same as the context of
114
- the enclosing document.
115
- const: true
116
- required:
117
- - singularName
118
- - uri
119
- - description
120
-
121
- property-typing:
122
- anyOf:
123
- - type: object
124
- properties:
125
- untyped:
126
- description: >-
127
- Whether the property value has @type field. If true, the range must
128
- have only one element.
129
- const: false
130
- range:
131
- description: >-
132
- The qualified URIs of all possible types of the property values.
133
- type: array
134
- items:
135
- $ref: "#/$defs/typeUri"
136
- minItems: 1
137
- uniqueItems: true
138
- required:
139
- - range
140
- - type: object
141
- properties:
142
- untyped:
143
- description: >-
144
- Whether the property value has @type field. If true, the range must
145
- have only one element.
146
- const: true
147
- range:
148
- description: >-
149
- The qualified URIs of all possible types of the property values.
150
- type: array
151
- items:
152
- $ref: "#/$defs/typeUri"
153
- minItems: 1
154
- maxItems: 1
155
- required:
156
- - untyped
157
- - range
158
-
159
- typeUri:
160
- description: >-
161
- The qualified URI of a type. It is used as the range of a property.
162
- anyOf:
163
- - type: string
164
- format: uri
165
- - enum:
166
- - fedify:langTag
167
-
168
- ldContext:
169
- anyOf:
170
- - type: string
171
- format: uri
172
- - $ref: "#/$defs/ldEmbeddedContext"
173
- - type: array
174
- items:
175
- anyOf:
176
- - type: string
177
- format: uri
178
- - $ref: "#/$defs/ldEmbeddedContext"
179
- uniqueItems: true
180
-
181
- ldEmbeddedContext:
182
- type: object
183
- patternProperties:
184
- "^.+$":
185
- $ref: "#/$defs/ldTermDefinition"
186
-
187
- ldTermDefinition:
188
- anyOf:
189
- - type: string
190
- format: uri
191
- - type: object
192
- patternProperties:
193
- "^.+$":
194
- anyOf:
195
- - type: string
196
- format: uri
197
- - const: "@id"
198
-
199
- description: The schema of a type. It is used to generate a class.
200
- type: object
201
- properties:
202
- name:
203
- description: The type name. It is used as the name of the generated class.
204
- type: string
205
- uri:
206
- description: The qualified URI of the type.
207
- type: string
208
- format: uri
209
- compactName:
210
- description: >-
211
- The type name used in the compacted JSON-LD document. It is used as the
212
- value of the `type` field.
213
- type: string
214
- extends:
215
- description: The qualified URIs of the base type of the type (if any).
216
- type: string
217
- format: uri
218
- entity:
219
- description: >-
220
- Marks the type an entity type rather than a value type. Turning on this
221
- flag will make property accessors for the type asynchronous, so that they
222
- can load the values of the properties from the remote server.
223
-
224
- The extended subtypes must have the consistent value of this flag.
225
- type: boolean
226
- description:
227
- description: >-
228
- The description of the type. It is used as the doc comment of
229
- the generated class.
230
- type: string
231
- properties:
232
- description: The possible properties of the type.
233
- type: array
234
- items:
235
- $ref: "#/$defs/property"
236
- uniqueItems: true
237
- defaultContext:
238
- description: >-
239
- The default JSON-LD context of the type. It is used as the default
240
- context of the generated toJsonLd() method.
241
- $ref: "#/$defs/ldContext"
242
- required:
243
- - name
244
- - uri
245
- - entity
246
- - description
247
- - properties
@@ -1,100 +0,0 @@
1
-
2
- const { Temporal } = require("@js-temporal/polyfill");
3
- const { URLPattern } = require("urlpattern-polyfill");
4
-
5
- const require_chunk = require('../chunk-DqRYRqnO.cjs');
6
- const __logtape_logtape = require_chunk.__toESM(require("@logtape/logtape"));
7
-
8
- //#region src/x/cfworkers.ts
9
- /**
10
- * Implementation of the {@link KvStore} interface for Cloudflare Workers KV
11
- * binding. This class provides a wrapper around Cloudflare's KV namespace to
12
- * store and retrieve JSON-serializable values using structured keys.
13
- *
14
- * Note that this implementation does not support the {@link KvStore.cas}
15
- * operation, as Cloudflare Workers KV does not support atomic compare-and-swap
16
- * operations. If you need this functionality, consider using a different
17
- * key–value store that supports atomic operations.
18
- *
19
- * @deprecated This class has been moved to `@fedify/cfworkers` package.
20
- * Import `WorkersKvStore` from `@fedify/cfworkers` instead.
21
- * This class will be removed in Fedify v2.0.
22
- * @since 1.6.0
23
- */
24
- var WorkersKvStore = class {
25
- #namespace;
26
- constructor(namespace) {
27
- const logger = (0, __logtape_logtape.getLogger)(["fedify", "cfworkers"]);
28
- logger.warn("The `@fedify/fedify/x/cfworkers` module is deprecated; use `WorkersKvStore` from `@fedify/cfworkers` package instead.");
29
- this.#namespace = namespace;
30
- }
31
- #encodeKey(key) {
32
- return JSON.stringify(key);
33
- }
34
- async get(key) {
35
- const encodedKey = this.#encodeKey(key);
36
- const { value, metadata } = await this.#namespace.getWithMetadata(encodedKey, "json");
37
- return metadata == null || metadata.expires < Date.now() ? void 0 : value;
38
- }
39
- async set(key, value, options) {
40
- const encodedKey = this.#encodeKey(key);
41
- const metadata = options?.ttl == null ? {} : { expires: Date.now() + options.ttl.total("milliseconds") };
42
- await this.#namespace.put(encodedKey, JSON.stringify(value), options?.ttl == null ? { metadata } : {
43
- expirationTtl: Math.max(options.ttl.total("seconds"), 60),
44
- metadata
45
- });
46
- }
47
- delete(key) {
48
- return this.#namespace.delete(this.#encodeKey(key));
49
- }
50
- };
51
- /**
52
- * Implementation of the {@link MessageQueue} interface for Cloudflare
53
- * Workers Queues binding. This class provides a wrapper around Cloudflare's
54
- * Queues to send messages to a queue.
55
- *
56
- * Note that this implementation does not support the `listen()` method,
57
- * as Cloudflare Workers Queues do not support message consumption in the same
58
- * way as other message queue systems. Instead, you should use
59
- * the {@link Federation.processQueuedTask} method to process messages
60
- * passed to the queue.
61
- *
62
- * @deprecated This class has been moved to `@fedify/cfworkers` package.
63
- * Import `WorkersMessageQueue` from `@fedify/cfworkers` instead.
64
- * This class will be removed in Fedify v2.0.
65
- * @since 1.6.0
66
- */
67
- var WorkersMessageQueue = class {
68
- #queue;
69
- /**
70
- * Cloudflare Queues provide automatic retry with exponential backoff
71
- * and Dead Letter Queues.
72
- * @since 1.7.0
73
- */
74
- nativeRetrial = true;
75
- constructor(queue) {
76
- const logger = (0, __logtape_logtape.getLogger)(["fedify", "cfworkers"]);
77
- logger.warn("The `@fedify/fedify/x/cfworkers` module is deprecated; use `WorkersMessageQueue` from `@fedify/cfworkers` package instead.");
78
- this.#queue = queue;
79
- }
80
- enqueue(message, options) {
81
- return this.#queue.send(message, {
82
- contentType: "json",
83
- delaySeconds: options?.delay?.total("seconds") ?? 0
84
- });
85
- }
86
- enqueueMany(messages, options) {
87
- const requests = messages.map((msg) => ({
88
- body: msg,
89
- contentType: "json"
90
- }));
91
- return this.#queue.sendBatch(requests, { delaySeconds: options?.delay?.total("seconds") ?? 0 });
92
- }
93
- listen(_handler, _options) {
94
- throw new TypeError("WorkersMessageQueue does not support listen(). Use Federation.processQueuedTask() method instead.");
95
- }
96
- };
97
-
98
- //#endregion
99
- exports.WorkersKvStore = WorkersKvStore;
100
- exports.WorkersMessageQueue = WorkersMessageQueue;
@@ -1,59 +0,0 @@
1
- import { KvKey, KvStore, KvStoreSetOptions } from "../kv-63Cil1MD.cjs";
2
- import { MessageQueue, MessageQueueEnqueueOptions, MessageQueueListenOptions } from "../mq-B7R1Q-M5.cjs";
3
- import { KVNamespace, Queue } from "@cloudflare/workers-types/experimental";
4
-
5
- //#region src/x/cfworkers.d.ts
6
-
7
- /**
8
- * Implementation of the {@link KvStore} interface for Cloudflare Workers KV
9
- * binding. This class provides a wrapper around Cloudflare's KV namespace to
10
- * store and retrieve JSON-serializable values using structured keys.
11
- *
12
- * Note that this implementation does not support the {@link KvStore.cas}
13
- * operation, as Cloudflare Workers KV does not support atomic compare-and-swap
14
- * operations. If you need this functionality, consider using a different
15
- * key–value store that supports atomic operations.
16
- *
17
- * @deprecated This class has been moved to `@fedify/cfworkers` package.
18
- * Import `WorkersKvStore` from `@fedify/cfworkers` instead.
19
- * This class will be removed in Fedify v2.0.
20
- * @since 1.6.0
21
- */
22
- declare class WorkersKvStore implements KvStore {
23
- #private;
24
- constructor(namespace: KVNamespace<string>);
25
- get<T = unknown>(key: KvKey): Promise<T | undefined>;
26
- set(key: KvKey, value: unknown, options?: KvStoreSetOptions): Promise<void>;
27
- delete(key: KvKey): Promise<void>;
28
- }
29
- /**
30
- * Implementation of the {@link MessageQueue} interface for Cloudflare
31
- * Workers Queues binding. This class provides a wrapper around Cloudflare's
32
- * Queues to send messages to a queue.
33
- *
34
- * Note that this implementation does not support the `listen()` method,
35
- * as Cloudflare Workers Queues do not support message consumption in the same
36
- * way as other message queue systems. Instead, you should use
37
- * the {@link Federation.processQueuedTask} method to process messages
38
- * passed to the queue.
39
- *
40
- * @deprecated This class has been moved to `@fedify/cfworkers` package.
41
- * Import `WorkersMessageQueue` from `@fedify/cfworkers` instead.
42
- * This class will be removed in Fedify v2.0.
43
- * @since 1.6.0
44
- */
45
- declare class WorkersMessageQueue implements MessageQueue {
46
- #private;
47
- /**
48
- * Cloudflare Queues provide automatic retry with exponential backoff
49
- * and Dead Letter Queues.
50
- * @since 1.7.0
51
- */
52
- readonly nativeRetrial = true;
53
- constructor(queue: Queue);
54
- enqueue(message: any, options?: MessageQueueEnqueueOptions): Promise<void>;
55
- enqueueMany(messages: any[], options?: MessageQueueEnqueueOptions): Promise<void>;
56
- listen(_handler: (message: any) => Promise<void> | void, _options?: MessageQueueListenOptions): Promise<void>;
57
- }
58
- //#endregion
59
- export { WorkersKvStore, WorkersMessageQueue };
@@ -1,61 +0,0 @@
1
- import { Temporal } from "@js-temporal/polyfill";
2
- import { URLPattern } from "urlpattern-polyfill";
3
- import { KvKey, KvStore, KvStoreSetOptions } from "../kv-C7sopW2E.js";
4
- import { MessageQueue, MessageQueueEnqueueOptions, MessageQueueListenOptions } from "../mq-CRGm1e_F.js";
5
- import { KVNamespace, Queue } from "@cloudflare/workers-types/experimental";
6
-
7
- //#region src/x/cfworkers.d.ts
8
-
9
- /**
10
- * Implementation of the {@link KvStore} interface for Cloudflare Workers KV
11
- * binding. This class provides a wrapper around Cloudflare's KV namespace to
12
- * store and retrieve JSON-serializable values using structured keys.
13
- *
14
- * Note that this implementation does not support the {@link KvStore.cas}
15
- * operation, as Cloudflare Workers KV does not support atomic compare-and-swap
16
- * operations. If you need this functionality, consider using a different
17
- * key–value store that supports atomic operations.
18
- *
19
- * @deprecated This class has been moved to `@fedify/cfworkers` package.
20
- * Import `WorkersKvStore` from `@fedify/cfworkers` instead.
21
- * This class will be removed in Fedify v2.0.
22
- * @since 1.6.0
23
- */
24
- declare class WorkersKvStore implements KvStore {
25
- #private;
26
- constructor(namespace: KVNamespace<string>);
27
- get<T = unknown>(key: KvKey): Promise<T | undefined>;
28
- set(key: KvKey, value: unknown, options?: KvStoreSetOptions): Promise<void>;
29
- delete(key: KvKey): Promise<void>;
30
- }
31
- /**
32
- * Implementation of the {@link MessageQueue} interface for Cloudflare
33
- * Workers Queues binding. This class provides a wrapper around Cloudflare's
34
- * Queues to send messages to a queue.
35
- *
36
- * Note that this implementation does not support the `listen()` method,
37
- * as Cloudflare Workers Queues do not support message consumption in the same
38
- * way as other message queue systems. Instead, you should use
39
- * the {@link Federation.processQueuedTask} method to process messages
40
- * passed to the queue.
41
- *
42
- * @deprecated This class has been moved to `@fedify/cfworkers` package.
43
- * Import `WorkersMessageQueue` from `@fedify/cfworkers` instead.
44
- * This class will be removed in Fedify v2.0.
45
- * @since 1.6.0
46
- */
47
- declare class WorkersMessageQueue implements MessageQueue {
48
- #private;
49
- /**
50
- * Cloudflare Queues provide automatic retry with exponential backoff
51
- * and Dead Letter Queues.
52
- * @since 1.7.0
53
- */
54
- readonly nativeRetrial = true;
55
- constructor(queue: Queue);
56
- enqueue(message: any, options?: MessageQueueEnqueueOptions): Promise<void>;
57
- enqueueMany(messages: any[], options?: MessageQueueEnqueueOptions): Promise<void>;
58
- listen(_handler: (message: any) => Promise<void> | void, _options?: MessageQueueListenOptions): Promise<void>;
59
- }
60
- //#endregion
61
- export { WorkersKvStore, WorkersMessageQueue };