stitchkit 0.116.0 → 0.117.0

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 (120) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/dist/agent-runtime/run-acquisition.d.ts +9 -2
  3. package/dist/agent-runtime/run-acquisition.d.ts.map +1 -1
  4. package/dist/agent-runtime/run-execution.d.ts +3 -0
  5. package/dist/agent-runtime/run-execution.d.ts.map +1 -1
  6. package/dist/agent-runtime/run-failure.d.ts +4 -1
  7. package/dist/agent-runtime/run-failure.d.ts.map +1 -1
  8. package/dist/agent-runtime/run-store-retry.d.ts +8 -0
  9. package/dist/agent-runtime/run-store-retry.d.ts.map +1 -0
  10. package/dist/agent-runtime/run-terminal.d.ts.map +1 -1
  11. package/dist/agent-runtime/run-unacquired.d.ts +19 -0
  12. package/dist/agent-runtime/run-unacquired.d.ts.map +1 -0
  13. package/dist/agent-runtime/store-conformance.d.ts +8 -0
  14. package/dist/agent-runtime/store-conformance.d.ts.map +1 -1
  15. package/dist/agent-runtime/store-driver-contract.d.ts +5 -0
  16. package/dist/agent-runtime/store-driver-contract.d.ts.map +1 -1
  17. package/dist/agent-runtime/terminal-commit.d.ts +34 -4
  18. package/dist/agent-runtime/terminal-commit.d.ts.map +1 -1
  19. package/dist/entrypoints/agent-runtime/harness.js +2 -2
  20. package/dist/entrypoints/agent-runtime/sqlite/bun.js +3 -3
  21. package/dist/entrypoints/agent-runtime/sqlite/node.js +3 -3
  22. package/dist/entrypoints/agent-runtime/testing.js +22 -4
  23. package/dist/entrypoints/agent-runtime.d.ts +1 -1
  24. package/dist/entrypoints/agent-runtime.d.ts.map +1 -1
  25. package/dist/entrypoints/agent-runtime.js +13 -11
  26. package/dist/entrypoints/application/diagnostic-journal.js +1 -1
  27. package/dist/entrypoints/application/directory-inbox.js +3 -3
  28. package/dist/entrypoints/cli/publish.js +2 -2
  29. package/dist/entrypoints/files.js +2 -2
  30. package/dist/entrypoints/primitives.js +51 -154
  31. package/dist/entrypoints/server.js +6 -6
  32. package/dist/entrypoints/telegram.d.ts +1 -1
  33. package/dist/entrypoints/telegram.d.ts.map +1 -1
  34. package/dist/entrypoints/telegram.js +196 -76
  35. package/dist/entrypoints/tracking/contract.d.ts +11 -0
  36. package/dist/entrypoints/tracking/contract.d.ts.map +1 -0
  37. package/dist/entrypoints/tracking/contract.js +162 -0
  38. package/dist/entrypoints/tracking/performance.d.ts +8 -0
  39. package/dist/entrypoints/tracking/performance.d.ts.map +1 -0
  40. package/dist/entrypoints/tracking/performance.js +181 -0
  41. package/dist/entrypoints/tracking/server.d.ts +1 -0
  42. package/dist/entrypoints/tracking/server.d.ts.map +1 -1
  43. package/dist/entrypoints/tracking/server.js +40 -12
  44. package/dist/entrypoints/tracking.d.ts +4 -3
  45. package/dist/entrypoints/tracking.d.ts.map +1 -1
  46. package/dist/entrypoints/tracking.js +43 -143
  47. package/dist/entrypoints/xlsx.d.ts +4 -0
  48. package/dist/entrypoints/xlsx.d.ts.map +1 -0
  49. package/dist/entrypoints/xlsx.js +406 -0
  50. package/dist/{index-fa435yq2.js → index-073nw9qr.js} +8 -8
  51. package/dist/index-1f40z584.js +7 -0
  52. package/dist/{index-fdk4r4r6.js → index-75ns2ybj.js} +1 -1
  53. package/dist/{index-jq2ky8fw.js → index-cycp3r3e.js} +124 -181
  54. package/dist/{index-4g6qmgdx.js → index-ghtpfz4z.js} +9 -9
  55. package/dist/{index-n3v695sb.js → index-hdjmdwsj.js} +277 -96
  56. package/dist/{index-zqkz4af9.js → index-nqxrm176.js} +1 -1
  57. package/dist/index-qezhmp51.js +242 -0
  58. package/dist/index-vv1sch8a.js +94 -0
  59. package/dist/{index-fggxgbrk.js → index-xx1j310k.js} +165 -102
  60. package/dist/internal/exclusive-lock.d.ts.map +1 -1
  61. package/dist/primitives/decimal.d.ts +10 -0
  62. package/dist/primitives/decimal.d.ts.map +1 -1
  63. package/dist/primitives/index.d.ts +3 -1
  64. package/dist/primitives/index.d.ts.map +1 -1
  65. package/dist/primitives/money.d.ts +20 -0
  66. package/dist/primitives/money.d.ts.map +1 -1
  67. package/dist/primitives/quantity.d.ts.map +1 -1
  68. package/dist/primitives/rounding.d.ts +40 -0
  69. package/dist/primitives/rounding.d.ts.map +1 -0
  70. package/dist/telegram/budget-transformer.d.ts +2 -2
  71. package/dist/telegram/not-dispatched.d.ts +2 -2
  72. package/dist/telegram/not-dispatched.d.ts.map +1 -1
  73. package/dist/telegram/outbound-budget.d.ts +53 -16
  74. package/dist/telegram/outbound-budget.d.ts.map +1 -1
  75. package/dist/telegram/outbound-cost.d.ts +5 -0
  76. package/dist/telegram/outbound-cost.d.ts.map +1 -0
  77. package/dist/telegram/outbound-pauses.d.ts +17 -0
  78. package/dist/telegram/outbound-pauses.d.ts.map +1 -0
  79. package/dist/telegram/outbound-queue.d.ts +17 -0
  80. package/dist/telegram/outbound-queue.d.ts.map +1 -0
  81. package/dist/tracking/attribution.d.ts +1 -1
  82. package/dist/tracking/attribution.d.ts.map +1 -1
  83. package/dist/tracking/client-visit.d.ts +3 -1
  84. package/dist/tracking/client-visit.d.ts.map +1 -1
  85. package/dist/tracking/client.d.ts.map +1 -1
  86. package/dist/tracking/performance/collector.d.ts +61 -0
  87. package/dist/tracking/performance/collector.d.ts.map +1 -0
  88. package/dist/tracking/performance/schema.d.ts +45 -0
  89. package/dist/tracking/performance/schema.d.ts.map +1 -0
  90. package/dist/tracking/performance/summary.d.ts +12 -0
  91. package/dist/tracking/performance/summary.d.ts.map +1 -0
  92. package/dist/tracking/privacy.d.ts +5 -0
  93. package/dist/tracking/privacy.d.ts.map +1 -0
  94. package/dist/tracking/server/telemetry-health.d.ts +31 -0
  95. package/dist/tracking/server/telemetry-health.d.ts.map +1 -0
  96. package/dist/xlsx/cells.d.ts +17 -0
  97. package/dist/xlsx/cells.d.ts.map +1 -0
  98. package/dist/xlsx/render.d.ts +11 -0
  99. package/dist/xlsx/render.d.ts.map +1 -0
  100. package/dist/xlsx/schema.d.ts +119 -0
  101. package/dist/xlsx/schema.d.ts.map +1 -0
  102. package/dist/xlsx/zip.d.ts +13 -0
  103. package/dist/xlsx/zip.d.ts.map +1 -0
  104. package/llms/agent-runtime.2.txt +40 -16
  105. package/llms/agent-runtime.3.txt +17 -0
  106. package/llms/agent-runtime.txt +4 -1
  107. package/llms/primitives.txt +21 -0
  108. package/llms/stitchkit.txt +9 -6
  109. package/llms/telegram.txt +32 -12
  110. package/llms/tracking-contract.txt +32 -0
  111. package/llms/tracking-performance.txt +21 -0
  112. package/llms/tracking-server.txt +1 -0
  113. package/llms/tracking.txt +75 -12
  114. package/llms/{upgrading-0.105.0-0.116.0.txt → upgrading-0.105.0-0.117.0.txt} +50 -3
  115. package/llms/upgrading.txt +1 -1
  116. package/llms/xlsx.txt +107 -0
  117. package/llms-full.txt +355 -31
  118. package/llms.txt +11 -7
  119. package/package.json +27 -9
  120. package/dist/{index-z3d6smer.js → index-tdpmfks8.js} +5 -5
