@voyantjs/utils 0.1.0 → 0.1.1
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/package.json +2 -2
- package/dist/accounting-countries.d.ts +0 -12
- package/dist/accounting-countries.d.ts.map +0 -1
- package/dist/accounting-countries.js +0 -307
- package/dist/accounting-countries.js.map +0 -1
- package/dist/accounting-regions.d.ts +0 -103
- package/dist/accounting-regions.d.ts.map +0 -1
- package/dist/accounting-regions.js +0 -38
- package/dist/accounting-regions.js.map +0 -1
- package/dist/airlines.d.ts +0 -960
- package/dist/airlines.d.ts.map +0 -1
- package/dist/airlines.js +0 -989
- package/dist/airlines.js.map +0 -1
- package/dist/analytics/api-key-events.d.ts +0 -89
- package/dist/analytics/api-key-events.d.ts.map +0 -1
- package/dist/analytics/api-key-events.js +0 -99
- package/dist/analytics/api-key-events.js.map +0 -1
- package/dist/api-keys-client.d.ts +0 -40
- package/dist/api-keys-client.d.ts.map +0 -1
- package/dist/api-keys-client.js +0 -63
- package/dist/api-keys-client.js.map +0 -1
- package/dist/api-keys.d.ts +0 -48
- package/dist/api-keys.d.ts.map +0 -1
- package/dist/api-keys.js +0 -108
- package/dist/api-keys.js.map +0 -1
- package/dist/checkout-signature.d.ts +0 -15
- package/dist/checkout-signature.d.ts.map +0 -1
- package/dist/checkout-signature.js +0 -64
- package/dist/checkout-signature.js.map +0 -1
- package/dist/conditions.d.ts +0 -36
- package/dist/conditions.d.ts.map +0 -1
- package/dist/conditions.js +0 -396
- package/dist/conditions.js.map +0 -1
- package/dist/email/send.d.ts +0 -20
- package/dist/email/send.d.ts.map +0 -1
- package/dist/email/send.js +0 -53
- package/dist/email/send.js.map +0 -1
- package/dist/form-runtime.d.ts +0 -38
- package/dist/form-runtime.d.ts.map +0 -1
- package/dist/form-runtime.js +0 -174
- package/dist/form-runtime.js.map +0 -1
- package/dist/gcs/storage.d.ts +0 -23
- package/dist/gcs/storage.d.ts.map +0 -1
- package/dist/gcs/storage.js +0 -25
- package/dist/gcs/storage.js.map +0 -1
- package/dist/geo.d.ts +0 -85
- package/dist/geo.d.ts.map +0 -1
- package/dist/geo.js +0 -141
- package/dist/geo.js.map +0 -1
- package/dist/kms-crypto.d.ts +0 -20
- package/dist/kms-crypto.d.ts.map +0 -1
- package/dist/kms-crypto.js +0 -108
- package/dist/kms-crypto.js.map +0 -1
- package/dist/kv-codecs.d.ts +0 -6
- package/dist/kv-codecs.d.ts.map +0 -1
- package/dist/kv-codecs.js +0 -4
- package/dist/kv-codecs.js.map +0 -1
- package/dist/price/resolve.d.ts +0 -91
- package/dist/price/resolve.d.ts.map +0 -1
- package/dist/price/resolve.js +0 -227
- package/dist/price/resolve.js.map +0 -1
- package/dist/redis.d.ts +0 -13
- package/dist/redis.d.ts.map +0 -1
- package/dist/redis.js +0 -16
- package/dist/redis.js.map +0 -1
- package/dist/region-only.d.ts +0 -11
- package/dist/region-only.d.ts.map +0 -1
- package/dist/region-only.js +0 -49
- package/dist/region-only.js.map +0 -1
- package/dist/region.d.ts +0 -11
- package/dist/region.d.ts.map +0 -1
- package/dist/region.js +0 -47
- package/dist/region.js.map +0 -1
- package/dist/romania-bucharest-sectors.d.ts +0 -6
- package/dist/romania-bucharest-sectors.d.ts.map +0 -1
- package/dist/romania-bucharest-sectors.js +0 -27
- package/dist/romania-bucharest-sectors.js.map +0 -1
- package/dist/romania-counties.d.ts +0 -6
- package/dist/romania-counties.d.ts.map +0 -1
- package/dist/romania-counties.js +0 -171
- package/dist/romania-counties.js.map +0 -1
- package/dist/sms/provider.d.ts +0 -28
- package/dist/sms/provider.d.ts.map +0 -1
- package/dist/sms/provider.js +0 -50
- package/dist/sms/provider.js.map +0 -1
- package/dist/sms/segments.d.ts +0 -3
- package/dist/sms/segments.d.ts.map +0 -1
- package/dist/sms/segments.js +0 -33
- package/dist/sms/segments.js.map +0 -1
- package/dist/twilio/client.d.ts +0 -13
- package/dist/twilio/client.d.ts.map +0 -1
- package/dist/twilio/client.js +0 -26
- package/dist/twilio/client.js.map +0 -1
- package/dist/usage/index.d.ts +0 -34
- package/dist/usage/index.d.ts.map +0 -1
- package/dist/usage/index.js +0 -18
- package/dist/usage/index.js.map +0 -1
- package/dist/usage/policy.d.ts +0 -27
- package/dist/usage/policy.d.ts.map +0 -1
- package/dist/usage/policy.js +0 -17
- package/dist/usage/policy.js.map +0 -1
- package/dist/validation/log.d.ts +0 -10
- package/dist/validation/log.d.ts.map +0 -1
- package/dist/validation/log.js +0 -37
- package/dist/validation/log.js.map +0 -1
- package/dist/zod-form-builder.d.ts +0 -45
- package/dist/zod-form-builder.d.ts.map +0 -1
- package/dist/zod-form-builder.js +0 -216
- package/dist/zod-form-builder.js.map +0 -1
package/dist/airlines.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"airlines.js","sourceRoot":"","sources":["../src/airlines.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* API Key Analytics Event Utilities
|
|
3
|
-
*
|
|
4
|
-
* Functions for tracking API key lifecycle and usage events to ClickHouse
|
|
5
|
-
*/
|
|
6
|
-
export interface ApiKeyLifecycleEvent {
|
|
7
|
-
eventType: 'created' | 'updated' | 'revoked' | 'expired' | 'purged';
|
|
8
|
-
apiKeyId: string;
|
|
9
|
-
keyPrefix: string;
|
|
10
|
-
keySuffix: string;
|
|
11
|
-
eventActor: string;
|
|
12
|
-
keyName: string;
|
|
13
|
-
scopes: string[];
|
|
14
|
-
expiresAt: string | null;
|
|
15
|
-
status: 'active' | 'revoked' | 'expired' | 'purged';
|
|
16
|
-
changes?: Record<string, any>;
|
|
17
|
-
ipAddress?: string;
|
|
18
|
-
userAgent?: string;
|
|
19
|
-
}
|
|
20
|
-
export interface ApiKeyUsageEvent {
|
|
21
|
-
apiKeyId: string;
|
|
22
|
-
keyPrefix: string;
|
|
23
|
-
method: string;
|
|
24
|
-
endpoint: string;
|
|
25
|
-
endpointPattern: string;
|
|
26
|
-
statusCode: number;
|
|
27
|
-
responseTimeMs: number;
|
|
28
|
-
requiredScopes: string[];
|
|
29
|
-
scopeCheckPassed: boolean;
|
|
30
|
-
rateLimitHit: boolean;
|
|
31
|
-
ipAddress?: string;
|
|
32
|
-
userAgent?: string;
|
|
33
|
-
region?: 'us' | 'eu' | 'unknown';
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Format an API key lifecycle event for ClickHouse insertion
|
|
37
|
-
*/
|
|
38
|
-
export declare function formatApiKeyLifecycleEvent(event: ApiKeyLifecycleEvent): {
|
|
39
|
-
api_key_id: string;
|
|
40
|
-
key_prefix: string;
|
|
41
|
-
key_suffix: string;
|
|
42
|
-
event_type: "created" | "updated" | "revoked" | "expired" | "purged";
|
|
43
|
-
event_actor: string;
|
|
44
|
-
key_name: string;
|
|
45
|
-
scopes: string[];
|
|
46
|
-
expires_at: string | null;
|
|
47
|
-
status: "active" | "revoked" | "expired" | "purged";
|
|
48
|
-
changes_json: string;
|
|
49
|
-
ip_address: string | null;
|
|
50
|
-
user_agent: string | null;
|
|
51
|
-
};
|
|
52
|
-
/**
|
|
53
|
-
* Format an API key usage event for ClickHouse insertion
|
|
54
|
-
*/
|
|
55
|
-
export declare function formatApiKeyUsageEvent(event: ApiKeyUsageEvent): {
|
|
56
|
-
api_key_id: string;
|
|
57
|
-
key_prefix: string;
|
|
58
|
-
method: string;
|
|
59
|
-
endpoint: string;
|
|
60
|
-
endpoint_pattern: string;
|
|
61
|
-
status_code: number;
|
|
62
|
-
response_time_ms: number;
|
|
63
|
-
required_scopes: string[];
|
|
64
|
-
scope_check_passed: number;
|
|
65
|
-
rate_limit_hit: number;
|
|
66
|
-
ip_address: string | null;
|
|
67
|
-
user_agent: string | null;
|
|
68
|
-
region: "eu" | "us" | "unknown";
|
|
69
|
-
};
|
|
70
|
-
/**
|
|
71
|
-
* Normalize endpoint path to a pattern for aggregation
|
|
72
|
-
* Examples:
|
|
73
|
-
* /v1/products/abc-123 -> /v1/products/:id
|
|
74
|
-
* /v1/booking/xyz-456/progress -> /v1/booking/:id/progress
|
|
75
|
-
*/
|
|
76
|
-
export declare function normalizeEndpointPattern(path: string): string;
|
|
77
|
-
/**
|
|
78
|
-
* Extract IP address from request headers (Cloudflare Workers)
|
|
79
|
-
*/
|
|
80
|
-
export declare function extractIpAddress(request: Request): string | undefined;
|
|
81
|
-
/**
|
|
82
|
-
* Extract user agent from request
|
|
83
|
-
*/
|
|
84
|
-
export declare function extractUserAgent(request: Request): string | undefined;
|
|
85
|
-
/**
|
|
86
|
-
* Determine region from Cloudflare headers
|
|
87
|
-
*/
|
|
88
|
-
export declare function extractRegion(request: Request): 'us' | 'eu' | 'unknown';
|
|
89
|
-
//# sourceMappingURL=api-key-events.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"api-key-events.d.ts","sourceRoot":"","sources":["../../src/analytics/api-key-events.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAA;IACnE,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAA;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,eAAe,EAAE,MAAM,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,EAAE,MAAM,EAAE,CAAA;IACxB,gBAAgB,EAAE,OAAO,CAAA;IACzB,YAAY,EAAE,OAAO,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,CAAA;CACjC;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,oBAAoB;;;;;;;;;;;;;EAerE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,gBAAgB;;;;;;;;;;;;;;EAgB7D;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAc7D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAOrE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAErE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,CAqBvE"}
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* API Key Analytics Event Utilities
|
|
3
|
-
*
|
|
4
|
-
* Functions for tracking API key lifecycle and usage events to ClickHouse
|
|
5
|
-
*/
|
|
6
|
-
/**
|
|
7
|
-
* Format an API key lifecycle event for ClickHouse insertion
|
|
8
|
-
*/
|
|
9
|
-
export function formatApiKeyLifecycleEvent(event) {
|
|
10
|
-
return {
|
|
11
|
-
api_key_id: event.apiKeyId,
|
|
12
|
-
key_prefix: event.keyPrefix,
|
|
13
|
-
key_suffix: event.keySuffix,
|
|
14
|
-
event_type: event.eventType,
|
|
15
|
-
event_actor: event.eventActor,
|
|
16
|
-
key_name: event.keyName,
|
|
17
|
-
scopes: event.scopes,
|
|
18
|
-
expires_at: event.expiresAt,
|
|
19
|
-
status: event.status,
|
|
20
|
-
changes_json: event.changes ? JSON.stringify(event.changes) : '',
|
|
21
|
-
ip_address: event.ipAddress || null,
|
|
22
|
-
user_agent: event.userAgent || null,
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Format an API key usage event for ClickHouse insertion
|
|
27
|
-
*/
|
|
28
|
-
export function formatApiKeyUsageEvent(event) {
|
|
29
|
-
return {
|
|
30
|
-
api_key_id: event.apiKeyId,
|
|
31
|
-
key_prefix: event.keyPrefix,
|
|
32
|
-
method: event.method,
|
|
33
|
-
endpoint: event.endpoint,
|
|
34
|
-
endpoint_pattern: event.endpointPattern,
|
|
35
|
-
status_code: event.statusCode,
|
|
36
|
-
response_time_ms: event.responseTimeMs,
|
|
37
|
-
required_scopes: event.requiredScopes,
|
|
38
|
-
scope_check_passed: event.scopeCheckPassed ? 1 : 0,
|
|
39
|
-
rate_limit_hit: event.rateLimitHit ? 1 : 0,
|
|
40
|
-
ip_address: event.ipAddress || null,
|
|
41
|
-
user_agent: event.userAgent || null,
|
|
42
|
-
region: event.region || 'unknown',
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Normalize endpoint path to a pattern for aggregation
|
|
47
|
-
* Examples:
|
|
48
|
-
* /v1/products/abc-123 -> /v1/products/:id
|
|
49
|
-
* /v1/booking/xyz-456/progress -> /v1/booking/:id/progress
|
|
50
|
-
*/
|
|
51
|
-
export function normalizeEndpointPattern(path) {
|
|
52
|
-
// UUID pattern
|
|
53
|
-
const uuidRegex = /[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/gi;
|
|
54
|
-
let normalized = path.replace(uuidRegex, ':id');
|
|
55
|
-
// Numeric IDs
|
|
56
|
-
const numericIdRegex = /\/\d+(?=\/|$)/g;
|
|
57
|
-
normalized = normalized.replace(numericIdRegex, '/:id');
|
|
58
|
-
// Hex codes (like booking codes)
|
|
59
|
-
const hexCodeRegex = /\/[0-9A-F]{8,}(?=\/|$)/g;
|
|
60
|
-
normalized = normalized.replace(hexCodeRegex, '/:code');
|
|
61
|
-
return normalized;
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Extract IP address from request headers (Cloudflare Workers)
|
|
65
|
-
*/
|
|
66
|
-
export function extractIpAddress(request) {
|
|
67
|
-
return (request.headers.get('cf-connecting-ip') ||
|
|
68
|
-
request.headers.get('x-forwarded-for')?.split(',')[0]?.trim() ||
|
|
69
|
-
request.headers.get('x-real-ip') ||
|
|
70
|
-
undefined);
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Extract user agent from request
|
|
74
|
-
*/
|
|
75
|
-
export function extractUserAgent(request) {
|
|
76
|
-
return request.headers.get('user-agent') || undefined;
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Determine region from Cloudflare headers
|
|
80
|
-
*/
|
|
81
|
-
export function extractRegion(request) {
|
|
82
|
-
const cfRegion = request.headers.get('cf-ipcountry');
|
|
83
|
-
// EU countries
|
|
84
|
-
const euCountries = [
|
|
85
|
-
'AT', 'BE', 'BG', 'HR', 'CY', 'CZ', 'DK', 'EE', 'FI', 'FR',
|
|
86
|
-
'DE', 'GR', 'HU', 'IE', 'IT', 'LV', 'LT', 'LU', 'MT', 'NL',
|
|
87
|
-
'PL', 'PT', 'RO', 'SK', 'SI', 'ES', 'SE', 'GB', 'IS', 'LI',
|
|
88
|
-
'NO', 'CH'
|
|
89
|
-
];
|
|
90
|
-
if (cfRegion && euCountries.includes(cfRegion)) {
|
|
91
|
-
return 'eu';
|
|
92
|
-
}
|
|
93
|
-
// North American countries default to US
|
|
94
|
-
if (cfRegion && ['US', 'CA', 'MX'].includes(cfRegion)) {
|
|
95
|
-
return 'us';
|
|
96
|
-
}
|
|
97
|
-
return 'unknown';
|
|
98
|
-
}
|
|
99
|
-
//# sourceMappingURL=api-key-events.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"api-key-events.js","sourceRoot":"","sources":["../../src/analytics/api-key-events.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Client-safe API Key Utilities
|
|
3
|
-
*
|
|
4
|
-
* These functions don't use Node.js crypto and are safe to import in client components.
|
|
5
|
-
* For crypto operations (generation, hashing, verification), use api-keys.ts
|
|
6
|
-
*/
|
|
7
|
-
/**
|
|
8
|
-
* Mask an API key for display
|
|
9
|
-
* Shows: "voy_live***abc123" (first 8 + last 6 chars)
|
|
10
|
-
*
|
|
11
|
-
* @param key - Full API key or just prefix/suffix
|
|
12
|
-
* @returns Masked key for display
|
|
13
|
-
*/
|
|
14
|
-
export declare function maskApiKey(key: string): string;
|
|
15
|
-
export declare function maskApiKey(prefix: string, suffix: string): string;
|
|
16
|
-
/**
|
|
17
|
-
* Validate API key format
|
|
18
|
-
*
|
|
19
|
-
* @param key - The API key to validate
|
|
20
|
-
* @returns True if format is valid
|
|
21
|
-
*/
|
|
22
|
-
export declare function isValidApiKeyFormat(key: string): boolean;
|
|
23
|
-
/**
|
|
24
|
-
* Extract the environment from an API key
|
|
25
|
-
*
|
|
26
|
-
* @param key - The API key
|
|
27
|
-
* @returns The environment ("live" or "sandbox") or null if invalid
|
|
28
|
-
*/
|
|
29
|
-
export declare function getApiKeyEnvironment(key: string): "live" | "sandbox" | null;
|
|
30
|
-
/**
|
|
31
|
-
* Extract prefix and suffix from full API key
|
|
32
|
-
*
|
|
33
|
-
* @param key - The full API key
|
|
34
|
-
* @returns Object with prefix and suffix
|
|
35
|
-
*/
|
|
36
|
-
export declare function extractApiKeyParts(key: string): {
|
|
37
|
-
prefix: string;
|
|
38
|
-
suffix: string;
|
|
39
|
-
};
|
|
40
|
-
//# sourceMappingURL=api-keys-client.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"api-keys-client.d.ts","sourceRoot":"","sources":["../src/api-keys-client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;AAC/C,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;AAalE;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAWxD;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,CAI3E;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAKlF"}
|
package/dist/api-keys-client.js
DELETED
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Client-safe API Key Utilities
|
|
3
|
-
*
|
|
4
|
-
* These functions don't use Node.js crypto and are safe to import in client components.
|
|
5
|
-
* For crypto operations (generation, hashing, verification), use api-keys.ts
|
|
6
|
-
*/
|
|
7
|
-
const API_KEY_PREFIXES = ["voy_live", "voy_test"];
|
|
8
|
-
export function maskApiKey(keyOrPrefix, suffix) {
|
|
9
|
-
if (suffix) {
|
|
10
|
-
// Called with (prefix, suffix)
|
|
11
|
-
return `${keyOrPrefix}***${suffix}`;
|
|
12
|
-
}
|
|
13
|
-
else {
|
|
14
|
-
// Called with full key
|
|
15
|
-
const prefix = keyOrPrefix.slice(0, 8);
|
|
16
|
-
const keySuffix = keyOrPrefix.slice(-6);
|
|
17
|
-
return `${prefix}***${keySuffix}`;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Validate API key format
|
|
22
|
-
*
|
|
23
|
-
* @param key - The API key to validate
|
|
24
|
-
* @returns True if format is valid
|
|
25
|
-
*/
|
|
26
|
-
export function isValidApiKeyFormat(key) {
|
|
27
|
-
// Must start with a valid prefix (voy_live_ or voy_test_)
|
|
28
|
-
const hasValidPrefix = API_KEY_PREFIXES.some((prefix) => key.startsWith(`${prefix}_`));
|
|
29
|
-
if (!hasValidPrefix)
|
|
30
|
-
return false;
|
|
31
|
-
// Must be correct length: prefix (8) + underscore (1) + random (32) = 41
|
|
32
|
-
if (key.length !== 41)
|
|
33
|
-
return false;
|
|
34
|
-
// Random part must be base64url (alphanumeric + - and _)
|
|
35
|
-
const randomPart = key.slice(9);
|
|
36
|
-
return /^[A-Za-z0-9_-]{32}$/.test(randomPart);
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Extract the environment from an API key
|
|
40
|
-
*
|
|
41
|
-
* @param key - The API key
|
|
42
|
-
* @returns The environment ("live" or "sandbox") or null if invalid
|
|
43
|
-
*/
|
|
44
|
-
export function getApiKeyEnvironment(key) {
|
|
45
|
-
if (key.startsWith("voy_live_"))
|
|
46
|
-
return "live";
|
|
47
|
-
if (key.startsWith("voy_test_"))
|
|
48
|
-
return "sandbox";
|
|
49
|
-
return null;
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Extract prefix and suffix from full API key
|
|
53
|
-
*
|
|
54
|
-
* @param key - The full API key
|
|
55
|
-
* @returns Object with prefix and suffix
|
|
56
|
-
*/
|
|
57
|
-
export function extractApiKeyParts(key) {
|
|
58
|
-
return {
|
|
59
|
-
prefix: key.slice(0, 8),
|
|
60
|
-
suffix: key.slice(-6),
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
//# sourceMappingURL=api-keys-client.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"api-keys-client.js","sourceRoot":"","sources":["../src/api-keys-client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,gBAAgB,GAAG,CAAC,UAAU,EAAE,UAAU,CAAU,CAAA;AAY1D,MAAM,UAAU,UAAU,CAAC,WAAmB,EAAE,MAAe;IAC7D,IAAI,MAAM,EAAE,CAAC;QACX,+BAA+B;QAC/B,OAAO,GAAG,WAAW,MAAM,MAAM,EAAE,CAAA;IACrC,CAAC;SAAM,CAAC;QACN,uBAAuB;QACvB,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QACtC,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;QACvC,OAAO,GAAG,MAAM,MAAM,SAAS,EAAE,CAAA;IACnC,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAW;IAC7C,0DAA0D;IAC1D,MAAM,cAAc,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAA;IACtF,IAAI,CAAC,cAAc;QAAE,OAAO,KAAK,CAAA;IAEjC,yEAAyE;IACzE,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE;QAAE,OAAO,KAAK,CAAA;IAEnC,yDAAyD;IACzD,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAC/B,OAAO,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;AAC/C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAW;IAC9C,IAAI,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,MAAM,CAAA;IAC9C,IAAI,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,SAAS,CAAA;IACjD,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,OAAO;QACL,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QACvB,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KACtB,CAAA;AACH,CAAC"}
|
package/dist/api-keys.d.ts
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* API Key Generation and Hashing Utilities (Server-only)
|
|
3
|
-
*
|
|
4
|
-
* This file uses Web Crypto API and should only be imported in server-side code.
|
|
5
|
-
* For client-safe utilities, import from api-keys-client.ts directly.
|
|
6
|
-
*
|
|
7
|
-
* Key format: voy_<env>_<32 random bytes in base64url>
|
|
8
|
-
* Examples:
|
|
9
|
-
* - Live: voy_live_8kNp2qX4vR9mJ7tY3wL1nC5bD6fG8hK0
|
|
10
|
-
* - Sandbox: voy_sbx_8kNp2qX4vR9mJ7tY3wL1nC5bD6fG8hK0
|
|
11
|
-
*
|
|
12
|
-
* Security:
|
|
13
|
-
* - Uses Web Crypto API for CSPRNG
|
|
14
|
-
* - SHA-256 hash for storage (irreversible)
|
|
15
|
-
* - Constant-time comparison to prevent timing attacks
|
|
16
|
-
*/
|
|
17
|
-
export { maskApiKey, isValidApiKeyFormat, extractApiKeyParts, getApiKeyEnvironment } from "./api-keys-client";
|
|
18
|
-
export type ApiKeyEnvironment = "live" | "sandbox";
|
|
19
|
-
interface GeneratedApiKey {
|
|
20
|
-
key: string;
|
|
21
|
-
hash: string;
|
|
22
|
-
prefix: string;
|
|
23
|
-
suffix: string;
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Generate a cryptographically secure API key
|
|
27
|
-
*
|
|
28
|
-
* @param environment - The organization environment type ("live" or "sandbox")
|
|
29
|
-
* @returns Object containing full key, hash, and display parts
|
|
30
|
-
*/
|
|
31
|
-
export declare function generateApiKey(environment?: ApiKeyEnvironment): Promise<GeneratedApiKey>;
|
|
32
|
-
/**
|
|
33
|
-
* Hash an API key using SHA-256
|
|
34
|
-
*
|
|
35
|
-
* @param key - The full API key to hash
|
|
36
|
-
* @returns Base64-encoded SHA-256 hash
|
|
37
|
-
*/
|
|
38
|
-
export declare function hashApiKey(key: string): Promise<string>;
|
|
39
|
-
/**
|
|
40
|
-
* Verify an API key against a stored hash
|
|
41
|
-
* Uses constant-time comparison to prevent timing attacks
|
|
42
|
-
*
|
|
43
|
-
* @param key - The provided API key
|
|
44
|
-
* @param storedHash - The SHA-256 hash from database
|
|
45
|
-
* @returns True if key matches hash
|
|
46
|
-
*/
|
|
47
|
-
export declare function verifyApiKey(key: string, storedHash: string): Promise<boolean>;
|
|
48
|
-
//# sourceMappingURL=api-keys.d.ts.map
|
package/dist/api-keys.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"api-keys.d.ts","sourceRoot":"","sources":["../src/api-keys.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AAE7G,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,SAAS,CAAA;AASlD,UAAU,eAAe;IACvB,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAClC,WAAW,GAAE,iBAA0B,GACtC,OAAO,CAAC,eAAe,CAAC,CA0B1B;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAS7D;AAED;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGpF"}
|
package/dist/api-keys.js
DELETED
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* API Key Generation and Hashing Utilities (Server-only)
|
|
3
|
-
*
|
|
4
|
-
* This file uses Web Crypto API and should only be imported in server-side code.
|
|
5
|
-
* For client-safe utilities, import from api-keys-client.ts directly.
|
|
6
|
-
*
|
|
7
|
-
* Key format: voy_<env>_<32 random bytes in base64url>
|
|
8
|
-
* Examples:
|
|
9
|
-
* - Live: voy_live_8kNp2qX4vR9mJ7tY3wL1nC5bD6fG8hK0
|
|
10
|
-
* - Sandbox: voy_sbx_8kNp2qX4vR9mJ7tY3wL1nC5bD6fG8hK0
|
|
11
|
-
*
|
|
12
|
-
* Security:
|
|
13
|
-
* - Uses Web Crypto API for CSPRNG
|
|
14
|
-
* - SHA-256 hash for storage (irreversible)
|
|
15
|
-
* - Constant-time comparison to prevent timing attacks
|
|
16
|
-
*/
|
|
17
|
-
// Use globalThis.crypto which is available in Workers, Node.js 20+, and browsers
|
|
18
|
-
// Re-export client-safe utilities for convenience in server code
|
|
19
|
-
export { maskApiKey, isValidApiKeyFormat, extractApiKeyParts, getApiKeyEnvironment } from "./api-keys-client";
|
|
20
|
-
const API_KEY_PREFIXES = {
|
|
21
|
-
live: "voy_live",
|
|
22
|
-
sandbox: "voy_test",
|
|
23
|
-
};
|
|
24
|
-
const RANDOM_BYTES_LENGTH = 32;
|
|
25
|
-
/**
|
|
26
|
-
* Generate a cryptographically secure API key
|
|
27
|
-
*
|
|
28
|
-
* @param environment - The organization environment type ("live" or "sandbox")
|
|
29
|
-
* @returns Object containing full key, hash, and display parts
|
|
30
|
-
*/
|
|
31
|
-
export async function generateApiKey(environment = "live") {
|
|
32
|
-
// Generate 32 random bytes using Web Crypto API
|
|
33
|
-
const randomBytes = globalThis.crypto.getRandomValues(new Uint8Array(RANDOM_BYTES_LENGTH));
|
|
34
|
-
// Convert to base64url (URL-safe, no padding)
|
|
35
|
-
const randomPart = bufferToBase64Url(randomBytes).slice(0, 32);
|
|
36
|
-
// Get prefix based on environment
|
|
37
|
-
const keyPrefix = API_KEY_PREFIXES[environment];
|
|
38
|
-
// Construct full key
|
|
39
|
-
const key = `${keyPrefix}_${randomPart}`;
|
|
40
|
-
// Hash for storage
|
|
41
|
-
const hash = await hashApiKey(key);
|
|
42
|
-
// Extract display parts
|
|
43
|
-
const prefix = key.slice(0, 8); // "voy_live" or "voy_sbx_"
|
|
44
|
-
const suffix = key.slice(-6); // Last 6 chars
|
|
45
|
-
return {
|
|
46
|
-
key,
|
|
47
|
-
hash,
|
|
48
|
-
prefix,
|
|
49
|
-
suffix,
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Hash an API key using SHA-256
|
|
54
|
-
*
|
|
55
|
-
* @param key - The full API key to hash
|
|
56
|
-
* @returns Base64-encoded SHA-256 hash
|
|
57
|
-
*/
|
|
58
|
-
export async function hashApiKey(key) {
|
|
59
|
-
const encoder = new TextEncoder();
|
|
60
|
-
const data = encoder.encode(key);
|
|
61
|
-
// SHA-256 hash
|
|
62
|
-
const hashBuffer = await globalThis.crypto.subtle.digest("SHA-256", data);
|
|
63
|
-
// Convert to base64
|
|
64
|
-
return bufferToBase64(new Uint8Array(hashBuffer));
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Verify an API key against a stored hash
|
|
68
|
-
* Uses constant-time comparison to prevent timing attacks
|
|
69
|
-
*
|
|
70
|
-
* @param key - The provided API key
|
|
71
|
-
* @param storedHash - The SHA-256 hash from database
|
|
72
|
-
* @returns True if key matches hash
|
|
73
|
-
*/
|
|
74
|
-
export async function verifyApiKey(key, storedHash) {
|
|
75
|
-
const providedHash = await hashApiKey(key);
|
|
76
|
-
return constantTimeEqual(providedHash, storedHash);
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Constant-time string comparison to prevent timing attacks
|
|
80
|
-
*
|
|
81
|
-
* @param a - First string
|
|
82
|
-
* @param b - Second string
|
|
83
|
-
* @returns True if strings are equal
|
|
84
|
-
*/
|
|
85
|
-
function constantTimeEqual(a, b) {
|
|
86
|
-
if (a.length !== b.length)
|
|
87
|
-
return false;
|
|
88
|
-
let result = 0;
|
|
89
|
-
for (let i = 0; i < a.length; i++) {
|
|
90
|
-
result |= a.charCodeAt(i) ^ b.charCodeAt(i);
|
|
91
|
-
}
|
|
92
|
-
return result === 0;
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Convert Uint8Array to base64 string
|
|
96
|
-
*/
|
|
97
|
-
function bufferToBase64(buffer) {
|
|
98
|
-
const bytes = Array.from(buffer);
|
|
99
|
-
const binary = String.fromCharCode(...bytes);
|
|
100
|
-
return btoa(binary);
|
|
101
|
-
}
|
|
102
|
-
/**
|
|
103
|
-
* Convert Uint8Array to base64url (URL-safe, no padding)
|
|
104
|
-
*/
|
|
105
|
-
function bufferToBase64Url(buffer) {
|
|
106
|
-
return bufferToBase64(buffer).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
|
|
107
|
-
}
|
|
108
|
-
//# sourceMappingURL=api-keys.js.map
|
package/dist/api-keys.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"api-keys.js","sourceRoot":"","sources":["../src/api-keys.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export interface CheckoutPricingSignaturePayload {
|
|
2
|
-
[key: string]: unknown;
|
|
3
|
-
version: number;
|
|
4
|
-
bookingId: string;
|
|
5
|
-
source: string;
|
|
6
|
-
amount: number;
|
|
7
|
-
amountMinor: number;
|
|
8
|
-
currency: string;
|
|
9
|
-
payMode: "full" | "partial";
|
|
10
|
-
computedAt: string;
|
|
11
|
-
}
|
|
12
|
-
export declare function signCheckoutPricingPayload(payload: CheckoutPricingSignaturePayload, secret: string): Promise<string>;
|
|
13
|
-
export declare function verifyCheckoutPricingPayload(payload: CheckoutPricingSignaturePayload, signature: string, secret: string): Promise<boolean>;
|
|
14
|
-
export declare function serializeCheckoutPricingPayload(payload: CheckoutPricingSignaturePayload): string;
|
|
15
|
-
//# sourceMappingURL=checkout-signature.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"checkout-signature.d.ts","sourceRoot":"","sources":["../src/checkout-signature.ts"],"names":[],"mappings":"AAkEA,MAAM,WAAW,+BAA+B;IAC9C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;IACtB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;IAC3B,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,+BAA+B,EACxC,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,CAGjB;AAED,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,+BAA+B,EACxC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC,CAGlB;AAED,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,+BAA+B,GAAG,MAAM,CAEhG"}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
let nodeCrypto = null;
|
|
2
|
-
try {
|
|
3
|
-
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
4
|
-
nodeCrypto = require("crypto");
|
|
5
|
-
}
|
|
6
|
-
catch {
|
|
7
|
-
nodeCrypto = null;
|
|
8
|
-
}
|
|
9
|
-
const isWebCryptoAvailable = () => typeof crypto !== "undefined" && typeof crypto.subtle !== "undefined";
|
|
10
|
-
function toCanonicalJson(value) {
|
|
11
|
-
const sortedEntries = Object.entries(value)
|
|
12
|
-
.map(([key, val]) => {
|
|
13
|
-
if (val && typeof val === "object" && !Array.isArray(val)) {
|
|
14
|
-
return [key, JSON.parse(toCanonicalJson(val))];
|
|
15
|
-
}
|
|
16
|
-
return [key, val];
|
|
17
|
-
})
|
|
18
|
-
.sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0));
|
|
19
|
-
const canonicalObject = {};
|
|
20
|
-
for (const [k, v] of sortedEntries) {
|
|
21
|
-
canonicalObject[k] = v;
|
|
22
|
-
}
|
|
23
|
-
return JSON.stringify(canonicalObject);
|
|
24
|
-
}
|
|
25
|
-
async function hmacSha256(message, secret) {
|
|
26
|
-
if (!secret || secret.length < 16) {
|
|
27
|
-
throw new Error("CHECKOUT_SESSION_SECRET must be at least 16 characters");
|
|
28
|
-
}
|
|
29
|
-
if (nodeCrypto) {
|
|
30
|
-
return nodeCrypto.createHmac("sha256", secret).update(message).digest("base64url");
|
|
31
|
-
}
|
|
32
|
-
if (isWebCryptoAvailable()) {
|
|
33
|
-
const encoder = new TextEncoder();
|
|
34
|
-
const key = await crypto.subtle.importKey("raw", encoder.encode(secret), { name: "HMAC", hash: "SHA-256" }, false, ["sign", "verify"]);
|
|
35
|
-
const signatureBuffer = await crypto.subtle.sign("HMAC", key, encoder.encode(message));
|
|
36
|
-
const signatureArray = Array.from(new Uint8Array(signatureBuffer));
|
|
37
|
-
return btoa(String.fromCharCode(...signatureArray))
|
|
38
|
-
.replace(/\+/g, "-")
|
|
39
|
-
.replace(/\//g, "_")
|
|
40
|
-
.replace(/=/g, "");
|
|
41
|
-
}
|
|
42
|
-
throw new Error("No crypto implementation available for signing checkout payload");
|
|
43
|
-
}
|
|
44
|
-
function timingSafeEqual(a, b) {
|
|
45
|
-
if (a.length !== b.length)
|
|
46
|
-
return false;
|
|
47
|
-
let result = 0;
|
|
48
|
-
for (let i = 0; i < a.length; i++) {
|
|
49
|
-
result |= a.charCodeAt(i) ^ b.charCodeAt(i);
|
|
50
|
-
}
|
|
51
|
-
return result === 0;
|
|
52
|
-
}
|
|
53
|
-
export async function signCheckoutPricingPayload(payload, secret) {
|
|
54
|
-
const canonical = toCanonicalJson(payload);
|
|
55
|
-
return hmacSha256(canonical, secret);
|
|
56
|
-
}
|
|
57
|
-
export async function verifyCheckoutPricingPayload(payload, signature, secret) {
|
|
58
|
-
const expected = await signCheckoutPricingPayload(payload, secret);
|
|
59
|
-
return timingSafeEqual(expected, signature);
|
|
60
|
-
}
|
|
61
|
-
export function serializeCheckoutPricingPayload(payload) {
|
|
62
|
-
return toCanonicalJson(payload);
|
|
63
|
-
}
|
|
64
|
-
//# sourceMappingURL=checkout-signature.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"checkout-signature.js","sourceRoot":"","sources":["../src/checkout-signature.ts"],"names":[],"mappings":"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"}
|