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.
- package/CHANGELOG.md +42 -0
- package/dist/agent-runtime/run-acquisition.d.ts +9 -2
- package/dist/agent-runtime/run-acquisition.d.ts.map +1 -1
- package/dist/agent-runtime/run-execution.d.ts +3 -0
- package/dist/agent-runtime/run-execution.d.ts.map +1 -1
- package/dist/agent-runtime/run-failure.d.ts +4 -1
- package/dist/agent-runtime/run-failure.d.ts.map +1 -1
- package/dist/agent-runtime/run-store-retry.d.ts +8 -0
- package/dist/agent-runtime/run-store-retry.d.ts.map +1 -0
- package/dist/agent-runtime/run-terminal.d.ts.map +1 -1
- package/dist/agent-runtime/run-unacquired.d.ts +19 -0
- package/dist/agent-runtime/run-unacquired.d.ts.map +1 -0
- package/dist/agent-runtime/store-conformance.d.ts +8 -0
- package/dist/agent-runtime/store-conformance.d.ts.map +1 -1
- package/dist/agent-runtime/store-driver-contract.d.ts +5 -0
- package/dist/agent-runtime/store-driver-contract.d.ts.map +1 -1
- package/dist/agent-runtime/terminal-commit.d.ts +34 -4
- package/dist/agent-runtime/terminal-commit.d.ts.map +1 -1
- package/dist/entrypoints/agent-runtime/harness.js +2 -2
- package/dist/entrypoints/agent-runtime/sqlite/bun.js +3 -3
- package/dist/entrypoints/agent-runtime/sqlite/node.js +3 -3
- package/dist/entrypoints/agent-runtime/testing.js +22 -4
- package/dist/entrypoints/agent-runtime.d.ts +1 -1
- package/dist/entrypoints/agent-runtime.d.ts.map +1 -1
- package/dist/entrypoints/agent-runtime.js +13 -11
- package/dist/entrypoints/application/diagnostic-journal.js +1 -1
- package/dist/entrypoints/application/directory-inbox.js +3 -3
- package/dist/entrypoints/cli/publish.js +2 -2
- package/dist/entrypoints/files.js +2 -2
- package/dist/entrypoints/primitives.js +51 -154
- package/dist/entrypoints/server.js +6 -6
- package/dist/entrypoints/telegram.d.ts +1 -1
- package/dist/entrypoints/telegram.d.ts.map +1 -1
- package/dist/entrypoints/telegram.js +196 -76
- package/dist/entrypoints/tracking/contract.d.ts +11 -0
- package/dist/entrypoints/tracking/contract.d.ts.map +1 -0
- package/dist/entrypoints/tracking/contract.js +162 -0
- package/dist/entrypoints/tracking/performance.d.ts +8 -0
- package/dist/entrypoints/tracking/performance.d.ts.map +1 -0
- package/dist/entrypoints/tracking/performance.js +181 -0
- package/dist/entrypoints/tracking/server.d.ts +1 -0
- package/dist/entrypoints/tracking/server.d.ts.map +1 -1
- package/dist/entrypoints/tracking/server.js +40 -12
- package/dist/entrypoints/tracking.d.ts +4 -3
- package/dist/entrypoints/tracking.d.ts.map +1 -1
- package/dist/entrypoints/tracking.js +43 -143
- package/dist/entrypoints/xlsx.d.ts +4 -0
- package/dist/entrypoints/xlsx.d.ts.map +1 -0
- package/dist/entrypoints/xlsx.js +406 -0
- package/dist/{index-fa435yq2.js → index-073nw9qr.js} +8 -8
- package/dist/index-1f40z584.js +7 -0
- package/dist/{index-fdk4r4r6.js → index-75ns2ybj.js} +1 -1
- package/dist/{index-jq2ky8fw.js → index-cycp3r3e.js} +124 -181
- package/dist/{index-4g6qmgdx.js → index-ghtpfz4z.js} +9 -9
- package/dist/{index-n3v695sb.js → index-hdjmdwsj.js} +277 -96
- package/dist/{index-zqkz4af9.js → index-nqxrm176.js} +1 -1
- package/dist/index-qezhmp51.js +242 -0
- package/dist/index-vv1sch8a.js +94 -0
- package/dist/{index-fggxgbrk.js → index-xx1j310k.js} +165 -102
- package/dist/internal/exclusive-lock.d.ts.map +1 -1
- package/dist/primitives/decimal.d.ts +10 -0
- package/dist/primitives/decimal.d.ts.map +1 -1
- package/dist/primitives/index.d.ts +3 -1
- package/dist/primitives/index.d.ts.map +1 -1
- package/dist/primitives/money.d.ts +20 -0
- package/dist/primitives/money.d.ts.map +1 -1
- package/dist/primitives/quantity.d.ts.map +1 -1
- package/dist/primitives/rounding.d.ts +40 -0
- package/dist/primitives/rounding.d.ts.map +1 -0
- package/dist/telegram/budget-transformer.d.ts +2 -2
- package/dist/telegram/not-dispatched.d.ts +2 -2
- package/dist/telegram/not-dispatched.d.ts.map +1 -1
- package/dist/telegram/outbound-budget.d.ts +53 -16
- package/dist/telegram/outbound-budget.d.ts.map +1 -1
- package/dist/telegram/outbound-cost.d.ts +5 -0
- package/dist/telegram/outbound-cost.d.ts.map +1 -0
- package/dist/telegram/outbound-pauses.d.ts +17 -0
- package/dist/telegram/outbound-pauses.d.ts.map +1 -0
- package/dist/telegram/outbound-queue.d.ts +17 -0
- package/dist/telegram/outbound-queue.d.ts.map +1 -0
- package/dist/tracking/attribution.d.ts +1 -1
- package/dist/tracking/attribution.d.ts.map +1 -1
- package/dist/tracking/client-visit.d.ts +3 -1
- package/dist/tracking/client-visit.d.ts.map +1 -1
- package/dist/tracking/client.d.ts.map +1 -1
- package/dist/tracking/performance/collector.d.ts +61 -0
- package/dist/tracking/performance/collector.d.ts.map +1 -0
- package/dist/tracking/performance/schema.d.ts +45 -0
- package/dist/tracking/performance/schema.d.ts.map +1 -0
- package/dist/tracking/performance/summary.d.ts +12 -0
- package/dist/tracking/performance/summary.d.ts.map +1 -0
- package/dist/tracking/privacy.d.ts +5 -0
- package/dist/tracking/privacy.d.ts.map +1 -0
- package/dist/tracking/server/telemetry-health.d.ts +31 -0
- package/dist/tracking/server/telemetry-health.d.ts.map +1 -0
- package/dist/xlsx/cells.d.ts +17 -0
- package/dist/xlsx/cells.d.ts.map +1 -0
- package/dist/xlsx/render.d.ts +11 -0
- package/dist/xlsx/render.d.ts.map +1 -0
- package/dist/xlsx/schema.d.ts +119 -0
- package/dist/xlsx/schema.d.ts.map +1 -0
- package/dist/xlsx/zip.d.ts +13 -0
- package/dist/xlsx/zip.d.ts.map +1 -0
- package/llms/agent-runtime.2.txt +40 -16
- package/llms/agent-runtime.3.txt +17 -0
- package/llms/agent-runtime.txt +4 -1
- package/llms/primitives.txt +21 -0
- package/llms/stitchkit.txt +9 -6
- package/llms/telegram.txt +32 -12
- package/llms/tracking-contract.txt +32 -0
- package/llms/tracking-performance.txt +21 -0
- package/llms/tracking-server.txt +1 -0
- package/llms/tracking.txt +75 -12
- package/llms/{upgrading-0.105.0-0.116.0.txt → upgrading-0.105.0-0.117.0.txt} +50 -3
- package/llms/upgrading.txt +1 -1
- package/llms/xlsx.txt +107 -0
- package/llms-full.txt +355 -31
- package/llms.txt +11 -7
- package/package.json +27 -9
- 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":"
|
|
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;
|
|
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;
|
|
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
|
|
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
|
|
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,
|
|
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;
|
|
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
|
|
22
|
-
* fallback when it stated none)
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
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
|
|
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
|
|
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
|
|
84
|
-
* the Bot API's `{ ok: false, … }` body, as a client transformer's `send`
|
|
85
|
-
*
|
|
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
|
-
*
|
|
101
|
-
* is
|
|
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
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attribution.d.ts","sourceRoot":"","sources":["../../src/tracking/attribution.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
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":"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;
|
|
1
|
+
{"version":3,"file":"client-visit.d.ts","sourceRoot":"","sources":["../../src/tracking/client-visit.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/tracking/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEvE,OAAO,KAAK,EAAE,0BAA0B,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/tracking/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEvE,OAAO,KAAK,EAAE,0BAA0B,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAanF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EAErB,sBAAsB,EACtB,iBAAiB,EAClB,MAAM,WAAW,CAAC;AAInB,wFAAwF;AACxF,MAAM,WAAW,yBAAyB,CAAC,KAAK,SAAS,MAAM;IAC7D,QAAQ,EAAE,KAAK,CAAC;IAChB,SAAS,EAAE,KAAK,CAAC;IACjB,WAAW,EAAE,KAAK,CAAC;IACnB,SAAS,EAAE,KAAK,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;IACb,aAAa,EAAE,KAAK,CAAC;IACrB,WAAW,EAAE,KAAK,CAAC;CACpB;AAED,2DAA2D;AAC3D,eAAO,MAAM,iCAAiC;uBAClC,WAAW;wBACV,YAAY;0BACV,cAAc;wBAChB,mBAAmB;oBACvB,OAAO;4BACC,gBAAgB;0BAClB,aAAa;CAC0B,CAAC;AAEvD,2EAA2E;AAC3E,MAAM,MAAM,qBAAqB,CAAC,SAAS,IAAI;KAC5C,CAAC,IAAI,MAAM,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,SAAS,GAAG,CAAC,GAAG,KAAK;CAC5E,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC;AAC5B,qEAAqE;AACrE,MAAM,MAAM,kBAAkB,CAAC,SAAS,IAAI;KACzC,CAAC,IAAI,MAAM,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,CAAC;CAC5E,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC;AAE5B,sGAAsG;AACtG,MAAM,WAAW,OAAO,CAAC,SAAS;IAChC,CAAC,CAAC,SAAS,qBAAqB,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;IAC5D,CAAC,CAAC,SAAS,kBAAkB,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;CAClF;AAED,MAAM,WAAW,oBAAoB,CACnC,SAAS,SAAS,MAAM,EACxB,MAAM,SAAS,qBAAqB,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,qBAAqB,CACpF,MAAM,SAAS,GAAG,MAAM,CACzB;IAED,IAAI,EAAE,YAAY,CAAC;IACnB,+DAA+D;IAC/D,OAAO,EAAE,MAAM,CAAC;IAChB,sEAAsE;IACtE,OAAO,EAAE,yBAAyB,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC;IAC7D,oEAAoE;IACpE,SAAS,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACzE;;;OAGG;IACH,OAAO,EAAE,CAAC,OAAO,EAAE,kBAAkB,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC/E;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,qBAAqB,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,MAAM,CAAC;IAC9E;;;;OAIG;IACH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,kBAAkB,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC;IAC1D,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6EAA6E;IAC7E,MAAM,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IAChC,8DAA8D;IAC9D,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACxC,0EAA0E;IAC1E,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACnD,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IACvC,WAAW,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IACtC,eAAe,CAAC,EAAE,sBAAsB,CAAC;IACzC,kGAAkG;IAClG,UAAU,CAAC,EAAE,0BAA0B,CAAC,YAAY,CAAC,CAAC;IACtD,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,gDAAgD;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iFAAiF;IACjF,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kEAAkE;IAClE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACtD;AAED,MAAM,WAAW,cAAc,CAAC,SAAS,SAAS,MAAM;IACtD,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC1B,sFAAsF;IACtF,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACnD,yEAAyE;IACzE,KAAK,IAAI,MAAM,IAAI,CAAC;IACpB,OAAO,IAAI,MAAM,GAAG,IAAI,CAAC;IACzB,eAAe,IAAI,MAAM,GAAG,IAAI,CAAC;IACjC,8FAA8F;IAC9F,WAAW,IAAI,mBAAmB,GAAG,IAAI,CAAC;CAC3C;AAED,MAAM,MAAM,KAAK,CAAC,KAAK,SAAS,MAAM,IAAI,IAAI,CAC5C,qBAAqB,CAAC,KAAK,CAAC,EAC5B,SAAS,GAAG,SAAS,GAAG,iBAAiB,GAAG,iBAAiB,CAC9D,CAAC;AA4CF,wBAAgB,oBAAoB,CAClC,SAAS,SAAS,MAAM,EACxB,MAAM,SAAS,qBAAqB,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,qBAAqB,CACpF,MAAM,SAAS,GAAG,MAAM,CACzB,EACD,MAAM,EAAE,oBAAoB,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC,CAiM5E"}
|
|
@@ -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"}
|