@scrawn/core 0.0.2 → 0.0.6
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/README.md +40 -0
- package/dist/config.d.ts +17 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +9 -2
- package/dist/config.js.map +1 -1
- package/dist/core/auth/apiKeyAuth.d.ts +4 -13
- package/dist/core/auth/apiKeyAuth.d.ts.map +1 -1
- package/dist/core/auth/apiKeyAuth.js +12 -17
- package/dist/core/auth/apiKeyAuth.js.map +1 -1
- package/dist/core/auth/baseAuth.d.ts +14 -36
- package/dist/core/auth/baseAuth.d.ts.map +1 -1
- package/dist/core/auth/baseAuth.js +0 -6
- package/dist/core/auth/baseAuth.js.map +1 -1
- package/dist/core/errors/index.d.ts +192 -0
- package/dist/core/errors/index.d.ts.map +1 -0
- package/dist/core/errors/index.js +280 -0
- package/dist/core/errors/index.js.map +1 -0
- package/dist/core/grpc/callContext.d.ts +18 -0
- package/dist/core/grpc/callContext.d.ts.map +1 -0
- package/dist/core/grpc/callContext.js +35 -0
- package/dist/core/grpc/callContext.js.map +1 -0
- package/dist/core/grpc/client.d.ts +13 -123
- package/dist/core/grpc/client.d.ts.map +1 -1
- package/dist/core/grpc/client.js +23 -131
- package/dist/core/grpc/client.js.map +1 -1
- package/dist/core/grpc/index.d.ts +5 -3
- package/dist/core/grpc/index.d.ts.map +1 -1
- package/dist/core/grpc/index.js +4 -2
- package/dist/core/grpc/index.js.map +1 -1
- package/dist/core/grpc/requestBuilder.d.ts +12 -113
- package/dist/core/grpc/requestBuilder.d.ts.map +1 -1
- package/dist/core/grpc/requestBuilder.js +36 -126
- package/dist/core/grpc/requestBuilder.js.map +1 -1
- package/dist/core/grpc/streamRequestBuilder.d.ts +13 -0
- package/dist/core/grpc/streamRequestBuilder.d.ts.map +1 -0
- package/dist/core/grpc/streamRequestBuilder.js +60 -0
- package/dist/core/grpc/streamRequestBuilder.js.map +1 -0
- package/dist/core/grpc/types.d.ts +5 -52
- package/dist/core/grpc/types.d.ts.map +1 -1
- package/dist/core/grpc/types.js +0 -7
- package/dist/core/grpc/types.js.map +1 -1
- package/dist/core/pricing/builders.d.ts +157 -0
- package/dist/core/pricing/builders.d.ts.map +1 -0
- package/dist/core/pricing/builders.js +218 -0
- package/dist/core/pricing/builders.js.map +1 -0
- package/dist/core/pricing/index.d.ts +30 -0
- package/dist/core/pricing/index.d.ts.map +1 -0
- package/dist/core/pricing/index.js +32 -0
- package/dist/core/pricing/index.js.map +1 -0
- package/dist/core/pricing/resolve.d.ts +39 -0
- package/dist/core/pricing/resolve.d.ts.map +1 -0
- package/dist/core/pricing/resolve.js +50 -0
- package/dist/core/pricing/resolve.js.map +1 -0
- package/dist/core/pricing/serialize.d.ts +55 -0
- package/dist/core/pricing/serialize.d.ts.map +1 -0
- package/dist/core/pricing/serialize.js +127 -0
- package/dist/core/pricing/serialize.js.map +1 -0
- package/dist/core/pricing/types.d.ts +122 -0
- package/dist/core/pricing/types.d.ts.map +1 -0
- package/dist/core/pricing/types.js +17 -0
- package/dist/core/pricing/types.js.map +1 -0
- package/dist/core/pricing/validate.d.ts +56 -0
- package/dist/core/pricing/validate.d.ts.map +1 -0
- package/dist/core/pricing/validate.js +162 -0
- package/dist/core/pricing/validate.js.map +1 -0
- package/dist/core/scrawn.d.ts +218 -17
- package/dist/core/scrawn.d.ts.map +1 -1
- package/dist/core/scrawn.js +469 -71
- package/dist/core/scrawn.js.map +1 -1
- package/dist/core/types/auth.d.ts +1 -1
- package/dist/core/types/event.d.ts +182 -18
- package/dist/core/types/event.d.ts.map +1 -1
- package/dist/core/types/event.js +133 -5
- package/dist/core/types/event.js.map +1 -1
- package/dist/gen/auth/v1/auth_grpc_pb.d.ts +3 -0
- package/dist/gen/auth/v1/auth_grpc_pb.js +45 -0
- package/dist/gen/auth/v1/auth_pb.d.ts +63 -57
- package/dist/gen/auth/v1/auth_pb.js +471 -86
- package/dist/gen/data/v1/data_grpc_pb.d.ts +5 -0
- package/dist/gen/data/v1/data_grpc_pb.js +44 -0
- package/dist/gen/data/v1/data_pb.d.ts +254 -0
- package/dist/gen/data/v1/data_pb.js +1530 -0
- package/dist/gen/event/v1/event_grpc_pb.d.ts +3 -0
- package/dist/gen/event/v1/event_grpc_pb.js +79 -0
- package/dist/gen/event/v1/event_pb.d.ts +273 -100
- package/dist/gen/event/v1/event_pb.js +1862 -138
- package/dist/gen/package.json +3 -0
- package/dist/gen/payment/v1/payment_grpc_pb.d.ts +3 -0
- package/dist/gen/payment/v1/payment_grpc_pb.js +45 -0
- package/dist/gen/payment/v1/payment_pb.d.ts +43 -35
- package/dist/gen/payment/v1/payment_pb.js +321 -59
- package/dist/gen/query/v1/query_grpc_pb.d.ts +5 -0
- package/dist/gen/query/v1/query_grpc_pb.js +44 -0
- package/dist/gen/query/v1/query_pb.d.ts +359 -0
- package/dist/gen/query/v1/query_pb.js +2327 -0
- package/dist/index.d.ts +19 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -10
- package/dist/index.js.map +1 -1
- package/dist/utils/forkAsyncIterable.d.ts +13 -0
- package/dist/utils/forkAsyncIterable.d.ts.map +1 -0
- package/dist/utils/forkAsyncIterable.js +78 -0
- package/dist/utils/forkAsyncIterable.js.map +1 -0
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +19 -19
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/pathMatcher.js +5 -5
- package/package.json +19 -15
- package/dist/gen/auth/v1/auth_connect.d.ts +0 -22
- package/dist/gen/auth/v1/auth_connect.d.ts.map +0 -1
- package/dist/gen/auth/v1/auth_connect.js +0 -26
- package/dist/gen/auth/v1/auth_connect.js.map +0 -1
- package/dist/gen/auth/v1/auth_pb.d.ts.map +0 -1
- package/dist/gen/auth/v1/auth_pb.js.map +0 -1
- package/dist/gen/event/v1/event_connect.d.ts +0 -22
- package/dist/gen/event/v1/event_connect.d.ts.map +0 -1
- package/dist/gen/event/v1/event_connect.js +0 -26
- package/dist/gen/event/v1/event_connect.js.map +0 -1
- package/dist/gen/event/v1/event_pb.d.ts.map +0 -1
- package/dist/gen/event/v1/event_pb.js.map +0 -1
- package/dist/gen/payment/v1/payment_connect.d.ts +0 -22
- package/dist/gen/payment/v1/payment_connect.d.ts.map +0 -1
- package/dist/gen/payment/v1/payment_connect.js +0 -26
- package/dist/gen/payment/v1/payment_connect.js.map +0 -1
- package/dist/gen/payment/v1/payment_pb.d.ts.map +0 -1
- package/dist/gen/payment/v1/payment_pb.js.map +0 -1
package/dist/core/scrawn.d.ts
CHANGED
|
@@ -1,24 +1,32 @@
|
|
|
1
|
-
import type { EventPayload, MiddlewareRequest, MiddlewareResponse, MiddlewareNext, MiddlewareEventConfig } from
|
|
2
|
-
import type { AllCredentials } from
|
|
1
|
+
import type { EventPayload, MiddlewareRequest, MiddlewareResponse, MiddlewareNext, MiddlewareEventConfig, AITokenUsagePayload, EventConsumerErrorCallback } from "./types/event.js";
|
|
2
|
+
import type { AllCredentials } from "./types/auth.js";
|
|
3
|
+
import type { TagExpr, PriceExpr, ScrawnExpr } from "./pricing/types.js";
|
|
4
|
+
import { GrpcClient } from "./grpc/index.js";
|
|
5
|
+
import type { StreamEventResponse } from "../gen/event/v1/event_pb.js";
|
|
3
6
|
/**
|
|
4
7
|
* Main SDK class for Scrawn billing infrastructure.
|
|
5
8
|
*
|
|
6
9
|
* Manages authentication, event tracking, and credential caching.
|
|
7
10
|
* All event consumption methods are available directly on the SDK instance.
|
|
8
11
|
*
|
|
12
|
+
* @typeParam TTags - Union of valid tag names for compile-time type checking
|
|
13
|
+
*
|
|
9
14
|
* @example
|
|
10
15
|
* ```typescript
|
|
11
|
-
* import {
|
|
16
|
+
* import { createScrawn } from '@scrawn/core';
|
|
12
17
|
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
18
|
+
* const biller = createScrawn({
|
|
19
|
+
* apiKey: process.env.SCRAWN_KEY,
|
|
20
|
+
* baseURL: 'http://localhost:8069',
|
|
21
|
+
* tags: ["PREMIUM_CALL", "EXTRA_FEE"] as const,
|
|
22
|
+
* });
|
|
16
23
|
*
|
|
17
|
-
* //
|
|
18
|
-
*
|
|
24
|
+
* // Tags are compile-time checked
|
|
25
|
+
* biller.sdkCallEventConsumer({ userId: 'u123', debitTag: 'PREMIUM_FEATURE' });
|
|
26
|
+
* // biller.sdkCallEventConsumer({ userId: 'u123', debitTag: 'UNKNOWN' }); // Type error!
|
|
19
27
|
* ```
|
|
20
28
|
*/
|
|
21
|
-
export declare class Scrawn {
|
|
29
|
+
export declare class Scrawn<TTags extends string = string, TExprs extends string = string> {
|
|
22
30
|
/** Map of authentication method names to their implementations */
|
|
23
31
|
private authMethods;
|
|
24
32
|
/**
|
|
@@ -30,6 +38,12 @@ export declare class Scrawn {
|
|
|
30
38
|
private apiKey;
|
|
31
39
|
/** gRPC client for making type-safe API calls */
|
|
32
40
|
private grpcClient;
|
|
41
|
+
/** Public access to the gRPC client for use by other packages (e.g. @scrawn/analytics) */
|
|
42
|
+
get grpc(): GrpcClient;
|
|
43
|
+
/** API key used for authorizing gRPC calls */
|
|
44
|
+
get apikey(): string;
|
|
45
|
+
private notifyEventConsumerError;
|
|
46
|
+
private notifyValidationError;
|
|
33
47
|
/**
|
|
34
48
|
* Creates a new Scrawn SDK instance.
|
|
35
49
|
*
|
|
@@ -47,9 +61,58 @@ export declare class Scrawn {
|
|
|
47
61
|
* ```
|
|
48
62
|
*/
|
|
49
63
|
constructor(config: {
|
|
50
|
-
apiKey: AllCredentials[
|
|
64
|
+
apiKey: AllCredentials["apiKey"];
|
|
51
65
|
baseURL: string;
|
|
66
|
+
secure?: boolean;
|
|
67
|
+
credentials?: import("@grpc/grpc-js").ChannelCredentials;
|
|
52
68
|
});
|
|
69
|
+
private parseURLToTarget;
|
|
70
|
+
/**
|
|
71
|
+
* Create a type-safe tag reference.
|
|
72
|
+
*
|
|
73
|
+
* Only tag names known to this biller instance are accepted at compile time.
|
|
74
|
+
* Tag values are resolved to cent amounts by the backend at runtime.
|
|
75
|
+
*
|
|
76
|
+
* @param name - The tag name (must be one of the known tags for this instance)
|
|
77
|
+
* @returns A TagExpr referencing the named tag
|
|
78
|
+
* @throws PricingExpressionError at runtime if name format is invalid
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
* ```typescript
|
|
82
|
+
* const expr = mul(biller.tag("PREMIUM_CALL"), 3);
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
85
|
+
tag<T extends TTags>(name: T): TagExpr<T>;
|
|
86
|
+
/**
|
|
87
|
+
* Create a type-safe reference to a persisted expression.
|
|
88
|
+
*
|
|
89
|
+
* Expression names are compile-time checked against known expressions
|
|
90
|
+
* synced from the Scrawn server. The backend resolves the stored
|
|
91
|
+
* expression string and evaluates it at runtime.
|
|
92
|
+
*
|
|
93
|
+
* Also accepts inline PriceExpr as a passthrough for a consistent
|
|
94
|
+
* `biller.expr()` entry point for all expressions.
|
|
95
|
+
*
|
|
96
|
+
* @param nameOrExpr - The persisted expression name or an inline PriceExpr
|
|
97
|
+
* @returns An ExprRef (if name) or the original PriceExpr (passthrough)
|
|
98
|
+
*
|
|
99
|
+
* @example
|
|
100
|
+
* ```typescript
|
|
101
|
+
* // Reference a persisted expression
|
|
102
|
+
* biller.sdkCallEventConsumer({
|
|
103
|
+
* userId: 'u123',
|
|
104
|
+
* debitExpr: biller.expr("MY_EXPR"),
|
|
105
|
+
* });
|
|
106
|
+
*
|
|
107
|
+
* // Inline expression passthrough
|
|
108
|
+
* biller.sdkCallEventConsumer({
|
|
109
|
+
* userId: 'u123',
|
|
110
|
+
* debitExpr: biller.expr(mul(biller.tag("PREMIUM_CALL"), 3)),
|
|
111
|
+
* });
|
|
112
|
+
* ```
|
|
113
|
+
*/
|
|
114
|
+
expr<T extends TExprs>(name: T): ScrawnExpr<TTags>;
|
|
115
|
+
expr(expr: PriceExpr<TTags>): ScrawnExpr<TTags>;
|
|
53
116
|
/**
|
|
54
117
|
* Register an authentication method with the SDK.
|
|
55
118
|
*
|
|
@@ -91,24 +154,44 @@ export declare class Scrawn {
|
|
|
91
154
|
*
|
|
92
155
|
* @param payload - The SDK call data to track
|
|
93
156
|
* @param payload.userId - Unique identifier of the user making the call
|
|
94
|
-
* @param payload.debitAmount -
|
|
95
|
-
* @
|
|
96
|
-
* @
|
|
157
|
+
* @param payload.debitAmount - (Optional) Direct amount in cents to debit from the user's account
|
|
158
|
+
* @param payload.debitTag - (Optional) Named price tag for backend-managed pricing
|
|
159
|
+
* @param payload.debitExpr - (Optional) Pricing expression for complex calculations
|
|
160
|
+
* @param options - Optional configuration
|
|
161
|
+
* @param options.onError - Optional callback for handling validation or gRPC errors
|
|
162
|
+
* @returns A promise that resolves when the event is tracked or returns early on error
|
|
97
163
|
*
|
|
98
164
|
* @example
|
|
99
165
|
* ```typescript
|
|
166
|
+
* import { add, mul, tag } from '@scrawn/core';
|
|
167
|
+
*
|
|
168
|
+
* // Using direct amount (500 cents = $5.00)
|
|
169
|
+
* await scrawn.sdkCallEventConsumer({
|
|
170
|
+
* userId: 'user_abc123',
|
|
171
|
+
* debitAmount: 500
|
|
172
|
+
* });
|
|
173
|
+
*
|
|
174
|
+
* // Using price tag
|
|
175
|
+
* await scrawn.sdkCallEventConsumer({
|
|
176
|
+
* userId: 'user_abc123',
|
|
177
|
+
* debitTag: 'PREMIUM_FEATURE'
|
|
178
|
+
* });
|
|
179
|
+
*
|
|
180
|
+
* // Using pricing expression: (PREMIUM_CALL * 3) + EXTRA_FEE + 250 cents
|
|
100
181
|
* await scrawn.sdkCallEventConsumer({
|
|
101
182
|
* userId: 'user_abc123',
|
|
102
|
-
*
|
|
183
|
+
* debitExpr: add(mul(tag('PREMIUM_CALL'), 3), tag('EXTRA_FEE'), 250)
|
|
103
184
|
* });
|
|
104
185
|
* ```
|
|
105
186
|
*/
|
|
106
|
-
sdkCallEventConsumer(payload: EventPayload
|
|
187
|
+
sdkCallEventConsumer(payload: EventPayload<TTags>, options?: {
|
|
188
|
+
onError?: EventConsumerErrorCallback;
|
|
189
|
+
}): Promise<void>;
|
|
107
190
|
/**
|
|
108
191
|
* Create an Express-compatible middleware for tracking API endpoint usage.
|
|
109
192
|
*
|
|
110
193
|
* This middleware automatically tracks requests to your API endpoints for billing purposes.
|
|
111
|
-
* You provide an extractor function that determines the userId and
|
|
194
|
+
* You provide an extractor function that determines the userId and debit info (amount or tag) from each request.
|
|
112
195
|
* Optionally, you can provide a whitelist array to only track specific endpoints,
|
|
113
196
|
* or a blacklist array to exclude specific endpoints from tracking.
|
|
114
197
|
*
|
|
@@ -124,6 +207,7 @@ export declare class Scrawn {
|
|
|
124
207
|
* Takes precedence over blacklist. If omitted, all requests will be tracked.
|
|
125
208
|
* @param config.blacklist - Optional array of endpoint patterns to exclude. Same wildcard support as whitelist.
|
|
126
209
|
* Only applies to endpoints not in the whitelist.
|
|
210
|
+
* @param config.onError - Optional callback for handling validation or gRPC errors
|
|
127
211
|
*
|
|
128
212
|
* @returns Express-compatible middleware function
|
|
129
213
|
*
|
|
@@ -156,7 +240,7 @@ export declare class Scrawn {
|
|
|
156
240
|
* }));
|
|
157
241
|
* ```
|
|
158
242
|
*/
|
|
159
|
-
middlewareEventConsumer(config: MiddlewareEventConfig): (req: MiddlewareRequest, res: MiddlewareResponse, next: MiddlewareNext) => Promise<void>;
|
|
243
|
+
middlewareEventConsumer(config: MiddlewareEventConfig<TTags>): (req: MiddlewareRequest, res: MiddlewareResponse, next: MiddlewareNext) => Promise<void>;
|
|
160
244
|
/**
|
|
161
245
|
* Collect payment by creating a checkout link for a user.
|
|
162
246
|
*
|
|
@@ -193,5 +277,122 @@ export declare class Scrawn {
|
|
|
193
277
|
* @internal
|
|
194
278
|
*/
|
|
195
279
|
private consumeEvent;
|
|
280
|
+
/**
|
|
281
|
+
* Configuration options for aiTokenStreamConsumer.
|
|
282
|
+
*/
|
|
283
|
+
/**
|
|
284
|
+
* Stream AI token usage events to the Scrawn backend (fire-and-forget mode).
|
|
285
|
+
*
|
|
286
|
+
* Consumes an async iterable of AI token usage payloads and streams them
|
|
287
|
+
* to the backend for billing tracking. This is designed for real-time
|
|
288
|
+
* AI token tracking where usage is reported as tokens are consumed.
|
|
289
|
+
*
|
|
290
|
+
* @param stream - An async iterable of AI token usage payloads
|
|
291
|
+
* @returns A promise that resolves to the stream response or undefined on error
|
|
292
|
+
*/
|
|
293
|
+
aiTokenStreamConsumer(stream: AsyncIterable<AITokenUsagePayload<TTags>>): Promise<StreamEventResponse | undefined>;
|
|
294
|
+
/**
|
|
295
|
+
* Stream AI token usage events to the Scrawn backend (fire-and-forget mode).
|
|
296
|
+
*
|
|
297
|
+
* @param stream - An async iterable of AI token usage payloads
|
|
298
|
+
* @param config - Configuration with return: false (or omitted)
|
|
299
|
+
* @returns A promise that resolves to the stream response or undefined on error
|
|
300
|
+
*/
|
|
301
|
+
aiTokenStreamConsumer(stream: AsyncIterable<AITokenUsagePayload<TTags>>, config: {
|
|
302
|
+
return?: false;
|
|
303
|
+
onError?: EventConsumerErrorCallback;
|
|
304
|
+
}): Promise<StreamEventResponse | undefined>;
|
|
305
|
+
/**
|
|
306
|
+
* Stream AI token usage events to the Scrawn backend while returning a forked stream.
|
|
307
|
+
*
|
|
308
|
+
* When `return: true`, the input stream is forked: one fork is sent to the billing
|
|
309
|
+
* backend (non-blocking), and the other fork is returned to the caller for streaming
|
|
310
|
+
* to the user. This enables simultaneous billing and user-facing token streaming.
|
|
311
|
+
*
|
|
312
|
+
* @param stream - An async iterable of AI token usage payloads
|
|
313
|
+
* @param config - Configuration with return: true
|
|
314
|
+
* @returns Object containing the response promise (or undefined on error) and a forked stream for user consumption
|
|
315
|
+
*
|
|
316
|
+
* @example
|
|
317
|
+
* ```typescript
|
|
318
|
+
* const { response, stream: userStream } = await scrawn.aiTokenStreamConsumer(
|
|
319
|
+
* tokenGenerator(),
|
|
320
|
+
* { return: true }
|
|
321
|
+
* );
|
|
322
|
+
*
|
|
323
|
+
* // Stream tokens to user while billing happens in background
|
|
324
|
+
* for await (const token of userStream) {
|
|
325
|
+
* process.stdout.write(token.outputTokens.toString());
|
|
326
|
+
* }
|
|
327
|
+
*
|
|
328
|
+
* // Billing completes after stream is consumed
|
|
329
|
+
* const result = await response;
|
|
330
|
+
* if (result) {
|
|
331
|
+
* console.log(`Billed ${result.getEventsprocessed()} events`);
|
|
332
|
+
* }
|
|
333
|
+
* ```
|
|
334
|
+
*/
|
|
335
|
+
aiTokenStreamConsumer(stream: AsyncIterable<AITokenUsagePayload<TTags>>, config: {
|
|
336
|
+
return: true;
|
|
337
|
+
onError?: EventConsumerErrorCallback;
|
|
338
|
+
}): Promise<{
|
|
339
|
+
response: Promise<StreamEventResponse | undefined>;
|
|
340
|
+
stream: AsyncIterable<AITokenUsagePayload<TTags>>;
|
|
341
|
+
}>;
|
|
342
|
+
/**
|
|
343
|
+
* Transform user-provided AI token usage payloads into StreamEventRequest format.
|
|
344
|
+
*
|
|
345
|
+
* Validates each payload and maps it to the gRPC request format.
|
|
346
|
+
* Invalid payloads are logged and skipped.
|
|
347
|
+
*
|
|
348
|
+
* @param stream - The user's async iterable of AITokenUsagePayload
|
|
349
|
+
* @returns An async iterable of StreamEventRequest payloads
|
|
350
|
+
* @internal
|
|
351
|
+
*/
|
|
352
|
+
private transformAITokenStream;
|
|
196
353
|
}
|
|
354
|
+
/**
|
|
355
|
+
* Configuration for creating a Scrawn instance via {@link createScrawn}.
|
|
356
|
+
*/
|
|
357
|
+
export interface ScrawnInitConfig {
|
|
358
|
+
apiKey: string;
|
|
359
|
+
baseURL: string;
|
|
360
|
+
secure?: boolean;
|
|
361
|
+
credentials?: import("@grpc/grpc-js").ChannelCredentials;
|
|
362
|
+
tags?: readonly string[];
|
|
363
|
+
expressions?: readonly string[];
|
|
364
|
+
}
|
|
365
|
+
/**
|
|
366
|
+
* Create a type-safe Scrawn billing instance.
|
|
367
|
+
*
|
|
368
|
+
* When `tags` or `expressions` are provided as const arrays, the returned
|
|
369
|
+
* instance is parameterized with the union of those names. All pricing
|
|
370
|
+
* methods will be compile-time checked against the known set.
|
|
371
|
+
*
|
|
372
|
+
* @example
|
|
373
|
+
* ```typescript
|
|
374
|
+
* import { createScrawn, mul, inputTokens } from '@scrawn/core';
|
|
375
|
+
*
|
|
376
|
+
* const biller = createScrawn({
|
|
377
|
+
* apiKey: process.env.SCRAWN_KEY,
|
|
378
|
+
* baseURL: process.env.SCRAWN_BASE_URL,
|
|
379
|
+
* tags: ["PREMIUM_CALL", "EXTRA_FEE"] as const,
|
|
380
|
+
* expressions: ["MY_EXPR"] as const,
|
|
381
|
+
* });
|
|
382
|
+
*
|
|
383
|
+
* biller.sdkCallEventConsumer({
|
|
384
|
+
* userId: 'u123',
|
|
385
|
+
* debitExpr: biller.expr("MY_EXPR"), // persisted expression
|
|
386
|
+
* });
|
|
387
|
+
* biller.sdkCallEventConsumer({
|
|
388
|
+
* userId: 'u123',
|
|
389
|
+
* debitExpr: mul(biller.tag("PREMIUM_CALL"), 3), // inline
|
|
390
|
+
* });
|
|
391
|
+
* ```
|
|
392
|
+
*/
|
|
393
|
+
export declare function createScrawn<const TTags extends readonly string[], const TExprs extends readonly string[]>(config: ScrawnInitConfig & {
|
|
394
|
+
tags: TTags;
|
|
395
|
+
expressions: TExprs;
|
|
396
|
+
}): Scrawn<TTags[number], TExprs[number]>;
|
|
397
|
+
export declare function createScrawn(config: ScrawnInitConfig): Scrawn;
|
|
197
398
|
//# sourceMappingURL=scrawn.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scrawn.d.ts","sourceRoot":"","sources":["../../src/core/scrawn.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,qBAAqB,
|
|
1
|
+
{"version":3,"file":"scrawn.d.ts","sourceRoot":"","sources":["../../src/core/scrawn.ts"],"names":[],"mappings":"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"}
|