@@ -1,3 +1,4 @@
1
+ import { z } from 'zod';
1
2
  export interface DecimalParts {
2
3
  readonly coefficient: bigint;
3
4
  readonly scale: number;
@@ -7,4 +8,13 @@ export declare function normalizeDecimal(parts: DecimalParts): DecimalParts;
7
8
  export declare function formatDecimal(parts: DecimalParts): string;
8
9
  export declare function addDecimal(left: DecimalParts, right: DecimalParts): DecimalParts;
9
10
  export declare function multiplyDecimalRatio(value: DecimalParts, numerator: bigint, denominator: bigint): DecimalParts;
11
+ /**
12
+ * A decimal as a string in its one canonical spelling: `10.5`, never `10.50`,
13
+ * `+10.5`, `.5`, or a number. Two equal values serialize alike, so a digest or a
14
+ * unique index over them agrees. A JSON number is refused: it is a float by the
15
+ * time anyone reads it.
16
+ */
17
+ export declare const DecimalStringSchema: z.ZodString;
18
+ /** A decimal string as a database or a form spells it, brought to the canonical one. */
19
+ export declare const DecimalInputSchema: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
10
20
  //# sourceMappingURL=decimal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"decimal.d.ts","sourceRoot":"","sources":["../../src/primitives/decimal.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAOxD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG,YAAY,CAQlE;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAQzD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,GAAG,YAAY,CAKhF;AAED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,YAAY,CAYd"}
1
+ {"version":3,"file":"decimal.d.ts","sourceRoot":"","sources":["../../src/primitives/decimal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAOxD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG,YAAY,CAQlE;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAQzD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,GAAG,YAAY,CAKhF;AAED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,YAAY,CAYd;AAED;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,aAMS,CAAC;AAE1C,wFAAwF;AACxF,eAAO,MAAM,kBAAkB,wDAG4B,CAAC"}
@@ -1,13 +1,15 @@
1
1
  export { type AuditOmitPolicy, type AuditPolicy, type AuditRecord, type AuditRecordPolicy, AuditRecordSchema, assertAuditDeclared, audit, type CreateAuditRecordInput, createAuditRecord, } from './audit.js';
2
2
  export { CanonicalJsonError, type CanonicalJsonOptions, type CanonicalJsonRefusal, canonicalJson, } from './canonical-json.js';
3
3
  export { type DeadlineResult, DeadlineResultSchema, defineDeadlinePolicy, } from './deadline.js';
4
+ export { DecimalInputSchema, DecimalStringSchema } from './decimal.js';
4
5
  export { type DomainEventDeliveryClaim, DomainEventDeliveryClaimSchema, type DomainEventDeliveryOutcome, DomainEventDeliveryOutcomeSchema, type DomainEventDeliveryPlan, type DomainEventDestination, DomainEventDestinationSchema, type DomainEventDispatchResult, type DomainEventOutbox, type DomainEventRoute, type DomainEventTransport, defineDomainEventDelivery, } from './delivery.js';
5
6
  export { createDomainEventSchema, type DomainEvent, type DomainEventActor, DomainEventActorSchema, DomainEventSchema, type DomainEventSubject, DomainEventSubjectSchema, } from './event.js';
6
7
  export { createExportResultSchema, defineExportOperation, } from './export-operation.js';
7
8
  export { defineLifecycle, type LifecycleDefinition, type LifecycleState, type LifecycleTransitionDefinition, type LifecycleTransitionEvent, LifecycleTransitionEventSchema, type LifecycleTransitionFailure, type LifecycleTransitionInput, type LifecycleTransitionResult, type LifecycleTransitionSuccess, } from './lifecycle.js';
8
9
  export { type SourceRisk, type SourceText, scanMoneyNumberRisks, scanOwnerFilterRisks, } from './migration-checks.js';
9
- export { addMoney, createMoneySchema, defineMoney, type Money, type MoneyShare, type MoneySplit, multiplyMoney, shareMoney, splitMoney, subtractMoney, } from './money.js';
10
+ export { addMoney, createMoneySchema, defineMoney, type Money, type MoneyShare, type MoneySplit, moneyFromDecimal, moneyToDecimal, multiplyMoney, multiplyMoneyByDecimal, roundMoney, shareMoney, splitMoney, subtractMoney, } from './money.js';
10
11
  export { defineOwnerScope, type OwnerScope, type OwnerScopeDefinition, type OwnerScopeResolution, } from './owner-scope.js';
11
12
  export { definePermissionMatrix, type PermissionCheckResult, type PermissionGrantMatrix, } from './permission.js';
12
13
  export { addQuantity, createQuantitySchema, defineUnitSystem, type Quantity, type QuantityProjection, QuantityProjectionSchema, type UnitConversion, } from './quantity.js';
14
+ export { defineRoundingPolicy, type RoundingMode, RoundingModeSchema, type RoundingPolicy, RoundingPolicySchema, roundDecimal, } from './rounding.js';
13
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/primitives/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,iBAAiB,EACjB,mBAAmB,EACnB,KAAK,EACL,KAAK,sBAAsB,EAC3B,iBAAiB,GAClB,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,kBAAkB,EAClB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,aAAa,GACd,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,KAAK,cAAc,EACnB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,KAAK,wBAAwB,EAC7B,8BAA8B,EAC9B,KAAK,0BAA0B,EAC/B,gCAAgC,EAChC,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC3B,4BAA4B,EAC5B,KAAK,yBAAyB,EAC9B,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,yBAAyB,GAC1B,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,uBAAuB,EACvB,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,sBAAsB,EACtB,iBAAiB,EACjB,KAAK,kBAAkB,EACvB,wBAAwB,GACzB,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,eAAe,EACf,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,6BAA6B,EAClC,KAAK,wBAAwB,EAC7B,8BAA8B,EAC9B,KAAK,0BAA0B,EAC/B,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,GAChC,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,KAAK,UAAU,EACf,KAAK,UAAU,EACf,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,QAAQ,EACR,iBAAiB,EACjB,WAAW,EACX,KAAK,KAAK,EACV,KAAK,UAAU,EACf,KAAK,UAAU,EACf,aAAa,EACb,UAAU,EACV,UAAU,EACV,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,gBAAgB,EAChB,KAAK,UAAU,EACf,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,GAC1B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,sBAAsB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,GAC3B,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,WAAW,EACX,oBAAoB,EACpB,gBAAgB,EAChB,KAAK,QAAQ,EACb,KAAK,kBAAkB,EACvB,wBAAwB,EACxB,KAAK,cAAc,GACpB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/primitives/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,iBAAiB,EACjB,mBAAmB,EACnB,KAAK,EACL,KAAK,sBAAsB,EAC3B,iBAAiB,GAClB,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,kBAAkB,EAClB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,aAAa,GACd,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,KAAK,cAAc,EACnB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AACpE,OAAO,EACL,KAAK,wBAAwB,EAC7B,8BAA8B,EAC9B,KAAK,0BAA0B,EAC/B,gCAAgC,EAChC,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC3B,4BAA4B,EAC5B,KAAK,yBAAyB,EAC9B,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,yBAAyB,GAC1B,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,uBAAuB,EACvB,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,sBAAsB,EACtB,iBAAiB,EACjB,KAAK,kBAAkB,EACvB,wBAAwB,GACzB,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,eAAe,EACf,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,6BAA6B,EAClC,KAAK,wBAAwB,EAC7B,8BAA8B,EAC9B,KAAK,0BAA0B,EAC/B,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,GAChC,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,KAAK,UAAU,EACf,KAAK,UAAU,EACf,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,QAAQ,EACR,iBAAiB,EACjB,WAAW,EACX,KAAK,KAAK,EACV,KAAK,UAAU,EACf,KAAK,UAAU,EACf,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,sBAAsB,EACtB,UAAU,EACV,UAAU,EACV,UAAU,EACV,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,gBAAgB,EAChB,KAAK,UAAU,EACf,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,GAC1B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,sBAAsB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,GAC3B,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,WAAW,EACX,oBAAoB,EACpB,gBAAgB,EAChB,KAAK,QAAQ,EACb,KAAK,kBAAkB,EACvB,wBAAwB,EACxB,KAAK,cAAc,GACpB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,oBAAoB,EACpB,KAAK,YAAY,EACjB,kBAAkB,EAClB,KAAK,cAAc,EACnB,oBAAoB,EACpB,YAAY,GACb,MAAM,YAAY,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { z } from 'zod';
2
+ import { type RoundingPolicy } from './rounding.js';
2
3
  export interface Money<TCurrency extends string = string> {
3
4
  readonly minor: string;
4
5
  readonly currency: TCurrency;
@@ -10,6 +11,25 @@ export declare function createMoneySchema<const TCurrency extends string>(curren
10
11
  export declare function addMoney<TCurrency extends string>(left: Money<TCurrency>, right: Money<NoInfer<TCurrency>>): Money<TCurrency>;
11
12
  export declare function subtractMoney<TCurrency extends string>(left: Money<TCurrency>, right: Money<NoInfer<TCurrency>>): Money<TCurrency>;
12
13
  export declare function multiplyMoney<TCurrency extends string>(value: Money<TCurrency>, quantity: bigint | number): Money<TCurrency>;
14
+ /**
15
+ * `5041.82` at scale 2 is 504182 minor units. Refuses a value finer than the
16
+ * currency, because dropping those digits here would be a rounding nobody chose:
17
+ * round first, with a policy, if that is what is meant.
18
+ */
19
+ export declare function moneyFromDecimal<const TCurrency extends string>(currency: TCurrency, value: string, scale: number): Money<TCurrency>;
20
+ /** The amount in major units with every place of the currency: `5041.80`, not `5041.8`. */
21
+ export declare function moneyToDecimal(value: Money, scale: number): string;
22
+ /**
23
+ * Bring an amount to the steps of a policy, whose table is in minor units.
24
+ * `below` and `step` of `{ below: '100000', step: '100' }` mean a price under
25
+ * 1000.00 rounds to whole units of a two-place currency.
26
+ */
27
+ export declare function roundMoney<TCurrency extends string>(value: Money<TCurrency>, policy: RoundingPolicy): Money<TCurrency>;
28
+ /**
29
+ * Multiply by a decimal such as a quantity of `2.5` or a rate of `0.2`. The exact
30
+ * product is computed first and rounded once, by the policy the caller names.
31
+ */
32
+ export declare function multiplyMoneyByDecimal<TCurrency extends string>(value: Money<TCurrency>, factor: string, policy: RoundingPolicy): Money<TCurrency>;
13
33
  export interface MoneyShare<TCurrency extends string> {
14
34
  readonly amount: Money<TCurrency>;
15
35
  readonly remainder: {
@@ -1 +1 @@
1
- {"version":3,"file":"money.d.ts","sourceRoot":"","sources":["../../src/primitives/money.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,MAAM,WAAW,KAAK,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM;IACtD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;CAC9B;AAED,wBAAgB,iBAAiB,CAAC,KAAK,CAAC,SAAS,SAAS,MAAM,EAAE,QAAQ,EAAE,SAAS;;;kBAKpF;AAmBD,wBAAgB,QAAQ,CAAC,SAAS,SAAS,MAAM,EAC/C,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,EACtB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAC/B,KAAK,CAAC,SAAS,CAAC,CAGlB;AAED,wBAAgB,aAAa,CAAC,SAAS,SAAS,MAAM,EACpD,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,EACtB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAC/B,KAAK,CAAC,SAAS,CAAC,CAGlB;AAED,wBAAgB,aAAa,CAAC,SAAS,SAAS,MAAM,EACpD,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,EACvB,QAAQ,EAAE,MAAM,GAAG,MAAM,GACxB,KAAK,CAAC,SAAS,CAAC,CAMlB;AAED,MAAM,WAAW,UAAU,CAAC,SAAS,SAAS,MAAM;IAClD,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE;QAClB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;KAC9B,CAAC;CACH;AAED,iGAAiG;AACjG,wBAAgB,UAAU,CAAC,SAAS,SAAS,MAAM,EACjD,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,EACvB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,UAAU,CAAC,SAAS,CAAC,CAYvB;AAED,MAAM,WAAW,UAAU,CAAC,SAAS,SAAS,MAAM;IAClD,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;CACtC;AAED,yFAAyF;AACzF,wBAAgB,UAAU,CAAC,SAAS,SAAS,MAAM,EACjD,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,EACvB,KAAK,EAAE,MAAM,GACZ,UAAU,CAAC,SAAS,CAAC,CASvB;AAED,wBAAgB,WAAW,CAAC,KAAK,CAAC,SAAS,SAAS,MAAM,EAAE,QAAQ,EAAE,SAAS;;;;;;kBAK7D,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;;;kDA/DxC,MAAM,GAAG,MAAM;gDAqBd,MAAM,eACJ,MAAM;4CAwBZ,MAAM;GA2Bd"}
1
+ {"version":3,"file":"money.d.ts","sourceRoot":"","sources":["../../src/primitives/money.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"quantity.d.ts","sourceRoot":"","sources":["../../src/primitives/quantity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAWxB,MAAM,WAAW,QAAQ,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM;IACrD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;CACtB;AAED,wBAAgB,oBAAoB,CAAC,KAAK,CAAC,KAAK,SAAS,MAAM,EAAE,IAAI,EAAE,KAAK;;;kBAE3E;AAUD,wBAAgB,WAAW,CAAC,KAAK,SAAS,MAAM,EAC9C,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,EACrB,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAC9B,QAAQ,CAAC,KAAK,CAAC,CAQjB;AAED,MAAM,WAAW,cAAc,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM;IAC3D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IACrB,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,MAAM,kBAAkB,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,IACxD;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAA;CAAE,GACjE;IACE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B,CAAC;AAEN,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;2BAWnC,CAAC;AAEH,wBAAgB,gBAAgB,CAAC,KAAK,CAAC,KAAK,SAAS,MAAM,EAAE,MAAM,EAAE;IACnE,QAAQ,CAAC,KAAK,EAAE,SAAS,KAAK,EAAE,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,SAAS,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;CACxD;;wBAFiB,SAAS,KAAK,EAAE;8BACV,SAAS,cAAc,CAAC,KAAK,CAAC,EAAE;;WAqB7C,SAAS,SAAS,KAAK,SAAS,MAAM,QAAQ,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;aAI3E,SAAS,SAAS,KAAK,SACvB,QAAQ,CAAC,SAAS,CAAC,GACzB,kBAAkB,CAAC,SAAS,CAAC;YAGxB,KAAK,SAAS,KAAK,EAAE,GAAG,SAAS,KAAK,UACpC,QAAQ,CAAC,KAAK,CAAC,MACnB,GAAG,GACN,kBAAkB,CAAC,GAAG,CAAC;GA4B7B"}
1
+ {"version":3,"file":"quantity.d.ts","sourceRoot":"","sources":["../../src/primitives/quantity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AASxB,MAAM,WAAW,QAAQ,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM;IACrD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;CACtB;AAED,wBAAgB,oBAAoB,CAAC,KAAK,CAAC,KAAK,SAAS,MAAM,EAAE,IAAI,EAAE,KAAK;;;kBAE3E;AAUD,wBAAgB,WAAW,CAAC,KAAK,SAAS,MAAM,EAC9C,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,EACrB,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAC9B,QAAQ,CAAC,KAAK,CAAC,CAQjB;AAED,MAAM,WAAW,cAAc,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM;IAC3D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IACrB,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,MAAM,kBAAkB,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,IACxD;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAA;CAAE,GACjE;IACE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B,CAAC;AAEN,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;2BAWnC,CAAC;AAEH,wBAAgB,gBAAgB,CAAC,KAAK,CAAC,KAAK,SAAS,MAAM,EAAE,MAAM,EAAE;IACnE,QAAQ,CAAC,KAAK,EAAE,SAAS,KAAK,EAAE,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,SAAS,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;CACxD;;wBAFiB,SAAS,KAAK,EAAE;8BACV,SAAS,cAAc,CAAC,KAAK,CAAC,EAAE;;WAqB7C,SAAS,SAAS,KAAK,SAAS,MAAM,QAAQ,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;aAI3E,SAAS,SAAS,KAAK,SACvB,QAAQ,CAAC,SAAS,CAAC,GACzB,kBAAkB,CAAC,SAAS,CAAC;YAGxB,KAAK,SAAS,KAAK,EAAE,GAAG,SAAS,KAAK,UACpC,QAAQ,CAAC,KAAK,CAAC,MACnB,GAAG,GACN,kBAAkB,CAAC,GAAG,CAAC;GA4B7B"}
@@ -0,0 +1,40 @@
1
+ import { z } from 'zod';
2
+ import { type DecimalParts } from './decimal.js';
3
+ /**
4
+ * How a value between two steps lands. `half-up` takes a tie away from zero and
5
+ * `half-even` to the even step, `up` always leaves zero and `down` always nears it.
6
+ */
7
+ export declare const RoundingModeSchema: z.ZodEnum<{
8
+ down: "down";
9
+ "half-even": "half-even";
10
+ "half-up": "half-up";
11
+ up: "up";
12
+ }>;
13
+ export type RoundingMode = z.infer<typeof RoundingModeSchema>;
14
+ /**
15
+ * A rounding table: the first tier whose `below` exceeds the magnitude gives the
16
+ * step. Data rather than a callback, so it can be stored with the prices it
17
+ * produced and read back when one of them is questioned.
18
+ */
19
+ export declare const RoundingPolicySchema: z.ZodObject<{
20
+ mode: z.ZodEnum<{
21
+ down: "down";
22
+ "half-even": "half-even";
23
+ "half-up": "half-up";
24
+ up: "up";
25
+ }>;
26
+ tiers: z.ZodArray<z.ZodObject<{
27
+ below: z.ZodOptional<z.ZodString>;
28
+ step: z.ZodString;
29
+ }, z.core.$strip>>;
30
+ }, z.core.$strip>;
31
+ export type RoundingPolicy = z.infer<typeof RoundingPolicySchema>;
32
+ export declare function defineRoundingPolicy(policy: z.input<typeof RoundingPolicySchema>): RoundingPolicy;
33
+ /** Whether every result of the table is a whole number, whatever the value. */
34
+ export declare function hasWholeSteps(policy: RoundingPolicy): boolean;
35
+ export declare function roundParts(value: DecimalParts, policy: RoundingPolicy): DecimalParts;
36
+ /** The exact product, rounded once. */
37
+ export declare function multiplyAndRound(left: DecimalParts, right: DecimalParts, policy: RoundingPolicy): DecimalParts;
38
+ /** A decimal string brought to the table's step, in canonical spelling. */
39
+ export declare function roundDecimal(value: string, policy: RoundingPolicy): string;
40
+ //# sourceMappingURL=rounding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rounding.d.ts","sourceRoot":"","sources":["../../src/primitives/rounding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAEL,KAAK,YAAY,EAIlB,MAAM,WAAW,CAAC;AAEnB;;;GAGG;AACH,eAAO,MAAM,kBAAkB;;;;;EAAiD,CAAC;AACjF,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAmB9D;;;;GAIG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;iBAgB7B,CAAC;AACL,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,GAC3C,cAAc,CAGhB;AA+BD,+EAA+E;AAC/E,wBAAgB,aAAa,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAE7D;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,cAAc,GAAG,YAAY,CAQpF;AAED,uCAAuC;AACvC,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,cAAc,GACrB,YAAY,CAKd;AAED,2EAA2E;AAC3E,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,MAAM,CAE1E"}
@@ -22,7 +22,7 @@ import type { TelegramOutboundBudget, TelegramOutboundCallOptions } from './outb
22
22
  *
23
23
  * Install it as the bot's one transformer; it replaces any limiter written
24
24
  * beside it. A refusal Telegram returns as a response, not only a thrown one,
25
- * pauses the token (see `TelegramOutboundBudget.run`), and the call is never
25
+ * pauses its chat (see `TelegramOutboundBudget.run`), and the call is never
26
26
  * repeated here.
27
27
  *
28
28
  * A cancellation that arrives while the call still waits for its turn, or in
@@ -31,7 +31,7 @@ import type { TelegramOutboundBudget, TelegramOutboundCallOptions } from './outb
31
31
  * request was handed on is the client's ordinary error and the outcome is
32
32
  * unknown, not a definite failure.
33
33
  *
34
- * `options.lane` applies to every call through this client: a campaign installs
34
+ * `options` apply to every call through this client: a campaign installs
35
35
  * `{ lane: 'bulk' }` on its own `Api`, and replies stay ahead of it.
36
36
  */
37
37
  export declare function telegramBudgetTransformer(budget: TelegramOutboundBudget, options?: TelegramOutboundCallOptions): Transformer;
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Where a Bot API request stopped before any byte of it was written: the address lookup, the
3
- * connection, or the request itself (a body that could not be read).
3
+ * connection, the request itself (a body that could not be read), or the outbound budget's queue.
4
4
  */
5
- export type TelegramNotDispatchedStage = 'lookup' | 'connect' | 'request';
5
+ export type TelegramNotDispatchedStage = 'lookup' | 'connect' | 'request' | 'queue';
6
6
  /**
7
7
  * The request provably never reached Telegram, so sending it again cannot duplicate a message.
8
8
  * Thrown only before the first byte is written; any failure after that is an ordinary error,
@@ -1 +1 @@
1
- {"version":3,"file":"not-dispatched.d.ts","sourceRoot":"","sources":["../../src/telegram/not-dispatched.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,0BAA0B,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;AAE1E;;;;GAIG;AACH,qBAAa,0BAA2B,SAAQ,KAAK;IAIjD,QAAQ,CAAC,KAAK,EAAE,0BAA0B;IAH5C,SAAkB,IAAI,gCAAgC;IACtD,QAAQ,CAAC,IAAI,6BAA6B;IAC1C,YACW,KAAK,EAAE,0BAA0B,EAC1C,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,EAG9B;CACF;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,0BAA0B,CAOrC;AAED,2EAA2E;AAC3E,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,SAAI,GAAG,OAAO,CAO1E"}
1
+ {"version":3,"file":"not-dispatched.d.ts","sourceRoot":"","sources":["../../src/telegram/not-dispatched.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,0BAA0B,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAEpF;;;;GAIG;AACH,qBAAa,0BAA2B,SAAQ,KAAK;IAIjD,QAAQ,CAAC,KAAK,EAAE,0BAA0B;IAH5C,SAAkB,IAAI,gCAAgC;IACtD,QAAQ,CAAC,IAAI,6BAA6B;IAC1C,YACW,KAAK,EAAE,0BAA0B,EAC1C,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,EAG9B;CACF;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,0BAA0B,CAOrC;AAED,2EAA2E;AAC3E,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,SAAI,GAAG,OAAO,CAO1E"}
@@ -18,12 +18,16 @@
18
18
  * campaign; a campaign runs at whatever rate replies leave it.
19
19
  *
20
20
  * **It paces; it does not retry.** A 429 on a method that spends the budget
21
- * pauses every sender of the token for the wait Telegram stated (or a declared
22
- * fallback when it stated none). A 429 on an edit or a read concerns that call
23
- * and pauses nothing. A network failure or a 5xx is returned to the caller
24
- * unchanged: repeating a
25
- * send whose external outcome is unknown is the caller's decision, and a
26
- * primitive that retried it would turn one unknown message into two.
21
+ * pauses the chat it was sent to for the wait Telegram stated (or a declared
22
+ * fallback when it stated none); every other chat of the token goes on. Telegram
23
+ * words a group's limit, a chat's pace and the bot's own limit alike, and only
24
+ * the addressee differs, so one chat's refusal is read as that chat's. Refusals
25
+ * from several chats inside a short window are read as the bot's own limit and
26
+ * pause the token, as does a 429 with no chat to blame. A 429 on an edit or a
27
+ * read concerns that call and pauses nothing. A network failure or a 5xx is
28
+ * returned to the caller unchanged: repeating a send whose external outcome is
29
+ * unknown is the caller's decision, and a primitive that retried it would turn
30
+ * one unknown message into two.
27
31
  *
28
32
  * The schedule is a strict token budget, not a bucket with a full burst: the
29
33
  * first call after an idle period is immediate, and every later call occupies
@@ -39,10 +43,17 @@ export interface TelegramOutboundBudgetConfig {
39
43
  /** Telegram messages per second. Default 24. */
40
44
  readonly messagesPerSecond?: number;
41
45
  /**
42
- * How long a 429 without `retry_after` pauses the token. Default 1000 ms.
46
+ * How long a 429 without `retry_after` pauses. Default 1000 ms.
43
47
  * Telegram's own `retry_after` is always used instead when present.
44
48
  */
45
49
  readonly retryAfterFallbackMs?: number;
50
+ /**
51
+ * How many different chats have to get a 429 inside `tokenPauseWindowMs`
52
+ * before the token pauses instead of those chats. Default 3.
53
+ */
54
+ readonly tokenPauseChats?: number;
55
+ /** The window `tokenPauseChats` is counted in. Default 5000 ms. */
56
+ readonly tokenPauseWindowMs?: number;
46
57
  /**
47
58
  * Test seam: the monotonic clock. Default `performance.now`. A wall clock can
48
59
  * jump backwards and turn a pause into a burst, so the default is monotonic.
@@ -65,12 +76,32 @@ export interface TelegramOutboundBudgetStats {
65
76
  /** How many of them are in the `bulk` lane. */
66
77
  readonly queuedBulk: number;
67
78
  readonly messagesPerSecond: number;
68
- /** How much of the current 429 pause is still ahead, in milliseconds. */
79
+ /** How much of the current token pause is still ahead, in milliseconds. */
69
80
  readonly pausedForMs: number;
81
+ /** Chats on their own 429 pause right now. */
82
+ readonly pausedChats: number;
70
83
  }
71
84
  export interface TelegramOutboundCallOptions {
72
85
  /** Default `interactive`. */
73
86
  readonly lane?: TelegramOutboundLane;
87
+ /** The addressed chat: a pause of that chat holds this call. `run` reads `chat_id` itself. */
88
+ readonly chatId?: number | string;
89
+ /**
90
+ * What this call's own 429 does. `pause` (the default) pauses its chat. `call`
91
+ * pauses nothing, for a chat known to run into its limit: the refusal concerns
92
+ * this send alone. The call still spends the budget and waits out other pauses.
93
+ */
94
+ readonly refusal?: 'pause' | 'call';
95
+ /**
96
+ * Give up after this long in the queue with `TelegramNotDispatchedError`,
97
+ * stage `queue`: nothing was sent, so repeating it is safe. A burst to one
98
+ * chat on pause otherwise queues without limit. Default: wait.
99
+ */
100
+ readonly maxWaitMs?: number;
101
+ }
102
+ /** Which chat a pause or a wait concerns. */
103
+ export interface TelegramOutboundChatOptions {
104
+ readonly chatId?: number | string;
74
105
  }
75
106
  /**
76
107
  * A token's outbound budget. `run` is the narrow adapter a client transformer
@@ -80,9 +111,10 @@ export interface TelegramOutboundBudget {
80
111
  /**
81
112
  * Run one Bot API call under the budget, in the `interactive` lane by default.
82
113
  * A non-send method passes through without spending a message. A 429 on a send
83
- * pauses every sender of the token, whether `send` throws it or resolves with
84
- * the Bot API's `{ ok: false, … }` body, as a client transformer's `send` does;
85
- * a 429 on a non-send method pauses nothing. The error is rethrown, or the
114
+ * pauses the chat in the payload's `chat_id`, whether `send` throws it or resolves
115
+ * with the Bot API's `{ ok: false, … }` body, as a client transformer's `send`
116
+ * does; several chats refused at once, or a call with no chat, pause the token.
117
+ * A 429 on a non-send method pauses nothing. The error is rethrown, or the
86
118
  * response returned, unchanged and the call is not repeated.
87
119
  */
88
120
  run<T>(method: string, payload: unknown, signal: AbortSignal | undefined, send: () => Promise<T>, options?: TelegramOutboundCallOptions): Promise<T>;
@@ -94,13 +126,18 @@ export interface TelegramOutboundBudget {
94
126
  acquire(cost: number, signal?: AbortSignal, options?: TelegramOutboundCallOptions): Promise<void>;
95
127
  /** Pause every sender of this token for at least `milliseconds`. Never shortens an existing pause. */
96
128
  pause(milliseconds: number): void;
97
- /** Pause the token after a rate-limited refusal; another failure does nothing. */
98
- pauseAfter(error: unknown): void;
99
129
  /**
100
- * Wait out the current pause without spending a token. For a retry path that
101
- * is not a send (edit, delete) and does not go through `acquire`.
130
+ * Pause after a rate-limited refusal; another failure does nothing. With
131
+ * `chatId` this is that chat's pause, counted like a refusal `run` saw; without
132
+ * it, the token's.
133
+ */
134
+ pauseAfter(error: unknown, options?: TelegramOutboundChatOptions): void;
135
+ /**
136
+ * Wait out the current pause without spending a token, and that chat's own
137
+ * with `chatId`. For a retry path that is not a send (edit, delete) and does
138
+ * not go through `acquire`.
102
139
  */
103
- waitUntilResumed(signal?: AbortSignal): Promise<void>;
140
+ waitUntilResumed(signal?: AbortSignal, options?: TelegramOutboundChatOptions): Promise<void>;
104
141
  /** Measured counters. It never contains the token. */
105
142
  stats(): TelegramOutboundBudgetStats;
106
143
  }
@@ -1 +1 @@
1
- {"version":3,"file":"outbound-budget.d.ts","sourceRoot":"","sources":["../../src/telegram/outbound-budget.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAwEH,oFAAoF;AACpF,MAAM,MAAM,oBAAoB,GAAG,aAAa,GAAG,MAAM,CAAC;AAE1D,MAAM,WAAW,4BAA4B;IAC3C,mFAAmF;IACnF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,gDAAgD;IAChD,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC;;;OAGG;IACH,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IACvC;;;OAGG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IAC5B;;;OAGG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAChF;AAED,kEAAkE;AAClE,MAAM,WAAW,2BAA2B;IAC1C,4CAA4C;IAC5C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,qEAAqE;IACrE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,mDAAmD;IACnD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,+CAA+C;IAC/C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,yEAAyE;IACzE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,2BAA2B;IAC1C,6BAA6B;IAC7B,QAAQ,CAAC,IAAI,CAAC,EAAE,oBAAoB,CAAC;CACtC;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;;;;;OAOG;IACH,GAAG,CAAC,CAAC,EACH,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,WAAW,GAAG,SAAS,EAC/B,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACtB,OAAO,CAAC,EAAE,2BAA2B,GACpC,OAAO,CAAC,CAAC,CAAC,CAAC;IACd;;;;OAIG;IACH,OAAO,CACL,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,WAAW,EACpB,OAAO,CAAC,EAAE,2BAA2B,GACpC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,sGAAsG;IACtG,KAAK,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,kFAAkF;IAClF,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IACjC;;;OAGG;IACH,gBAAgB,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,sDAAsD;IACtD,KAAK,IAAI,2BAA2B,CAAC;CACtC;AA6ND;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,4BAA4B,GACnC,sBAAsB,CAsCxB"}
1
+ {"version":3,"file":"outbound-budget.d.ts","sourceRoot":"","sources":["../../src/telegram/outbound-budget.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /** One message-producing call costs one; an empty or malformed array still costs one. */
2
+ export declare function sendCost(method: string, payload: unknown): number;
3
+ /** The chat a call addresses; a Bot API `chat_id` is a number or an `@username`. */
4
+ export declare function chatOf(payload: unknown): string | undefined;
5
+ //# sourceMappingURL=outbound-cost.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outbound-cost.d.ts","sourceRoot":"","sources":["../../src/telegram/outbound-cost.ts"],"names":[],"mappings":"AA2CA,yFAAyF;AACzF,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAMjE;AAED,oFAAoF;AACpF,wBAAgB,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAI3D"}
@@ -0,0 +1,17 @@
1
+ /** When a refusal is read as the bot's own limit rather than one chat's. */
2
+ export interface OutboundPausePolicy {
3
+ readonly tokenPauseChats: number;
4
+ readonly tokenPauseWindowMs: number;
5
+ }
6
+ /** A token's pauses: its own, and one per chat that got a 429. */
7
+ export interface OutboundPauses {
8
+ /** The instant `chat`, or the token when `chat` is undefined, may send again. */
9
+ resumesAt(chat: string | undefined): number;
10
+ pauseToken(milliseconds: number): void;
11
+ /** One chat's refusal, counted towards reading it as the token's. */
12
+ pauseChat(chat: string, milliseconds: number): void;
13
+ pausedForMs(): number;
14
+ pausedChats(): number;
15
+ }
16
+ export declare function createOutboundPauses({ tokenPauseChats, tokenPauseWindowMs }: OutboundPausePolicy, now: () => number, onPause: () => void): OutboundPauses;
17
+ //# sourceMappingURL=outbound-pauses.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outbound-pauses.d.ts","sourceRoot":"","sources":["../../src/telegram/outbound-pauses.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;CACrC;AAED,kEAAkE;AAClE,MAAM,WAAW,cAAc;IAC7B,iFAAiF;IACjF,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;IAC5C,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,qEAAqE;IACrE,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACpD,WAAW,IAAI,MAAM,CAAC;IACtB,WAAW,IAAI,MAAM,CAAC;CACvB;AAED,wBAAgB,oBAAoB,CAClC,EAAE,eAAe,EAAE,kBAAkB,EAAE,EAAE,mBAAmB,EAC5D,GAAG,EAAE,MAAM,MAAM,EACjB,OAAO,EAAE,MAAM,IAAI,GAClB,cAAc,CAkDhB"}
@@ -0,0 +1,17 @@
1
+ import type { TelegramOutboundCallOptions } from './outbound-budget.js';
2
+ import type { OutboundPauses } from './outbound-pauses.js';
3
+ /** One token's waiting calls, granted one interval apart around whatever is paused. */
4
+ export interface OutboundQueue {
5
+ acquire(cost: number, signal?: AbortSignal, options?: TelegramOutboundCallOptions): Promise<void>;
6
+ /** Wake the drain: a pause changed what it was sleeping on. */
7
+ wake(): void;
8
+ wait(milliseconds: number, signal?: AbortSignal): Promise<void>;
9
+ counts(): {
10
+ readonly granted: number;
11
+ readonly messages: number;
12
+ readonly queued: number;
13
+ readonly queuedBulk: number;
14
+ };
15
+ }
16
+ export declare function createOutboundQueue(interval: number, now: () => number, sleepFor: (milliseconds: number, signal?: AbortSignal) => Promise<void>, pauses: OutboundPauses): OutboundQueue;
17
+ //# sourceMappingURL=outbound-queue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outbound-queue.d.ts","sourceRoot":"","sources":["../../src/telegram/outbound-queue.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,2BAA2B,EAAwB,MAAM,mBAAmB,CAAC;AAC3F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAcxD,uFAAuF;AACvF,MAAM,WAAW,aAAa;IAC5B,OAAO,CACL,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,WAAW,EACpB,OAAO,CAAC,EAAE,2BAA2B,GACpC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,+DAA+D;IAC/D,IAAI,IAAI,IAAI,CAAC;IACb,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,MAAM,IAAI;QACR,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;KAC7B,CAAC;CACH;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,MAAM,EACjB,QAAQ,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,EACvE,MAAM,EAAE,cAAc,GACrB,aAAa,CAwLf"}
@@ -1,4 +1,4 @@
1
- import { type AttributionData, type UtmData } from './schemas.js';
1
+ import type { AttributionData, UtmData } from './schemas.js';
2
2
  /** A referrer hostname pattern and the source/medium it stands for. */
3
3
  export interface ReferrerRule {
4
4
  pattern: RegExp;
@@ -1 +1 @@
1
- {"version":3,"file":"attribution.d.ts","sourceRoot":"","sources":["../../src/tracking/attribution.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,eAAe,EAAyB,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AAEtF,uEAAuE;AACvE,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACpC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,uBAAuB;IACtC,+CAA+C;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,2BAA2B;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,2BAA2B;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,6EAA6E;IAC7E,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,kBAAkB,CAAC;IAC5B;;;;;OAKG;IACH,WAAW,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IACtC,mDAAmD;IACnD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,eAAe,CAAC;IAC5B,YAAY,EAAE,eAAe,CAAC;CAC/B;AAcD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAWjE;AAED,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,MAAM,EACvB,WAAW,GAAE,SAAS,YAAY,EAAO,GACxC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAY3C;AAmCD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,WAAgB,EAChB,UAAmC,EACnC,KAAgC,EAChC,GAAgB,GACjB,EAAE,uBAAuB,GAAG,mBAAmB,CAwC/C"}
1
+ {"version":3,"file":"attribution.d.ts","sourceRoot":"","sources":["../../src/tracking/attribution.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE1D,uEAAuE;AACvE,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACpC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,uBAAuB;IACtC,+CAA+C;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,2BAA2B;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,2BAA2B;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,6EAA6E;IAC7E,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,kBAAkB,CAAC;IAC5B;;;;;OAKG;IACH,WAAW,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IACtC,mDAAmD;IACnD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,eAAe,CAAC;IAC5B,YAAY,EAAE,eAAe,CAAC;CAC/B;AA2DD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAWjE;AAED,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,MAAM,EACvB,WAAW,GAAE,SAAS,YAAY,EAAO,GACxC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAY3C;AAmCD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,WAAgB,EAChB,UAAmC,EACnC,KAAgC,EAChC,GAAgB,GACjB,EAAE,uBAAuB,GAAG,mBAAmB,CAwC/C"}
@@ -7,7 +7,7 @@ import type { Draft } from './client.js';
7
7
  import { deliverTrackingBatch } from './delivery.js';
8
8
  import type { TrackingHost } from './host.js';
9
9
  import type { TrackingOutbox, TrackingQueuedEvent } from './outbox.js';
10
- import type { TrackEventsRequest, TrackEventsResponse, TrackingEventEnvelope, VisitBootstrapResponse, VisitEntryContext } from './schemas.js';
10
+ import type { TrackEventsRequest, TrackEventsResponse, TrackingEventEnvelope, UtmData, VisitBootstrapResponse, VisitEntryContext } from './schemas.js';
11
11
  import { createSequenceReserve } from './sequence-reserve.js';
12
12
  /** What one tab knows about its visit, shared by bootstrap, delivery and the unload path. */
13
13
  export interface VisitState {
@@ -45,6 +45,8 @@ export declare function createOutboxFlusher<TEvent extends TrackingQueuedEvent>(
45
45
  }): () => Promise<void>;
46
46
  /** The shared sequence source is the outbox; without one, the per-tab fallback is the design. */
47
47
  export declare function createVisitSequences(outbox: Pick<TrackingOutbox, 'reserveSequences'> | undefined, visit: VisitState, options: Parameters<typeof createSequenceReserve>[1], fail: (what: string, error: unknown) => void): import("./sequence-reserve.js").SequenceReserve;
48
+ /** Campaign tags arrive in a URL anyone can write, secrets included. */
49
+ export declare function redactedUtm(utm: UtmData): UtmData;
48
50
  export declare function pageAttribution(host: TrackingHost, storage: NonNullable<TrackingHost['storage']>, referrerMap: readonly ReferrerRule[] | undefined, search: string, pathname: string): ResolvedAttribution;
49
51
  /** A page view; the referrer belongs to the first view of the visit only. */
50
52
  export declare function pageViewDraft<TType extends string>(host: TrackingHost, type: TType, pathname: string, previous: string | null): Draft<TType>;
@@ -1 +1 @@
1
- {"version":3,"file":"client-visit.d.ts","sourceRoot":"","sources":["../../src/tracking/client-visit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client-visit.d.ts","sourceRoot":"","sources":["../../src/tracking/client-visit.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,mBAAmB,EAEzB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAEpE,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,OAAO,EACP,sBAAsB,EACtB,iBAAiB,EAClB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,6FAA6F;AAC7F,MAAM,WAAW,UAAU;IACzB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,eAAe,EAAE,OAAO,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;CAC9C;AAED,KAAK,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;AAEnD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,SAAS,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;QACrE,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;KACjC,CAAC;IACF,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC;IAC3E,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC;IAC7D,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAAC;IACjF,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,kBAAkB,EACxB,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAgDxB;AAOD,wBAAgB,mBAAmB,CAAC,MAAM,SAAS,mBAAmB,EAAE,IAAI,EAAE;IAC5E,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IACpD,WAAW,IAAI,OAAO,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAAC;IAC/D,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;CACrB,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CA+BtB;AAED,iGAAiG;AACjG,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,kBAAkB,CAAC,GAAG,SAAS,EAC5D,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC,CAAC,CAAC,EACpD,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,gDAmB7C;AAED,wEAAwE;AACxE,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAIjD;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,YAAY,EAClB,OAAO,EAAE,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAC7C,WAAW,EAAE,SAAS,YAAY,EAAE,GAAG,SAAS,EAChD,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,mBAAmB,CAWrB;AAED,6EAA6E;AAC7E,wBAAgB,aAAa,CAAC,KAAK,SAAS,MAAM,EAChD,IAAI,EAAE,YAAY,EAClB,IAAI,EAAE,KAAK,EACX,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,GACtB,KAAK,CAAC,KAAK,CAAC,CAad;AAED,wFAAwF;AACxF,wBAAsB,cAAc,CAAC,KAAK,SAAS,MAAM,EAAE,MAAM,EAC/D,MAAM,EAAE,SAAS,KAAK,CAAC,KAAK,CAAC,EAAE,EAC/B,WAAW,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,MAAM,GAAG,IAAI,EACnD,SAAS,EAAE;IAAE,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,CAAA;CAAE,GACxC,OAAO,CAAC,MAAM,EAAE,CAAC,CAWnB;AAED,qGAAqG;AACrG,wBAAsB,oBAAoB,CAAC,MAAM,SAAS,qBAAqB,CAAC,MAAM,CAAC,EACrF,MAAM,EAAE;IACN,OAAO,CAAC,OAAO,EAAE,kBAAkB,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC3E,cAAc,CAAC,EAAE,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;CAC/E,EACD,OAAO,EAAE,kBAAkB,CAAC,MAAM,CAAC,EACnC,IAAI,EAAE,IAAI,GACT,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAUrC"}
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/tracking/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/tracking/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ export declare function isLabUserAgent(userAgent: string): boolean;
2
+ /** The part of `web-vitals` this uses, so the declarations do not need the peer. */
3
+ export interface VitalsMetric {
4
+ readonly name: string;
5
+ readonly value: number;
6
+ readonly navigationType?: string;
7
+ }
8
+ export type VitalsObserver = (report: (metric: VitalsMetric) => void, options?: {
9
+ reportAllChanges?: boolean;
10
+ }) => void;
11
+ export interface VitalsLibrary {
12
+ onLCP: VitalsObserver;
13
+ onINP: VitalsObserver;
14
+ onCLS: VitalsObserver;
15
+ onFCP: VitalsObserver;
16
+ onTTFB: VitalsObserver;
17
+ }
18
+ /** What the collector needs from a page. */
19
+ export interface PerformanceHost {
20
+ readonly userAgent: string;
21
+ /** `navigator.webdriver`: a browser under automation. */
22
+ readonly automated: boolean;
23
+ readonly mobile: boolean;
24
+ now(): number;
25
+ route(): string;
26
+ /** Runs `work` once the page has loaded and the main thread is idle. */
27
+ afterLoad(work: () => void): void;
28
+ /** Runs `work` every time the page may be going away. */
29
+ onHidden(work: () => void): void;
30
+ after(delayMs: number, work: () => void): void;
31
+ beacon(url: string, body: string): boolean;
32
+ storage: Pick<Storage, 'getItem' | 'setItem' | 'removeItem'> | undefined;
33
+ }
34
+ export interface PerformanceCollectorConfig {
35
+ /** The build that served the page. */
36
+ buildId: string;
37
+ /**
38
+ * Where `sendBeacon` posts one sample as a JSON string, sent as `text/plain`:
39
+ * the one type a closing page can deliver to another origin. Declare the endpoint
40
+ * `safelistedBody: true`.
41
+ */
42
+ url: string;
43
+ /** The visit this load belongs to, when the application has one. */
44
+ visitId?: () => string | null;
45
+ /** When the `early` sample leaves, after the library has loaded. Default 5000 ms. */
46
+ earlyDelayMs?: number;
47
+ /** Test seam. Default: the real page. */
48
+ host?: PerformanceHost;
49
+ /** Test seam. Default: `import('web-vitals')`. */
50
+ loadVitals?: () => Promise<VitalsLibrary>;
51
+ }
52
+ export interface PerformanceCollector {
53
+ /** Stop sending, and let a later call start again. Observers of `web-vitals` live on. */
54
+ stop(): void;
55
+ }
56
+ /**
57
+ * Start collecting on this page, and only on a page: on a server, for a lab agent
58
+ * or under automation it returns an inert collector and sends nothing.
59
+ */
60
+ export declare function createPerformanceCollector(config: PerformanceCollectorConfig): PerformanceCollector;
61
+ //# sourceMappingURL=collector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collector.d.ts","sourceRoot":"","sources":["../../../src/tracking/performance/collector.ts"],"names":[],"mappings":"AAiCA,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED,oFAAoF;AACpF,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,MAAM,cAAc,GAAG,CAC3B,MAAM,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,EACtC,OAAO,CAAC,EAAE;IAAE,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAE,KACrC,IAAI,CAAC;AAEV,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,cAAc,CAAC;IACtB,KAAK,EAAE,cAAc,CAAC;IACtB,KAAK,EAAE,cAAc,CAAC;IACtB,KAAK,EAAE,cAAc,CAAC;IACtB,MAAM,EAAE,cAAc,CAAC;CACxB;AAED,4CAA4C;AAC5C,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,yDAAyD;IACzD,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,GAAG,IAAI,MAAM,CAAC;IACd,KAAK,IAAI,MAAM,CAAC;IAChB,wEAAwE;IACxE,SAAS,CAAC,IAAI,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IAClC,yDAAyD;IACzD,QAAQ,CAAC,IAAI,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IACjC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IAC/C,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3C,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,YAAY,CAAC,GAAG,SAAS,CAAC;CAC1E;AAED,MAAM,WAAW,0BAA0B;IACzC,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ,oEAAoE;IACpE,OAAO,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAC9B,qFAAqF;IACrF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yCAAyC;IACzC,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,kDAAkD;IAClD,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,oBAAoB;IACnC,yFAAyF;IACzF,IAAI,IAAI,IAAI,CAAC;CACd;AA6ED;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,0BAA0B,GACjC,oBAAoB,CA2FtB"}
@@ -0,0 +1,45 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * The five Web Vitals of one page load. A metric that did not arrive is `null`,
4
+ * never zero: a zero LCP would pull an average down with a page that never
5
+ * painted, and nothing downstream could tell them apart.
6
+ */
7
+ export declare const PerformanceVitalsSchema: z.ZodObject<{
8
+ lcpMs: z.ZodNullable<z.ZodNumber>;
9
+ inpMs: z.ZodNullable<z.ZodNumber>;
10
+ fcpMs: z.ZodNullable<z.ZodNumber>;
11
+ ttfbMs: z.ZodNullable<z.ZodNumber>;
12
+ cls: z.ZodNullable<z.ZodNumber>;
13
+ }, z.core.$strip>;
14
+ export type PerformanceVitals = z.infer<typeof PerformanceVitalsSchema>;
15
+ /**
16
+ * One page load as measured in a real browser. `id` is the same for every sample
17
+ * of that load: `early` arrives while the visitor reads, `final` as the page goes,
18
+ * and the later one replaces the earlier in an application's table.
19
+ */
20
+ export declare const PerformanceSampleSchema: z.ZodObject<{
21
+ schemaVersion: z.ZodLiteral<1>;
22
+ id: z.ZodString;
23
+ kind: z.ZodEnum<{
24
+ early: "early";
25
+ final: "final";
26
+ }>;
27
+ route: z.ZodString;
28
+ buildId: z.ZodString;
29
+ visitId: z.ZodNullable<z.ZodString>;
30
+ deviceClass: z.ZodEnum<{
31
+ desktop: "desktop";
32
+ mobile: "mobile";
33
+ }>;
34
+ navigationType: z.ZodNullable<z.ZodString>;
35
+ vitals: z.ZodObject<{
36
+ lcpMs: z.ZodNullable<z.ZodNumber>;
37
+ inpMs: z.ZodNullable<z.ZodNumber>;
38
+ fcpMs: z.ZodNullable<z.ZodNumber>;
39
+ ttfbMs: z.ZodNullable<z.ZodNumber>;
40
+ cls: z.ZodNullable<z.ZodNumber>;
41
+ }, z.core.$strip>;
42
+ capturedAt: z.ZodNumber;
43
+ }, z.core.$strip>;
44
+ export type PerformanceSample = z.infer<typeof PerformanceSampleSchema>;
45
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/tracking/performance/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB;;;;GAIG;AACH,eAAO,MAAM,uBAAuB;;;;;;iBAMlC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE;;;;GAIG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;iBAYlC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ export interface PerformanceMetricSummary {
2
+ /** Samples that carried the metric. A `null` is a missing value, not a fast one. */
3
+ readonly samples: number;
4
+ readonly p75: number | null;
5
+ /** `null` below `minSamples`, so a thin route shows no number rather than a wrong one. */
6
+ readonly p95: number | null;
7
+ }
8
+ /** The figures a report may print for one metric of many samples. */
9
+ export declare function summarizePerformanceMetric(values: readonly (number | null)[], options?: {
10
+ readonly minSamples?: number;
11
+ }): PerformanceMetricSummary;
12
+ //# sourceMappingURL=summary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summary.d.ts","sourceRoot":"","sources":["../../../src/tracking/performance/summary.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,wBAAwB;IACvC,oFAAoF;IACpF,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,0FAA0F;IAC1F,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAOD,qEAAqE;AACrE,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,EAClC,OAAO,GAAE;IAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAO,GAC7C,wBAAwB,CAQ1B"}
@@ -0,0 +1,5 @@
1
+ /** Mask secrets in a URL, a query string or free text, cut to 16 KiB. */
2
+ export declare function redactTrackingText(input: string): string;
3
+ /** The same rule through a value of any shape: a secret key masks whatever it holds. */
4
+ export declare function redactTrackingValue(value: unknown): unknown;
5
+ //# sourceMappingURL=privacy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"privacy.d.ts","sourceRoot":"","sources":["../../src/tracking/privacy.ts"],"names":[],"mappings":"AA0FA,yEAAyE;AACzE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAyBxD;AAED,wFAAwF;AACxF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAY3D"}