@licensechain/nodejs-sdk 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +500 -0
- package/dist/api-client.d.ts +13 -0
- package/dist/api-client.d.ts.map +1 -0
- package/dist/api-client.js +52 -0
- package/dist/api-client.js.map +1 -0
- package/dist/client.d.ts +24 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +60 -0
- package/dist/client.js.map +1 -0
- package/dist/configuration.d.ts +26 -0
- package/dist/configuration.d.ts.map +1 -0
- package/dist/configuration.js +63 -0
- package/dist/configuration.js.map +1 -0
- package/dist/exceptions.d.ts +46 -0
- package/dist/exceptions.d.ts.map +1 -0
- package/dist/exceptions.js +105 -0
- package/dist/exceptions.js.map +1 -0
- package/dist/http-core.d.ts +36 -0
- package/dist/http-core.d.ts.map +1 -0
- package/dist/http-core.js +119 -0
- package/dist/http-core.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +53 -0
- package/dist/index.js.map +1 -0
- package/dist/license-assertion.d.ts +15 -0
- package/dist/license-assertion.d.ts.map +1 -0
- package/dist/license-assertion.js +59 -0
- package/dist/license-assertion.js.map +1 -0
- package/dist/license-validator.d.ts +53 -0
- package/dist/license-validator.d.ts.map +1 -0
- package/dist/license-validator.js +208 -0
- package/dist/license-validator.js.map +1 -0
- package/dist/services/license-service.d.ts +55 -0
- package/dist/services/license-service.d.ts.map +1 -0
- package/dist/services/license-service.js +85 -0
- package/dist/services/license-service.js.map +1 -0
- package/dist/services/product-service.d.ts +48 -0
- package/dist/services/product-service.d.ts.map +1 -0
- package/dist/services/product-service.js +53 -0
- package/dist/services/product-service.js.map +1 -0
- package/dist/services/user-service.d.ts +43 -0
- package/dist/services/user-service.d.ts.map +1 -0
- package/dist/services/user-service.js +58 -0
- package/dist/services/user-service.js.map +1 -0
- package/dist/services/webhook-service.d.ts +37 -0
- package/dist/services/webhook-service.d.ts.map +1 -0
- package/dist/services/webhook-service.js +57 -0
- package/dist/services/webhook-service.js.map +1 -0
- package/dist/types.d.ts +197 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.d.ts +54 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +396 -0
- package/dist/utils.js.map +1 -0
- package/dist/webhook-handler.d.ts +40 -0
- package/dist/webhook-handler.d.ts.map +1 -0
- package/dist/webhook-handler.js +160 -0
- package/dist/webhook-handler.js.map +1 -0
- package/dist/webhook-verifier.d.ts +41 -0
- package/dist/webhook-verifier.d.ts.map +1 -0
- package/dist/webhook-verifier.js +153 -0
- package/dist/webhook-verifier.js.map +1 -0
- package/package.json +71 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { ApiClient } from '../api-client';
|
|
2
|
+
export interface Webhook {
|
|
3
|
+
id: string;
|
|
4
|
+
url: string;
|
|
5
|
+
events: string[];
|
|
6
|
+
secret?: string;
|
|
7
|
+
created_at: string;
|
|
8
|
+
updated_at: string;
|
|
9
|
+
}
|
|
10
|
+
export interface CreateWebhookRequest {
|
|
11
|
+
url: string;
|
|
12
|
+
events: string[];
|
|
13
|
+
secret?: string;
|
|
14
|
+
}
|
|
15
|
+
export interface UpdateWebhookRequest {
|
|
16
|
+
url?: string;
|
|
17
|
+
events?: string[];
|
|
18
|
+
secret?: string;
|
|
19
|
+
}
|
|
20
|
+
export interface WebhookListResponse {
|
|
21
|
+
data: Webhook[];
|
|
22
|
+
total: number;
|
|
23
|
+
page: number;
|
|
24
|
+
limit: number;
|
|
25
|
+
}
|
|
26
|
+
export declare class WebhookService {
|
|
27
|
+
private client;
|
|
28
|
+
constructor(client: ApiClient);
|
|
29
|
+
create(request: CreateWebhookRequest): Promise<Webhook>;
|
|
30
|
+
get(webhookId: string): Promise<Webhook>;
|
|
31
|
+
update(webhookId: string, updates: UpdateWebhookRequest): Promise<Webhook>;
|
|
32
|
+
delete(webhookId: string): Promise<void>;
|
|
33
|
+
list(): Promise<WebhookListResponse>;
|
|
34
|
+
private validateWebhookParams;
|
|
35
|
+
private validateUuid;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=webhook-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhook-service.d.ts","sourceRoot":"","sources":["../../src/services/webhook-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAI1C,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAY;gBAEd,MAAM,EAAE,SAAS;IAIvB,MAAM,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;IAavD,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAOxC,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;IAO1E,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMxC,IAAI,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAU1C,OAAO,CAAC,qBAAqB;IAO7B,OAAO,CAAC,YAAY;CAMrB"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WebhookService = void 0;
|
|
4
|
+
const utils_1 = require("../utils");
|
|
5
|
+
const exceptions_1 = require("../exceptions");
|
|
6
|
+
class WebhookService {
|
|
7
|
+
constructor(client) {
|
|
8
|
+
this.client = client;
|
|
9
|
+
}
|
|
10
|
+
async create(request) {
|
|
11
|
+
this.validateWebhookParams(request.url, request.events);
|
|
12
|
+
const data = {
|
|
13
|
+
url: request.url,
|
|
14
|
+
events: request.events,
|
|
15
|
+
secret: request.secret
|
|
16
|
+
};
|
|
17
|
+
const response = await this.client.post('/webhooks', data);
|
|
18
|
+
return (response.data || response);
|
|
19
|
+
}
|
|
20
|
+
async get(webhookId) {
|
|
21
|
+
this.validateUuid(webhookId, 'webhook_id');
|
|
22
|
+
const response = await this.client.get(`/webhooks/${webhookId}`);
|
|
23
|
+
return (response.data || response);
|
|
24
|
+
}
|
|
25
|
+
async update(webhookId, updates) {
|
|
26
|
+
this.validateUuid(webhookId, 'webhook_id');
|
|
27
|
+
const response = await this.client.put(`/webhooks/${webhookId}`, (0, utils_1.sanitizeMetadata)(updates));
|
|
28
|
+
return (response.data || response);
|
|
29
|
+
}
|
|
30
|
+
async delete(webhookId) {
|
|
31
|
+
this.validateUuid(webhookId, 'webhook_id');
|
|
32
|
+
await this.client.delete(`/webhooks/${webhookId}`);
|
|
33
|
+
}
|
|
34
|
+
async list() {
|
|
35
|
+
const response = await this.client.get('/webhooks');
|
|
36
|
+
return {
|
|
37
|
+
data: response?.data || [],
|
|
38
|
+
total: response?.pagination?.total || (response?.data?.length || 0),
|
|
39
|
+
page: response?.pagination?.page || 1,
|
|
40
|
+
limit: response?.pagination?.limit || (response?.data?.length || 0)
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
validateWebhookParams(url, events) {
|
|
44
|
+
(0, utils_1.validateNotEmpty)(url, 'url');
|
|
45
|
+
if (!events || events.length === 0) {
|
|
46
|
+
throw new exceptions_1.ValidationException('Events cannot be empty');
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
validateUuid(id, fieldName) {
|
|
50
|
+
(0, utils_1.validateNotEmpty)(id, fieldName);
|
|
51
|
+
if (!(0, utils_1.validateUuid)(id)) {
|
|
52
|
+
throw new exceptions_1.ValidationException(`Invalid ${fieldName} format`);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
exports.WebhookService = WebhookService;
|
|
57
|
+
//# sourceMappingURL=webhook-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhook-service.js","sourceRoot":"","sources":["../../src/services/webhook-service.ts"],"names":[],"mappings":";;;AACA,oCAA4E;AAC5E,8CAAoD;AA8BpD,MAAa,cAAc;IAGzB,YAAY,MAAiB;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAA6B;QACxC,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAExD,MAAM,IAAI,GAAG;YACX,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAqB,WAAW,EAAE,IAAI,CAAC,CAAC;QAC/E,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAY,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,SAAiB;QACzB,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAE3C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAqB,aAAa,SAAS,EAAE,CAAC,CAAC;QACrF,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAY,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,SAAiB,EAAE,OAA6B;QAC3D,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAE3C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAqB,aAAa,SAAS,EAAE,EAAE,IAAA,wBAAgB,EAAC,OAAO,CAAC,CAAC,CAAC;QAChH,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAY,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,SAAiB;QAC5B,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAE3C,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,SAAS,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAM,WAAW,CAAC,CAAC;QACzD,OAAO;YACL,IAAI,EAAE,QAAQ,EAAE,IAAI,IAAI,EAAE;YAC1B,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC,CAAC;YACnE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,IAAI,CAAC;YACrC,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC,CAAC;SACpE,CAAC;IACJ,CAAC;IAEO,qBAAqB,CAAC,GAAW,EAAE,MAAgB;QACzD,IAAA,wBAAgB,EAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC7B,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,gCAAmB,CAAC,wBAAwB,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,EAAU,EAAE,SAAiB;QAChD,IAAA,wBAAgB,EAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QAChC,IAAI,CAAC,IAAA,oBAAY,EAAC,EAAE,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,gCAAmB,CAAC,WAAW,SAAS,SAAS,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;CACF;AA/DD,wCA+DC"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TypeScript type definitions for LicenseChain Node.js SDK
|
|
3
|
+
*/
|
|
4
|
+
export interface LicenseData {
|
|
5
|
+
id: string;
|
|
6
|
+
key: string;
|
|
7
|
+
applicationId: string;
|
|
8
|
+
applicationName: string;
|
|
9
|
+
userId: string;
|
|
10
|
+
status: 'active' | 'expired' | 'suspended' | 'cancelled';
|
|
11
|
+
plan: 'monthly' | 'yearly' | 'lifetime';
|
|
12
|
+
price: number;
|
|
13
|
+
currency: string;
|
|
14
|
+
expiresAt: string;
|
|
15
|
+
createdAt: string;
|
|
16
|
+
updatedAt: string;
|
|
17
|
+
features: string[];
|
|
18
|
+
usage: {
|
|
19
|
+
totalValidations: number;
|
|
20
|
+
lastValidated: string;
|
|
21
|
+
maxValidations: number;
|
|
22
|
+
};
|
|
23
|
+
hardware: {
|
|
24
|
+
id: string;
|
|
25
|
+
fingerprint: string;
|
|
26
|
+
name: string;
|
|
27
|
+
lastSeen: string;
|
|
28
|
+
}[];
|
|
29
|
+
}
|
|
30
|
+
export interface UserData {
|
|
31
|
+
id: string;
|
|
32
|
+
email: string;
|
|
33
|
+
name: string;
|
|
34
|
+
company?: string;
|
|
35
|
+
role: 'user' | 'admin' | 'seller';
|
|
36
|
+
status: 'active' | 'inactive' | 'suspended';
|
|
37
|
+
createdAt: string;
|
|
38
|
+
updatedAt: string;
|
|
39
|
+
preferences: {
|
|
40
|
+
notifications: boolean;
|
|
41
|
+
marketing: boolean;
|
|
42
|
+
language: string;
|
|
43
|
+
timezone: string;
|
|
44
|
+
};
|
|
45
|
+
statistics: {
|
|
46
|
+
totalLicenses: number;
|
|
47
|
+
activeLicenses: number;
|
|
48
|
+
totalSpent: number;
|
|
49
|
+
currency: string;
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
export interface ApplicationData {
|
|
53
|
+
id: string;
|
|
54
|
+
name: string;
|
|
55
|
+
description: string;
|
|
56
|
+
sellerId: string;
|
|
57
|
+
status: 'active' | 'inactive' | 'suspended';
|
|
58
|
+
createdAt: string;
|
|
59
|
+
updatedAt: string;
|
|
60
|
+
settings: {
|
|
61
|
+
allowMultipleDevices: boolean;
|
|
62
|
+
maxDevices: number;
|
|
63
|
+
requireHardwareId: boolean;
|
|
64
|
+
};
|
|
65
|
+
pricing: {
|
|
66
|
+
monthly: number;
|
|
67
|
+
yearly: number;
|
|
68
|
+
lifetime: number;
|
|
69
|
+
currency: string;
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
export interface AnalyticsData {
|
|
73
|
+
period: string;
|
|
74
|
+
totalRevenue: number;
|
|
75
|
+
activeLicenses: number;
|
|
76
|
+
totalUsers: number;
|
|
77
|
+
conversionRate: number;
|
|
78
|
+
growthRate: number;
|
|
79
|
+
revenue: {
|
|
80
|
+
total: number;
|
|
81
|
+
growth: number;
|
|
82
|
+
byPeriod: Array<{
|
|
83
|
+
date: string;
|
|
84
|
+
amount: number;
|
|
85
|
+
}>;
|
|
86
|
+
};
|
|
87
|
+
licenses: {
|
|
88
|
+
total: number;
|
|
89
|
+
active: number;
|
|
90
|
+
expired: number;
|
|
91
|
+
growth: number;
|
|
92
|
+
};
|
|
93
|
+
users: {
|
|
94
|
+
total: number;
|
|
95
|
+
active: number;
|
|
96
|
+
growth: number;
|
|
97
|
+
};
|
|
98
|
+
usage: {
|
|
99
|
+
totalValidations: number;
|
|
100
|
+
averagePerDay: number;
|
|
101
|
+
peakUsage: {
|
|
102
|
+
date: string;
|
|
103
|
+
validations: number;
|
|
104
|
+
};
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
export interface WebhookData {
|
|
108
|
+
event: string;
|
|
109
|
+
data: any;
|
|
110
|
+
timestamp: string;
|
|
111
|
+
signature: string;
|
|
112
|
+
}
|
|
113
|
+
export interface ValidationResult {
|
|
114
|
+
valid: boolean;
|
|
115
|
+
message: string;
|
|
116
|
+
licenseId?: string;
|
|
117
|
+
expiresAt?: string;
|
|
118
|
+
features?: string[];
|
|
119
|
+
usage?: {
|
|
120
|
+
totalValidations: number;
|
|
121
|
+
lastValidated: string;
|
|
122
|
+
maxValidations: number;
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
export interface CreateLicenseData {
|
|
126
|
+
applicationId: string;
|
|
127
|
+
userId: string;
|
|
128
|
+
plan: 'monthly' | 'yearly' | 'lifetime';
|
|
129
|
+
price: number;
|
|
130
|
+
currency: string;
|
|
131
|
+
features?: string[];
|
|
132
|
+
maxValidations?: number;
|
|
133
|
+
expiresAt?: string;
|
|
134
|
+
}
|
|
135
|
+
export interface UpdateLicenseData {
|
|
136
|
+
status?: 'active' | 'suspended' | 'cancelled';
|
|
137
|
+
features?: string[];
|
|
138
|
+
maxValidations?: number;
|
|
139
|
+
expiresAt?: string;
|
|
140
|
+
}
|
|
141
|
+
export interface LicenseChainConfig {
|
|
142
|
+
apiKey: string;
|
|
143
|
+
baseUrl?: string;
|
|
144
|
+
timeout?: number;
|
|
145
|
+
}
|
|
146
|
+
export interface WebhookConfig {
|
|
147
|
+
url: string;
|
|
148
|
+
secret: string;
|
|
149
|
+
events: string[];
|
|
150
|
+
}
|
|
151
|
+
export interface PaginationOptions {
|
|
152
|
+
page?: number;
|
|
153
|
+
limit?: number;
|
|
154
|
+
sort?: string;
|
|
155
|
+
order?: 'asc' | 'desc';
|
|
156
|
+
}
|
|
157
|
+
export interface SearchOptions {
|
|
158
|
+
query?: string;
|
|
159
|
+
filters?: Record<string, any>;
|
|
160
|
+
pagination?: PaginationOptions;
|
|
161
|
+
}
|
|
162
|
+
export interface LicenseSearchOptions extends SearchOptions {
|
|
163
|
+
status?: 'active' | 'expired' | 'suspended' | 'cancelled';
|
|
164
|
+
plan?: 'monthly' | 'yearly' | 'lifetime';
|
|
165
|
+
applicationId?: string;
|
|
166
|
+
userId?: string;
|
|
167
|
+
}
|
|
168
|
+
export interface UserSearchOptions extends SearchOptions {
|
|
169
|
+
role?: 'user' | 'admin' | 'seller';
|
|
170
|
+
status?: 'active' | 'inactive' | 'suspended';
|
|
171
|
+
email?: string;
|
|
172
|
+
}
|
|
173
|
+
export interface AnalyticsOptions {
|
|
174
|
+
period?: '7d' | '30d' | '90d' | '1y' | 'all';
|
|
175
|
+
metrics?: string[];
|
|
176
|
+
groupBy?: string;
|
|
177
|
+
startDate?: string;
|
|
178
|
+
endDate?: string;
|
|
179
|
+
}
|
|
180
|
+
export interface LicenseChainResponse<T = any> {
|
|
181
|
+
success: boolean;
|
|
182
|
+
data: T;
|
|
183
|
+
message?: string;
|
|
184
|
+
pagination?: {
|
|
185
|
+
page: number;
|
|
186
|
+
limit: number;
|
|
187
|
+
total: number;
|
|
188
|
+
pages: number;
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
export interface ErrorResponse {
|
|
192
|
+
error: string;
|
|
193
|
+
message: string;
|
|
194
|
+
details?: any;
|
|
195
|
+
timestamp: string;
|
|
196
|
+
}
|
|
197
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA;;GAEG"}
|
package/dist/utils.d.ts
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
export declare function validateEmail(email: string): boolean;
|
|
2
|
+
export declare function validateLicenseKey(licenseKey: string): boolean;
|
|
3
|
+
export declare function validateUuid(uuid: string): boolean;
|
|
4
|
+
export declare function validateAmount(amount: number): boolean;
|
|
5
|
+
export declare function validateCurrency(currency: string): boolean;
|
|
6
|
+
export declare function validateStatus(status: string, allowedStatuses: string[]): boolean;
|
|
7
|
+
export declare function sanitizeInput(input: string): string;
|
|
8
|
+
export declare function sanitizeMetadata(metadata: Record<string, any>): Record<string, any>;
|
|
9
|
+
export declare function generateLicenseKey(): string;
|
|
10
|
+
export declare function generateUuid(): string;
|
|
11
|
+
export declare function formatTimestamp(timestamp: number): string;
|
|
12
|
+
export declare function parseTimestamp(timestamp: string): number;
|
|
13
|
+
export declare function validatePagination(page?: number, limit?: number): [number, number];
|
|
14
|
+
export declare function validateDateRange(startDate: string, endDate: string): void;
|
|
15
|
+
export declare function createWebhookSignature(payload: string, secret: string): string;
|
|
16
|
+
export declare function verifyWebhookSignature(payload: string, signature: string, secret: string): boolean;
|
|
17
|
+
export declare function retryWithBackoff<T>(fn: () => Promise<T>, maxRetries?: number, initialDelay?: number): Promise<T>;
|
|
18
|
+
export declare function formatBytes(bytes: number): string;
|
|
19
|
+
export declare function formatDuration(seconds: number): string;
|
|
20
|
+
export declare function capitalizeFirst(text: string): string;
|
|
21
|
+
export declare function toSnakeCase(text: string): string;
|
|
22
|
+
export declare function toPascalCase(text: string): string;
|
|
23
|
+
export declare function truncateString(text: string, maxLength: number): string;
|
|
24
|
+
export declare function removeSpecialChars(text: string): string;
|
|
25
|
+
export declare function slugify(text: string): string;
|
|
26
|
+
export declare function validateNotEmpty(value: string, fieldName: string): void;
|
|
27
|
+
export declare function validatePositive(value: number, fieldName: string): void;
|
|
28
|
+
export declare function validateRange(value: number, min: number, max: number, fieldName: string): void;
|
|
29
|
+
export declare function jsonSerialize(obj: any): string;
|
|
30
|
+
export declare function jsonDeserialize(jsonString: string): any;
|
|
31
|
+
export declare function deepMerge(target: Record<string, any>, source: Record<string, any>): Record<string, any>;
|
|
32
|
+
export declare function chunkArray<T>(array: T[], chunkSize: number): T[][];
|
|
33
|
+
export declare function flattenObject(obj: Record<string, any>, separator?: string): Record<string, any>;
|
|
34
|
+
export declare function unflattenObject(obj: Record<string, any>, separator?: string): Record<string, any>;
|
|
35
|
+
export declare function generateRandomString(length: number, characters?: string): string;
|
|
36
|
+
export declare function generateRandomBytes(length: number): Buffer;
|
|
37
|
+
export declare function sha256(data: string): string;
|
|
38
|
+
export declare function sha1(data: string): string;
|
|
39
|
+
export declare function md5(data: string): string;
|
|
40
|
+
export declare function base64Encode(data: string): string;
|
|
41
|
+
export declare function base64Decode(data: string): string;
|
|
42
|
+
export declare function urlEncode(data: string): string;
|
|
43
|
+
export declare function urlDecode(data: string): string;
|
|
44
|
+
export declare function isValidJson(jsonString: string): boolean;
|
|
45
|
+
export declare function isValidUrl(url: string): boolean;
|
|
46
|
+
export declare function isValidIp(ip: string): boolean;
|
|
47
|
+
export declare function isValidEmail(email: string): boolean;
|
|
48
|
+
export declare function getCurrentTimestamp(): number;
|
|
49
|
+
export declare function getCurrentDate(): string;
|
|
50
|
+
export declare function getCurrentDateFormatted(format: string): string;
|
|
51
|
+
export declare function sleep(ms: number): Promise<void>;
|
|
52
|
+
export declare function debounce<T extends (...args: any[]) => any>(func: T, wait: number): (...args: Parameters<T>) => void;
|
|
53
|
+
export declare function throttle<T extends (...args: any[]) => any>(func: T, limit: number): (...args: Parameters<T>) => void;
|
|
54
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|