@revturbine/sdk 0.2.13
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/dist/headless.js +131 -0
- package/dist/headless.js.map +1 -0
- package/dist/index.js +131 -0
- package/dist/index.js.map +1 -0
- package/dist/types/server-node/client.d.ts +75 -0
- package/dist/types/server-node/client.d.ts.map +1 -0
- package/dist/types/server-node/index.d.ts +37 -0
- package/dist/types/server-node/index.d.ts.map +1 -0
- package/dist/types/server-node/local-server.d.ts +60 -0
- package/dist/types/server-node/local-server.d.ts.map +1 -0
- package/dist/types/server-node/types.d.ts +68 -0
- package/dist/types/server-node/types.d.ts.map +1 -0
- package/dist/types/web-sdk/adapters/api.d.ts +24 -0
- package/dist/types/web-sdk/adapters/api.d.ts.map +1 -0
- package/dist/types/web-sdk/analytics.d.ts +111 -0
- package/dist/types/web-sdk/analytics.d.ts.map +1 -0
- package/dist/types/web-sdk/api-client.d.ts +44 -0
- package/dist/types/web-sdk/api-client.d.ts.map +1 -0
- package/dist/types/web-sdk/browser-runtime.d.ts +62 -0
- package/dist/types/web-sdk/browser-runtime.d.ts.map +1 -0
- package/dist/types/web-sdk/controllers.d.ts +363 -0
- package/dist/types/web-sdk/controllers.d.ts.map +1 -0
- package/dist/types/web-sdk/customer-side.d.ts +1367 -0
- package/dist/types/web-sdk/customer-side.d.ts.map +1 -0
- package/dist/types/web-sdk/env.d.ts +5 -0
- package/dist/types/web-sdk/env.d.ts.map +1 -0
- package/dist/types/web-sdk/generated.d.ts +8 -0
- package/dist/types/web-sdk/generated.d.ts.map +1 -0
- package/dist/types/web-sdk/headless.d.ts +69 -0
- package/dist/types/web-sdk/headless.d.ts.map +1 -0
- package/dist/types/web-sdk/index.d.ts +51 -0
- package/dist/types/web-sdk/index.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/AccessGateSurfaceSlot.d.ts +88 -0
- package/dist/types/web-sdk/placements/AccessGateSurfaceSlot.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/FixedSurfaceSlot.d.ts +56 -0
- package/dist/types/web-sdk/placements/FixedSurfaceSlot.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/MessageSurfaceSlot.d.ts +87 -0
- package/dist/types/web-sdk/placements/MessageSurfaceSlot.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/PlacementRenderer.d.ts +57 -0
- package/dist/types/web-sdk/placements/PlacementRenderer.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/SurfaceSlotComponent.d.ts +70 -0
- package/dist/types/web-sdk/placements/SurfaceSlotComponent.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/abstract/BannerFrame.d.ts +53 -0
- package/dist/types/web-sdk/placements/abstract/BannerFrame.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/abstract/InlineCardPlacement.d.ts +52 -0
- package/dist/types/web-sdk/placements/abstract/InlineCardPlacement.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/abstract/ModalFrame.d.ts +68 -0
- package/dist/types/web-sdk/placements/abstract/ModalFrame.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/abstract/QuotaMeterFrame.d.ts +76 -0
- package/dist/types/web-sdk/placements/abstract/QuotaMeterFrame.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/abstract/index.d.ts +9 -0
- package/dist/types/web-sdk/placements/abstract/index.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/builtin.d.ts +18 -0
- package/dist/types/web-sdk/placements/builtin.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/cta-resolvers.d.ts +67 -0
- package/dist/types/web-sdk/placements/cta-resolvers.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/index.d.ts +28 -0
- package/dist/types/web-sdk/placements/index.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/local-resolver.d.ts +8 -0
- package/dist/types/web-sdk/placements/local-resolver.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/payload-resolution.d.ts +8 -0
- package/dist/types/web-sdk/placements/payload-resolution.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/recommendation.d.ts +35 -0
- package/dist/types/web-sdk/placements/recommendation.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/registry.d.ts +84 -0
- package/dist/types/web-sdk/placements/registry.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/slots/AgentConnectorSlot.d.ts +11 -0
- package/dist/types/web-sdk/placements/slots/AgentConnectorSlot.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/slots/BannerSlot.d.ts +35 -0
- package/dist/types/web-sdk/placements/slots/BannerSlot.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/slots/ButtonSlot.d.ts +23 -0
- package/dist/types/web-sdk/placements/slots/ButtonSlot.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/slots/ChannelPreviewSlots.d.ts +48 -0
- package/dist/types/web-sdk/placements/slots/ChannelPreviewSlots.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/slots/CliSlot.d.ts +11 -0
- package/dist/types/web-sdk/placements/slots/CliSlot.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/slots/CreditBalanceSlot.d.ts +19 -0
- package/dist/types/web-sdk/placements/slots/CreditBalanceSlot.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/slots/FullPageSlot.d.ts +14 -0
- package/dist/types/web-sdk/placements/slots/FullPageSlot.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/slots/InPageSlot.d.ts +13 -0
- package/dist/types/web-sdk/placements/slots/InPageSlot.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/slots/InlineEmbedSlot.d.ts +16 -0
- package/dist/types/web-sdk/placements/slots/InlineEmbedSlot.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/slots/ModalSlot.d.ts +30 -0
- package/dist/types/web-sdk/placements/slots/ModalSlot.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/slots/QuotaMeterSlot.d.ts +19 -0
- package/dist/types/web-sdk/placements/slots/QuotaMeterSlot.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/slots/ToastSlot.d.ts +17 -0
- package/dist/types/web-sdk/placements/slots/ToastSlot.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/slots/TooltipSlot.d.ts +15 -0
- package/dist/types/web-sdk/placements/slots/TooltipSlot.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/slots/index.d.ts +14 -0
- package/dist/types/web-sdk/placements/slots/index.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/surface-slot-constants.d.ts +13 -0
- package/dist/types/web-sdk/placements/surface-slot-constants.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/surface-template-defaults.d.ts +16 -0
- package/dist/types/web-sdk/placements/surface-template-defaults.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/token-derivation.d.ts +7 -0
- package/dist/types/web-sdk/placements/token-derivation.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/types.d.ts +226 -0
- package/dist/types/web-sdk/placements/types.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/usePlacementPersonalization.d.ts +20 -0
- package/dist/types/web-sdk/placements/usePlacementPersonalization.d.ts.map +1 -0
- package/dist/types/web-sdk/placements/useSurfaceSlot.d.ts +60 -0
- package/dist/types/web-sdk/placements/useSurfaceSlot.d.ts.map +1 -0
- package/dist/types/web-sdk/providers/index.d.ts +3 -0
- package/dist/types/web-sdk/providers/index.d.ts.map +1 -0
- package/dist/types/web-sdk/providers/registry.d.ts +8 -0
- package/dist/types/web-sdk/providers/registry.d.ts.map +1 -0
- package/dist/types/web-sdk/providers/types.d.ts +8 -0
- package/dist/types/web-sdk/providers/types.d.ts.map +1 -0
- package/dist/types/web-sdk/react/Placement.d.ts +50 -0
- package/dist/types/web-sdk/react/Placement.d.ts.map +1 -0
- package/dist/types/web-sdk/react/PlacementDecisionInspector.d.ts +40 -0
- package/dist/types/web-sdk/react/PlacementDecisionInspector.d.ts.map +1 -0
- package/dist/types/web-sdk/react/RevTurbineProvider.d.ts +31 -0
- package/dist/types/web-sdk/react/RevTurbineProvider.d.ts.map +1 -0
- package/dist/types/web-sdk/react/SurfaceTypes.d.ts +19 -0
- package/dist/types/web-sdk/react/SurfaceTypes.d.ts.map +1 -0
- package/dist/types/web-sdk/react/UserProfile.d.ts +23 -0
- package/dist/types/web-sdk/react/UserProfile.d.ts.map +1 -0
- package/dist/types/web-sdk/react/index.d.ts +11 -0
- package/dist/types/web-sdk/react/index.d.ts.map +1 -0
- package/dist/types/web-sdk/react/useEntitlement.d.ts +53 -0
- package/dist/types/web-sdk/react/useEntitlement.d.ts.map +1 -0
- package/dist/types/web-sdk/react/usePlacement.d.ts +63 -0
- package/dist/types/web-sdk/react/usePlacement.d.ts.map +1 -0
- package/dist/types/web-sdk/react/useRevTurbine.d.ts +17 -0
- package/dist/types/web-sdk/react/useRevTurbine.d.ts.map +1 -0
- package/dist/types/web-sdk/react/useUsageSnapshot.d.ts +7 -0
- package/dist/types/web-sdk/react/useUsageSnapshot.d.ts.map +1 -0
- package/dist/types/web-sdk/segments.d.ts +9 -0
- package/dist/types/web-sdk/segments.d.ts.map +1 -0
- package/dist/types/web-sdk/storage.d.ts +38 -0
- package/dist/types/web-sdk/storage.d.ts.map +1 -0
- package/dist/types/web-sdk/theme/ThemeContext.d.ts +18 -0
- package/dist/types/web-sdk/theme/ThemeContext.d.ts.map +1 -0
- package/dist/types/web-sdk/theme/defaults.d.ts +13 -0
- package/dist/types/web-sdk/theme/defaults.d.ts.map +1 -0
- package/dist/types/web-sdk/theme/index.d.ts +6 -0
- package/dist/types/web-sdk/theme/index.d.ts.map +1 -0
- package/dist/types/web-sdk/theme/theme-loader.d.ts +26 -0
- package/dist/types/web-sdk/theme/theme-loader.d.ts.map +1 -0
- package/dist/types/web-sdk/theme/types.d.ts +121 -0
- package/dist/types/web-sdk/theme/types.d.ts.map +1 -0
- package/package.json +57 -0
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RevTurbine Server-Side SDK Client.
|
|
3
|
+
*
|
|
4
|
+
* Performs server-to-server evaluation calls against the RevTurbine decision
|
|
5
|
+
* engine and returns a serializable `ServerEvaluationPayload` that the
|
|
6
|
+
* client-side SDK can hydrate.
|
|
7
|
+
*
|
|
8
|
+
* Designed for:
|
|
9
|
+
* - Next.js `getServerSideProps` / RSC / API routes
|
|
10
|
+
* - Express / Fastify middleware
|
|
11
|
+
* - Any Node.js server-side rendering pipeline
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```ts
|
|
15
|
+
* import { RevTurbineServer } from '@revt-eng/sdk/server';
|
|
16
|
+
*
|
|
17
|
+
* const server = new RevTurbineServer({
|
|
18
|
+
* tenantId: 'tenant_abc',
|
|
19
|
+
* apiKey: process.env.REVTURBINE_SECRET_KEY!,
|
|
20
|
+
* endpoint: 'https://api.revturbine.io',
|
|
21
|
+
* });
|
|
22
|
+
*
|
|
23
|
+
* // In getServerSideProps:
|
|
24
|
+
* const payload = await server.evaluate({
|
|
25
|
+
* userId: session.user.id,
|
|
26
|
+
* traits: { plan: 'pro' },
|
|
27
|
+
* placements: [{ slotId: 'hero_banner' }],
|
|
28
|
+
* entitlementHandles: ['advanced_analytics'],
|
|
29
|
+
* includeTheme: true,
|
|
30
|
+
* });
|
|
31
|
+
*
|
|
32
|
+
* return { props: { rtPayload: payload } };
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
import type { RevTurbineServerOptions, ServerEvaluationPayload, ServerEvaluationPayloadDecisionsItem, ServerEvaluationPayloadEntitlementsValue, ServerEvaluationPayloadTrialStatus, ServerEvaluationRequest, ServerPlacementRequest } from './types';
|
|
36
|
+
export declare class RevTurbineServer {
|
|
37
|
+
private readonly tenantId;
|
|
38
|
+
private readonly apiKey;
|
|
39
|
+
private readonly endpoint;
|
|
40
|
+
private readonly defaultTtlSeconds;
|
|
41
|
+
private readonly fetchFn;
|
|
42
|
+
constructor(options: RevTurbineServerOptions);
|
|
43
|
+
/**
|
|
44
|
+
* Evaluate placement decisions, entitlements, and context for a user.
|
|
45
|
+
*
|
|
46
|
+
* Returns a `ServerEvaluationPayload` that can be serialized and sent
|
|
47
|
+
* to the client for hydration.
|
|
48
|
+
*/
|
|
49
|
+
evaluate(request: ServerEvaluationRequest): Promise<ServerEvaluationPayload>;
|
|
50
|
+
/**
|
|
51
|
+
* Evaluate a single placement.
|
|
52
|
+
*/
|
|
53
|
+
getPlacement(userId: string, placement: ServerPlacementRequest, traits?: Record<string, unknown>): Promise<ServerEvaluationPayloadDecisionsItem>;
|
|
54
|
+
/**
|
|
55
|
+
* Check a single entitlement for a user.
|
|
56
|
+
*/
|
|
57
|
+
checkEntitlement(userId: string, handle: string, context?: {
|
|
58
|
+
used?: number;
|
|
59
|
+
balance?: number;
|
|
60
|
+
requiredTier?: string;
|
|
61
|
+
}): Promise<ServerEvaluationPayloadEntitlementsValue>;
|
|
62
|
+
/**
|
|
63
|
+
* Fetch trial status for a user.
|
|
64
|
+
*/
|
|
65
|
+
getTrialStatus(userId: string): Promise<ServerEvaluationPayloadTrialStatus>;
|
|
66
|
+
private apiCall;
|
|
67
|
+
private apiGet;
|
|
68
|
+
private evaluatePlacements;
|
|
69
|
+
private evaluatePlacementsBatch;
|
|
70
|
+
private evaluateEntitlements;
|
|
71
|
+
private fetchTrialStatus;
|
|
72
|
+
private fetchUserContext;
|
|
73
|
+
private fetchTheme;
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../server-node/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,KAAK,EAEV,uBAAuB,EACvB,uBAAuB,EACvB,oCAAoC,EACpC,wCAAwC,EACxC,kCAAkC,EAElC,uBAAuB,EACvB,sBAAsB,EACvB,MAAM,SAAS,CAAC;AASjB,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0B;gBAEtC,OAAO,EAAE,uBAAuB;IAQ5C;;;;;OAKG;IACG,QAAQ,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IA0ClF;;OAEG;IACG,YAAY,CAChB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,sBAAsB,EACjC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,OAAO,CAAC,oCAAoC,CAAC;IAmEhD;;OAEG;IACG,gBAAgB,CACpB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,GACnE,OAAO,CAAC,wCAAwC,CAAC;IAiCpD;;OAEG;IACG,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,kCAAkC,CAAC;YASnE,OAAO;YAaP,MAAM;YAWN,kBAAkB;YAiBlB,uBAAuB;YA+EvB,oBAAoB;YAwBpB,gBAAgB;YAiDhB,gBAAgB;YAyBhB,UAAU;CAYzB"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module @revt-eng/sdk/server-node
|
|
3
|
+
*
|
|
4
|
+
* Server-side evaluation SDK for RevTurbine.
|
|
5
|
+
*
|
|
6
|
+
* Use `RevTurbineServer` to pre-evaluate placement decisions, entitlements,
|
|
7
|
+
* and user context on the server. The resulting `ServerEvaluationPayload`
|
|
8
|
+
* can be serialized into your page props and consumed by the client-side SDK
|
|
9
|
+
* via `sdk.hydrate(payload)`.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* import { RevTurbineServer } from '@revt-eng/sdk/server';
|
|
14
|
+
*
|
|
15
|
+
* const server = new RevTurbineServer({
|
|
16
|
+
* tenantId: 'tenant_abc',
|
|
17
|
+
* apiKey: process.env.REVTURBINE_SECRET_KEY!,
|
|
18
|
+
* endpoint: 'https://api.revturbine.io',
|
|
19
|
+
* });
|
|
20
|
+
*
|
|
21
|
+
* const payload = await server.evaluate({
|
|
22
|
+
* userId: 'user_123',
|
|
23
|
+
* traits: { plan: 'pro' },
|
|
24
|
+
* placements: [{ slotId: 'hero_banner' }],
|
|
25
|
+
* includeTheme: true,
|
|
26
|
+
* });
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export { RevTurbineServer } from './client';
|
|
30
|
+
export type { RevTurbineServerOptions, ServerEvaluationPayload, ServerEvaluationPayloadDecisionsItem, ServerEvaluationPayloadEntitlementsValue, ServerEvaluationPayloadTrialStatus, ServerEvaluationPayloadUser, ServerEvaluationPayloadUserContext, ServerEvaluationRequest, ServerPlacementRequest, ServerPlacementDecision, ServerEntitlementResult, ServerUserContext, } from './types';
|
|
31
|
+
export { LocalEvaluationServer, createLocalEvaluationServer } from './local-server';
|
|
32
|
+
export type { LocalEvaluationServerOptions, LocalEvaluationRequest } from './local-server';
|
|
33
|
+
export { LocalRuntime, createStaticProviders, createHydrationProviders, DecisionEngine, DomainProviderRegistry, InteractionTracker, CapEnforcer, InMemoryStorage, } from '@revt-eng/core';
|
|
34
|
+
export { createApiProviders, } from '../web-sdk/adapters/api';
|
|
35
|
+
export type { ApiAdapterOptions, } from '../web-sdk/adapters/api';
|
|
36
|
+
export type { LocalRuntimeOptions, AdapterBaseOptions, CreateProvidersResult, RevTurbineStorage, } from '@revt-eng/core';
|
|
37
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server-node/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,YAAY,EACV,uBAAuB,EACvB,uBAAuB,EACvB,oCAAoC,EACpC,wCAAwC,EACxC,kCAAkC,EAClC,2BAA2B,EAC3B,kCAAkC,EAClC,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,iBAAiB,GAClB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AACpF,YAAY,EAAE,4BAA4B,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAG3F,OAAO,EACL,YAAY,EACZ,qBAAqB,EACrB,wBAAwB,EACxB,cAAc,EACd,sBAAsB,EACtB,kBAAkB,EAClB,WAAW,EACX,eAAe,GAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Local server-side evaluation using core LocalRuntime.
|
|
3
|
+
*
|
|
4
|
+
* Unlike `RevTurbineServer` which calls REST APIs, this module evaluates
|
|
5
|
+
* placement decisions locally using data adapters (static config, Drizzle DB,
|
|
6
|
+
* or API-fetched data). The output is the same `ServerEvaluationPayload`
|
|
7
|
+
* that the client-side SDK expects for hydration.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import { createLocalEvaluationServer } from '@revt-eng/server-node/local-server';
|
|
12
|
+
* import { createStaticProviders } from '@revt-eng/core';
|
|
13
|
+
*
|
|
14
|
+
* const server = createLocalEvaluationServer({
|
|
15
|
+
* tenantId: 'tenant_abc',
|
|
16
|
+
* providers: createStaticProviders({ exportedConfig }),
|
|
17
|
+
* });
|
|
18
|
+
*
|
|
19
|
+
* const payload = await server.evaluate({
|
|
20
|
+
* userId: 'user_123',
|
|
21
|
+
* placements: [{ slotId: 'hero_banner' }],
|
|
22
|
+
* });
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
import type { AnyDomainProvider, RevTurbineStorage } from '@revt-eng/core';
|
|
26
|
+
import type { ExportedConfig } from '@revt-eng/schema';
|
|
27
|
+
import type { ServerEvaluationPayload } from './types';
|
|
28
|
+
export interface LocalEvaluationServerOptions {
|
|
29
|
+
tenantId: string;
|
|
30
|
+
/** Pre-built domain providers (from createStaticProviders, createDrizzleProviders, etc.) */
|
|
31
|
+
providers: AnyDomainProvider[];
|
|
32
|
+
/** ExportedConfig for local placement resolution. */
|
|
33
|
+
exportedConfig?: ExportedConfig;
|
|
34
|
+
/** Optional storage for interaction state (defaults to in-memory). */
|
|
35
|
+
storage?: RevTurbineStorage;
|
|
36
|
+
/** Default TTL for evaluation payloads (seconds). Default: 60. */
|
|
37
|
+
defaultTtlSeconds?: number;
|
|
38
|
+
}
|
|
39
|
+
export interface LocalEvaluationRequest {
|
|
40
|
+
userId: string;
|
|
41
|
+
anonymousId?: string;
|
|
42
|
+
traits?: Record<string, unknown>;
|
|
43
|
+
placements?: Array<{
|
|
44
|
+
slotId?: string;
|
|
45
|
+
entitlementHandle?: string;
|
|
46
|
+
planHandle?: string;
|
|
47
|
+
placementHandle?: string;
|
|
48
|
+
}>;
|
|
49
|
+
entitlementHandles?: string[];
|
|
50
|
+
includeTheme?: boolean;
|
|
51
|
+
}
|
|
52
|
+
export declare class LocalEvaluationServer {
|
|
53
|
+
private readonly tenantId;
|
|
54
|
+
private readonly runtime;
|
|
55
|
+
private readonly defaultTtlSeconds;
|
|
56
|
+
constructor(options: LocalEvaluationServerOptions);
|
|
57
|
+
evaluate(request: LocalEvaluationRequest): Promise<ServerEvaluationPayload>;
|
|
58
|
+
}
|
|
59
|
+
export declare function createLocalEvaluationServer(options: LocalEvaluationServerOptions): LocalEvaluationServer;
|
|
60
|
+
//# sourceMappingURL=local-server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-server.d.ts","sourceRoot":"","sources":["../../../../server-node/local-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAKH,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,KAAK,EACV,uBAAuB,EAGxB,MAAM,SAAS,CAAC;AASjB,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,4FAA4F;IAC5F,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAC/B,qDAAqD;IACrD,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,sEAAsE;IACtE,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,kEAAkE;IAClE,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,UAAU,CAAC,EAAE,KAAK,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC,CAAC;IACH,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;gBAE/B,OAAO,EAAE,4BAA4B;IAiB3C,QAAQ,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,uBAAuB,CAAC;CAwDlF;AAED,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,4BAA4B,GACpC,qBAAqB,CAEvB"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Server-side evaluation types for the RevTurbine SDK.
|
|
3
|
+
*
|
|
4
|
+
* Response/payload types are imported from the generated schema types
|
|
5
|
+
* (`@revt-eng/schema`) so the server SDK is always aligned with the
|
|
6
|
+
* JSON-Schema source of truth. Request-only and configuration types
|
|
7
|
+
* that are SDK-specific (not in the schema) are defined here.
|
|
8
|
+
*/
|
|
9
|
+
import type { PlacementDecisionOutput, ServerEvaluationPayload, ServerEvaluationPayloadDecisionsItem, ServerEvaluationPayloadEntitlementsValue, ServerEvaluationPayloadTrialStatus, ServerEvaluationPayloadUser, ServerEvaluationPayloadUserContext } from '@revt-eng/schema';
|
|
10
|
+
export type { PlacementDecisionOutput, ServerEvaluationPayload, ServerEvaluationPayloadDecisionsItem, ServerEvaluationPayloadEntitlementsValue, ServerEvaluationPayloadTrialStatus, ServerEvaluationPayloadUser, ServerEvaluationPayloadUserContext, };
|
|
11
|
+
/** A single placement decision within a server evaluation payload. */
|
|
12
|
+
export type ServerPlacementDecision = ServerEvaluationPayloadDecisionsItem;
|
|
13
|
+
/** An entitlement check result within a server evaluation payload. */
|
|
14
|
+
export type ServerEntitlementResult = ServerEvaluationPayloadEntitlementsValue;
|
|
15
|
+
/** User context returned in a server evaluation payload. */
|
|
16
|
+
export type ServerUserContext = ServerEvaluationPayloadUserContext;
|
|
17
|
+
/** A single placement to evaluate on the server. */
|
|
18
|
+
export interface ServerPlacementRequest {
|
|
19
|
+
/** Slot identifier for slot-based decisions. */
|
|
20
|
+
slotId?: string;
|
|
21
|
+
/** Entitlement handle for entitlement-gated decisions. */
|
|
22
|
+
entitlementHandle?: string;
|
|
23
|
+
/** Plan handle for plan-specific placements. */
|
|
24
|
+
planHandle?: string;
|
|
25
|
+
/** Placement handle for chained CTA paths. */
|
|
26
|
+
placementHandle?: string;
|
|
27
|
+
}
|
|
28
|
+
/** Full evaluation request submitted to the server SDK. */
|
|
29
|
+
export interface ServerEvaluationRequest {
|
|
30
|
+
/** Authenticated user identifier. */
|
|
31
|
+
userId: string;
|
|
32
|
+
/** Optional anonymous ID for correlation (generated server-side when omitted). */
|
|
33
|
+
anonymousId?: string;
|
|
34
|
+
/** User traits for segmentation/personalization. */
|
|
35
|
+
traits?: Record<string, unknown>;
|
|
36
|
+
/** Page context when rendering a specific page server-side. */
|
|
37
|
+
page?: {
|
|
38
|
+
url?: string;
|
|
39
|
+
title?: string;
|
|
40
|
+
tags?: string[];
|
|
41
|
+
};
|
|
42
|
+
/** Placements to evaluate. When omitted, evaluates the bootstrap context. */
|
|
43
|
+
placements?: ServerPlacementRequest[];
|
|
44
|
+
/** Entitlement handles to check. */
|
|
45
|
+
entitlementHandles?: string[];
|
|
46
|
+
/** Current usage balances keyed by entitlement handle. */
|
|
47
|
+
usageBalances?: Record<string, number>;
|
|
48
|
+
/** Whether to include the tenant theme in the payload. */
|
|
49
|
+
includeTheme?: boolean;
|
|
50
|
+
/** Whether to include trial status in the payload. */
|
|
51
|
+
includeTrialStatus?: boolean;
|
|
52
|
+
/** Whether to include full user context (segments, traits, balances). */
|
|
53
|
+
includeUserContext?: boolean;
|
|
54
|
+
}
|
|
55
|
+
/** Options for initializing the RevTurbine server-side SDK. */
|
|
56
|
+
export interface RevTurbineServerOptions {
|
|
57
|
+
/** Your RevTurbine tenant identifier. */
|
|
58
|
+
tenantId: string;
|
|
59
|
+
/** Server-side API key (should be a secret key, not a publishable key). */
|
|
60
|
+
apiKey: string;
|
|
61
|
+
/** Base URL of the RevTurbine API Edge. */
|
|
62
|
+
endpoint: string;
|
|
63
|
+
/** Default TTL for evaluation payloads (seconds). Default: 60. */
|
|
64
|
+
defaultTtlSeconds?: number;
|
|
65
|
+
/** Custom fetch implementation (e.g. for testing or non-standard runtimes). */
|
|
66
|
+
fetch?: typeof globalThis.fetch;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../server-node/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,KAAK,EACV,uBAAuB,EACvB,uBAAuB,EACvB,oCAAoC,EACpC,wCAAwC,EACxC,kCAAkC,EAClC,2BAA2B,EAC3B,kCAAkC,EACnC,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EACV,uBAAuB,EACvB,uBAAuB,EACvB,oCAAoC,EACpC,wCAAwC,EACxC,kCAAkC,EAClC,2BAA2B,EAC3B,kCAAkC,GACnC,CAAC;AAMF,sEAAsE;AACtE,MAAM,MAAM,uBAAuB,GAAG,oCAAoC,CAAC;AAE3E,sEAAsE;AACtE,MAAM,MAAM,uBAAuB,GAAG,wCAAwC,CAAC;AAE/E,4DAA4D;AAC5D,MAAM,MAAM,iBAAiB,GAAG,kCAAkC,CAAC;AAMnE,oDAAoD;AACpD,MAAM,WAAW,sBAAsB;IACrC,gDAAgD;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gDAAgD;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,2DAA2D;AAC3D,MAAM,WAAW,uBAAuB;IACtC,qCAAqC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,kFAAkF;IAClF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oDAAoD;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,+DAA+D;IAC/D,IAAI,CAAC,EAAE;QACL,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;KACjB,CAAC;IACF,6EAA6E;IAC7E,UAAU,CAAC,EAAE,sBAAsB,EAAE,CAAC;IACtC,oCAAoC;IACpC,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,0DAA0D;IAC1D,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,0DAA0D;IAC1D,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,sDAAsD;IACtD,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,yEAAyE;IACzE,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAMD,+DAA+D;AAC/D,MAAM,WAAW,uBAAuB;IACtC,yCAAyC;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,2EAA2E;IAC3E,MAAM,EAAE,MAAM,CAAC;IACf,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,kEAAkE;IAClE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,+EAA+E;IAC/E,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACjC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* API adapter — creates domain providers that fetch data from the RevTurbine REST API.
|
|
3
|
+
*
|
|
4
|
+
* Works everywhere with `fetch` (Node 18+, edge runtimes, browsers).
|
|
5
|
+
* This adapter lives in the SDK (not core) because core is pure in-memory
|
|
6
|
+
* evaluation with no network dependencies.
|
|
7
|
+
*/
|
|
8
|
+
import type { AnyDomainProvider, AdapterBaseOptions } from '@revt-eng/core';
|
|
9
|
+
/** Options for the API-backed adapter. */
|
|
10
|
+
export interface ApiAdapterOptions extends AdapterBaseOptions {
|
|
11
|
+
baseUrl: string;
|
|
12
|
+
token?: string;
|
|
13
|
+
tenantId: string;
|
|
14
|
+
userId?: string;
|
|
15
|
+
headers?: Record<string, string>;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Create domain providers that fetch from the RevTurbine REST API.
|
|
19
|
+
*
|
|
20
|
+
* Returns providers for: plan, entitlements, segments, rules, content, theme.
|
|
21
|
+
* Each provider's `resolve()` makes a `fetch()` call to the appropriate endpoint.
|
|
22
|
+
*/
|
|
23
|
+
export declare function createApiProviders(options: ApiAdapterOptions): AnyDomainProvider[];
|
|
24
|
+
//# sourceMappingURL=api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../../adapters/api.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,iBAAiB,EAQjB,kBAAkB,EACnB,MAAM,gBAAgB,CAAC;AAUxB,0CAA0C;AAC1C,MAAM,WAAW,iBAAkB,SAAQ,kBAAkB;IAC3D,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,GAAG,iBAAiB,EAAE,CAiMlF"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Analytics adapter — bridges RevTurbine SDK events to third-party analytics
|
|
3
|
+
* platforms (Heap, Segment, Amplitude, Mixpanel, PostHog, custom, etc.).
|
|
4
|
+
*
|
|
5
|
+
* Implements the {@link EventConsumerProvider} domain provider interface so it
|
|
6
|
+
* plugs into the SDK's `domainProviders` array at init time.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* import { createAnalyticsProvider } from '@revt-eng/sdk';
|
|
11
|
+
*
|
|
12
|
+
* const analytics = createAnalyticsProvider({
|
|
13
|
+
* handler: (eventName, properties) => {
|
|
14
|
+
* window.analytics.track(eventName, properties);
|
|
15
|
+
* },
|
|
16
|
+
* });
|
|
17
|
+
*
|
|
18
|
+
* initRevTurbine({ domainProviders: [analytics], ... });
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* @module
|
|
22
|
+
*/
|
|
23
|
+
import type { EventConsumerProvider } from '@revt-eng/core';
|
|
24
|
+
/**
|
|
25
|
+
* Flat properties object passed to the analytics handler after
|
|
26
|
+
* transforming a raw {@link RevTurbineEventEnvelope}.
|
|
27
|
+
*/
|
|
28
|
+
export type AnalyticsEventProperties = Record<string, unknown>;
|
|
29
|
+
/**
|
|
30
|
+
* Callback invoked for every SDK event.
|
|
31
|
+
*
|
|
32
|
+
* @param eventName - Normalised event name (e.g. `'placement_interaction'`).
|
|
33
|
+
* @param properties - Flat key-value properties derived from the event envelope.
|
|
34
|
+
*/
|
|
35
|
+
export type AnalyticsEventHandler = (eventName: string, properties: AnalyticsEventProperties) => void;
|
|
36
|
+
/**
|
|
37
|
+
* Optional transformer applied before the handler.
|
|
38
|
+
* Return `null` to drop the event silently.
|
|
39
|
+
*/
|
|
40
|
+
export type AnalyticsEventTransformer = (eventName: string, properties: AnalyticsEventProperties) => {
|
|
41
|
+
eventName: string;
|
|
42
|
+
properties: AnalyticsEventProperties;
|
|
43
|
+
} | null;
|
|
44
|
+
/** Configuration for {@link createAnalyticsProvider}. */
|
|
45
|
+
export interface AnalyticsProviderOptions {
|
|
46
|
+
/**
|
|
47
|
+
* Callback that pushes one event to the analytics platform.
|
|
48
|
+
* Called once per SDK event after optional transformation.
|
|
49
|
+
*/
|
|
50
|
+
handler: AnalyticsEventHandler;
|
|
51
|
+
/**
|
|
52
|
+
* Optional transform applied before the handler.
|
|
53
|
+
* Use this to rename events, enrich properties, or drop events
|
|
54
|
+
* you don't care about.
|
|
55
|
+
*
|
|
56
|
+
* Return `null` to suppress the event.
|
|
57
|
+
*/
|
|
58
|
+
transform?: AnalyticsEventTransformer;
|
|
59
|
+
/**
|
|
60
|
+
* When provided, only events whose `type` matches one of these
|
|
61
|
+
* strings are forwarded. All others are silently dropped.
|
|
62
|
+
*
|
|
63
|
+
* @example ['placement_interaction', 'placement_dismissed']
|
|
64
|
+
*/
|
|
65
|
+
filter?: string[];
|
|
66
|
+
/**
|
|
67
|
+
* Human-readable consumer name shown in diagnostics.
|
|
68
|
+
* @default 'analytics'
|
|
69
|
+
*/
|
|
70
|
+
name?: string;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Create an analytics domain provider that forwards SDK events
|
|
74
|
+
* (impressions, interactions, triggers, page views, etc.) to a
|
|
75
|
+
* third-party analytics platform.
|
|
76
|
+
*
|
|
77
|
+
* The returned provider should be passed in the `domainProviders`
|
|
78
|
+
* array when calling `initRevTurbine()`.
|
|
79
|
+
*
|
|
80
|
+
* @example Segment
|
|
81
|
+
* ```ts
|
|
82
|
+
* const analytics = createAnalyticsProvider({
|
|
83
|
+
* handler: (eventName, properties) => {
|
|
84
|
+
* window.analytics.track(eventName, properties);
|
|
85
|
+
* },
|
|
86
|
+
* });
|
|
87
|
+
* ```
|
|
88
|
+
*
|
|
89
|
+
* @example Heap (filtered to interactions only)
|
|
90
|
+
* ```ts
|
|
91
|
+
* const analytics = createAnalyticsProvider({
|
|
92
|
+
* handler: (eventName, properties) => {
|
|
93
|
+
* heap.track(eventName, properties);
|
|
94
|
+
* },
|
|
95
|
+
* filter: ['placement_interaction', 'placement_dismissed', 'placement_converted'],
|
|
96
|
+
* });
|
|
97
|
+
* ```
|
|
98
|
+
*
|
|
99
|
+
* @example Custom transform
|
|
100
|
+
* ```ts
|
|
101
|
+
* const analytics = createAnalyticsProvider({
|
|
102
|
+
* handler: (name, props) => posthog.capture(name, props),
|
|
103
|
+
* transform: (name, props) => ({
|
|
104
|
+
* eventName: `revturbine.${name}`,
|
|
105
|
+
* properties: { ...props, source: 'revturbine-sdk' },
|
|
106
|
+
* }),
|
|
107
|
+
* });
|
|
108
|
+
* ```
|
|
109
|
+
*/
|
|
110
|
+
export declare function createAnalyticsProvider(options: AnalyticsProviderOptions): EventConsumerProvider;
|
|
111
|
+
//# sourceMappingURL=analytics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../../../analytics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAEV,qBAAqB,EAEtB,MAAM,gBAAgB,CAAC;AAMxB;;;GAGG;AACH,MAAM,MAAM,wBAAwB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE/D;;;;;GAKG;AACH,MAAM,MAAM,qBAAqB,GAAG,CAClC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,wBAAwB,KACjC,IAAI,CAAC;AAEV;;;GAGG;AACH,MAAM,MAAM,yBAAyB,GAAG,CACtC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,wBAAwB,KACjC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,wBAAwB,CAAA;CAAE,GAAG,IAAI,CAAC;AAExE,yDAAyD;AACzD,MAAM,WAAW,wBAAwB;IACvC;;;OAGG;IACH,OAAO,EAAE,qBAAqB,CAAC;IAE/B;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,yBAAyB,CAAC;IAEtC;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAElB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AA+ED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,wBAAwB,GAChC,qBAAqB,CAOvB"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RevTurbine API Client — typed client for the RevTurbine API.
|
|
3
|
+
*
|
|
4
|
+
* Generated from `@revt-eng/schema` external OpenAPI spec via `openapi-typescript`.
|
|
5
|
+
* Uses `openapi-fetch` for type-safe requests with auth injection.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* const client = createRevTurbineApiClient({
|
|
10
|
+
* baseUrl: 'https://api.revturbine.io',
|
|
11
|
+
* token: 'rt_live_xxx',
|
|
12
|
+
* tenantId: 'tenant_abc',
|
|
13
|
+
* });
|
|
14
|
+
*
|
|
15
|
+
* const { data } = await client.GET('/api/plans');
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
import { type Client } from 'openapi-fetch';
|
|
19
|
+
import type { paths } from './generated/openapi';
|
|
20
|
+
export interface RevTurbineApiClientConfig {
|
|
21
|
+
/** Base URL of the RevTurbine API. */
|
|
22
|
+
baseUrl: string;
|
|
23
|
+
/** API token for authentication. */
|
|
24
|
+
token?: string;
|
|
25
|
+
/** Tenant ID to include in requests. */
|
|
26
|
+
tenantId?: string;
|
|
27
|
+
/** Additional headers to include in every request. */
|
|
28
|
+
headers?: Record<string, string>;
|
|
29
|
+
}
|
|
30
|
+
export type RevTurbineApiClient = Client<paths>;
|
|
31
|
+
/**
|
|
32
|
+
* Create a configured RevTurbine API client instance.
|
|
33
|
+
*
|
|
34
|
+
* @param config - Client configuration.
|
|
35
|
+
* @returns Typed API client with GET, POST, PUT, PATCH, DELETE methods.
|
|
36
|
+
*/
|
|
37
|
+
export declare function createRevTurbineApiClient(config: RevTurbineApiClientConfig): RevTurbineApiClient;
|
|
38
|
+
/** Error thrown when an API request fails. */
|
|
39
|
+
export declare class ApiError extends Error {
|
|
40
|
+
readonly status: number;
|
|
41
|
+
constructor(status: number, message: string);
|
|
42
|
+
}
|
|
43
|
+
export type { paths } from './generated/openapi';
|
|
44
|
+
//# sourceMappingURL=api-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../../api-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAqB,EAAE,KAAK,MAAM,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAEjD,MAAM,WAAW,yBAAyB;IACxC,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sDAAsD;IACtD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAEhD;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,yBAAyB,GAAG,mBAAmB,CAahG;AAED,8CAA8C;AAC9C,qBAAa,QAAS,SAAQ,KAAK;aAEf,MAAM,EAAE,MAAM;gBAAd,MAAM,EAAE,MAAM,EAC9B,OAAO,EAAE,MAAM;CAKlB;AAGD,YAAY,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BrowserRuntime — browser-optimized composition of core subsystems that
|
|
3
|
+
* persists interaction state, caps, and impression history to localStorage.
|
|
4
|
+
*
|
|
5
|
+
* Drop-in replacement for `LocalRuntime` in browser environments. Falls
|
|
6
|
+
* back to in-memory storage when `localStorage` is unavailable (e.g.
|
|
7
|
+
* sandboxed iframes, incognito with quota errors).
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import { BrowserRuntime } from '@revt-eng/web-sdk';
|
|
12
|
+
* import { createStaticProviders } from '@revt-eng/core';
|
|
13
|
+
*
|
|
14
|
+
* const runtime = new BrowserRuntime({
|
|
15
|
+
* tenantId: 'tenant_abc',
|
|
16
|
+
* userId: 'user_123',
|
|
17
|
+
* exportedConfig: myConfig,
|
|
18
|
+
* providers: createStaticProviders({ config: myConfig, planHandle: 'pro' }),
|
|
19
|
+
* });
|
|
20
|
+
*
|
|
21
|
+
* // State survives page reloads — impressions, dismissals, and caps
|
|
22
|
+
* // are persisted to localStorage automatically.
|
|
23
|
+
* await runtime.hydrate();
|
|
24
|
+
*
|
|
25
|
+
* const decision = await runtime.getPlacementDecision({
|
|
26
|
+
* placementId: 'slot_1',
|
|
27
|
+
* userId: 'user_123',
|
|
28
|
+
* });
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
import { LocalRuntime } from '@revt-eng/core';
|
|
32
|
+
import type { LocalRuntimeOptions } from '@revt-eng/core';
|
|
33
|
+
import type { RevTurbineStorage } from './storage';
|
|
34
|
+
export interface BrowserRuntimeOptions extends Omit<LocalRuntimeOptions, 'storage' | 'impressionStore'> {
|
|
35
|
+
/**
|
|
36
|
+
* Override the storage backend. When omitted, `localStorage` is used
|
|
37
|
+
* in the browser, falling back to in-memory storage otherwise.
|
|
38
|
+
*/
|
|
39
|
+
storage?: RevTurbineStorage;
|
|
40
|
+
/**
|
|
41
|
+
* Maximum number of impression records to keep per user.
|
|
42
|
+
* Older records are evicted when the limit is reached.
|
|
43
|
+
* Default: 500.
|
|
44
|
+
*/
|
|
45
|
+
maxImpressionRecords?: number;
|
|
46
|
+
/**
|
|
47
|
+
* Automatically call `hydrate()` during construction so
|
|
48
|
+
* impression caches are warm by the time the first decision is made.
|
|
49
|
+
* Default: true.
|
|
50
|
+
*/
|
|
51
|
+
autoHydrate?: boolean;
|
|
52
|
+
}
|
|
53
|
+
export declare class BrowserRuntime extends LocalRuntime {
|
|
54
|
+
private readonly _hydratePromise;
|
|
55
|
+
constructor(options: BrowserRuntimeOptions);
|
|
56
|
+
/**
|
|
57
|
+
* Wait for the auto-hydration started in the constructor to complete.
|
|
58
|
+
* Safe to call multiple times — subsequent calls are no-ops.
|
|
59
|
+
*/
|
|
60
|
+
ready(): Promise<void>;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=browser-runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser-runtime.d.ts","sourceRoot":"","sources":["../../../browser-runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EAAE,YAAY,EAA0B,MAAM,gBAAgB,CAAC;AACtE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAE1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAMnD,MAAM,WAAW,qBAAsB,SAAQ,IAAI,CAAC,mBAAmB,EAAE,SAAS,GAAG,iBAAiB,CAAC;IACrG;;;OAGG;IACH,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAE5B;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAMD,qBAAa,cAAe,SAAQ,YAAY;IAC9C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAuB;gBAE3C,OAAO,EAAE,qBAAqB;IAoB1C;;;OAGG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAK7B"}
|