@goodparty_org/sdk 0.0.7 → 0.1.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/README.md +29 -2
- package/dist/index.d.mts +98 -3
- package/dist/index.d.ts +98 -3
- package/dist/index.js +126 -5
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +122 -4
- package/dist/index.mjs.map +1 -1
- package/package.json +7 -1
package/README.md
CHANGED
|
@@ -11,9 +11,35 @@ npm install @goodparty_org/sdk
|
|
|
11
11
|
## Usage
|
|
12
12
|
|
|
13
13
|
```typescript
|
|
14
|
-
import { GoodPartyClient } from '@goodparty_org/sdk'
|
|
14
|
+
import { GoodPartyClient, SdkError } from '@goodparty_org/sdk'
|
|
15
15
|
|
|
16
|
-
const client =
|
|
16
|
+
const client = await GoodPartyClient.create({
|
|
17
|
+
m2mSecret: process.env.GP_MACHINE_SECRET,
|
|
18
|
+
gpApiRootUrl: 'https://gp-api.goodparty.org/v1',
|
|
19
|
+
})
|
|
20
|
+
|
|
21
|
+
const user = await client.users.get(1)
|
|
22
|
+
|
|
23
|
+
const users = await client.users.list({ page: 1, limit: 20 })
|
|
24
|
+
|
|
25
|
+
await client.users.updatePassword(1, {
|
|
26
|
+
oldPassword: 'old',
|
|
27
|
+
newPassword: 'new',
|
|
28
|
+
})
|
|
29
|
+
|
|
30
|
+
await client.users.delete(1)
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
All methods throw `SdkError` on failure:
|
|
34
|
+
|
|
35
|
+
```typescript
|
|
36
|
+
try {
|
|
37
|
+
const user = await client.users.get(999)
|
|
38
|
+
} catch (error) {
|
|
39
|
+
if (error instanceof SdkError) {
|
|
40
|
+
console.error(error.status, error.message)
|
|
41
|
+
}
|
|
42
|
+
}
|
|
17
43
|
```
|
|
18
44
|
|
|
19
45
|
## Development
|
|
@@ -32,6 +58,7 @@ npm install
|
|
|
32
58
|
|
|
33
59
|
| Command | Description |
|
|
34
60
|
| -------------------- | ------------------------------------ |
|
|
61
|
+
| `npm run dev` | Build in watch mode for local dev |
|
|
35
62
|
| `npm run build` | Build the SDK with tsup |
|
|
36
63
|
| `npm run typecheck` | Run TypeScript type checking |
|
|
37
64
|
| `npm run lint` | Run ESLint |
|
package/dist/index.d.mts
CHANGED
|
@@ -1,6 +1,101 @@
|
|
|
1
|
-
|
|
1
|
+
import { FetchOptions } from 'ofetch';
|
|
2
|
+
|
|
3
|
+
declare class SdkError extends Error {
|
|
4
|
+
readonly status: number;
|
|
5
|
+
readonly response?: Response;
|
|
6
|
+
constructor(status: number, message: string, response?: Response);
|
|
7
|
+
}
|
|
8
|
+
type PaginationOptions = {
|
|
9
|
+
page?: number;
|
|
10
|
+
limit?: number;
|
|
11
|
+
};
|
|
12
|
+
type PaginationMeta = {
|
|
13
|
+
page: number;
|
|
14
|
+
limit: number;
|
|
15
|
+
total: number;
|
|
16
|
+
totalPages: number;
|
|
17
|
+
};
|
|
18
|
+
type PaginatedList<T> = {
|
|
19
|
+
data: T[];
|
|
20
|
+
pagination: PaginationMeta;
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
declare enum UserRole {
|
|
24
|
+
admin = "admin",
|
|
25
|
+
sales = "sales",
|
|
26
|
+
candidate = "candidate",
|
|
27
|
+
campaignManager = "campaignManager",
|
|
28
|
+
demo = "demo"
|
|
29
|
+
}
|
|
30
|
+
declare enum WhyBrowsing {
|
|
31
|
+
considering = "considering",
|
|
32
|
+
learning = "learning",
|
|
33
|
+
test = "test",
|
|
34
|
+
else = "else"
|
|
35
|
+
}
|
|
36
|
+
type UserMetaData = {
|
|
37
|
+
customerId?: string;
|
|
38
|
+
checkoutSessionId?: string | null;
|
|
39
|
+
accountType?: string | null;
|
|
40
|
+
lastVisited?: number;
|
|
41
|
+
sessionCount?: number;
|
|
42
|
+
isDeleted?: boolean;
|
|
43
|
+
fsUserId?: string;
|
|
44
|
+
whyBrowsing?: WhyBrowsing | null;
|
|
45
|
+
hubspotId?: string;
|
|
46
|
+
profile_updated_count?: number;
|
|
47
|
+
textNotifications?: boolean;
|
|
48
|
+
} | null;
|
|
49
|
+
type User = {
|
|
50
|
+
id: number;
|
|
51
|
+
firstName: string;
|
|
52
|
+
lastName: string;
|
|
53
|
+
name?: string | null;
|
|
54
|
+
email: string;
|
|
55
|
+
phone?: string | null;
|
|
56
|
+
zip?: string | null;
|
|
57
|
+
avatar?: string | null;
|
|
58
|
+
hasPassword: boolean;
|
|
59
|
+
roles?: UserRole[];
|
|
60
|
+
metaData?: UserMetaData;
|
|
61
|
+
};
|
|
62
|
+
type UpdatePasswordInput = {
|
|
63
|
+
oldPassword?: string;
|
|
64
|
+
newPassword: string;
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
type OfetchRequestBody = FetchOptions<'json'>['body'];
|
|
68
|
+
declare class HttpClient {
|
|
69
|
+
private baseUrl;
|
|
70
|
+
private m2mToken;
|
|
71
|
+
constructor(gpApiRootUrl: string, m2mToken: string);
|
|
72
|
+
request: <T>(path: string, init?: FetchOptions<"json">) => Promise<T>;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
declare abstract class BaseResource {
|
|
76
|
+
protected httpClient: HttpClient;
|
|
77
|
+
constructor(httpClient: HttpClient);
|
|
78
|
+
protected getRequest: <T>(path: string, query?: FetchOptions<"json">["query"]) => Promise<T>;
|
|
79
|
+
protected postRequest: <T>(path: string, body: OfetchRequestBody) => Promise<T>;
|
|
80
|
+
protected putRequest: <T>(path: string, body: OfetchRequestBody) => Promise<T>;
|
|
81
|
+
protected deleteRequest: <T>(path: string) => Promise<T>;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
declare class UsersResource extends BaseResource {
|
|
85
|
+
list: (options?: PaginationOptions) => Promise<PaginatedList<User>>;
|
|
86
|
+
get: (id: number) => Promise<User>;
|
|
87
|
+
delete: (id: number) => Promise<void>;
|
|
88
|
+
updatePassword: (id: number, input: UpdatePasswordInput) => Promise<void>;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
type GoodPartyClientConfig = {
|
|
92
|
+
m2mSecret: string;
|
|
93
|
+
gpApiRootUrl: string;
|
|
94
|
+
};
|
|
2
95
|
declare class GoodPartyClient {
|
|
3
|
-
|
|
96
|
+
readonly users: UsersResource;
|
|
97
|
+
private constructor();
|
|
98
|
+
static create: (config: GoodPartyClientConfig) => Promise<GoodPartyClient>;
|
|
4
99
|
}
|
|
5
100
|
|
|
6
|
-
export { GoodPartyClient, type GoodPartyClientConfig };
|
|
101
|
+
export { GoodPartyClient, type GoodPartyClientConfig, type PaginatedList, type PaginationMeta, type PaginationOptions, SdkError, type UpdatePasswordInput, type User, type UserMetaData, UserRole, WhyBrowsing };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,101 @@
|
|
|
1
|
-
|
|
1
|
+
import { FetchOptions } from 'ofetch';
|
|
2
|
+
|
|
3
|
+
declare class SdkError extends Error {
|
|
4
|
+
readonly status: number;
|
|
5
|
+
readonly response?: Response;
|
|
6
|
+
constructor(status: number, message: string, response?: Response);
|
|
7
|
+
}
|
|
8
|
+
type PaginationOptions = {
|
|
9
|
+
page?: number;
|
|
10
|
+
limit?: number;
|
|
11
|
+
};
|
|
12
|
+
type PaginationMeta = {
|
|
13
|
+
page: number;
|
|
14
|
+
limit: number;
|
|
15
|
+
total: number;
|
|
16
|
+
totalPages: number;
|
|
17
|
+
};
|
|
18
|
+
type PaginatedList<T> = {
|
|
19
|
+
data: T[];
|
|
20
|
+
pagination: PaginationMeta;
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
declare enum UserRole {
|
|
24
|
+
admin = "admin",
|
|
25
|
+
sales = "sales",
|
|
26
|
+
candidate = "candidate",
|
|
27
|
+
campaignManager = "campaignManager",
|
|
28
|
+
demo = "demo"
|
|
29
|
+
}
|
|
30
|
+
declare enum WhyBrowsing {
|
|
31
|
+
considering = "considering",
|
|
32
|
+
learning = "learning",
|
|
33
|
+
test = "test",
|
|
34
|
+
else = "else"
|
|
35
|
+
}
|
|
36
|
+
type UserMetaData = {
|
|
37
|
+
customerId?: string;
|
|
38
|
+
checkoutSessionId?: string | null;
|
|
39
|
+
accountType?: string | null;
|
|
40
|
+
lastVisited?: number;
|
|
41
|
+
sessionCount?: number;
|
|
42
|
+
isDeleted?: boolean;
|
|
43
|
+
fsUserId?: string;
|
|
44
|
+
whyBrowsing?: WhyBrowsing | null;
|
|
45
|
+
hubspotId?: string;
|
|
46
|
+
profile_updated_count?: number;
|
|
47
|
+
textNotifications?: boolean;
|
|
48
|
+
} | null;
|
|
49
|
+
type User = {
|
|
50
|
+
id: number;
|
|
51
|
+
firstName: string;
|
|
52
|
+
lastName: string;
|
|
53
|
+
name?: string | null;
|
|
54
|
+
email: string;
|
|
55
|
+
phone?: string | null;
|
|
56
|
+
zip?: string | null;
|
|
57
|
+
avatar?: string | null;
|
|
58
|
+
hasPassword: boolean;
|
|
59
|
+
roles?: UserRole[];
|
|
60
|
+
metaData?: UserMetaData;
|
|
61
|
+
};
|
|
62
|
+
type UpdatePasswordInput = {
|
|
63
|
+
oldPassword?: string;
|
|
64
|
+
newPassword: string;
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
type OfetchRequestBody = FetchOptions<'json'>['body'];
|
|
68
|
+
declare class HttpClient {
|
|
69
|
+
private baseUrl;
|
|
70
|
+
private m2mToken;
|
|
71
|
+
constructor(gpApiRootUrl: string, m2mToken: string);
|
|
72
|
+
request: <T>(path: string, init?: FetchOptions<"json">) => Promise<T>;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
declare abstract class BaseResource {
|
|
76
|
+
protected httpClient: HttpClient;
|
|
77
|
+
constructor(httpClient: HttpClient);
|
|
78
|
+
protected getRequest: <T>(path: string, query?: FetchOptions<"json">["query"]) => Promise<T>;
|
|
79
|
+
protected postRequest: <T>(path: string, body: OfetchRequestBody) => Promise<T>;
|
|
80
|
+
protected putRequest: <T>(path: string, body: OfetchRequestBody) => Promise<T>;
|
|
81
|
+
protected deleteRequest: <T>(path: string) => Promise<T>;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
declare class UsersResource extends BaseResource {
|
|
85
|
+
list: (options?: PaginationOptions) => Promise<PaginatedList<User>>;
|
|
86
|
+
get: (id: number) => Promise<User>;
|
|
87
|
+
delete: (id: number) => Promise<void>;
|
|
88
|
+
updatePassword: (id: number, input: UpdatePasswordInput) => Promise<void>;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
type GoodPartyClientConfig = {
|
|
92
|
+
m2mSecret: string;
|
|
93
|
+
gpApiRootUrl: string;
|
|
94
|
+
};
|
|
2
95
|
declare class GoodPartyClient {
|
|
3
|
-
|
|
96
|
+
readonly users: UsersResource;
|
|
97
|
+
private constructor();
|
|
98
|
+
static create: (config: GoodPartyClientConfig) => Promise<GoodPartyClient>;
|
|
4
99
|
}
|
|
5
100
|
|
|
6
|
-
export { GoodPartyClient, type GoodPartyClientConfig };
|
|
101
|
+
export { GoodPartyClient, type GoodPartyClientConfig, type PaginatedList, type PaginationMeta, type PaginationOptions, SdkError, type UpdatePasswordInput, type User, type UserMetaData, UserRole, WhyBrowsing };
|
package/dist/index.js
CHANGED
|
@@ -20,18 +20,139 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
20
20
|
// src/index.ts
|
|
21
21
|
var index_exports = {};
|
|
22
22
|
__export(index_exports, {
|
|
23
|
-
GoodPartyClient: () => GoodPartyClient
|
|
23
|
+
GoodPartyClient: () => GoodPartyClient,
|
|
24
|
+
SdkError: () => SdkError,
|
|
25
|
+
UserRole: () => UserRole,
|
|
26
|
+
WhyBrowsing: () => WhyBrowsing
|
|
24
27
|
});
|
|
25
28
|
module.exports = __toCommonJS(index_exports);
|
|
26
29
|
|
|
27
30
|
// src/GoodPartyClient.ts
|
|
28
|
-
var
|
|
29
|
-
|
|
30
|
-
|
|
31
|
+
var import_backend = require("@clerk/backend");
|
|
32
|
+
|
|
33
|
+
// src/http/HttpClient.ts
|
|
34
|
+
var import_ofetch = require("ofetch");
|
|
35
|
+
|
|
36
|
+
// src/types/result.ts
|
|
37
|
+
var SdkError = class extends Error {
|
|
38
|
+
status;
|
|
39
|
+
response;
|
|
40
|
+
constructor(status, message, response) {
|
|
41
|
+
super(message);
|
|
42
|
+
this.name = "SdkError";
|
|
43
|
+
this.status = status;
|
|
44
|
+
this.response = response;
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
// src/http/HttpClient.ts
|
|
49
|
+
var HttpClient = class {
|
|
50
|
+
baseUrl;
|
|
51
|
+
m2mToken;
|
|
52
|
+
constructor(gpApiRootUrl, m2mToken) {
|
|
53
|
+
this.baseUrl = gpApiRootUrl;
|
|
54
|
+
this.m2mToken = m2mToken;
|
|
55
|
+
}
|
|
56
|
+
request = async (path, init) => {
|
|
57
|
+
try {
|
|
58
|
+
return await (0, import_ofetch.ofetch)(path, {
|
|
59
|
+
baseURL: this.baseUrl,
|
|
60
|
+
headers: {
|
|
61
|
+
Authorization: `Bearer ${this.m2mToken}`,
|
|
62
|
+
...init?.headers ?? {}
|
|
63
|
+
},
|
|
64
|
+
...init
|
|
65
|
+
});
|
|
66
|
+
} catch (error) {
|
|
67
|
+
if (error instanceof import_ofetch.FetchError) {
|
|
68
|
+
throw new SdkError(error.statusCode ?? 0, error.message, error.response);
|
|
69
|
+
}
|
|
70
|
+
const message = error instanceof Error ? error.message : "Unknown error";
|
|
71
|
+
throw new SdkError(0, message);
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
// src/resources/BaseResource.ts
|
|
77
|
+
var BaseResource = class {
|
|
78
|
+
httpClient;
|
|
79
|
+
constructor(httpClient) {
|
|
80
|
+
this.httpClient = httpClient;
|
|
31
81
|
}
|
|
82
|
+
getRequest = (path, query) => this.httpClient.request(path, { method: "GET", query });
|
|
83
|
+
postRequest = (path, body) => this.httpClient.request(path, { method: "POST", body });
|
|
84
|
+
putRequest = (path, body) => this.httpClient.request(path, { method: "PUT", body });
|
|
85
|
+
deleteRequest = (path) => this.httpClient.request(path, { method: "DELETE" });
|
|
32
86
|
};
|
|
87
|
+
|
|
88
|
+
// src/resources/UsersResource.ts
|
|
89
|
+
var UsersResource = class extends BaseResource {
|
|
90
|
+
list = async (options) => {
|
|
91
|
+
const { data, meta: pagination } = await this.getRequest("/users", options);
|
|
92
|
+
return {
|
|
93
|
+
data,
|
|
94
|
+
pagination
|
|
95
|
+
};
|
|
96
|
+
};
|
|
97
|
+
get = (id) => this.getRequest(`/users/${id}`);
|
|
98
|
+
delete = (id) => this.deleteRequest(`/users/${id}`);
|
|
99
|
+
updatePassword = (id, input) => this.putRequest(`/users/${id}/password`, input);
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
// src/GoodPartyClient.ts
|
|
103
|
+
var GoodPartyClient = class _GoodPartyClient {
|
|
104
|
+
users;
|
|
105
|
+
constructor(gpApiRootUrl, m2mToken) {
|
|
106
|
+
const httpClient = new HttpClient(gpApiRootUrl, m2mToken);
|
|
107
|
+
this.users = new UsersResource(httpClient);
|
|
108
|
+
}
|
|
109
|
+
static create = async (config) => {
|
|
110
|
+
const { m2mSecret, gpApiRootUrl } = config;
|
|
111
|
+
const clerkClient = (0, import_backend.createClerkClient)({});
|
|
112
|
+
let token;
|
|
113
|
+
try {
|
|
114
|
+
const m2mToken = await clerkClient.m2m.createToken({
|
|
115
|
+
machineSecretKey: m2mSecret
|
|
116
|
+
});
|
|
117
|
+
if (!m2mToken.token) {
|
|
118
|
+
throw new SdkError(
|
|
119
|
+
0,
|
|
120
|
+
"Clerk M2M token creation succeeded but returned no token string"
|
|
121
|
+
);
|
|
122
|
+
}
|
|
123
|
+
token = m2mToken.token;
|
|
124
|
+
} catch (error) {
|
|
125
|
+
if (error instanceof SdkError) {
|
|
126
|
+
throw error;
|
|
127
|
+
}
|
|
128
|
+
const message = error instanceof Error ? error.message : "Unknown error";
|
|
129
|
+
throw new SdkError(0, `Failed to create Clerk M2M token: ${message}`);
|
|
130
|
+
}
|
|
131
|
+
return new _GoodPartyClient(gpApiRootUrl, token);
|
|
132
|
+
};
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
// src/types/user.ts
|
|
136
|
+
var UserRole = /* @__PURE__ */ ((UserRole2) => {
|
|
137
|
+
UserRole2["admin"] = "admin";
|
|
138
|
+
UserRole2["sales"] = "sales";
|
|
139
|
+
UserRole2["candidate"] = "candidate";
|
|
140
|
+
UserRole2["campaignManager"] = "campaignManager";
|
|
141
|
+
UserRole2["demo"] = "demo";
|
|
142
|
+
return UserRole2;
|
|
143
|
+
})(UserRole || {});
|
|
144
|
+
var WhyBrowsing = /* @__PURE__ */ ((WhyBrowsing2) => {
|
|
145
|
+
WhyBrowsing2["considering"] = "considering";
|
|
146
|
+
WhyBrowsing2["learning"] = "learning";
|
|
147
|
+
WhyBrowsing2["test"] = "test";
|
|
148
|
+
WhyBrowsing2["else"] = "else";
|
|
149
|
+
return WhyBrowsing2;
|
|
150
|
+
})(WhyBrowsing || {});
|
|
33
151
|
// Annotate the CommonJS export names for ESM import in node:
|
|
34
152
|
0 && (module.exports = {
|
|
35
|
-
GoodPartyClient
|
|
153
|
+
GoodPartyClient,
|
|
154
|
+
SdkError,
|
|
155
|
+
UserRole,
|
|
156
|
+
WhyBrowsing
|
|
36
157
|
});
|
|
37
158
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/GoodPartyClient.ts"],"sourcesContent":["export { GoodPartyClient } from './GoodPartyClient'\nexport type { GoodPartyClientConfig } from './GoodPartyClient'\n","
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/GoodPartyClient.ts","../src/http/HttpClient.ts","../src/types/result.ts","../src/resources/BaseResource.ts","../src/resources/UsersResource.ts","../src/types/user.ts"],"sourcesContent":["export { GoodPartyClient } from './GoodPartyClient'\nexport type { GoodPartyClientConfig } from './GoodPartyClient'\n\nexport { SdkError } from './types/result'\nexport type {\n PaginationOptions,\n PaginationMeta,\n PaginatedList,\n} from './types/result'\n\nexport type { User, UserMetaData, UpdatePasswordInput } from './types/user'\n\nexport { UserRole, WhyBrowsing } from './types/user'\n","import { createClerkClient } from '@clerk/backend'\nimport { HttpClient } from './http/HttpClient'\nimport { UsersResource } from './resources/UsersResource'\nimport { SdkError } from './types/result'\n\nexport type GoodPartyClientConfig = {\n m2mSecret: string\n gpApiRootUrl: string\n}\n\nexport class GoodPartyClient {\n readonly users: UsersResource\n\n private constructor(gpApiRootUrl: string, m2mToken: string) {\n const httpClient = new HttpClient(gpApiRootUrl, m2mToken)\n this.users = new UsersResource(httpClient)\n }\n\n static create = async (\n config: GoodPartyClientConfig,\n ): Promise<GoodPartyClient> => {\n const { m2mSecret, gpApiRootUrl } = config\n const clerkClient = createClerkClient({})\n\n let token: string\n try {\n const m2mToken = await clerkClient.m2m.createToken({\n machineSecretKey: m2mSecret,\n })\n if (!m2mToken.token) {\n throw new SdkError(\n 0,\n 'Clerk M2M token creation succeeded but returned no token string',\n )\n }\n token = m2mToken.token\n } catch (error: unknown) {\n if (error instanceof SdkError) {\n throw error\n }\n const message = error instanceof Error ? error.message : 'Unknown error'\n throw new SdkError(0, `Failed to create Clerk M2M token: ${message}`)\n }\n\n return new GoodPartyClient(gpApiRootUrl, token)\n }\n}\n","import { ofetch, FetchError, FetchOptions } from 'ofetch'\nimport { SdkError } from '../types/result'\n\nexport type OfetchRequestBody = FetchOptions<'json'>['body']\n\nexport class HttpClient {\n private baseUrl: string\n private m2mToken: string\n\n constructor(gpApiRootUrl: string, m2mToken: string) {\n this.baseUrl = gpApiRootUrl\n this.m2mToken = m2mToken\n }\n\n request = async <T>(\n path: string,\n init?: FetchOptions<'json'>,\n ): Promise<T> => {\n try {\n return await ofetch<T>(path, {\n baseURL: this.baseUrl,\n headers: {\n Authorization: `Bearer ${this.m2mToken}`,\n ...(init?.headers ?? {}),\n },\n ...init,\n })\n } catch (error: unknown) {\n if (error instanceof FetchError) {\n throw new SdkError(error.statusCode ?? 0, error.message, error.response)\n }\n const message = error instanceof Error ? error.message : 'Unknown error'\n throw new SdkError(0, message)\n }\n }\n}\n","export class SdkError extends Error {\n readonly status: number\n readonly response?: Response\n\n constructor(status: number, message: string, response?: Response) {\n super(message)\n this.name = 'SdkError'\n this.status = status\n this.response = response\n }\n}\n\nexport type PaginationOptions = {\n page?: number\n limit?: number\n}\n\nexport type PaginationMeta = {\n page: number\n limit: number\n total: number\n totalPages: number\n}\n\nexport type PaginatedList<T> = {\n data: T[]\n pagination: PaginationMeta\n}\n","import type { FetchOptions } from 'ofetch'\nimport type { HttpClient, OfetchRequestBody } from '../http/HttpClient'\n\nexport abstract class BaseResource {\n protected httpClient: HttpClient\n\n constructor(httpClient: HttpClient) {\n this.httpClient = httpClient\n }\n\n protected getRequest = <T>(\n path: string,\n query?: FetchOptions<'json'>['query'],\n ): Promise<T> => this.httpClient.request<T>(path, { method: 'GET', query })\n\n protected postRequest = <T>(\n path: string,\n body: OfetchRequestBody,\n ): Promise<T> => this.httpClient.request<T>(path, { method: 'POST', body })\n\n protected putRequest = <T>(\n path: string,\n body: OfetchRequestBody,\n ): Promise<T> => this.httpClient.request<T>(path, { method: 'PUT', body })\n\n protected deleteRequest = <T>(path: string): Promise<T> =>\n this.httpClient.request<T>(path, { method: 'DELETE' })\n}\n","import type { PaginatedList, PaginationOptions } from '../types/result'\nimport type { UpdatePasswordInput, User } from '../types/user'\nimport { BaseResource } from './BaseResource'\n\nexport class UsersResource extends BaseResource {\n list = async (options?: PaginationOptions): Promise<PaginatedList<User>> => {\n const { data, meta: pagination } = await this.getRequest<{\n data: User[]\n meta: { page: number; limit: number; total: number; totalPages: number }\n }>('/users', options)\n\n return {\n data,\n pagination,\n }\n }\n\n get = (id: number): Promise<User> => this.getRequest<User>(`/users/${id}`)\n\n delete = (id: number): Promise<void> =>\n this.deleteRequest<void>(`/users/${id}`)\n\n updatePassword = (id: number, input: UpdatePasswordInput): Promise<void> =>\n this.putRequest<void>(`/users/${id}/password`, input)\n}\n","export enum UserRole {\n admin = 'admin',\n sales = 'sales',\n candidate = 'candidate',\n campaignManager = 'campaignManager',\n demo = 'demo',\n}\n\nexport enum WhyBrowsing {\n considering = 'considering',\n learning = 'learning',\n test = 'test',\n else = 'else',\n}\n\nexport type UserMetaData = {\n customerId?: string\n checkoutSessionId?: string | null\n accountType?: string | null\n lastVisited?: number\n sessionCount?: number\n isDeleted?: boolean\n fsUserId?: string\n whyBrowsing?: WhyBrowsing | null\n hubspotId?: string\n profile_updated_count?: number\n textNotifications?: boolean\n} | null\n\nexport type User = {\n id: number\n firstName: string\n lastName: string\n name?: string | null\n email: string\n phone?: string | null\n zip?: string | null\n avatar?: string | null\n hasPassword: boolean\n roles?: UserRole[]\n metaData?: UserMetaData\n}\n\nexport type UpdatePasswordInput = {\n oldPassword?: string\n newPassword: string\n}\n"],"mappings":"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","names":["UserRole","WhyBrowsing"]}
|
package/dist/index.mjs
CHANGED
|
@@ -1,10 +1,128 @@
|
|
|
1
1
|
// src/GoodPartyClient.ts
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
import { createClerkClient } from "@clerk/backend";
|
|
3
|
+
|
|
4
|
+
// src/http/HttpClient.ts
|
|
5
|
+
import { ofetch, FetchError } from "ofetch";
|
|
6
|
+
|
|
7
|
+
// src/types/result.ts
|
|
8
|
+
var SdkError = class extends Error {
|
|
9
|
+
status;
|
|
10
|
+
response;
|
|
11
|
+
constructor(status, message, response) {
|
|
12
|
+
super(message);
|
|
13
|
+
this.name = "SdkError";
|
|
14
|
+
this.status = status;
|
|
15
|
+
this.response = response;
|
|
5
16
|
}
|
|
6
17
|
};
|
|
18
|
+
|
|
19
|
+
// src/http/HttpClient.ts
|
|
20
|
+
var HttpClient = class {
|
|
21
|
+
baseUrl;
|
|
22
|
+
m2mToken;
|
|
23
|
+
constructor(gpApiRootUrl, m2mToken) {
|
|
24
|
+
this.baseUrl = gpApiRootUrl;
|
|
25
|
+
this.m2mToken = m2mToken;
|
|
26
|
+
}
|
|
27
|
+
request = async (path, init) => {
|
|
28
|
+
try {
|
|
29
|
+
return await ofetch(path, {
|
|
30
|
+
baseURL: this.baseUrl,
|
|
31
|
+
headers: {
|
|
32
|
+
Authorization: `Bearer ${this.m2mToken}`,
|
|
33
|
+
...init?.headers ?? {}
|
|
34
|
+
},
|
|
35
|
+
...init
|
|
36
|
+
});
|
|
37
|
+
} catch (error) {
|
|
38
|
+
if (error instanceof FetchError) {
|
|
39
|
+
throw new SdkError(error.statusCode ?? 0, error.message, error.response);
|
|
40
|
+
}
|
|
41
|
+
const message = error instanceof Error ? error.message : "Unknown error";
|
|
42
|
+
throw new SdkError(0, message);
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
// src/resources/BaseResource.ts
|
|
48
|
+
var BaseResource = class {
|
|
49
|
+
httpClient;
|
|
50
|
+
constructor(httpClient) {
|
|
51
|
+
this.httpClient = httpClient;
|
|
52
|
+
}
|
|
53
|
+
getRequest = (path, query) => this.httpClient.request(path, { method: "GET", query });
|
|
54
|
+
postRequest = (path, body) => this.httpClient.request(path, { method: "POST", body });
|
|
55
|
+
putRequest = (path, body) => this.httpClient.request(path, { method: "PUT", body });
|
|
56
|
+
deleteRequest = (path) => this.httpClient.request(path, { method: "DELETE" });
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
// src/resources/UsersResource.ts
|
|
60
|
+
var UsersResource = class extends BaseResource {
|
|
61
|
+
list = async (options) => {
|
|
62
|
+
const { data, meta: pagination } = await this.getRequest("/users", options);
|
|
63
|
+
return {
|
|
64
|
+
data,
|
|
65
|
+
pagination
|
|
66
|
+
};
|
|
67
|
+
};
|
|
68
|
+
get = (id) => this.getRequest(`/users/${id}`);
|
|
69
|
+
delete = (id) => this.deleteRequest(`/users/${id}`);
|
|
70
|
+
updatePassword = (id, input) => this.putRequest(`/users/${id}/password`, input);
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
// src/GoodPartyClient.ts
|
|
74
|
+
var GoodPartyClient = class _GoodPartyClient {
|
|
75
|
+
users;
|
|
76
|
+
constructor(gpApiRootUrl, m2mToken) {
|
|
77
|
+
const httpClient = new HttpClient(gpApiRootUrl, m2mToken);
|
|
78
|
+
this.users = new UsersResource(httpClient);
|
|
79
|
+
}
|
|
80
|
+
static create = async (config) => {
|
|
81
|
+
const { m2mSecret, gpApiRootUrl } = config;
|
|
82
|
+
const clerkClient = createClerkClient({});
|
|
83
|
+
let token;
|
|
84
|
+
try {
|
|
85
|
+
const m2mToken = await clerkClient.m2m.createToken({
|
|
86
|
+
machineSecretKey: m2mSecret
|
|
87
|
+
});
|
|
88
|
+
if (!m2mToken.token) {
|
|
89
|
+
throw new SdkError(
|
|
90
|
+
0,
|
|
91
|
+
"Clerk M2M token creation succeeded but returned no token string"
|
|
92
|
+
);
|
|
93
|
+
}
|
|
94
|
+
token = m2mToken.token;
|
|
95
|
+
} catch (error) {
|
|
96
|
+
if (error instanceof SdkError) {
|
|
97
|
+
throw error;
|
|
98
|
+
}
|
|
99
|
+
const message = error instanceof Error ? error.message : "Unknown error";
|
|
100
|
+
throw new SdkError(0, `Failed to create Clerk M2M token: ${message}`);
|
|
101
|
+
}
|
|
102
|
+
return new _GoodPartyClient(gpApiRootUrl, token);
|
|
103
|
+
};
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
// src/types/user.ts
|
|
107
|
+
var UserRole = /* @__PURE__ */ ((UserRole2) => {
|
|
108
|
+
UserRole2["admin"] = "admin";
|
|
109
|
+
UserRole2["sales"] = "sales";
|
|
110
|
+
UserRole2["candidate"] = "candidate";
|
|
111
|
+
UserRole2["campaignManager"] = "campaignManager";
|
|
112
|
+
UserRole2["demo"] = "demo";
|
|
113
|
+
return UserRole2;
|
|
114
|
+
})(UserRole || {});
|
|
115
|
+
var WhyBrowsing = /* @__PURE__ */ ((WhyBrowsing2) => {
|
|
116
|
+
WhyBrowsing2["considering"] = "considering";
|
|
117
|
+
WhyBrowsing2["learning"] = "learning";
|
|
118
|
+
WhyBrowsing2["test"] = "test";
|
|
119
|
+
WhyBrowsing2["else"] = "else";
|
|
120
|
+
return WhyBrowsing2;
|
|
121
|
+
})(WhyBrowsing || {});
|
|
7
122
|
export {
|
|
8
|
-
GoodPartyClient
|
|
123
|
+
GoodPartyClient,
|
|
124
|
+
SdkError,
|
|
125
|
+
UserRole,
|
|
126
|
+
WhyBrowsing
|
|
9
127
|
};
|
|
10
128
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/GoodPartyClient.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../src/GoodPartyClient.ts","../src/http/HttpClient.ts","../src/types/result.ts","../src/resources/BaseResource.ts","../src/resources/UsersResource.ts","../src/types/user.ts"],"sourcesContent":["import { createClerkClient } from '@clerk/backend'\nimport { HttpClient } from './http/HttpClient'\nimport { UsersResource } from './resources/UsersResource'\nimport { SdkError } from './types/result'\n\nexport type GoodPartyClientConfig = {\n m2mSecret: string\n gpApiRootUrl: string\n}\n\nexport class GoodPartyClient {\n readonly users: UsersResource\n\n private constructor(gpApiRootUrl: string, m2mToken: string) {\n const httpClient = new HttpClient(gpApiRootUrl, m2mToken)\n this.users = new UsersResource(httpClient)\n }\n\n static create = async (\n config: GoodPartyClientConfig,\n ): Promise<GoodPartyClient> => {\n const { m2mSecret, gpApiRootUrl } = config\n const clerkClient = createClerkClient({})\n\n let token: string\n try {\n const m2mToken = await clerkClient.m2m.createToken({\n machineSecretKey: m2mSecret,\n })\n if (!m2mToken.token) {\n throw new SdkError(\n 0,\n 'Clerk M2M token creation succeeded but returned no token string',\n )\n }\n token = m2mToken.token\n } catch (error: unknown) {\n if (error instanceof SdkError) {\n throw error\n }\n const message = error instanceof Error ? error.message : 'Unknown error'\n throw new SdkError(0, `Failed to create Clerk M2M token: ${message}`)\n }\n\n return new GoodPartyClient(gpApiRootUrl, token)\n }\n}\n","import { ofetch, FetchError, FetchOptions } from 'ofetch'\nimport { SdkError } from '../types/result'\n\nexport type OfetchRequestBody = FetchOptions<'json'>['body']\n\nexport class HttpClient {\n private baseUrl: string\n private m2mToken: string\n\n constructor(gpApiRootUrl: string, m2mToken: string) {\n this.baseUrl = gpApiRootUrl\n this.m2mToken = m2mToken\n }\n\n request = async <T>(\n path: string,\n init?: FetchOptions<'json'>,\n ): Promise<T> => {\n try {\n return await ofetch<T>(path, {\n baseURL: this.baseUrl,\n headers: {\n Authorization: `Bearer ${this.m2mToken}`,\n ...(init?.headers ?? {}),\n },\n ...init,\n })\n } catch (error: unknown) {\n if (error instanceof FetchError) {\n throw new SdkError(error.statusCode ?? 0, error.message, error.response)\n }\n const message = error instanceof Error ? error.message : 'Unknown error'\n throw new SdkError(0, message)\n }\n }\n}\n","export class SdkError extends Error {\n readonly status: number\n readonly response?: Response\n\n constructor(status: number, message: string, response?: Response) {\n super(message)\n this.name = 'SdkError'\n this.status = status\n this.response = response\n }\n}\n\nexport type PaginationOptions = {\n page?: number\n limit?: number\n}\n\nexport type PaginationMeta = {\n page: number\n limit: number\n total: number\n totalPages: number\n}\n\nexport type PaginatedList<T> = {\n data: T[]\n pagination: PaginationMeta\n}\n","import type { FetchOptions } from 'ofetch'\nimport type { HttpClient, OfetchRequestBody } from '../http/HttpClient'\n\nexport abstract class BaseResource {\n protected httpClient: HttpClient\n\n constructor(httpClient: HttpClient) {\n this.httpClient = httpClient\n }\n\n protected getRequest = <T>(\n path: string,\n query?: FetchOptions<'json'>['query'],\n ): Promise<T> => this.httpClient.request<T>(path, { method: 'GET', query })\n\n protected postRequest = <T>(\n path: string,\n body: OfetchRequestBody,\n ): Promise<T> => this.httpClient.request<T>(path, { method: 'POST', body })\n\n protected putRequest = <T>(\n path: string,\n body: OfetchRequestBody,\n ): Promise<T> => this.httpClient.request<T>(path, { method: 'PUT', body })\n\n protected deleteRequest = <T>(path: string): Promise<T> =>\n this.httpClient.request<T>(path, { method: 'DELETE' })\n}\n","import type { PaginatedList, PaginationOptions } from '../types/result'\nimport type { UpdatePasswordInput, User } from '../types/user'\nimport { BaseResource } from './BaseResource'\n\nexport class UsersResource extends BaseResource {\n list = async (options?: PaginationOptions): Promise<PaginatedList<User>> => {\n const { data, meta: pagination } = await this.getRequest<{\n data: User[]\n meta: { page: number; limit: number; total: number; totalPages: number }\n }>('/users', options)\n\n return {\n data,\n pagination,\n }\n }\n\n get = (id: number): Promise<User> => this.getRequest<User>(`/users/${id}`)\n\n delete = (id: number): Promise<void> =>\n this.deleteRequest<void>(`/users/${id}`)\n\n updatePassword = (id: number, input: UpdatePasswordInput): Promise<void> =>\n this.putRequest<void>(`/users/${id}/password`, input)\n}\n","export enum UserRole {\n admin = 'admin',\n sales = 'sales',\n candidate = 'candidate',\n campaignManager = 'campaignManager',\n demo = 'demo',\n}\n\nexport enum WhyBrowsing {\n considering = 'considering',\n learning = 'learning',\n test = 'test',\n else = 'else',\n}\n\nexport type UserMetaData = {\n customerId?: string\n checkoutSessionId?: string | null\n accountType?: string | null\n lastVisited?: number\n sessionCount?: number\n isDeleted?: boolean\n fsUserId?: string\n whyBrowsing?: WhyBrowsing | null\n hubspotId?: string\n profile_updated_count?: number\n textNotifications?: boolean\n} | null\n\nexport type User = {\n id: number\n firstName: string\n lastName: string\n name?: string | null\n email: string\n phone?: string | null\n zip?: string | null\n avatar?: string | null\n hasPassword: boolean\n roles?: UserRole[]\n metaData?: UserMetaData\n}\n\nexport type UpdatePasswordInput = {\n oldPassword?: string\n newPassword: string\n}\n"],"mappings":"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","names":["UserRole","WhyBrowsing"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@goodparty_org/sdk",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "0.1.0",
|
|
4
4
|
"description": "TypeScript SDK for interacting with the GoodParty API",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.mjs",
|
|
@@ -16,10 +16,12 @@
|
|
|
16
16
|
"dist"
|
|
17
17
|
],
|
|
18
18
|
"scripts": {
|
|
19
|
+
"dev": "tsup --watch",
|
|
19
20
|
"build": "tsup",
|
|
20
21
|
"lint": "eslint \"src/**/*.ts\" --quiet",
|
|
21
22
|
"lint:fix": "eslint \"src/**/*.ts\" --fix",
|
|
22
23
|
"format": "prettier --write \"src/**/*.ts\"",
|
|
24
|
+
"lint-format": "npm run lint:fix && npm run format",
|
|
23
25
|
"format:check": "prettier --check \"src/**/*.ts\"",
|
|
24
26
|
"typecheck": "tsc --noEmit",
|
|
25
27
|
"prepublishOnly": "npm run build"
|
|
@@ -44,5 +46,9 @@
|
|
|
44
46
|
"prettier": "^3.0.0",
|
|
45
47
|
"tsup": "^8.5.1",
|
|
46
48
|
"typescript": "^5.0.0"
|
|
49
|
+
},
|
|
50
|
+
"dependencies": {
|
|
51
|
+
"@clerk/backend": "^2.30.1",
|
|
52
|
+
"ofetch": "^1.5.1"
|
|
47
53
|
}
|
|
48
54
|
}
|