@fedify/fedify 2.0.0-dev.383 → 2.0.0-dev.384

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 (60) hide show
  1. package/dist/{builder-DkG2p8kW.js → builder-DDgiY0pz.js} +3 -3
  2. package/dist/compat/mod.d.cts +2 -2
  3. package/dist/compat/mod.d.ts +2 -2
  4. package/dist/compat/transformers.test.js +11 -11
  5. package/dist/{context-Bo8rHkgD.d.cts → context-BdNW_8a3.d.cts} +4 -1
  6. package/dist/{context-CvI-m4eX.d.ts → context-C-GVKcJR.d.ts} +4 -1
  7. package/dist/{deno-BMByRQG1.js → deno-BgGEslC_.js} +1 -1
  8. package/dist/{docloader-Cv6dJCEn.js → docloader-D48nrN5v.js} +2 -2
  9. package/dist/federation/builder.test.js +3 -3
  10. package/dist/federation/handler.test.js +11 -11
  11. package/dist/federation/idempotency.test.js +11 -11
  12. package/dist/federation/inbox.test.js +2 -2
  13. package/dist/federation/middleware.test.js +11 -11
  14. package/dist/federation/mod.cjs +4 -4
  15. package/dist/federation/mod.d.cts +2 -2
  16. package/dist/federation/mod.d.ts +2 -2
  17. package/dist/federation/mod.js +4 -4
  18. package/dist/federation/send.test.js +90 -5
  19. package/dist/federation/webfinger.test.js +11 -11
  20. package/dist/{http-CS8X3xL0.js → http-BGk2UBNk.js} +1 -1
  21. package/dist/{http-B0YbKKTj.cjs → http-C163RLCe.cjs} +1 -1
  22. package/dist/{http-PEXEcZtQ.js → http-D60XnE7g.js} +2 -2
  23. package/dist/{inbox-CFwEGHQb.js → inbox-LOH6XAnI.js} +1 -1
  24. package/dist/{key-BUMDcUn6.js → key-D7z5b4yi.js} +1 -1
  25. package/dist/{kv-cache-ZWa24T45.cjs → kv-cache-CHHbu8TE.cjs} +1 -1
  26. package/dist/{kv-cache-BM0l1pOW.js → kv-cache-DnTFOBPC.js} +1 -1
  27. package/dist/{ld-Bx3Mw3bV.js → ld-WU2Rt1vK.js} +2 -2
  28. package/dist/{middleware-YLWEKWvB.js → middleware-BzEY11HK.js} +4 -4
  29. package/dist/middleware-BzLPRRUR.cjs +12 -0
  30. package/dist/{middleware-CBHSPr-c.cjs → middleware-Cn00-cp8.cjs} +37 -6
  31. package/dist/{middleware-D95ZWXIW.js → middleware-CpfYDdYL.js} +37 -6
  32. package/dist/{middleware-va7JD5xu.js → middleware-DF9NnQEE.js} +11 -11
  33. package/dist/{middleware-CJtnP-pV.js → middleware-Rswg9VkF.js} +10 -10
  34. package/dist/{mod-jzy1r56s.d.cts → mod-5PNty1K9.d.cts} +1 -1
  35. package/dist/{mod-DyzMRG8B.d.cts → mod-BcpEGTWV.d.cts} +1 -1
  36. package/dist/{mod-hcb60sG1.d.ts → mod-CtO31FCx.d.ts} +1 -1
  37. package/dist/{mod-PmuFg9QD.d.ts → mod-Da9fNDyC.d.ts} +1 -1
  38. package/dist/mod.cjs +4 -4
  39. package/dist/mod.d.cts +3 -3
  40. package/dist/mod.d.ts +3 -3
  41. package/dist/mod.js +4 -4
  42. package/dist/nodeinfo/handler.test.js +11 -11
  43. package/dist/{owner-Dr5tjio2.js → owner-CJrP1tug.js} +1 -1
  44. package/dist/{proof-BJ2-EQwg.cjs → proof-BpvNb9n3.cjs} +1 -1
  45. package/dist/{proof-CWYlCvAq.js → proof-DDHBHRwX.js} +2 -2
  46. package/dist/{proof-BkD7Ea3t.js → proof-DtHA5KS9.js} +1 -1
  47. package/dist/{send-BkIS8uHG.js → send-Dr8KyLoR.js} +35 -4
  48. package/dist/sig/http.test.js +3 -3
  49. package/dist/sig/key.test.js +2 -2
  50. package/dist/sig/ld.test.js +3 -3
  51. package/dist/sig/mod.cjs +2 -2
  52. package/dist/sig/mod.js +2 -2
  53. package/dist/sig/owner.test.js +3 -3
  54. package/dist/sig/proof.test.js +3 -3
  55. package/dist/testing/mod.d.ts +4 -1
  56. package/dist/utils/docloader.test.js +4 -4
  57. package/dist/utils/mod.cjs +2 -2
  58. package/dist/utils/mod.js +2 -2
  59. package/package.json +6 -6
  60. package/dist/middleware-UV55R7TD.cjs +0 -12
@@ -3,9 +3,9 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { deno_default } from "./deno-BMByRQG1.js";
6
+ import { deno_default } from "./deno-BgGEslC_.js";
7
7
  import { Router, RouterError } from "./router-D9eI0s4b.js";
8
- import { InboxListenerSet } from "./inbox-CFwEGHQb.js";
8
+ import { InboxListenerSet } from "./inbox-LOH6XAnI.js";
9
9
  import { getLogger } from "@logtape/logtape";
10
10
  import { getTypeId } from "@fedify/vocab";
11
11
  import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
@@ -45,7 +45,7 @@ var FederationBuilderImpl = class {
45
45
  this.collectionTypeIds = {};
46
46
  }
