@palmetto/users-sdk 0.0.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.
@@ -0,0 +1,41 @@
1
+ export interface CreateClientOptions {
2
+ apiUrl: string;
3
+ authToken?: string;
4
+ }
5
+ export interface ApiOptions {
6
+ authToken?: string;
7
+ headers?: Record<string, string>;
8
+ }
9
+ export declare class UsersApiClient {
10
+ private api;
11
+ private fetcher;
12
+ private headers;
13
+ constructor(opts: CreateClientOptions);
14
+ setAuthToken(authToken: string): void;
15
+ me(opts?: ApiOptions): Promise<import("./result").ResultOk<import("openapi-typescript-fetch").ApiResponse<{
16
+ auth0Id: string;
17
+ email: string;
18
+ grants: {
19
+ entity: string;
20
+ operation: string;
21
+ deny?: boolean;
22
+ }[];
23
+ id: string;
24
+ firstName: string;
25
+ lastName: string;
26
+ phoneNumber: string;
27
+ organizationId: unknown;
28
+ meta: {
29
+ createdAt: string;
30
+ updatedAt?: string;
31
+ };
32
+ }>> | import("./result").ResultErr<{
33
+ code: "NOT_AUTHENTICATED";
34
+ }> | import("./result").ResultErr<{
35
+ error: unknown;
36
+ } & {
37
+ code: "UNKNOWN_ERROR";
38
+ }>>;
39
+ protected generateRequestInit(opts?: ApiOptions): RequestInit;
40
+ protected mergeHeaders(overrides: Record<string, string>): Headers;
41
+ }
package/dist/client.js ADDED
@@ -0,0 +1,59 @@
1
+ import { ApiError,
2
+ // FetchArgType,
3
+ Fetcher,
4
+ // FetchReturnType,
5
+ } from "openapi-typescript-fetch";
6
+ import { Ok, Err } from "./result";
7
+ export class UsersApiClient {
8
+ api;
9
+ fetcher;
10
+ headers;
11
+ constructor(opts) {
12
+ this.fetcher = Fetcher.for();
13
+ this.fetcher.configure({ baseUrl: opts.apiUrl });
14
+ this.headers = new Headers();
15
+ if (opts.authToken) {
16
+ this.setAuthToken(opts.authToken);
17
+ }
18
+ this.api = {
19
+ me: this.fetcher.path("/api/users/me").method("get").create(),
20
+ };
21
+ }
22
+ setAuthToken(authToken) {
23
+ this.headers.set("Authorization", `Bearer ${authToken}`);
24
+ }
25
+ async me(opts) {
26
+ try {
27
+ const response = await this.api.me(undefined, this.generateRequestInit(opts));
28
+ return Ok(response);
29
+ }
30
+ catch (err) {
31
+ if (err instanceof ApiError) {
32
+ switch (err.status) {
33
+ case 401:
34
+ return Err("NOT_AUTHENTICATED");
35
+ }
36
+ }
37
+ return Err("UNKNOWN_ERROR", { error: err });
38
+ }
39
+ }
40
+ generateRequestInit(opts) {
41
+ const headers = opts?.headers
42
+ ? this.mergeHeaders(opts.headers)
43
+ : new Headers(this.headers);
44
+ if (opts?.authToken) {
45
+ headers.set("Authorization", `Bearer ${opts.authToken}`);
46
+ }
47
+ return { headers };
48
+ }
49
+ mergeHeaders(overrides) {
50
+ const merged = new Headers(this.headers);
51
+ for (const key in overrides) {
52
+ merged.set(key, overrides[key]);
53
+ }
54
+ return merged;
55
+ }
56
+ }
57
+ // type ApiClient = InstanceType<typeof UsersApiClient>["api"];
58
+ // type ResponseType<T extends keyof ApiClient> = FetchReturnType<ApiClient[T]>;
59
+ // type InputType<T extends keyof ApiClient> = FetchArgType<ApiClient[T]>;
package/dist/main.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from "./client";
package/dist/main.js ADDED
@@ -0,0 +1 @@
1
+ export * from "./client";
@@ -0,0 +1,19 @@
1
+ export interface ResultOk<TData = unknown> {
2
+ ok: true;
3
+ data: TData;
4
+ }
5
+ export interface ResultErr<TError = unknown> {
6
+ ok: false;
7
+ error: TError;
8
+ }
9
+ export type Result<TData = unknown, TError = unknown> = ResultOk<TData> | ResultErr<TError>;
10
+ export type inferResultData<TResult extends Result> = TResult extends ResultOk<infer TData> ? TData : never;
11
+ export type inferResultError<TResult extends Result> = TResult extends ResultErr<infer TError> ? TError : never;
12
+ export declare function Err<TCode extends string>(code: TCode): ResultErr<{
13
+ code: TCode;
14
+ }>;
15
+ export declare function Err<TCode extends string, TExtra extends Record<string, unknown>>(code: TCode, extra: TExtra): ResultErr<TExtra & {
16
+ code: TCode;
17
+ }>;
18
+ export declare function Ok<TData = unknown>(data: TData): ResultOk<TData>;
19
+ export declare function assertOk(result: Result): asserts result is ResultOk;
package/dist/result.js ADDED
@@ -0,0 +1,11 @@
1
+ export function Err(code, extra) {
2
+ return { ok: false, error: { ...extra, code } };
3
+ }
4
+ export function Ok(data) {
5
+ return { ok: true, data };
6
+ }
7
+ export function assertOk(result) {
8
+ if (!result.ok) {
9
+ throw new Error("Result was an error!");
10
+ }
11
+ }
package/package.json ADDED
@@ -0,0 +1,24 @@
1
+ {
2
+ "name": "@palmetto/users-sdk",
3
+ "version": "0.0.1",
4
+ "main": "./dist/main.js",
5
+ "files": [
6
+ "dist/**/*"
7
+ ],
8
+ "engines": {
9
+ "node": ">=20"
10
+ },
11
+ "scripts": {
12
+ "build": "tsc",
13
+ "tc": "tsc --noEmit",
14
+ "generate": "node ./scripts/generateApiSchema.mjs"
15
+ },
16
+ "devDependencies": {
17
+ "@types/node": "^22.5.5",
18
+ "openapi-typescript": "^7.4.0",
19
+ "typescript": "5.5.4"
20
+ },
21
+ "dependencies": {
22
+ "openapi-typescript-fetch": "^2.0.0"
23
+ }
24
+ }