@happyvertical/smrt-sales 0.40.9 → 0.40.11
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/AGENTS.md +2 -1
- package/dist/agreements.js +1 -1
- package/dist/chunks/__smrt-register__-CPynA4ag.js +6 -0
- package/dist/chunks/{__smrt-register__-D08SaNJE.js.map → __smrt-register__-CPynA4ag.js.map} +1 -1
- package/dist/chunks/{referrals-BXqD65KR.js → referrals-CJUOZxpa.js} +429 -74
- package/dist/chunks/referrals-CJUOZxpa.js.map +1 -0
- package/dist/commissions.js +1 -1
- package/dist/crm.js +1 -1
- package/dist/index.js +3 -3
- package/dist/manifest.json +3122 -2795
- package/dist/referrals/collections/ReferralClickOperationCollection.d.ts +29 -0
- package/dist/referrals/collections/ReferralClickOperationCollection.d.ts.map +1 -0
- package/dist/referrals/collections/ReferralLinkCollection.d.ts +56 -5
- package/dist/referrals/collections/ReferralLinkCollection.d.ts.map +1 -1
- package/dist/referrals/index.d.ts +1 -1
- package/dist/referrals/index.d.ts.map +1 -1
- package/dist/referrals/models/ReferralClickOperation.d.ts +39 -0
- package/dist/referrals/models/ReferralClickOperation.d.ts.map +1 -0
- package/dist/referrals/models/ReferralLink.d.ts +3 -2
- package/dist/referrals/models/ReferralLink.d.ts.map +1 -1
- package/dist/referrals.js +3 -3
- package/dist/smrt-knowledge.json +1909 -1827
- package/package.json +6 -6
- package/dist/chunks/__smrt-register__-D08SaNJE.js +0 -6
- package/dist/chunks/referrals-BXqD65KR.js.map +0 -1
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { SmrtCollection } from '@happyvertical/smrt-core';
|
|
2
|
+
import { ReferralClickOperation } from '../models/ReferralClickOperation.js';
|
|
3
|
+
export interface ClaimReferralClickOperationInput {
|
|
4
|
+
operationId: string;
|
|
5
|
+
tenantId: string | null;
|
|
6
|
+
keyHash: string;
|
|
7
|
+
linkId: string;
|
|
8
|
+
touchId: string;
|
|
9
|
+
intentHash: string;
|
|
10
|
+
callerEvidenceHash: string;
|
|
11
|
+
requestedOccurredAt: string;
|
|
12
|
+
}
|
|
13
|
+
export interface ClaimReferralClickOperationResult {
|
|
14
|
+
operation: ReferralClickOperation | null;
|
|
15
|
+
claimed: boolean;
|
|
16
|
+
}
|
|
17
|
+
export declare class ReferralClickOperationCollection extends SmrtCollection<ReferralClickOperation> {
|
|
18
|
+
static readonly _itemClass: typeof ReferralClickOperation;
|
|
19
|
+
/** Tenant-filtered lookup; a foreign operation payload remains invisible. */
|
|
20
|
+
findByOperationId(operationId: string): Promise<ReferralClickOperation | null>;
|
|
21
|
+
/**
|
|
22
|
+
* Claim the deterministic operation UUID without changing a winner.
|
|
23
|
+
* Must run in the transaction that creates the touch and increments the
|
|
24
|
+
* link counter.
|
|
25
|
+
*/
|
|
26
|
+
claim(input: ClaimReferralClickOperationInput): Promise<ClaimReferralClickOperationResult>;
|
|
27
|
+
}
|
|
28
|
+
export default ReferralClickOperationCollection;
|
|
29
|
+
//# sourceMappingURL=ReferralClickOperationCollection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReferralClickOperationCollection.d.ts","sourceRoot":"","sources":["../../../src/referrals/collections/ReferralClickOperationCollection.ts"],"names":[],"mappings":"AAAA,uEAAuE;AAEvE,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAE7E,MAAM,WAAW,gCAAgC;IAC/C,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,iCAAiC;IAChD,SAAS,EAAE,sBAAsB,GAAG,IAAI,CAAC;IACzC,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,qBAAa,gCAAiC,SAAQ,cAAc,CAAC,sBAAsB,CAAC;IAC1F,MAAM,CAAC,QAAQ,CAAC,UAAU,gCAA0B;IAEpD,6EAA6E;IACvE,iBAAiB,CACrB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC;IAIzC;;;;OAIG;IACG,KAAK,CACT,KAAK,EAAE,gCAAgC,GACtC,OAAO,CAAC,iCAAiC,CAAC;CA0B9C;AAED,eAAe,gCAAgC,CAAC"}
|
|
@@ -7,6 +7,10 @@ export declare const REFERRAL_CODE_LENGTH = 10;
|
|
|
7
7
|
export declare const REFERRAL_CODE_ALPHABET = "abcdefghijklmnopqrstuvwxyz0123456789";
|
|
8
8
|
/** Attempts before {@link ReferralLinkCollection.createWithUniqueCode} gives up. */
|
|
9
9
|
export declare const MAX_CODE_GENERATION_ATTEMPTS = 5;
|
|
10
|
+
/** Default UTF-8 byte ceiling for the exact persisted click evidence JSON. */
|
|
11
|
+
export declare const DEFAULT_REFERRAL_CLICK_EVIDENCE_MAX_BYTES = 4096;
|
|
12
|
+
/** Maximum UTF-8 size of a caller-supplied replay key. */
|
|
13
|
+
export declare const MAX_REFERRAL_CLICK_IDEMPOTENCY_KEY_BYTES = 256;
|
|
10
14
|
/**
|
|
11
15
|
* Generate a crypto-random share code: {@link REFERRAL_CODE_LENGTH}
|
|
12
16
|
* characters drawn uniformly from {@link REFERRAL_CODE_ALPHABET} via
|
|
@@ -40,12 +44,33 @@ export interface RecordClickResult {
|
|
|
40
44
|
link: ReferralLink | null;
|
|
41
45
|
touch: ReferralTouch | null;
|
|
42
46
|
refused?: RecordClickRefusal;
|
|
47
|
+
/** Stable key used for a successful click (generated when omitted). */
|
|
48
|
+
idempotencyKey?: string;
|
|
49
|
+
/** `true` when this call returned the already-committed touch. */
|
|
50
|
+
replayed?: boolean;
|
|
43
51
|
}
|
|
44
52
|
/** Input for {@link ReferralLinkCollection.recordClick}. */
|
|
45
53
|
export interface RecordClickInput {
|
|
46
54
|
code: string;
|
|
47
|
-
/**
|
|
55
|
+
/**
|
|
56
|
+
* Stable caller replay key. Retries must reuse the exact value. When
|
|
57
|
+
* omitted, Sales generates a unique one-shot UUID for backward
|
|
58
|
+
* compatibility and returns it in the successful result. Supplied keys
|
|
59
|
+
* must be well-formed Unicode and at most 256 UTF-8 bytes.
|
|
60
|
+
*/
|
|
61
|
+
idempotencyKey?: string;
|
|
62
|
+
/**
|
|
63
|
+
* Extra evidence merged into the touch JSON (UA, IP hash, …). Sales owns
|
|
64
|
+
* and overwrites the reserved `code`, `linkId`, and `targetUrl` keys.
|
|
65
|
+
*/
|
|
48
66
|
evidence?: Record<string, unknown>;
|
|
67
|
+
/**
|
|
68
|
+
* Creation-time UTF-8 byte ceiling for the FINAL persisted JSON envelope,
|
|
69
|
+
* including Sales-owned `code`, `linkId`, and `targetUrl`. Defaults to
|
|
70
|
+
* {@link DEFAULT_REFERRAL_CLICK_EVIDENCE_MAX_BYTES}; an exact committed
|
|
71
|
+
* replay does not reapply a later invocation's ceiling.
|
|
72
|
+
*/
|
|
73
|
+
maxEvidenceBytes?: number;
|
|
49
74
|
/** When the click occurred; defaults to now. */
|
|
50
75
|
occurredAt?: Date;
|
|
51
76
|
/**
|
|
@@ -58,6 +83,22 @@ export interface RecordClickInput {
|
|
|
58
83
|
subjectKind?: string;
|
|
59
84
|
subjectId?: string;
|
|
60
85
|
}
|
|
86
|
+
export type ReferralClickReplayMismatchField = 'idempotencyKey' | 'tenantId' | 'code' | 'linkId' | 'targetUrl' | 'referrerId' | 'programId' | 'subjectKind' | 'subjectId' | 'occurredAt' | 'evidence' | 'intent';
|
|
87
|
+
/** Typed fail-closed result for a replay key reused with another click. */
|
|
88
|
+
export declare class ReferralClickReplayConflictError extends Error {
|
|
89
|
+
readonly idempotencyKey: string;
|
|
90
|
+
readonly mismatches: readonly ReferralClickReplayMismatchField[];
|
|
91
|
+
readonly code: "REFERRAL_CLICK_REPLAY_CONFLICT";
|
|
92
|
+
constructor(idempotencyKey: string, mismatches: readonly ReferralClickReplayMismatchField[]);
|
|
93
|
+
}
|
|
94
|
+
export type ReferralClickValidationReason = 'invalid_idempotency_key' | 'invalid_occurred_at' | 'invalid_evidence' | 'invalid_max_evidence_bytes' | 'evidence_too_large' | 'transaction_unavailable' | 'operation_link_missing' | 'operation_touch_missing' | 'link_update_conflict';
|
|
95
|
+
/** Actionable validation/integrity error raised without a partial click. */
|
|
96
|
+
export declare class ReferralClickValidationError extends Error {
|
|
97
|
+
readonly reason: ReferralClickValidationReason;
|
|
98
|
+
readonly details?: Readonly<Record<string, number | string>> | undefined;
|
|
99
|
+
readonly code: "REFERRAL_CLICK_VALIDATION_ERROR";
|
|
100
|
+
constructor(reason: ReferralClickValidationReason, message: string, details?: Readonly<Record<string, number | string>> | undefined);
|
|
101
|
+
}
|
|
61
102
|
export declare class ReferralLinkCollection extends SmrtCollection<ReferralLink> {
|
|
62
103
|
static readonly _itemClass: typeof ReferralLink;
|
|
63
104
|
/** All links for a referrer, newest first. */
|
|
@@ -79,10 +120,16 @@ export declare class ReferralLinkCollection extends SmrtCollection<ReferralLink>
|
|
|
79
120
|
*/
|
|
80
121
|
createWithUniqueCode(input: CreateReferralLinkInput): Promise<ReferralLink>;
|
|
81
122
|
/**
|
|
82
|
-
* Record a click on a share code
|
|
83
|
-
* {@link ReferralLink.clickCount}
|
|
84
|
-
*
|
|
85
|
-
*
|
|
123
|
+
* Record a click on a share code. A private operation fence, immutable
|
|
124
|
+
* ReferralTouch, and {@link ReferralLink.clickCount} increment commit in
|
|
125
|
+
* one supported database transaction. An exact `idempotencyKey` replay
|
|
126
|
+
* returns the original touch without another increment; changed immutable
|
|
127
|
+
* intent raises {@link ReferralClickReplayConflictError}.
|
|
128
|
+
*
|
|
129
|
+
* Evidence is canonicalized, Sales-owned `code`/`linkId`/`targetUrl` fields
|
|
130
|
+
* are applied, and the UTF-8 bytes of that exact persisted JSON are checked
|
|
131
|
+
* before any write. The default bound is
|
|
132
|
+
* {@link DEFAULT_REFERRAL_CLICK_EVIDENCE_MAX_BYTES}.
|
|
86
133
|
*
|
|
87
134
|
* Refusals return a typed result instead of throwing (clicks arrive from
|
|
88
135
|
* the edge — an unknown or disabled code is an expected outcome, not an
|
|
@@ -91,6 +138,10 @@ export declare class ReferralLinkCollection extends SmrtCollection<ReferralLink>
|
|
|
91
138
|
* returned, nothing is written).
|
|
92
139
|
*/
|
|
93
140
|
recordClick(input: RecordClickInput): Promise<RecordClickResult>;
|
|
141
|
+
/** Rebind public result models to the caller's database after commit. */
|
|
142
|
+
private rehydrateRecordClickResult;
|
|
143
|
+
private recordClickInTransaction;
|
|
144
|
+
private replayClick;
|
|
94
145
|
}
|
|
95
146
|
export default ReferralLinkCollection;
|
|
96
147
|
//# sourceMappingURL=ReferralLinkCollection.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReferralLinkCollection.d.ts","sourceRoot":"","sources":["../../../src/referrals/collections/ReferralLinkCollection.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"ReferralLinkCollection.d.ts","sourceRoot":"","sources":["../../../src/referrals/collections/ReferralLinkCollection.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,7 +17,7 @@ export { AttributionExceptionCollection } from './collections/AttributionExcepti
|
|
|
17
17
|
export { type AttributionPolicyAmendmentChanges, AttributionPolicyCollection, } from './collections/AttributionPolicyCollection.js';
|
|
18
18
|
export { type ReferralAgreementAmendmentChanges, ReferralAgreementCollection, } from './collections/ReferralAgreementCollection.js';
|
|
19
19
|
export { ReferralCollection } from './collections/ReferralCollection.js';
|
|
20
|
-
export { type CreateReferralLinkInput, generateReferralCode, MAX_CODE_GENERATION_ATTEMPTS, REFERRAL_CODE_ALPHABET, REFERRAL_CODE_LENGTH, type RecordClickInput, type RecordClickRefusal, type RecordClickResult, ReferralLinkCollection, } from './collections/ReferralLinkCollection.js';
|
|
20
|
+
export { type CreateReferralLinkInput, DEFAULT_REFERRAL_CLICK_EVIDENCE_MAX_BYTES, generateReferralCode, MAX_CODE_GENERATION_ATTEMPTS, MAX_REFERRAL_CLICK_IDEMPOTENCY_KEY_BYTES, REFERRAL_CODE_ALPHABET, REFERRAL_CODE_LENGTH, type RecordClickInput, type RecordClickRefusal, type RecordClickResult, ReferralClickReplayConflictError, type ReferralClickReplayMismatchField, ReferralClickValidationError, type ReferralClickValidationReason, ReferralLinkCollection, } from './collections/ReferralLinkCollection.js';
|
|
21
21
|
export { ReferralProgramCollection } from './collections/ReferralProgramCollection.js';
|
|
22
22
|
export { ReferralTermSnapshotCollection } from './collections/ReferralTermSnapshotCollection.js';
|
|
23
23
|
export { ReferralTouchCollection, type TouchWindowQuery, } from './collections/ReferralTouchCollection.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/referrals/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,8BAA8B,EAAE,MAAM,iDAAiD,CAAC;AACjG,OAAO,EACL,KAAK,iCAAiC,EACtC,2BAA2B,GAC5B,MAAM,8CAA8C,CAAC;AACtD,OAAO,EACL,KAAK,iCAAiC,EACtC,2BAA2B,GAC5B,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EACL,KAAK,uBAAuB,EAC5B,oBAAoB,EACpB,4BAA4B,EAC5B,sBAAsB,EACtB,oBAAoB,EACpB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,sBAAsB,GACvB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC;AACvF,OAAO,EAAE,8BAA8B,EAAE,MAAM,iDAAiD,CAAC;AACjG,OAAO,EACL,uBAAuB,EACvB,KAAK,gBAAgB,GACtB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAEzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EACL,iBAAiB,EACjB,8BAA8B,GAC/B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAC7B,KAAK,qBAAqB,EAC1B,kBAAkB,EAClB,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAC7B,8BAA8B,EAC9B,KAAK,2BAA2B,EAChC,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,GAC3B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,KAAK,mCAAmC,EACxC,8BAA8B,EAC9B,iCAAiC,EACjC,KAAK,qCAAqC,EAC1C,KAAK,sCAAsC,GAC5C,MAAM,iDAAiD,CAAC;AACzD,OAAO,EACL,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,4BAA4B,EAC5B,KAAK,yBAAyB,EAC9B,yBAAyB,EACzB,KAAK,6BAA6B,EAClC,KAAK,sBAAsB,EAC3B,KAAK,4BAA4B,GAClC,MAAM,yCAAyC,CAAC;AACjD,OAAO,EACL,KAAK,0BAA0B,EAC/B,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,4BAA4B,EAC5B,KAAK,gCAAgC,EACrC,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,GAC7B,MAAM,4CAA4C,CAAC;AAEpD,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/referrals/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,8BAA8B,EAAE,MAAM,iDAAiD,CAAC;AACjG,OAAO,EACL,KAAK,iCAAiC,EACtC,2BAA2B,GAC5B,MAAM,8CAA8C,CAAC;AACtD,OAAO,EACL,KAAK,iCAAiC,EACtC,2BAA2B,GAC5B,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EACL,KAAK,uBAAuB,EAC5B,yCAAyC,EACzC,oBAAoB,EACpB,4BAA4B,EAC5B,wCAAwC,EACxC,sBAAsB,EACtB,oBAAoB,EACpB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,gCAAgC,EAChC,KAAK,gCAAgC,EACrC,4BAA4B,EAC5B,KAAK,6BAA6B,EAClC,sBAAsB,GACvB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC;AACvF,OAAO,EAAE,8BAA8B,EAAE,MAAM,iDAAiD,CAAC;AACjG,OAAO,EACL,uBAAuB,EACvB,KAAK,gBAAgB,GACtB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAEzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EACL,iBAAiB,EACjB,8BAA8B,GAC/B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAC7B,KAAK,qBAAqB,EAC1B,kBAAkB,EAClB,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAC7B,8BAA8B,EAC9B,KAAK,2BAA2B,EAChC,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,GAC3B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,KAAK,mCAAmC,EACxC,8BAA8B,EAC9B,iCAAiC,EACjC,KAAK,qCAAqC,EAC1C,KAAK,sCAAsC,GAC5C,MAAM,iDAAiD,CAAC;AACzD,OAAO,EACL,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,4BAA4B,EAC5B,KAAK,yBAAyB,EAC9B,yBAAyB,EACzB,KAAK,6BAA6B,EAClC,KAAK,sBAAsB,EAC3B,KAAK,4BAA4B,GAClC,MAAM,yCAAyC,CAAC;AACjD,OAAO,EACL,KAAK,0BAA0B,EAC/B,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,4BAA4B,EAC5B,KAAK,gCAAgC,EACrC,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,GAC7B,MAAM,4CAA4C,CAAC;AAEpD,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { SmrtObject, SmrtObjectOptions } from '@happyvertical/smrt-core';
|
|
2
|
+
interface ReferralClickOperationOptions extends SmrtObjectOptions {
|
|
3
|
+
tenantId?: string | null;
|
|
4
|
+
keyHash?: string;
|
|
5
|
+
linkId?: string;
|
|
6
|
+
touchId?: string;
|
|
7
|
+
intentHash?: string;
|
|
8
|
+
callerEvidenceHash?: string;
|
|
9
|
+
requestedOccurredAt?: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* One globally unique caller replay key mapped to its immutable click touch.
|
|
13
|
+
*
|
|
14
|
+
* The deterministic primary UUID is derived from the caller key. The full
|
|
15
|
+
* SHA-256 hash is retained to fail closed even if two keys ever collide in the
|
|
16
|
+
* truncated UUID namespace. This is package-owned orchestration state: it has
|
|
17
|
+
* no generated API, MCP, or CLI surface.
|
|
18
|
+
*/
|
|
19
|
+
export declare class ReferralClickOperation extends SmrtObject {
|
|
20
|
+
/** Same tenant owner as the ReferralLink and ReferralTouch. */
|
|
21
|
+
tenantId: string | null;
|
|
22
|
+
/** Full SHA-256 of the exact caller replay key. */
|
|
23
|
+
keyHash: string;
|
|
24
|
+
/** Link whose counter this operation increments. */
|
|
25
|
+
linkId: string;
|
|
26
|
+
/** Immutable touch created by this operation in the same transaction. */
|
|
27
|
+
touchId: string;
|
|
28
|
+
/** Hash of the normalized link, attribution, timestamp, and evidence intent. */
|
|
29
|
+
intentHash: string;
|
|
30
|
+
/** Hash of caller evidence before Sales-owned envelope fields are applied. */
|
|
31
|
+
callerEvidenceHash: string;
|
|
32
|
+
/** ISO instant supplied by the caller, or empty when recordClick chose now. */
|
|
33
|
+
requestedOccurredAt: string;
|
|
34
|
+
constructor(options?: ReferralClickOperationOptions);
|
|
35
|
+
/** Keep the TEXT replay marker a string when adapters parse `*_at`. */
|
|
36
|
+
initialize(): Promise<this>;
|
|
37
|
+
}
|
|
38
|
+
export default ReferralClickOperation;
|
|
39
|
+
//# sourceMappingURL=ReferralClickOperation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReferralClickOperation.d.ts","sourceRoot":"","sources":["../../../src/referrals/models/ReferralClickOperation.ts"],"names":[],"mappings":"AAAA,qEAAqE;AAErE,OAAO,EAEL,UAAU,EACV,KAAK,iBAAiB,EAEvB,MAAM,0BAA0B,CAAC;AAGlC,UAAU,6BAA8B,SAAQ,iBAAiB;IAC/D,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;;;GAOG;AACH,qBAEa,sBAAuB,SAAQ,UAAU;IACpD,+DAA+D;IAE/D,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE/B,mDAAmD;IAEnD,OAAO,EAAG,MAAM,CAAC;IAEjB,oDAAoD;IAEpD,MAAM,EAAG,MAAM,CAAC;IAEhB,yEAAyE;IAIzE,OAAO,EAAG,MAAM,CAAC;IAEjB,gFAAgF;IAEhF,UAAU,EAAG,MAAM,CAAC;IAEpB,8EAA8E;IAE9E,kBAAkB,EAAG,MAAM,CAAC;IAE5B,+EAA+E;IAE/E,mBAAmB,EAAG,MAAM,CAAC;gBAEjB,OAAO,GAAE,6BAAkC;IAavD,uEAAuE;IACxD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAM3C;AAED,eAAe,sBAAsB,CAAC"}
|
|
@@ -14,8 +14,9 @@ export declare function assertHttpTargetUrl(targetUrl: string): void;
|
|
|
14
14
|
* Codes are minted by `ReferralLinkCollection.createWithUniqueCode()` —
|
|
15
15
|
* crypto-random, 10 lowercase-alphanumeric characters, collision-checked
|
|
16
16
|
* with a capped retry loop. Click traffic lands through
|
|
17
|
-
* `ReferralLinkCollection.recordClick()`, which increments
|
|
18
|
-
* and writes
|
|
17
|
+
* `ReferralLinkCollection.recordClick()`, which atomically increments
|
|
18
|
+
* {@link clickCount} and writes one immutable, replay-keyed `ReferralTouch`
|
|
19
|
+
* evidence row after enforcing the final UTF-8 evidence bound; disabled links
|
|
19
20
|
* refuse clicks.
|
|
20
21
|
*/
|
|
21
22
|
export declare class ReferralLink extends SmrtObject {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReferralLink.d.ts","sourceRoot":"","sources":["../../../src/referrals/models/ReferralLink.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAqB,UAAU,EAAQ,MAAM,0BAA0B,CAAC;AAE/E,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAE3E;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAc3D;AAED
|
|
1
|
+
{"version":3,"file":"ReferralLink.d.ts","sourceRoot":"","sources":["../../../src/referrals/models/ReferralLink.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAqB,UAAU,EAAQ,MAAM,0BAA0B,CAAC;AAE/E,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAE3E;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAc3D;AAED;;;;;;;;;;;;GAYG;AACH,qBASa,YAAa,SAAQ,UAAU;IAC1C,sEAAsE;IAEtE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE/B,gDAAgD;IAEhD,UAAU,EAAE,MAAM,CAAM;IAExB,0DAA0D;IAE1D,SAAS,EAAE,MAAM,CAAM;IAEvB;;;OAGG;IAEH,IAAI,EAAE,MAAM,CAAM;IAElB;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAM;IAEvB,+DAA+D;IAC/D,KAAK,EAAE,MAAM,CAAM;IAEnB,kEAAkE;IAClE,MAAM,EAAE,kBAAkB,CAAY;IAEtC,gEAAgE;IAChE,UAAU,EAAE,MAAM,CAAK;IAEvB;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAQ;gBAEZ,OAAO,GAAE,mBAAwB;IAa7C,iDAAiD;IACjD,QAAQ,IAAI,OAAO;IAInB,yEAAyE;IACzE,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAYtC,+CAA+C;IAC/C,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAIpD;;;;;;;;;;;OAWG;IACY,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CA2BrC;AAED,eAAe,YAAY,CAAC"}
|
package/dist/referrals.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import "./chunks/__smrt-register__-
|
|
2
|
-
import { A as
|
|
3
|
-
export { ATTRIBUTION_CONFLICT_BEHAVIORS, ATTRIBUTION_CREDIT_MODES, ATTRIBUTION_EXCEPTION_STATUSES, ATTRIBUTION_POLICY_STATUSES, ATTRIBUTION_RESOLUTION_MODES, AttributionException, AttributionExceptionCollection, AttributionPolicy, AttributionPolicyCollection, AttributionService, MAX_CODE_GENERATION_ATTEMPTS, QualifiedReferralOverrideError, REFERRAL_AGREEMENT_APPROVAL_MODES, REFERRAL_AGREEMENT_SOURCE_KIND, REFERRAL_AGREEMENT_STATUSES, REFERRAL_CODE_ALPHABET, REFERRAL_CODE_LENGTH, REFERRAL_LINK_STATUSES, REFERRAL_PROGRAM_STATUSES, REFERRAL_STATUSES, REFERRAL_TERMS_SNAPSHOT_KIND, REFERRAL_TOUCH_KINDS, REFERRER_STATUSES, Referral, ReferralAgreement, ReferralAgreementCollection, ReferralAgreementExecutionService, ReferralCollection, ReferralCommissionService, ReferralLink, ReferralLinkCollection, ReferralProgram, ReferralProgramCollection, ReferralQualificationService, ReferralTermSnapshot, ReferralTermSnapshotCollection, ReferralTouch, ReferralTouchCollection, Referrer, ReferrerCollection, assertHttpTargetUrl, generateReferralCode, validateAttributionPolicyTerms };
|
|
1
|
+
import "./chunks/__smrt-register__-CPynA4ag.js";
|
|
2
|
+
import { A as ReferralAgreement, B as REFERRAL_AGREEMENT_STATUSES, C as ReferralTouchCollection, D as ReferralCollection, E as assertHttpTargetUrl, F as ATTRIBUTION_CREDIT_MODES, G as REFERRER_STATUSES, H as REFERRAL_PROGRAM_STATUSES, I as ATTRIBUTION_EXCEPTION_STATUSES, K as AttributionExceptionCollection, L as ATTRIBUTION_POLICY_STATUSES, M as AttributionPolicy, N as validateAttributionPolicyTerms, O as Referral, P as ATTRIBUTION_CONFLICT_BEHAVIORS, R as ATTRIBUTION_RESOLUTION_MODES, S as generateReferralCode, T as ReferralLink, U as REFERRAL_STATUSES, V as REFERRAL_LINK_STATUSES, W as REFERRAL_TOUCH_KINDS, _ as REFERRAL_CODE_ALPHABET, a as ReferralAgreementExecutionService, b as ReferralClickValidationError, c as ReferrerCollection, d as ReferralTermSnapshot, f as ReferralProgramCollection, g as MAX_REFERRAL_CLICK_IDEMPOTENCY_KEY_BYTES, h as MAX_CODE_GENERATION_ATTEMPTS, i as REFERRAL_AGREEMENT_SOURCE_KIND, j as AttributionPolicyCollection, k as ReferralAgreementCollection, l as Referrer, m as DEFAULT_REFERRAL_CLICK_EVIDENCE_MAX_BYTES, n as REFERRAL_TERMS_SNAPSHOT_KIND, o as AttributionService, p as ReferralProgram, q as AttributionException, r as ReferralCommissionService, s as QualifiedReferralOverrideError, t as ReferralQualificationService, u as ReferralTermSnapshotCollection, v as REFERRAL_CODE_LENGTH, w as ReferralTouch, x as ReferralLinkCollection, y as ReferralClickReplayConflictError, z as REFERRAL_AGREEMENT_APPROVAL_MODES } from "./chunks/referrals-CJUOZxpa.js";
|
|
3
|
+
export { ATTRIBUTION_CONFLICT_BEHAVIORS, ATTRIBUTION_CREDIT_MODES, ATTRIBUTION_EXCEPTION_STATUSES, ATTRIBUTION_POLICY_STATUSES, ATTRIBUTION_RESOLUTION_MODES, AttributionException, AttributionExceptionCollection, AttributionPolicy, AttributionPolicyCollection, AttributionService, DEFAULT_REFERRAL_CLICK_EVIDENCE_MAX_BYTES, MAX_CODE_GENERATION_ATTEMPTS, MAX_REFERRAL_CLICK_IDEMPOTENCY_KEY_BYTES, QualifiedReferralOverrideError, REFERRAL_AGREEMENT_APPROVAL_MODES, REFERRAL_AGREEMENT_SOURCE_KIND, REFERRAL_AGREEMENT_STATUSES, REFERRAL_CODE_ALPHABET, REFERRAL_CODE_LENGTH, REFERRAL_LINK_STATUSES, REFERRAL_PROGRAM_STATUSES, REFERRAL_STATUSES, REFERRAL_TERMS_SNAPSHOT_KIND, REFERRAL_TOUCH_KINDS, REFERRER_STATUSES, Referral, ReferralAgreement, ReferralAgreementCollection, ReferralAgreementExecutionService, ReferralClickReplayConflictError, ReferralClickValidationError, ReferralCollection, ReferralCommissionService, ReferralLink, ReferralLinkCollection, ReferralProgram, ReferralProgramCollection, ReferralQualificationService, ReferralTermSnapshot, ReferralTermSnapshotCollection, ReferralTouch, ReferralTouchCollection, Referrer, ReferrerCollection, assertHttpTargetUrl, generateReferralCode, validateAttributionPolicyTerms };
|