47
47
  async build(options) {
48
- const { FederationImpl } = await import("./middleware-va7JD5xu.js");
48
+ const { FederationImpl } = await import("./middleware-DF9NnQEE.js");
49
49
  const f = new FederationImpl(options);
50
50
  const trailingSlashInsensitiveValue = f.router.trailingSlashInsensitive;
51
51
  f.router = this.router.clone();
@@ -1,7 +1,7 @@
1
1
  import "../client-CwkOPN13.cjs";
2
2
  import "../http-CCEu-x1_.cjs";
3
3
  import "../owner-9yZ5Ibsb.cjs";
4
- import { ActivityTransformer } from "../context-Bo8rHkgD.cjs";
4
+ import { ActivityTransformer } from "../context-BdNW_8a3.cjs";
5
5
  import "../kv-g9jFc34-.cjs";
6
- import { actorDehydrator, autoIdAssigner, getDefaultActivityTransformers } from "../mod-jzy1r56s.cjs";
6
+ import { actorDehydrator, autoIdAssigner, getDefaultActivityTransformers } from "../mod-5PNty1K9.cjs";
7
7
  export { ActivityTransformer, actorDehydrator, autoIdAssigner, getDefaultActivityTransformers };
@@ -3,7 +3,7 @@ import { URLPattern } from "urlpattern-polyfill";
3
3
  import "../client-a7NwzhA2.js";
4
4
  import "../http-CODSJcKx.js";
5
5
  import "../owner-DQYAbVmX.js";
6
- import { ActivityTransformer } from "../context-CvI-m4eX.js";
6
+ import { ActivityTransformer } from "../context-C-GVKcJR.js";
7
7
  import "../kv-jg_8SMc1.js";
8
- import { actorDehydrator, autoIdAssigner, getDefaultActivityTransformers } from "../mod-PmuFg9QD.js";
8
+ import { actorDehydrator, autoIdAssigner, getDefaultActivityTransformers } from "../mod-Da9fNDyC.js";
9
9
  export { ActivityTransformer, actorDehydrator, autoIdAssigner, getDefaultActivityTransformers };
@@ -8,25 +8,25 @@ import { assertEquals } from "../assert_equals-DSbWqCm3.js";
8
8
  import { assert } from "../assert-MZs1qjMx.js";
9
9
  import { assertInstanceOf } from "../assert_instance_of-DHz7EHNU.js";
10
10
  import { MemoryKvStore } from "../kv-QzKcOQgP.js";
11
- import "../deno-BMByRQG1.js";
12
- import { FederationImpl, actorDehydrator, autoIdAssigner } from "../middleware-CJtnP-pV.js";
11
+ import "../deno-BgGEslC_.js";
12
+ import { FederationImpl, actorDehydrator, autoIdAssigner } from "../middleware-Rswg9VkF.js";
13
13
  import "../client-Dg7OfUDA.js";
14
14
  import "../router-D9eI0s4b.js";
15
15
  import "../types-CPz01LGH.js";
16
- import "../key-BUMDcUn6.js";
17
- import "../http-PEXEcZtQ.js";
18
- import "../ld-Bx3Mw3bV.js";
19
- import "../owner-Dr5tjio2.js";
20
- import "../proof-CWYlCvAq.js";
21
- import "../docloader-Cv6dJCEn.js";
16
+ import "../key-D7z5b4yi.js";
17
+ import "../http-D60XnE7g.js";
18
+ import "../ld-WU2Rt1vK.js";
19
+ import "../owner-CJrP1tug.js";
20
+ import "../proof-DDHBHRwX.js";
21
+ import "../docloader-D48nrN5v.js";
22
22
  import "../kv-cache-B__dHl7g.js";
23
- import "../inbox-CFwEGHQb.js";
24
- import "../builder-DkG2p8kW.js";
23
+ import "../inbox-LOH6XAnI.js";
24
+ import "../builder-DDgiY0pz.js";
25
25
  import "../collection-CcnIw1qY.js";
26
26
  import "../keycache-DRxpZ5r9.js";
27
27
  import "../negotiation-5NPJL6zp.js";
28
28
  import "../retry-D4GJ670a.js";
29
- import "../send-BkIS8uHG.js";
29
+ import "../send-Dr8KyLoR.js";
30
30
  import { Follow, Person } from "@fedify/vocab";
31
31
 
32
32
  //#region src/compat/transformers.test.ts
@@ -77,7 +77,10 @@ declare class SendActivityError extends Error {
77
77
  */
78
78
  readonly statusCode: number;
79
79
  /**
80
- * The response body from the inbox, if any.
80
+ * The response body from the inbox, if any. Note that this may be
81
+ * truncated to a maximum of 1 KiB to prevent excessive memory consumption
82
+ * when remote servers return large error pages (e.g., Cloudflare error pages).
83
+ * If truncated, the string will end with `"… (truncated)"`.
81
84
  */
82
85
  readonly responseBody: string;
83
86
  /**
@@ -79,7 +79,10 @@ declare class SendActivityError extends Error {
79
79
  */
80
80
  readonly statusCode: number;
81
81
  /**
82
- * The response body from the inbox, if any.
82
+ * The response body from the inbox, if any. Note that this may be
83
+ * truncated to a maximum of 1 KiB to prevent excessive memory consumption
84
+ * when remote servers return large error pages (e.g., Cloudflare error pages).
85
+ * If truncated, the string will end with `"… (truncated)"`.
83
86
  */
84
87
  readonly responseBody: string;
85
88
  /**
@@ -5,7 +5,7 @@
5
5
 
6
6
  //#region deno.json
7
7
  var name = "@fedify/fedify";
8
- var version = "2.0.0-dev.383+b69835d0";
8
+ var version = "2.0.0-dev.384+dae4bd3b";
9
9
  var license = "MIT";
10
10
  var exports = {
11
11
  ".": "./src/mod.ts",
@@ -3,8 +3,8 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { validateCryptoKey } from "./key-BUMDcUn6.js";
7
- import { doubleKnock } from "./http-PEXEcZtQ.js";
6
+ import { validateCryptoKey } from "./key-D7z5b4yi.js";
7
+ import { doubleKnock } from "./http-D60XnE7g.js";
8
8
  import { getLogger } from "@logtape/logtape";
9
9
  import { curry } from "es-toolkit";
10
10
  import { UrlError, createActivityPubRequest, getRemoteDocument, logRequest, validatePublicUrl } from "@fedify/vocab-runtime";
@@ -8,10 +8,10 @@ import { assertEquals } from "../assert_equals-DSbWqCm3.js";
8
8
  import "../assert-MZs1qjMx.js";
9
9
  import "../assert_instance_of-DHz7EHNU.js";
10
10
  import { MemoryKvStore } from "../kv-QzKcOQgP.js";
11
- import "../deno-BMByRQG1.js";
11
+ import "../deno-BgGEslC_.js";
12
12
  import "../router-D9eI0s4b.js";
13
- import "../inbox-CFwEGHQb.js";
14
- import { createFederationBuilder } from "../builder-DkG2p8kW.js";
13
+ import "../inbox-LOH6XAnI.js";
14
+ import { createFederationBuilder } from "../builder-DDgiY0pz.js";
15
15
  import { assertExists } from "../std__assert-DWivtrGR.js";
16
16
  import "../assert_rejects-Ce45JcFg.js";
17
17
  import { assertThrows } from "../assert_throws-BNXdRGWP.js";
@@ -8,25 +8,25 @@ import { assertEquals } from "../assert_equals-DSbWqCm3.js";
8
8
  import { assert } from "../assert-MZs1qjMx.js";
9
9
  import "../assert_instance_of-DHz7EHNU.js";
10
10
  import { MemoryKvStore } from "../kv-QzKcOQgP.js";
11
- import "../deno-BMByRQG1.js";
12
- import { createFederation, handleActor, handleCollection, handleCustomCollection, handleInbox, handleObject, respondWithObject, respondWithObjectIfAcceptable } from "../middleware-CJtnP-pV.js";
11
+ import "../deno-BgGEslC_.js";
12
+ import { createFederation, handleActor, handleCollection, handleCustomCollection, handleInbox, handleObject, respondWithObject, respondWithObjectIfAcceptable } from "../middleware-Rswg9VkF.js";
13
13
  import "../client-Dg7OfUDA.js";
14
14
  import "../router-D9eI0s4b.js";
15
15
  import "../types-CPz01LGH.js";
16
- import "../key-BUMDcUn6.js";
17
- import { signRequest } from "../http-PEXEcZtQ.js";
18
- import "../ld-Bx3Mw3bV.js";
19
- import "../owner-Dr5tjio2.js";
20
- import "../proof-CWYlCvAq.js";
21
- import "../docloader-Cv6dJCEn.js";
16
+ import "../key-D7z5b4yi.js";
17
+ import { signRequest } from "../http-D60XnE7g.js";
18
+ import "../ld-WU2Rt1vK.js";
19
+ import "../owner-CJrP1tug.js";
20
+ import "../proof-DDHBHRwX.js";
21
+ import "../docloader-D48nrN5v.js";
22
22
  import "../kv-cache-B__dHl7g.js";
23
- import { InboxListenerSet } from "../inbox-CFwEGHQb.js";
24
- import "../builder-DkG2p8kW.js";
23
+ import { InboxListenerSet } from "../inbox-LOH6XAnI.js";
24
+ import "../builder-DDgiY0pz.js";
25
25
  import "../collection-CcnIw1qY.js";
26
26
  import "../keycache-DRxpZ5r9.js";
27
27
  import "../negotiation-5NPJL6zp.js";
28
28
  import "../retry-D4GJ670a.js";
29
- import "../send-BkIS8uHG.js";
29
+ import "../send-Dr8KyLoR.js";
30
30
  import "../std__assert-DWivtrGR.js";
31
31
  import "../assert_rejects-Ce45JcFg.js";
32
32
  import "../assert_throws-BNXdRGWP.js";
@@ -8,25 +8,25 @@ import { assertEquals } from "../assert_equals-DSbWqCm3.js";
8
8
  import "../assert-MZs1qjMx.js";
9
9
  import "../assert_instance_of-DHz7EHNU.js";
10
10
  import { MemoryKvStore } from "../kv-QzKcOQgP.js";
11
- import "../deno-BMByRQG1.js";
12
- import { createFederation } from "../middleware-CJtnP-pV.js";
11
+ import "../deno-BgGEslC_.js";
12
+ import { createFederation } from "../middleware-Rswg9VkF.js";
13
13
  import "../client-Dg7OfUDA.js";
14
14
  import "../router-D9eI0s4b.js";
15
15
  import "../types-CPz01LGH.js";
16
- import "../key-BUMDcUn6.js";
17
- import "../http-PEXEcZtQ.js";
18
- import "../ld-Bx3Mw3bV.js";
19
- import "../owner-Dr5tjio2.js";
20
- import { signObject } from "../proof-CWYlCvAq.js";
21
- import "../docloader-Cv6dJCEn.js";
16
+ import "../key-D7z5b4yi.js";
17
+ import "../http-D60XnE7g.js";
18
+ import "../ld-WU2Rt1vK.js";
19
+ import "../owner-CJrP1tug.js";
20
+ import { signObject } from "../proof-DDHBHRwX.js";
21
+ import "../docloader-D48nrN5v.js";
22
22
  import "../kv-cache-B__dHl7g.js";
23
- import "../inbox-CFwEGHQb.js";
24
- import "../builder-DkG2p8kW.js";
23
+ import "../inbox-LOH6XAnI.js";
24
+ import "../builder-DDgiY0pz.js";
25
25
  import "../collection-CcnIw1qY.js";
26
26
  import "../keycache-DRxpZ5r9.js";
27
27
  import "../negotiation-5NPJL6zp.js";
28
28
  import "../retry-D4GJ670a.js";
29
- import "../send-BkIS8uHG.js";
29
+ import "../send-Dr8KyLoR.js";
30
30
  import "../std__assert-DWivtrGR.js";
31
31
  import "../assert_rejects-Ce45JcFg.js";
32
32
  import "../assert_throws-BNXdRGWP.js";
@@ -5,8 +5,8 @@
5
5
 
6
6
  import { test } from "../dist-B5f6a8Tt.js";
7
7
  import { assertEquals } from "../assert_equals-DSbWqCm3.js";
8
- import "../deno-BMByRQG1.js";
9
- import { InboxListenerSet } from "../inbox-CFwEGHQb.js";
8
+ import "../deno-BgGEslC_.js";
9
+ import { InboxListenerSet } from "../inbox-LOH6XAnI.js";
10
10
  import { assertThrows } from "../assert_throws-BNXdRGWP.js";
11
11
  import { Activity, Create, Invite, Offer, Update } from "@fedify/vocab";
12
12
 
@@ -8,25 +8,25 @@ import { assertEquals } from "../assert_equals-DSbWqCm3.js";
8
8
  import { assert } from "../assert-MZs1qjMx.js";
9
9
  import { assertInstanceOf } from "../assert_instance_of-DHz7EHNU.js";
10
10
  import { MemoryKvStore } from "../kv-QzKcOQgP.js";
11
- import "../deno-BMByRQG1.js";
12
- import { ContextImpl, FederationImpl, InboxContextImpl, KvSpecDeterminer, createFederation } from "../middleware-CJtnP-pV.js";
11
+ import "../deno-BgGEslC_.js";
12
+ import { ContextImpl, FederationImpl, InboxContextImpl, KvSpecDeterminer, createFederation } from "../middleware-Rswg9VkF.js";
13
13
  import "../client-Dg7OfUDA.js";
14
14
  import { RouterError } from "../router-D9eI0s4b.js";
15
15
  import "../types-CPz01LGH.js";
16
- import "../key-BUMDcUn6.js";
17
- import { signRequest, verifyRequest } from "../http-PEXEcZtQ.js";
18
- import { detachSignature, signJsonLd, verifyJsonLd } from "../ld-Bx3Mw3bV.js";
19
- import { doesActorOwnKey } from "../owner-Dr5tjio2.js";
20
- import { signObject, verifyObject } from "../proof-CWYlCvAq.js";
21
- import { getAuthenticatedDocumentLoader } from "../docloader-Cv6dJCEn.js";
16
+ import "../key-D7z5b4yi.js";
17
+ import { signRequest, verifyRequest } from "../http-D60XnE7g.js";
18
+ import { detachSignature, signJsonLd, verifyJsonLd } from "../ld-WU2Rt1vK.js";
19
+ import { doesActorOwnKey } from "../owner-CJrP1tug.js";
20
+ import { signObject, verifyObject } from "../proof-DDHBHRwX.js";
21
+ import { getAuthenticatedDocumentLoader } from "../docloader-D48nrN5v.js";
22
22
  import "../kv-cache-B__dHl7g.js";
23
- import "../inbox-CFwEGHQb.js";
24
- import "../builder-DkG2p8kW.js";
23
+ import "../inbox-LOH6XAnI.js";
24
+ import "../builder-DDgiY0pz.js";
25
25
  import "../collection-CcnIw1qY.js";
26
26
  import "../keycache-DRxpZ5r9.js";
27
27
  import "../negotiation-5NPJL6zp.js";
28
28
  import "../retry-D4GJ670a.js";
29
- import "../send-BkIS8uHG.js";
29
+ import "../send-Dr8KyLoR.js";
30
30
  import { assertStrictEquals } from "../std__assert-DWivtrGR.js";
31
31
  import { assertFalse, assertRejects } from "../assert_rejects-Ce45JcFg.js";
32
32
  import { assertThrows } from "../assert_throws-BNXdRGWP.js";
@@ -3,12 +3,12 @@
3
3
  const { URLPattern } = require("urlpattern-polyfill");
4
4
 
5
5
  require('../transformers-3g8GZwkZ.cjs');
6
- require('../http-B0YbKKTj.cjs');
7
- const require_middleware = require('../middleware-CBHSPr-c.cjs');
8
- require('../proof-BJ2-EQwg.cjs');
6
+ require('../http-C163RLCe.cjs');
7
+ const require_middleware = require('../middleware-Cn00-cp8.cjs');
8
+ require('../proof-BpvNb9n3.cjs');
9
9
  const require_federation = require('../federation-Bp3HI26G.cjs');
10
10
  require('../types-Cd_hszr_.cjs');
11
- require('../kv-cache-ZWa24T45.cjs');
11
+ require('../kv-cache-CHHbu8TE.cjs');
12
12
 
13
13
  exports.InProcessMessageQueue = require_federation.InProcessMessageQueue;
14
14
  exports.MemoryKvStore = require_federation.MemoryKvStore;
@@ -1,7 +1,7 @@
1
1
  import "../client-CwkOPN13.cjs";
2
2
  import "../http-CCEu-x1_.cjs";
3
3
  import "../owner-9yZ5Ibsb.cjs";
4
- import { ActorAliasMapper, ActorCallbackSetters, ActorDispatcher, ActorHandleMapper, ActorKeyPair, ActorKeyPairsDispatcher, AuthorizePredicate, CollectionCallbackSetters, CollectionCounter, CollectionCursor, CollectionDispatcher, ConstructorWithTypeId, Context, CreateExponentialBackoffPolicyOptions, CustomCollectionCallbackSetters, CustomCollectionCounter, CustomCollectionCursor, CustomCollectionDispatcher, Federatable, Federation, FederationBuilder, FederationFetchOptions, FederationKvPrefixes, FederationOptions, FederationOrigin, FederationQueueOptions, FederationStartQueueOptions, ForwardActivityOptions, GetSignedKeyOptions, IdempotencyKeyCallback, IdempotencyStrategy, InProcessMessageQueue, InProcessMessageQueueOptions, InboxContext, InboxErrorHandler, InboxListener, InboxListenerSetters, Message, MessageQueue, MessageQueueEnqueueOptions, MessageQueueListenOptions, NodeInfoDispatcher, ObjectAuthorizePredicate, ObjectCallbackSetters, ObjectDispatcher, OutboxErrorHandler, OutboxPermanentFailureHandler, PageItems, ParallelMessageQueue, ParseUriResult, RequestContext, RespondWithObjectOptions, RetryContext, RetryPolicy, Rfc6570Expression, RouteActivityOptions, Router, RouterError, RouterOptions, RouterRouteResult, SendActivityError, SendActivityOptions, SendActivityOptionsForCollection, SenderKeyPair, SharedInboxKeyDispatcher, WebFingerLinksDispatcher, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, respondWithObject, respondWithObjectIfAcceptable } from "../context-Bo8rHkgD.cjs";
4
+ import { ActorAliasMapper, ActorCallbackSetters, ActorDispatcher, ActorHandleMapper, ActorKeyPair, ActorKeyPairsDispatcher, AuthorizePredicate, CollectionCallbackSetters, CollectionCounter, CollectionCursor, CollectionDispatcher, ConstructorWithTypeId, Context, CreateExponentialBackoffPolicyOptions, CustomCollectionCallbackSetters, CustomCollectionCounter, CustomCollectionCursor, CustomCollectionDispatcher, Federatable, Federation, FederationBuilder, FederationFetchOptions, FederationKvPrefixes, FederationOptions, FederationOrigin, FederationQueueOptions, FederationStartQueueOptions, ForwardActivityOptions, GetSignedKeyOptions, IdempotencyKeyCallback, IdempotencyStrategy, InProcessMessageQueue, InProcessMessageQueueOptions, InboxContext, InboxErrorHandler, InboxListener, InboxListenerSetters, Message, MessageQueue, MessageQueueEnqueueOptions, MessageQueueListenOptions, NodeInfoDispatcher, ObjectAuthorizePredicate, ObjectCallbackSetters, ObjectDispatcher, OutboxErrorHandler, OutboxPermanentFailureHandler, PageItems, ParallelMessageQueue, ParseUriResult, RequestContext, RespondWithObjectOptions, RetryContext, RetryPolicy, Rfc6570Expression, RouteActivityOptions, Router, RouterError, RouterOptions, RouterRouteResult, SendActivityError, SendActivityOptions, SendActivityOptionsForCollection, SenderKeyPair, SharedInboxKeyDispatcher, WebFingerLinksDispatcher, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, respondWithObject, respondWithObjectIfAcceptable } from "../context-BdNW_8a3.cjs";
5
5
  import { KvKey, KvStore, KvStoreListEntry, KvStoreSetOptions, MemoryKvStore } from "../kv-g9jFc34-.cjs";
6
- import { WebFingerHandlerParameters, handleWebFinger } from "../mod-DyzMRG8B.cjs";
6
+ import { WebFingerHandlerParameters, handleWebFinger } from "../mod-BcpEGTWV.cjs";
7
7
  export { ActorAliasMapper, ActorCallbackSetters, ActorDispatcher, ActorHandleMapper, ActorKeyPair, ActorKeyPairsDispatcher, AuthorizePredicate, CollectionCallbackSetters, CollectionCounter, CollectionCursor, CollectionDispatcher, ConstructorWithTypeId, Context, CreateExponentialBackoffPolicyOptions, CustomCollectionCallbackSetters, CustomCollectionCounter, CustomCollectionCursor, CustomCollectionDispatcher, Federatable, Federation, FederationBuilder, FederationFetchOptions, FederationKvPrefixes, FederationOptions, FederationOrigin, FederationQueueOptions, FederationStartQueueOptions, ForwardActivityOptions, GetSignedKeyOptions, IdempotencyKeyCallback, IdempotencyStrategy, InProcessMessageQueue, InProcessMessageQueueOptions, InboxContext, InboxErrorHandler, InboxListener, InboxListenerSetters, KvKey, KvStore, KvStoreListEntry, KvStoreSetOptions, MemoryKvStore, Message, MessageQueue, MessageQueueEnqueueOptions, MessageQueueListenOptions, NodeInfoDispatcher, ObjectAuthorizePredicate, ObjectCallbackSetters, ObjectDispatcher, OutboxErrorHandler, OutboxPermanentFailureHandler, PageItems, ParallelMessageQueue, ParseUriResult, RequestContext, RespondWithObjectOptions, RetryContext, RetryPolicy, Rfc6570Expression, RouteActivityOptions, Router, RouterError, RouterOptions, RouterRouteResult, SendActivityError, SendActivityOptions, SendActivityOptionsForCollection, SenderKeyPair, SharedInboxKeyDispatcher, WebFingerHandlerParameters, WebFingerLinksDispatcher, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, handleWebFinger, respondWithObject, respondWithObjectIfAcceptable };
@@ -3,7 +3,7 @@ import { URLPattern } from "urlpattern-polyfill";
3
3
  import "../client-a7NwzhA2.js";
4
4
  import "../http-CODSJcKx.js";
5
5
  import "../owner-DQYAbVmX.js";
6
- import { ActorAliasMapper, ActorCallbackSetters, ActorDispatcher, ActorHandleMapper, ActorKeyPair, ActorKeyPairsDispatcher, AuthorizePredicate, CollectionCallbackSetters, CollectionCounter, CollectionCursor, CollectionDispatcher, ConstructorWithTypeId, Context, CreateExponentialBackoffPolicyOptions, CustomCollectionCallbackSetters, CustomCollectionCounter, CustomCollectionCursor, CustomCollectionDispatcher, Federatable, Federation, FederationBuilder, FederationFetchOptions, FederationKvPrefixes, FederationOptions, FederationOrigin, FederationQueueOptions, FederationStartQueueOptions, ForwardActivityOptions, GetSignedKeyOptions, IdempotencyKeyCallback, IdempotencyStrategy, InProcessMessageQueue, InProcessMessageQueueOptions, InboxContext, InboxErrorHandler, InboxListener, InboxListenerSetters, Message, MessageQueue, MessageQueueEnqueueOptions, MessageQueueListenOptions, NodeInfoDispatcher, ObjectAuthorizePredicate, ObjectCallbackSetters, ObjectDispatcher, OutboxErrorHandler, OutboxPermanentFailureHandler, PageItems, ParallelMessageQueue, ParseUriResult, RequestContext, RespondWithObjectOptions, RetryContext, RetryPolicy, Rfc6570Expression, RouteActivityOptions, Router, RouterError, RouterOptions, RouterRouteResult, SendActivityError, SendActivityOptions, SendActivityOptionsForCollection, SenderKeyPair, SharedInboxKeyDispatcher, WebFingerLinksDispatcher, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, respondWithObject, respondWithObjectIfAcceptable } from "../context-CvI-m4eX.js";
6
+ import { ActorAliasMapper, ActorCallbackSetters, ActorDispatcher, ActorHandleMapper, ActorKeyPair, ActorKeyPairsDispatcher, AuthorizePredicate, CollectionCallbackSetters, CollectionCounter, CollectionCursor, CollectionDispatcher, ConstructorWithTypeId, Context, CreateExponentialBackoffPolicyOptions, CustomCollectionCallbackSetters, CustomCollectionCounter, CustomCollectionCursor, CustomCollectionDispatcher, Federatable, Federation, FederationBuilder, FederationFetchOptions, FederationKvPrefixes, FederationOptions, FederationOrigin, FederationQueueOptions, FederationStartQueueOptions, ForwardActivityOptions, GetSignedKeyOptions, IdempotencyKeyCallback, IdempotencyStrategy, InProcessMessageQueue, InProcessMessageQueueOptions, InboxContext, InboxErrorHandler, InboxListener, InboxListenerSetters, Message, MessageQueue, MessageQueueEnqueueOptions, MessageQueueListenOptions, NodeInfoDispatcher, ObjectAuthorizePredicate, ObjectCallbackSetters, ObjectDispatcher, OutboxErrorHandler, OutboxPermanentFailureHandler, PageItems, ParallelMessageQueue, ParseUriResult, RequestContext, RespondWithObjectOptions, RetryContext, RetryPolicy, Rfc6570Expression, RouteActivityOptions, Router, RouterError, RouterOptions, RouterRouteResult, SendActivityError, SendActivityOptions, SendActivityOptionsForCollection, SenderKeyPair, SharedInboxKeyDispatcher, WebFingerLinksDispatcher, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, respondWithObject, respondWithObjectIfAcceptable } from "../context-C-GVKcJR.js";
7
7
  import { KvKey, KvStore, KvStoreListEntry, KvStoreSetOptions, MemoryKvStore } from "../kv-jg_8SMc1.js";
8
- import { WebFingerHandlerParameters, handleWebFinger } from "../mod-hcb60sG1.js";
8
+ import { WebFingerHandlerParameters, handleWebFinger } from "../mod-CtO31FCx.js";
9
9
  export { ActorAliasMapper, ActorCallbackSetters, ActorDispatcher, ActorHandleMapper, ActorKeyPair, ActorKeyPairsDispatcher, AuthorizePredicate, CollectionCallbackSetters, CollectionCounter, CollectionCursor, CollectionDispatcher, ConstructorWithTypeId, Context, CreateExponentialBackoffPolicyOptions, CustomCollectionCallbackSetters, CustomCollectionCounter, CustomCollectionCursor, CustomCollectionDispatcher, Federatable, Federation, FederationBuilder, FederationFetchOptions, FederationKvPrefixes, FederationOptions, FederationOrigin, FederationQueueOptions, FederationStartQueueOptions, ForwardActivityOptions, GetSignedKeyOptions, IdempotencyKeyCallback, IdempotencyStrategy, InProcessMessageQueue, InProcessMessageQueueOptions, InboxContext, InboxErrorHandler, InboxListener, InboxListenerSetters, KvKey, KvStore, KvStoreListEntry, KvStoreSetOptions, MemoryKvStore, Message, MessageQueue, MessageQueueEnqueueOptions, MessageQueueListenOptions, NodeInfoDispatcher, ObjectAuthorizePredicate, ObjectCallbackSetters, ObjectDispatcher, OutboxErrorHandler, OutboxPermanentFailureHandler, PageItems, ParallelMessageQueue, ParseUriResult, RequestContext, RespondWithObjectOptions, RetryContext, RetryPolicy, Rfc6570Expression, RouteActivityOptions, Router, RouterError, RouterOptions, RouterRouteResult, SendActivityError, SendActivityOptions, SendActivityOptionsForCollection, SenderKeyPair, SharedInboxKeyDispatcher, WebFingerHandlerParameters, WebFingerLinksDispatcher, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, handleWebFinger, respondWithObject, respondWithObjectIfAcceptable };
@@ -3,11 +3,11 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
 
5
5
  import "../transformers-C3FLHUd6.js";
6
- import "../http-CS8X3xL0.js";
7
- import { Router, RouterError, SendActivityError, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, handleWebFinger, respondWithObject, respondWithObjectIfAcceptable } from "../middleware-D95ZWXIW.js";
8
- import "../proof-BkD7Ea3t.js";
6
+ import "../http-BGk2UBNk.js";
7
+ import { Router, RouterError, SendActivityError, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, handleWebFinger, respondWithObject, respondWithObjectIfAcceptable } from "../middleware-CpfYDdYL.js";
8
+ import "../proof-DtHA5KS9.js";
9
9
  import { InProcessMessageQueue, MemoryKvStore, ParallelMessageQueue } from "../federation-DaMfqRm4.js";
10
10
  import "../types-C93Ob9cU.js";
11
- import "../kv-cache-BM0l1pOW.js";
11
+ import "../kv-cache-DnTFOBPC.js";
12
12
 
13
13
  export { InProcessMessageQueue, MemoryKvStore, ParallelMessageQueue, Router, RouterError, SendActivityError, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, handleWebFinger, respondWithObject, respondWithObjectIfAcceptable };
@@ -7,11 +7,11 @@ import { createTestTracerProvider, mockDocumentLoader, test } from "../dist-B5f6
7
7
  import { assertEquals } from "../assert_equals-DSbWqCm3.js";
8
8
  import { assert } from "../assert-MZs1qjMx.js";
9
9
  import { assertInstanceOf } from "../assert_instance_of-DHz7EHNU.js";
10
- import "../deno-BMByRQG1.js";
11
- import "../key-BUMDcUn6.js";
12
- import { verifyRequest } from "../http-PEXEcZtQ.js";
13
- import { doesActorOwnKey } from "../owner-Dr5tjio2.js";
14
- import { SendActivityError, extractInboxes, sendActivity } from "../send-BkIS8uHG.js";
10
+ import "../deno-BgGEslC_.js";
11
+ import "../key-D7z5b4yi.js";
12
+ import { verifyRequest } from "../http-D60XnE7g.js";
13
+ import { doesActorOwnKey } from "../owner-CJrP1tug.js";
14
+ import { SendActivityError, extractInboxes, sendActivity } from "../send-Dr8KyLoR.js";
15
15
  import "../std__assert-DWivtrGR.js";
16
16
  import { assertFalse, assertRejects } from "../assert_rejects-Ce45JcFg.js";
17
17
  import "../assert_throws-BNXdRGWP.js";
@@ -293,6 +293,91 @@ test("sendActivity()", async (t) => {
293
293
  assertEquals(e.responseBody, "Not Found");
294
294
  }
295
295
  });
296
+ const longErrorBody = "x".repeat(1500);
297
+ esm_default.post("https://example.com/inbox-long-error", {
298
+ status: 500,
299
+ body: longErrorBody
300
+ });
301
+ await t.step("long error response body is truncated", async () => {
302
+ const activity = {
303
+ "@context": "https://www.w3.org/ns/activitystreams",
304
+ "type": "Create",
305
+ "id": "https://example.com/activity",
306
+ "actor": "https://example.com/person"
307
+ };
308
+ try {
309
+ await sendActivity({
310
+ activity,
311
+ activityId: "https://example.com/activity",
312
+ keys: [{
313
+ privateKey: rsaPrivateKey2,
314
+ keyId: rsaPublicKey2.id
315
+ }],
316
+ inbox: new URL("https://example.com/inbox-long-error")
317
+ });
318
+ assert(false, "Should have thrown");
319
+ } catch (e) {
320
+ assertInstanceOf(e, SendActivityError);
321
+ assertEquals(e.statusCode, 500);
322
+ assertEquals(e.inbox, new URL("https://example.com/inbox-long-error"));
323
+ const expectedTruncated = "x".repeat(1024) + "… (truncated)";
324
+ assertEquals(e.responseBody, expectedTruncated);
325
+ assertEquals(e.message.includes("… (truncated)"), true);
326
+ }
327
+ });
328
+ await t.step("short error response body is not truncated", async () => {
329
+ const activity = {
330
+ "@context": "https://www.w3.org/ns/activitystreams",
331
+ "type": "Create",
332
+ "id": "https://example.com/activity",
333
+ "actor": "https://example.com/person"
334
+ };
335
+ try {
336
+ await sendActivity({
337
+ activity,
338
+ activityId: "https://example.com/activity",
339
+ keys: [{
340
+ privateKey: rsaPrivateKey2,
341
+ keyId: rsaPublicKey2.id
342
+ }],
343
+ inbox: new URL("https://example.com/inbox2")
344
+ });
345
+ assert(false, "Should have thrown");
346
+ } catch (e) {
347
+ assertInstanceOf(e, SendActivityError);
348
+ assertEquals(e.responseBody, "something went wrong");
349
+ assertEquals(e.message.includes("… (truncated)"), false);
350
+ }
351
+ });
352
+ const exactLimitBody = "y".repeat(1024);
353
+ esm_default.post("https://example.com/inbox-exact-limit", {
354
+ status: 500,
355
+ body: exactLimitBody
356
+ });
357
+ await t.step("error response body exactly at limit is not truncated", async () => {
358
+ const activity = {
359
+ "@context": "https://www.w3.org/ns/activitystreams",
360
+ "type": "Create",
361
+ "id": "https://example.com/activity",
362
+ "actor": "https://example.com/person"
363
+ };
364
+ try {
365
+ await sendActivity({
366
+ activity,
367
+ activityId: "https://example.com/activity",
368
+ keys: [{
369
+ privateKey: rsaPrivateKey2,
370
+ keyId: rsaPublicKey2.id
371
+ }],
372
+ inbox: new URL("https://example.com/inbox-exact-limit")
373
+ });
374
+ assert(false, "Should have thrown");
375
+ } catch (e) {
376
+ assertInstanceOf(e, SendActivityError);
377
+ assertEquals(e.responseBody, exactLimitBody);
378
+ assertEquals(e.message.includes("… (truncated)"), false);
379
+ }
380
+ });
296
381
  esm_default.hardReset();
297
382
  });
298
383
  test("sendActivity() records OpenTelemetry span events", async (t) => {
@@ -8,25 +8,25 @@ import { assertEquals } from "../assert_equals-DSbWqCm3.js";
8
8
  import "../assert-MZs1qjMx.js";
9
9
  import "../assert_instance_of-DHz7EHNU.js";
10
10
  import { MemoryKvStore } from "../kv-QzKcOQgP.js";
11
- import "../deno-BMByRQG1.js";
12
- import { createFederation, handleWebFinger } from "../middleware-CJtnP-pV.js";
11
+ import "../deno-BgGEslC_.js";
12
+ import { createFederation, handleWebFinger } from "../middleware-Rswg9VkF.js";
13
13
  import "../client-Dg7OfUDA.js";
14
14
  import "../router-D9eI0s4b.js";
15
15
  import "../types-CPz01LGH.js";
16
- import "../key-BUMDcUn6.js";
17
- import "../http-PEXEcZtQ.js";
18
- import "../ld-Bx3Mw3bV.js";
19
- import "../owner-Dr5tjio2.js";
20
- import "../proof-CWYlCvAq.js";
21
- import "../docloader-Cv6dJCEn.js";
16
+ import "../key-D7z5b4yi.js";
17
+ import "../http-D60XnE7g.js";
18
+ import "../ld-WU2Rt1vK.js";
19
+ import "../owner-CJrP1tug.js";
20
+ import "../proof-DDHBHRwX.js";
21
+ import "../docloader-D48nrN5v.js";
22
22
  import "../kv-cache-B__dHl7g.js";
23
- import "../inbox-CFwEGHQb.js";
24
- import "../builder-DkG2p8kW.js";
23
+ import "../inbox-LOH6XAnI.js";
24
+ import "../builder-DDgiY0pz.js";
25
25
  import "../collection-CcnIw1qY.js";
26
26
  import "../keycache-DRxpZ5r9.js";
27
27
  import "../negotiation-5NPJL6zp.js";
28
28
  import "../retry-D4GJ670a.js";
29
- import "../send-BkIS8uHG.js";
29
+ import "../send-Dr8KyLoR.js";
30
30
  import "../std__assert-DWivtrGR.js";
31
31
  import "../assert_rejects-Ce45JcFg.js";
32
32
  import "../assert_throws-BNXdRGWP.js";
@@ -13,7 +13,7 @@ import { getDocumentLoader } from "@fedify/vocab-runtime";
13
13
 
14
14
  //#region deno.json
15
15
  var name = "@fedify/fedify";
16
- var version = "2.0.0-dev.383+b69835d0";
16
+ var version = "2.0.0-dev.384+dae4bd3b";
17
17
  var license = "MIT";
18
18
  var exports = {
19
19
  ".": "./src/mod.ts",
@@ -14,7 +14,7 @@ const __fedify_vocab_runtime = require_chunk.__toESM(require("@fedify/vocab-runt
14
14
 
15
15
  //#region deno.json
16
16
  var name = "@fedify/fedify";
17
- var version = "2.0.0-dev.383+b69835d0";
17
+ var version = "2.0.0-dev.384+dae4bd3b";
18
18
  var license = "MIT";
19
19
  var exports$1 = {
20
20
  ".": "./src/mod.ts",
@@ -3,8 +3,8 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { deno_default } from "./deno-BMByRQG1.js";
7
- import { fetchKey, validateCryptoKey } from "./key-BUMDcUn6.js";
6
+ import { deno_default } from "./deno-BgGEslC_.js";
7
+ import { fetchKey, validateCryptoKey } from "./key-D7z5b4yi.js";
8
8
  import { getLogger } from "@logtape/logtape";
9
9
  import { CryptographicKey } from "@fedify/vocab";
10
10
  import { SpanStatusCode, trace } from "@opentelemetry/api";
@@ -3,7 +3,7 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { deno_default } from "./deno-BMByRQG1.js";
6
+ import { deno_default } from "./deno-BgGEslC_.js";
7
7
  import { getLogger } from "@logtape/logtape";
8
8
  import { Activity, getTypeId } from "@fedify/vocab";
9
9
  import { SpanKind, SpanStatusCode, context, propagation, trace } from "@opentelemetry/api";
@@ -3,7 +3,7 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { deno_default } from "./deno-BMByRQG1.js";
6
+ import { deno_default } from "./deno-BgGEslC_.js";
7
7
  import { getLogger } from "@logtape/logtape";
8
8
  import { CryptographicKey, Object as Object$1, isActor } from "@fedify/vocab";
9
9
  import { getDocumentLoader } from "@fedify/vocab-runtime";
@@ -3,7 +3,7 @@
3
3
  const { URLPattern } = require("urlpattern-polyfill");
4
4
 
5
5
  const require_chunk = require('./chunk-CGaQZ11T.cjs');
6
- const require_http = require('./http-B0YbKKTj.cjs');
6
+ const require_http = require('./http-C163RLCe.cjs');
7
7
  const __logtape_logtape = require_chunk.__toESM(require("@logtape/logtape"));
8
8
  const es_toolkit = require_chunk.__toESM(require("es-toolkit"));
9
9
  const __fedify_vocab_runtime = require_chunk.__toESM(require("@fedify/vocab-runtime"));
@@ -2,7 +2,7 @@
2
2
  import { Temporal } from "@js-temporal/polyfill";
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
 
5
- import { doubleKnock, validateCryptoKey } from "./http-CS8X3xL0.js";
5
+ import { doubleKnock, validateCryptoKey } from "./http-BGk2UBNk.js";
6
6
  import { getLogger } from "@logtape/logtape";
7
7
  import { curry } from "es-toolkit";
8
8
  import { UrlError, createActivityPubRequest, getRemoteDocument, logRequest, preloadedContexts, validatePublicUrl } from "@fedify/vocab-runtime";
@@ -3,8 +3,8 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
  globalThis.addEventListener = () => {};
5
5
 
6
- import { deno_default } from "./deno-BMByRQG1.js";
7
- import { fetchKey, validateCryptoKey } from "./key-BUMDcUn6.js";
6
+ import { deno_default } from "./deno-BgGEslC_.js";
7
+ import { fetchKey, validateCryptoKey } from "./key-D7z5b4yi.js";
8
8
  import { getLogger } from "@logtape/logtape";
9
9
  import { Activity, CryptographicKey, Object as Object$1, getTypeId } from "@fedify/vocab";
10
10
  import { getDocumentLoader } from "@fedify/vocab-runtime";
@@ -3,10 +3,10 @@
3
3
  import { URLPattern } from "urlpattern-polyfill";
4
4
 
5
5
  import "./transformers-C3FLHUd6.js";
6
- import "./http-CS8X3xL0.js";
7
- import { ContextImpl, FederationImpl, InboxContextImpl, KvSpecDeterminer, createFederation } from "./middleware-D95ZWXIW.js";
8
- import "./proof-BkD7Ea3t.js";
6
+ import "./http-BGk2UBNk.js";
7
+ import { ContextImpl, FederationImpl, InboxContextImpl, KvSpecDeterminer, createFederation } from "./middleware-CpfYDdYL.js";
8
+ import "./proof-DtHA5KS9.js";
9
9
  import "./types-C93Ob9cU.js";
10
- import "./kv-cache-BM0l1pOW.js";
10
+ import "./kv-cache-DnTFOBPC.js";
11
11
 
12
12
  export { FederationImpl };
@@ -0,0 +1,12 @@
1
+
2
+ const { Temporal } = require("@js-temporal/polyfill");
3
+ const { URLPattern } = require("urlpattern-polyfill");
4
+
5
+ require('./transformers-3g8GZwkZ.cjs');
6
+ require('./http-C163RLCe.cjs');
7
+ const require_middleware = require('./middleware-Cn00-cp8.cjs');
8
+ require('./proof-BpvNb9n3.cjs');
9
+ require('./types-Cd_hszr_.cjs');
10
+ require('./kv-cache-CHHbu8TE.cjs');
11
+
12
+ exports.FederationImpl = require_middleware.FederationImpl;