@kaiz11/stack-client 0.0.14
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 +32 -0
- package/README.md +586 -0
- package/dist/accounts/accounts-client.d.ts +188 -0
- package/dist/accounts/accounts-client.d.ts.map +1 -0
- package/dist/accounts/accounts-client.js +264 -0
- package/dist/accounts/accounts-client.js.map +1 -0
- package/dist/accounts/index.d.ts +8 -0
- package/dist/accounts/index.d.ts.map +1 -0
- package/dist/accounts/index.js +8 -0
- package/dist/accounts/index.js.map +1 -0
- package/dist/accounts/mock-accounts.d.ts +90 -0
- package/dist/accounts/mock-accounts.d.ts.map +1 -0
- package/dist/accounts/mock-accounts.js +434 -0
- package/dist/accounts/mock-accounts.js.map +1 -0
- package/dist/accounts/types.d.ts +180 -0
- package/dist/accounts/types.d.ts.map +1 -0
- package/dist/accounts/types.js +59 -0
- package/dist/accounts/types.js.map +1 -0
- package/dist/auth/auth-client.d.ts +224 -0
- package/dist/auth/auth-client.d.ts.map +1 -0
- package/dist/auth/auth-client.js +230 -0
- package/dist/auth/auth-client.js.map +1 -0
- package/dist/auth/base-auth.d.ts +44 -0
- package/dist/auth/base-auth.d.ts.map +1 -0
- package/dist/auth/base-auth.js +55 -0
- package/dist/auth/base-auth.js.map +1 -0
- package/dist/auth/index.d.ts +11 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +11 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/methods/admin.d.ts +59 -0
- package/dist/auth/methods/admin.d.ts.map +1 -0
- package/dist/auth/methods/admin.js +55 -0
- package/dist/auth/methods/admin.js.map +1 -0
- package/dist/auth/methods/index.d.ts +9 -0
- package/dist/auth/methods/index.d.ts.map +1 -0
- package/dist/auth/methods/index.js +8 -0
- package/dist/auth/methods/index.js.map +1 -0
- package/dist/auth/methods/magic-link.d.ts +27 -0
- package/dist/auth/methods/magic-link.d.ts.map +1 -0
- package/dist/auth/methods/magic-link.js +37 -0
- package/dist/auth/methods/magic-link.js.map +1 -0
- package/dist/auth/methods/mfa.d.ts +92 -0
- package/dist/auth/methods/mfa.d.ts.map +1 -0
- package/dist/auth/methods/mfa.js +153 -0
- package/dist/auth/methods/mfa.js.map +1 -0
- package/dist/auth/methods/oauth.d.ts +62 -0
- package/dist/auth/methods/oauth.d.ts.map +1 -0
- package/dist/auth/methods/oauth.js +165 -0
- package/dist/auth/methods/oauth.js.map +1 -0
- package/dist/auth/methods/otp.d.ts +43 -0
- package/dist/auth/methods/otp.d.ts.map +1 -0
- package/dist/auth/methods/otp.js +66 -0
- package/dist/auth/methods/otp.js.map +1 -0
- package/dist/auth/methods/password.d.ts +64 -0
- package/dist/auth/methods/password.d.ts.map +1 -0
- package/dist/auth/methods/password.js +116 -0
- package/dist/auth/methods/password.js.map +1 -0
- package/dist/auth/methods/recovery.d.ts +62 -0
- package/dist/auth/methods/recovery.d.ts.map +1 -0
- package/dist/auth/methods/recovery.js +100 -0
- package/dist/auth/methods/recovery.js.map +1 -0
- package/dist/auth/mock-auth.d.ts +135 -0
- package/dist/auth/mock-auth.d.ts.map +1 -0
- package/dist/auth/mock-auth.js +417 -0
- package/dist/auth/mock-auth.js.map +1 -0
- package/dist/auth/server/helpers.d.ts +215 -0
- package/dist/auth/server/helpers.d.ts.map +1 -0
- package/dist/auth/server/helpers.js +241 -0
- package/dist/auth/server/helpers.js.map +1 -0
- package/dist/auth/server/index.d.ts +24 -0
- package/dist/auth/server/index.d.ts.map +1 -0
- package/dist/auth/server/index.js +40 -0
- package/dist/auth/server/index.js.map +1 -0
- package/dist/auth/server/middleware.d.ts +305 -0
- package/dist/auth/server/middleware.d.ts.map +1 -0
- package/dist/auth/server/middleware.js +405 -0
- package/dist/auth/server/middleware.js.map +1 -0
- package/dist/auth/server/verify.d.ts +184 -0
- package/dist/auth/server/verify.d.ts.map +1 -0
- package/dist/auth/server/verify.js +222 -0
- package/dist/auth/server/verify.js.map +1 -0
- package/dist/auth/token-manager.d.ts +94 -0
- package/dist/auth/token-manager.d.ts.map +1 -0
- package/dist/auth/token-manager.js +231 -0
- package/dist/auth/token-manager.js.map +1 -0
- package/dist/auth/types.d.ts +412 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/auth/types.js +66 -0
- package/dist/auth/types.js.map +1 -0
- package/dist/auth/user/identities.d.ts +62 -0
- package/dist/auth/user/identities.d.ts.map +1 -0
- package/dist/auth/user/identities.js +88 -0
- package/dist/auth/user/identities.js.map +1 -0
- package/dist/auth/user/index.d.ts +4 -0
- package/dist/auth/user/index.d.ts.map +1 -0
- package/dist/auth/user/index.js +4 -0
- package/dist/auth/user/index.js.map +1 -0
- package/dist/auth/user/user.d.ts +64 -0
- package/dist/auth/user/user.d.ts.map +1 -0
- package/dist/auth/user/user.js +105 -0
- package/dist/auth/user/user.js.map +1 -0
- package/dist/auth/user/verification.d.ts +49 -0
- package/dist/auth/user/verification.d.ts.map +1 -0
- package/dist/auth/user/verification.js +71 -0
- package/dist/auth/user/verification.js.map +1 -0
- package/dist/cli/browser.d.ts +11 -0
- package/dist/cli/browser.d.ts.map +1 -0
- package/dist/cli/browser.js +35 -0
- package/dist/cli/browser.js.map +1 -0
- package/dist/cli/callback-server.d.ts +30 -0
- package/dist/cli/callback-server.d.ts.map +1 -0
- package/dist/cli/callback-server.js +100 -0
- package/dist/cli/callback-server.js.map +1 -0
- package/dist/cli/file-token-store.d.ts +79 -0
- package/dist/cli/file-token-store.d.ts.map +1 -0
- package/dist/cli/file-token-store.js +138 -0
- package/dist/cli/file-token-store.js.map +1 -0
- package/dist/cli/index.d.ts +33 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +38 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/oauth.d.ts +67 -0
- package/dist/cli/oauth.d.ts.map +1 -0
- package/dist/cli/oauth.js +101 -0
- package/dist/cli/oauth.js.map +1 -0
- package/dist/cli/pkce.d.ts +35 -0
- package/dist/cli/pkce.d.ts.map +1 -0
- package/dist/cli/pkce.js +43 -0
- package/dist/cli/pkce.js.map +1 -0
- package/dist/client.d.ts +22 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +99 -0
- package/dist/client.js.map +1 -0
- package/dist/db/client.d.ts +9 -0
- package/dist/db/client.d.ts.map +1 -0
- package/dist/db/client.js +19 -0
- package/dist/db/client.js.map +1 -0
- package/dist/db/errors.d.ts +19 -0
- package/dist/db/errors.d.ts.map +1 -0
- package/dist/db/errors.js +57 -0
- package/dist/db/errors.js.map +1 -0
- package/dist/db/index.d.ts +7 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +5 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/mock.d.ts +28 -0
- package/dist/db/mock.d.ts.map +1 -0
- package/dist/db/mock.js +459 -0
- package/dist/db/mock.js.map +1 -0
- package/dist/db/types.d.ts +73 -0
- package/dist/db/types.d.ts.map +1 -0
- package/dist/db/types.js +2 -0
- package/dist/db/types.js.map +1 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/errors.d.ts +33 -0
- package/dist/lib/errors.d.ts.map +1 -0
- package/dist/lib/errors.js +76 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/http.d.ts +81 -0
- package/dist/lib/http.d.ts.map +1 -0
- package/dist/lib/http.js +163 -0
- package/dist/lib/http.js.map +1 -0
- package/dist/lib/keys.d.ts +87 -0
- package/dist/lib/keys.d.ts.map +1 -0
- package/dist/lib/keys.js +147 -0
- package/dist/lib/keys.js.map +1 -0
- package/dist/lib/paths.d.ts +37 -0
- package/dist/lib/paths.d.ts.map +1 -0
- package/dist/lib/paths.js +49 -0
- package/dist/lib/paths.js.map +1 -0
- package/dist/lib/token-store.d.ts +42 -0
- package/dist/lib/token-store.d.ts.map +1 -0
- package/dist/lib/token-store.js +75 -0
- package/dist/lib/token-store.js.map +1 -0
- package/dist/mocks/handlers.d.ts +29 -0
- package/dist/mocks/handlers.d.ts.map +1 -0
- package/dist/mocks/handlers.js +79 -0
- package/dist/mocks/handlers.js.map +1 -0
- package/dist/mocks/index.d.ts +5 -0
- package/dist/mocks/index.d.ts.map +1 -0
- package/dist/mocks/index.js +9 -0
- package/dist/mocks/index.js.map +1 -0
- package/dist/mocks/responses.d.ts +76 -0
- package/dist/mocks/responses.d.ts.map +1 -0
- package/dist/mocks/responses.js +91 -0
- package/dist/mocks/responses.js.map +1 -0
- package/dist/mocks/server.d.ts +7 -0
- package/dist/mocks/server.d.ts.map +1 -0
- package/dist/mocks/server.js +9 -0
- package/dist/mocks/server.js.map +1 -0
- package/dist/mocks/state.d.ts +86 -0
- package/dist/mocks/state.d.ts.map +1 -0
- package/dist/mocks/state.js +77 -0
- package/dist/mocks/state.js.map +1 -0
- package/dist/storage/bucket-ref.d.ts +183 -0
- package/dist/storage/bucket-ref.d.ts.map +1 -0
- package/dist/storage/bucket-ref.js +529 -0
- package/dist/storage/bucket-ref.js.map +1 -0
- package/dist/storage/errors.d.ts +27 -0
- package/dist/storage/errors.d.ts.map +1 -0
- package/dist/storage/errors.js +89 -0
- package/dist/storage/errors.js.map +1 -0
- package/dist/storage/index.d.ts +13 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +11 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/interface.d.ts +245 -0
- package/dist/storage/interface.d.ts.map +1 -0
- package/dist/storage/interface.js +2 -0
- package/dist/storage/interface.js.map +1 -0
- package/dist/storage/mock-storage.d.ts +67 -0
- package/dist/storage/mock-storage.d.ts.map +1 -0
- package/dist/storage/mock-storage.js +478 -0
- package/dist/storage/mock-storage.js.map +1 -0
- package/dist/storage/policies-client.d.ts +77 -0
- package/dist/storage/policies-client.d.ts.map +1 -0
- package/dist/storage/policies-client.js +115 -0
- package/dist/storage/policies-client.js.map +1 -0
- package/dist/storage/policy-templates.d.ts +6 -0
- package/dist/storage/policy-templates.d.ts.map +1 -0
- package/dist/storage/policy-templates.js +290 -0
- package/dist/storage/policy-templates.js.map +1 -0
- package/dist/storage/policy-types.d.ts +98 -0
- package/dist/storage/policy-types.d.ts.map +1 -0
- package/dist/storage/policy-types.js +20 -0
- package/dist/storage/policy-types.js.map +1 -0
- package/dist/storage/storage-client.d.ts +32 -0
- package/dist/storage/storage-client.d.ts.map +1 -0
- package/dist/storage/storage-client.js +94 -0
- package/dist/storage/storage-client.js.map +1 -0
- package/dist/storage/tus-upload.d.ts +56 -0
- package/dist/storage/tus-upload.d.ts.map +1 -0
- package/dist/storage/tus-upload.js +236 -0
- package/dist/storage/tus-upload.js.map +1 -0
- package/dist/storage/types.d.ts +335 -0
- package/dist/storage/types.d.ts.map +1 -0
- package/dist/storage/types.js +39 -0
- package/dist/storage/types.js.map +1 -0
- package/dist/test/auth/helpers.d.ts +33 -0
- package/dist/test/auth/helpers.d.ts.map +1 -0
- package/dist/test/auth/helpers.js +80 -0
- package/dist/test/auth/helpers.js.map +1 -0
- package/dist/test/helpers/jwt.d.ts +61 -0
- package/dist/test/helpers/jwt.d.ts.map +1 -0
- package/dist/test/helpers/jwt.js +132 -0
- package/dist/test/helpers/jwt.js.map +1 -0
- package/dist/test/helpers/mailpit.d.ts +61 -0
- package/dist/test/helpers/mailpit.d.ts.map +1 -0
- package/dist/test/helpers/mailpit.js +107 -0
- package/dist/test/helpers/mailpit.js.map +1 -0
- package/dist/test/setup.d.ts +2 -0
- package/dist/test/setup.d.ts.map +1 -0
- package/dist/test/setup.js +17 -0
- package/dist/test/setup.js.map +1 -0
- package/dist/types.d.ts +96 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/package.json +78 -0
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
export interface DbResponse<T> {
|
|
2
|
+
data: T[] | null;
|
|
3
|
+
error: unknown | null;
|
|
4
|
+
count: number | null;
|
|
5
|
+
status: number;
|
|
6
|
+
statusText: string;
|
|
7
|
+
}
|
|
8
|
+
export interface DbSingleResponse<T> {
|
|
9
|
+
data: T | null;
|
|
10
|
+
error: unknown | null;
|
|
11
|
+
count: number | null;
|
|
12
|
+
status: number;
|
|
13
|
+
statusText: string;
|
|
14
|
+
}
|
|
15
|
+
export interface IQueryBuilder<T = unknown> {
|
|
16
|
+
select(columns?: string, options?: {
|
|
17
|
+
count?: string;
|
|
18
|
+
head?: boolean;
|
|
19
|
+
}): IQueryBuilder<T>;
|
|
20
|
+
insert(values: Partial<T> | Partial<T>[], options?: {
|
|
21
|
+
onConflict?: string;
|
|
22
|
+
count?: string;
|
|
23
|
+
}): IQueryBuilder<T>;
|
|
24
|
+
update(values: Partial<T>, options?: {
|
|
25
|
+
count?: string;
|
|
26
|
+
}): IQueryBuilder<T>;
|
|
27
|
+
delete(options?: {
|
|
28
|
+
count?: string;
|
|
29
|
+
}): IQueryBuilder<T>;
|
|
30
|
+
upsert(values: Partial<T> | Partial<T>[], options?: {
|
|
31
|
+
onConflict?: string;
|
|
32
|
+
count?: string;
|
|
33
|
+
}): IQueryBuilder<T>;
|
|
34
|
+
eq(column: string, value: unknown): IQueryBuilder<T>;
|
|
35
|
+
neq(column: string, value: unknown): IQueryBuilder<T>;
|
|
36
|
+
gt(column: string, value: unknown): IQueryBuilder<T>;
|
|
37
|
+
gte(column: string, value: unknown): IQueryBuilder<T>;
|
|
38
|
+
lt(column: string, value: unknown): IQueryBuilder<T>;
|
|
39
|
+
lte(column: string, value: unknown): IQueryBuilder<T>;
|
|
40
|
+
like(column: string, pattern: string): IQueryBuilder<T>;
|
|
41
|
+
ilike(column: string, pattern: string): IQueryBuilder<T>;
|
|
42
|
+
is(column: string, value: unknown): IQueryBuilder<T>;
|
|
43
|
+
in(column: string, values: unknown[]): IQueryBuilder<T>;
|
|
44
|
+
contains(column: string, value: unknown): IQueryBuilder<T>;
|
|
45
|
+
containedBy(column: string, value: unknown): IQueryBuilder<T>;
|
|
46
|
+
overlaps(column: string, value: unknown): IQueryBuilder<T>;
|
|
47
|
+
textSearch(column: string, query: string, options?: unknown): IQueryBuilder<T>;
|
|
48
|
+
filter(column: string, operator: string, value: unknown): IQueryBuilder<T>;
|
|
49
|
+
or(filters: string, options?: {
|
|
50
|
+
referencedTable?: string;
|
|
51
|
+
}): IQueryBuilder<T>;
|
|
52
|
+
and(filters: string, options?: {
|
|
53
|
+
referencedTable?: string;
|
|
54
|
+
}): IQueryBuilder<T>;
|
|
55
|
+
order(column: string, options?: {
|
|
56
|
+
ascending?: boolean;
|
|
57
|
+
nullsFirst?: boolean;
|
|
58
|
+
}): IQueryBuilder<T>;
|
|
59
|
+
limit(count: number): IQueryBuilder<T>;
|
|
60
|
+
range(from: number, to: number): IQueryBuilder<T>;
|
|
61
|
+
single(): PromiseLike<DbSingleResponse<T>>;
|
|
62
|
+
maybeSingle(): PromiseLike<DbSingleResponse<T>>;
|
|
63
|
+
then<TResult = DbResponse<T>>(onfulfilled?: (value: DbResponse<T>) => TResult | PromiseLike<TResult>, onrejected?: (reason: unknown) => TResult | PromiseLike<TResult>): Promise<TResult>;
|
|
64
|
+
}
|
|
65
|
+
export interface IDbClient {
|
|
66
|
+
from<T = unknown>(table: string): IQueryBuilder<T>;
|
|
67
|
+
rpc<T = unknown>(fn: string, params?: Record<string, unknown>, options?: {
|
|
68
|
+
count?: string;
|
|
69
|
+
head?: boolean;
|
|
70
|
+
}): PromiseLike<T>;
|
|
71
|
+
schema(name: string): IDbClient;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/db/types.ts"],"names":[],"mappings":"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"}
|
package/dist/db/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/db/types.ts"],"names":[],"mappings":""}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export { StackClient, createClient, createTenantClient, createPlatformClient, } from "./client.js";
|
|
2
|
+
export { MemoryTokenStore, LocalStorageTokenStore } from "./lib/token-store.js";
|
|
3
|
+
export type { ClientConfig, ResolvedClientConfig, TokenStore, TokenStoreType, MockOptions, } from "./types.js";
|
|
4
|
+
export { PLATFORM_TENANT_ID } from "./types.js";
|
|
5
|
+
export type { IAuthClient, Session, User, UserIdentity, Factor, FactorType, FactorStatus, AuthChangeEvent, AuthChangeCallback, Unsubscribe, EmailPasswordCredentials, SignUpOptions, SignUpResult, LogoutScope, } from "./auth/index.js";
|
|
6
|
+
export { StackError, AuthError, NetworkError } from "./lib/errors.js";
|
|
7
|
+
export { StorageError } from "./storage/index.js";
|
|
8
|
+
export { AnonKeyError } from "./lib/keys.js";
|
|
9
|
+
export { fetchAnonKey, fetchAnonKeyCached, clearAnonKeyCache, buildPublicKeyUrl, } from "./lib/keys.js";
|
|
10
|
+
export type { IStorageClient, IBucketRef, Bucket, CreateBucketOptions, UpdateBucketOptions, StorageObject, ObjectMetadata, FileBody, UploadOptions, UploadResult, DownloadOptions, ImageTransformOptions, ListOptions, ListV2Options, ListV2Result, SignedUrl, SignedUrlOptions, SignedUploadUrl, SignedUploadUrlOptions, PublicUrlOptions, MoveOptions, CopyOptions, CopyResult, TusUpload, TusUploadOptions, TusProgress, IStoragePoliciesClient, PolicyCommand, PolicyAction, PolicyTemplate, StoragePolicyInput, StoragePolicy, StoragePolicySet, } from "./storage/index.js";
|
|
11
|
+
export { generatePolicySet } from "./storage/index.js";
|
|
12
|
+
export type { IAccountsClient, Account, AccountMember, AccountRole, AccountRoleInfo, CreateAccountOptions, UpdateAccountOptions, GetMembersOptions, UpdateMemberRoleOptions, Invitation, InvitationLookup, AcceptedInvitation, InvitationType, CreateInvitationOptions, GetInvitationsOptions, } from "./accounts/index.js";
|
|
13
|
+
export { mockState, requestCounts } from "./mocks/state.js";
|
|
14
|
+
export type { MockState, RequestCounts } from "./mocks/state.js";
|
|
15
|
+
export { mockStorageState, storageRequestCounts } from "./storage/index.js";
|
|
16
|
+
export type { MockStorageState } from "./storage/index.js";
|
|
17
|
+
export { mockAccountsState, accountsRequestCounts } from "./accounts/index.js";
|
|
18
|
+
export type { MockAccountsState } from "./accounts/index.js";
|
|
19
|
+
export { PostgrestClient, createDbClient, DbError, mockDbState, dbRequestCounts, resetMockDbState, } from "./db/index.js";
|
|
20
|
+
export type { PostgrestQueryBuilder, PostgrestFilterBuilder, PostgrestTransformBuilder, PostgrestBuilder, PostgrestResponse, PostgrestSingleResponse, PostgrestMaybeSingleResponse, PostgrestError, DbClientConfig, MockDbState, DbRequestCounts, IDbClient, IQueryBuilder, DbResponse, DbSingleResponse, } from "./db/index.js";
|
|
21
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAKhF,YAAY,EACV,YAAY,EACZ,oBAAoB,EACpB,UAAU,EACV,cAAc,EACd,WAAW,GACZ,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAGhD,YAAY,EACV,WAAW,EACX,OAAO,EACP,IAAI,EACJ,YAAY,EACZ,MAAM,EACN,UAAU,EACV,YAAY,EACZ,eAAe,EACf,kBAAkB,EAClB,WAAW,EACX,wBAAwB,EACxB,aAAa,EACb,YAAY,EACZ,WAAW,GACZ,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAG7C,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,eAAe,CAAC;AAGvB,YAAY,EACV,cAAc,EACd,UAAU,EACV,MAAM,EACN,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,QAAQ,EACR,aAAa,EACb,YAAY,EACZ,eAAe,EACf,qBAAqB,EACrB,WAAW,EACX,aAAa,EACb,YAAY,EACZ,SAAS,EACT,gBAAgB,EAChB,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,WAAW,EAEX,sBAAsB,EACtB,aAAa,EACb,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,aAAa,EACb,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAGvD,YAAY,EACV,eAAe,EACf,OAAO,EACP,aAAa,EACb,WAAW,EACX,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,EACjB,uBAAuB,EAEvB,UAAU,EACV,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC5D,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjE,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC5E,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC/E,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,EACL,eAAe,EACf,cAAc,EACd,OAAO,EACP,WAAW,EACX,eAAe,EACf,gBAAgB,GACjB,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,qBAAqB,EACrB,sBAAsB,EACtB,yBAAyB,EACzB,gBAAgB,EAChB,iBAAiB,EACjB,uBAAuB,EACvB,4BAA4B,EAC5B,cAAc,EACd,cAAc,EACd,WAAW,EACX,eAAe,EACf,SAAS,EACT,aAAa,EACb,UAAU,EACV,gBAAgB,GACjB,MAAM,eAAe,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// Main client exports
|
|
2
|
+
export { StackClient, createClient, createTenantClient, createPlatformClient, } from "./client.js";
|
|
3
|
+
// Token store exports
|
|
4
|
+
export { MemoryTokenStore, LocalStorageTokenStore } from "./lib/token-store.js";
|
|
5
|
+
// Constants
|
|
6
|
+
export { PLATFORM_TENANT_ID } from "./types.js";
|
|
7
|
+
// Error exports
|
|
8
|
+
export { StackError, AuthError, NetworkError } from "./lib/errors.js";
|
|
9
|
+
export { StorageError } from "./storage/index.js";
|
|
10
|
+
export { AnonKeyError } from "./lib/keys.js";
|
|
11
|
+
// Key utilities
|
|
12
|
+
export { fetchAnonKey, fetchAnonKeyCached, clearAnonKeyCache, buildPublicKeyUrl, } from "./lib/keys.js";
|
|
13
|
+
// Storage policy helpers
|
|
14
|
+
export { generatePolicySet } from "./storage/index.js";
|
|
15
|
+
// Mock exports (for testing)
|
|
16
|
+
export { mockState, requestCounts } from "./mocks/state.js";
|
|
17
|
+
export { mockStorageState, storageRequestCounts } from "./storage/index.js";
|
|
18
|
+
export { mockAccountsState, accountsRequestCounts } from "./accounts/index.js";
|
|
19
|
+
export { PostgrestClient, createDbClient, DbError, mockDbState, dbRequestCounts, resetMockDbState, } from "./db/index.js";
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,sBAAsB;AACtB,OAAO,EACL,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAErB,sBAAsB;AACtB,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAahF,YAAY;AACZ,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAoBhD,gBAAgB;AAChB,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,gBAAgB;AAChB,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,eAAe,CAAC;AAwCvB,yBAAyB;AACzB,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAsBvD,6BAA6B;AAC7B,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAG5D,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAG5E,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAG/E,OAAO,EACL,eAAe,EACf,cAAc,EACd,OAAO,EACP,WAAW,EACX,eAAe,EACf,gBAAgB,GACjB,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base error class for all stack-client errors
|
|
3
|
+
*/
|
|
4
|
+
export declare class StackError extends Error {
|
|
5
|
+
code: string;
|
|
6
|
+
statusCode?: number | undefined;
|
|
7
|
+
constructor(message: string, code: string, statusCode?: number | undefined);
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Authentication-related errors
|
|
11
|
+
*/
|
|
12
|
+
export declare class AuthError extends StackError {
|
|
13
|
+
constructor(message: string, code: string, statusCode?: number);
|
|
14
|
+
static invalidCredentials(): AuthError;
|
|
15
|
+
static sessionExpired(): AuthError;
|
|
16
|
+
static refreshFailed(): AuthError;
|
|
17
|
+
static notAuthenticated(): AuthError;
|
|
18
|
+
static userAlreadyExists(): AuthError;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Network/HTTP errors
|
|
22
|
+
*/
|
|
23
|
+
export declare class NetworkError extends StackError {
|
|
24
|
+
response?: unknown | undefined;
|
|
25
|
+
constructor(message: string, code: string, statusCode?: number, response?: unknown | undefined);
|
|
26
|
+
static timeout(): NetworkError;
|
|
27
|
+
static connectionFailed(): NetworkError;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Parse error response from GoTrue/PostgREST
|
|
31
|
+
*/
|
|
32
|
+
export declare function parseErrorResponse(statusCode: number, body: unknown): StackError;
|
|
33
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,UAAW,SAAQ,KAAK;IAG1B,IAAI,EAAE,MAAM;IACZ,UAAU,CAAC,EAAE,MAAM;gBAF1B,OAAO,EAAE,MAAM,EACR,IAAI,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,MAAM,YAAA;CAK7B;AAED;;GAEG;AACH,qBAAa,SAAU,SAAQ,UAAU;gBAC3B,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;IAK9D,MAAM,CAAC,kBAAkB,IAAI,SAAS;IAQtC,MAAM,CAAC,cAAc,IAAI,SAAS;IAIlC,MAAM,CAAC,aAAa,IAAI,SAAS;IAIjC,MAAM,CAAC,gBAAgB,IAAI,SAAS;IAIpC,MAAM,CAAC,iBAAiB,IAAI,SAAS;CAGtC;AAED;;GAEG;AACH,qBAAa,YAAa,SAAQ,UAAU;IAKjC,QAAQ,CAAC,EAAE,OAAO;gBAHzB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,OAAO,YAAA;IAM3B,MAAM,CAAC,OAAO,IAAI,YAAY;IAI9B,MAAM,CAAC,gBAAgB,IAAI,YAAY;CAGxC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,OAAO,GACZ,UAAU,CA0BZ"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base error class for all stack-client errors
|
|
3
|
+
*/
|
|
4
|
+
export class StackError extends Error {
|
|
5
|
+
code;
|
|
6
|
+
statusCode;
|
|
7
|
+
constructor(message, code, statusCode) {
|
|
8
|
+
super(message);
|
|
9
|
+
this.code = code;
|
|
10
|
+
this.statusCode = statusCode;
|
|
11
|
+
this.name = "StackError";
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Authentication-related errors
|
|
16
|
+
*/
|
|
17
|
+
export class AuthError extends StackError {
|
|
18
|
+
constructor(message, code, statusCode) {
|
|
19
|
+
super(message, code, statusCode);
|
|
20
|
+
this.name = "AuthError";
|
|
21
|
+
}
|
|
22
|
+
static invalidCredentials() {
|
|
23
|
+
return new AuthError("Invalid email or password", "invalid_credentials", 401);
|
|
24
|
+
}
|
|
25
|
+
static sessionExpired() {
|
|
26
|
+
return new AuthError("Session has expired", "session_expired", 401);
|
|
27
|
+
}
|
|
28
|
+
static refreshFailed() {
|
|
29
|
+
return new AuthError("Failed to refresh token", "refresh_failed", 401);
|
|
30
|
+
}
|
|
31
|
+
static notAuthenticated() {
|
|
32
|
+
return new AuthError("Not authenticated", "not_authenticated", 401);
|
|
33
|
+
}
|
|
34
|
+
static userAlreadyExists() {
|
|
35
|
+
return new AuthError("User already exists", "user_already_exists", 422);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Network/HTTP errors
|
|
40
|
+
*/
|
|
41
|
+
export class NetworkError extends StackError {
|
|
42
|
+
response;
|
|
43
|
+
constructor(message, code, statusCode, response) {
|
|
44
|
+
super(message, code, statusCode);
|
|
45
|
+
this.response = response;
|
|
46
|
+
this.name = "NetworkError";
|
|
47
|
+
}
|
|
48
|
+
static timeout() {
|
|
49
|
+
return new NetworkError("Request timed out", "timeout");
|
|
50
|
+
}
|
|
51
|
+
static connectionFailed() {
|
|
52
|
+
return new NetworkError("Connection failed", "connection_failed");
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Parse error response from GoTrue/PostgREST
|
|
57
|
+
*/
|
|
58
|
+
export function parseErrorResponse(statusCode, body) {
|
|
59
|
+
// GoTrue format: { code: number, error_code: string, msg: string }
|
|
60
|
+
// PostgREST format: { message: string, code: string, details?: string }
|
|
61
|
+
if (typeof body === "object" && body !== null) {
|
|
62
|
+
const obj = body;
|
|
63
|
+
// GoTrue format: { code: 422, error_code: "user_already_exists", msg: "..." }
|
|
64
|
+
if (typeof obj.msg === "string") {
|
|
65
|
+
const code = typeof obj.error_code === "string" ? obj.error_code : "unknown";
|
|
66
|
+
return new AuthError(obj.msg, code, statusCode);
|
|
67
|
+
}
|
|
68
|
+
// PostgREST format: { message: "...", code: "..." }
|
|
69
|
+
if (typeof obj.message === "string") {
|
|
70
|
+
const code = typeof obj.code === "string" ? obj.code : "unknown";
|
|
71
|
+
return new StackError(obj.message, code, statusCode);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return new StackError(`Request failed with status ${statusCode}`, "unknown_error", statusCode);
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import type { TokenStore } from "./token-store.js";
|
|
2
|
+
/**
|
|
3
|
+
* HTTP client configuration
|
|
4
|
+
*/
|
|
5
|
+
export interface HttpClientConfig {
|
|
6
|
+
baseUrl: string;
|
|
7
|
+
tokenStore: TokenStore;
|
|
8
|
+
timeout?: number;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Request options
|
|
12
|
+
*/
|
|
13
|
+
export interface RequestOptions {
|
|
14
|
+
method?: "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
|
|
15
|
+
headers?: Record<string, string>;
|
|
16
|
+
body?: unknown;
|
|
17
|
+
/** Skip adding Authorization header */
|
|
18
|
+
noAuth?: boolean;
|
|
19
|
+
/** Custom timeout for this request */
|
|
20
|
+
timeout?: number;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Raw request options for non-JSON requests (file uploads, binary downloads)
|
|
24
|
+
*/
|
|
25
|
+
export interface RawRequestOptions {
|
|
26
|
+
method?: "GET" | "POST" | "PUT" | "PATCH" | "DELETE" | "HEAD";
|
|
27
|
+
headers?: Record<string, string>;
|
|
28
|
+
/** Raw body (FormData, Blob, ArrayBuffer, string, etc.) */
|
|
29
|
+
body?: BodyInit;
|
|
30
|
+
/** Skip adding Authorization header */
|
|
31
|
+
noAuth?: boolean;
|
|
32
|
+
/** Custom timeout for this request */
|
|
33
|
+
timeout?: number;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* HTTP client with authentication and error handling
|
|
37
|
+
*/
|
|
38
|
+
export declare class HttpClient {
|
|
39
|
+
private baseUrl;
|
|
40
|
+
private tokenStore;
|
|
41
|
+
private defaultTimeout;
|
|
42
|
+
constructor(config: HttpClientConfig);
|
|
43
|
+
/**
|
|
44
|
+
* Make an HTTP request
|
|
45
|
+
*/
|
|
46
|
+
request<T>(path: string, options?: RequestOptions): Promise<T>;
|
|
47
|
+
/**
|
|
48
|
+
* GET request
|
|
49
|
+
*/
|
|
50
|
+
get<T>(path: string, options?: Omit<RequestOptions, "method" | "body">): Promise<T>;
|
|
51
|
+
/**
|
|
52
|
+
* POST request
|
|
53
|
+
*/
|
|
54
|
+
post<T>(path: string, body?: unknown, options?: Omit<RequestOptions, "method" | "body">): Promise<T>;
|
|
55
|
+
/**
|
|
56
|
+
* PUT request
|
|
57
|
+
*/
|
|
58
|
+
put<T>(path: string, body?: unknown, options?: Omit<RequestOptions, "method" | "body">): Promise<T>;
|
|
59
|
+
/**
|
|
60
|
+
* PATCH request
|
|
61
|
+
*/
|
|
62
|
+
patch<T>(path: string, body?: unknown, options?: Omit<RequestOptions, "method" | "body">): Promise<T>;
|
|
63
|
+
/**
|
|
64
|
+
* DELETE request
|
|
65
|
+
*/
|
|
66
|
+
delete<T>(path: string, options?: Omit<RequestOptions, "method" | "body">): Promise<T>;
|
|
67
|
+
/**
|
|
68
|
+
* Raw request for non-JSON operations (file uploads, binary downloads)
|
|
69
|
+
* Returns the raw Response object for caller to handle
|
|
70
|
+
*/
|
|
71
|
+
rawRequest(path: string, options?: RawRequestOptions): Promise<Response>;
|
|
72
|
+
/**
|
|
73
|
+
* Get current access token (for manual requests)
|
|
74
|
+
*/
|
|
75
|
+
getAccessToken(): string | null;
|
|
76
|
+
/**
|
|
77
|
+
* Get the base URL
|
|
78
|
+
*/
|
|
79
|
+
getBaseUrl(): string;
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=http.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/lib/http.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;IACrD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,uCAAuC;IACvC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,sCAAsC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,2DAA2D;IAC3D,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,uCAAuC;IACvC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,sCAAsC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,cAAc,CAAS;gBAEnB,MAAM,EAAE,gBAAgB;IAOpC;;OAEG;IACG,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,CAAC,CAAC;IAiExE;;OAEG;IACG,GAAG,CAAC,CAAC,EACT,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,QAAQ,GAAG,MAAM,CAAC,GAChD,OAAO,CAAC,CAAC,CAAC;IAIb;;OAEG;IACG,IAAI,CAAC,CAAC,EACV,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,QAAQ,GAAG,MAAM,CAAC,GAChD,OAAO,CAAC,CAAC,CAAC;IAIb;;OAEG;IACG,GAAG,CAAC,CAAC,EACT,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,QAAQ,GAAG,MAAM,CAAC,GAChD,OAAO,CAAC,CAAC,CAAC;IAIb;;OAEG;IACG,KAAK,CAAC,CAAC,EACX,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,QAAQ,GAAG,MAAM,CAAC,GAChD,OAAO,CAAC,CAAC,CAAC;IAIb;;OAEG;IACG,MAAM,CAAC,CAAC,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,QAAQ,GAAG,MAAM,CAAC,GAChD,OAAO,CAAC,CAAC,CAAC;IAIb;;;OAGG;IACG,UAAU,CACd,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,QAAQ,CAAC;IA6DpB;;OAEG;IACH,cAAc,IAAI,MAAM,GAAG,IAAI;IAI/B;;OAEG;IACH,UAAU,IAAI,MAAM;CAGrB"}
|
package/dist/lib/http.js
ADDED
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { NetworkError, parseErrorResponse } from "./errors.js";
|
|
2
|
+
/**
|
|
3
|
+
* HTTP client with authentication and error handling
|
|
4
|
+
*/
|
|
5
|
+
export class HttpClient {
|
|
6
|
+
baseUrl;
|
|
7
|
+
tokenStore;
|
|
8
|
+
defaultTimeout;
|
|
9
|
+
constructor(config) {
|
|
10
|
+
// Remove trailing slash from baseUrl
|
|
11
|
+
this.baseUrl = config.baseUrl.replace(/\/$/, "");
|
|
12
|
+
this.tokenStore = config.tokenStore;
|
|
13
|
+
this.defaultTimeout = config.timeout ?? 30000;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Make an HTTP request
|
|
17
|
+
*/
|
|
18
|
+
async request(path, options = {}) {
|
|
19
|
+
const { method = "GET", headers = {}, body, noAuth, timeout } = options;
|
|
20
|
+
const url = `${this.baseUrl}${path}`;
|
|
21
|
+
const requestHeaders = {
|
|
22
|
+
"Content-Type": "application/json",
|
|
23
|
+
...headers,
|
|
24
|
+
};
|
|
25
|
+
// Add Authorization header if authenticated and not explicitly skipped
|
|
26
|
+
if (!noAuth) {
|
|
27
|
+
const accessToken = this.tokenStore.getAccessToken();
|
|
28
|
+
if (accessToken) {
|
|
29
|
+
requestHeaders["Authorization"] = `Bearer ${accessToken}`;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
// Create abort controller for timeout
|
|
33
|
+
const controller = new AbortController();
|
|
34
|
+
const timeoutId = setTimeout(() => controller.abort(), timeout ?? this.defaultTimeout);
|
|
35
|
+
try {
|
|
36
|
+
const response = await fetch(url, {
|
|
37
|
+
method,
|
|
38
|
+
headers: requestHeaders,
|
|
39
|
+
body: body !== undefined ? JSON.stringify(body) : undefined,
|
|
40
|
+
signal: controller.signal,
|
|
41
|
+
});
|
|
42
|
+
clearTimeout(timeoutId);
|
|
43
|
+
// Parse response body
|
|
44
|
+
const contentType = response.headers.get("content-type");
|
|
45
|
+
let responseBody;
|
|
46
|
+
if (contentType?.includes("application/json")) {
|
|
47
|
+
responseBody = await response.json();
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
responseBody = await response.text();
|
|
51
|
+
}
|
|
52
|
+
// Handle error responses
|
|
53
|
+
if (!response.ok) {
|
|
54
|
+
throw parseErrorResponse(response.status, responseBody);
|
|
55
|
+
}
|
|
56
|
+
return responseBody;
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
clearTimeout(timeoutId);
|
|
60
|
+
if (error instanceof Error && error.name === "AbortError") {
|
|
61
|
+
throw NetworkError.timeout();
|
|
62
|
+
}
|
|
63
|
+
if (error instanceof TypeError) {
|
|
64
|
+
throw NetworkError.connectionFailed();
|
|
65
|
+
}
|
|
66
|
+
throw error;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* GET request
|
|
71
|
+
*/
|
|
72
|
+
async get(path, options) {
|
|
73
|
+
return this.request(path, { ...options, method: "GET" });
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* POST request
|
|
77
|
+
*/
|
|
78
|
+
async post(path, body, options) {
|
|
79
|
+
return this.request(path, { ...options, method: "POST", body });
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* PUT request
|
|
83
|
+
*/
|
|
84
|
+
async put(path, body, options) {
|
|
85
|
+
return this.request(path, { ...options, method: "PUT", body });
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* PATCH request
|
|
89
|
+
*/
|
|
90
|
+
async patch(path, body, options) {
|
|
91
|
+
return this.request(path, { ...options, method: "PATCH", body });
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* DELETE request
|
|
95
|
+
*/
|
|
96
|
+
async delete(path, options) {
|
|
97
|
+
return this.request(path, { ...options, method: "DELETE" });
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Raw request for non-JSON operations (file uploads, binary downloads)
|
|
101
|
+
* Returns the raw Response object for caller to handle
|
|
102
|
+
*/
|
|
103
|
+
async rawRequest(path, options = {}) {
|
|
104
|
+
const { method = "GET", headers = {}, body, noAuth, timeout } = options;
|
|
105
|
+
const url = `${this.baseUrl}${path}`;
|
|
106
|
+
const requestHeaders = { ...headers };
|
|
107
|
+
// Add Authorization header if authenticated and not explicitly skipped
|
|
108
|
+
if (!noAuth) {
|
|
109
|
+
const accessToken = this.tokenStore.getAccessToken();
|
|
110
|
+
if (accessToken) {
|
|
111
|
+
requestHeaders["Authorization"] = `Bearer ${accessToken}`;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
// Create abort controller for timeout
|
|
115
|
+
const controller = new AbortController();
|
|
116
|
+
const timeoutId = setTimeout(() => controller.abort(), timeout ?? this.defaultTimeout);
|
|
117
|
+
try {
|
|
118
|
+
const response = await fetch(url, {
|
|
119
|
+
method,
|
|
120
|
+
headers: requestHeaders,
|
|
121
|
+
body,
|
|
122
|
+
signal: controller.signal,
|
|
123
|
+
});
|
|
124
|
+
clearTimeout(timeoutId);
|
|
125
|
+
// Handle error responses
|
|
126
|
+
if (!response.ok) {
|
|
127
|
+
const contentType = response.headers.get("content-type");
|
|
128
|
+
let errorBody;
|
|
129
|
+
if (contentType?.includes("application/json")) {
|
|
130
|
+
errorBody = await response.json();
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
errorBody = await response.text();
|
|
134
|
+
}
|
|
135
|
+
throw parseErrorResponse(response.status, errorBody);
|
|
136
|
+
}
|
|
137
|
+
return response;
|
|
138
|
+
}
|
|
139
|
+
catch (error) {
|
|
140
|
+
clearTimeout(timeoutId);
|
|
141
|
+
if (error instanceof Error && error.name === "AbortError") {
|
|
142
|
+
throw NetworkError.timeout();
|
|
143
|
+
}
|
|
144
|
+
if (error instanceof TypeError) {
|
|
145
|
+
throw NetworkError.connectionFailed();
|
|
146
|
+
}
|
|
147
|
+
throw error;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Get current access token (for manual requests)
|
|
152
|
+
*/
|
|
153
|
+
getAccessToken() {
|
|
154
|
+
return this.tokenStore.getAccessToken();
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Get the base URL
|
|
158
|
+
*/
|
|
159
|
+
getBaseUrl() {
|
|
160
|
+
return this.baseUrl;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=http.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/lib/http.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error thrown when fetching the anon key fails
|
|
3
|
+
*/
|
|
4
|
+
export declare class AnonKeyError extends Error {
|
|
5
|
+
readonly statusCode?: number | undefined;
|
|
6
|
+
constructor(message: string, statusCode?: number | undefined);
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Build the public key URL for a tenant
|
|
10
|
+
*
|
|
11
|
+
* @param baseUrl - Base URL of the stack (e.g., "https://stack.zenku.app")
|
|
12
|
+
* @param tenantId - Tenant identifier (default: "_platform")
|
|
13
|
+
* @returns The full URL to fetch the public key
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* const url = buildPublicKeyUrl("https://stack.zenku.app", "acme");
|
|
18
|
+
* // => "https://stack.zenku.app/tenants/acme/public_key"
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export declare function buildPublicKeyUrl(baseUrl: string, tenantId?: string): string;
|
|
22
|
+
/**
|
|
23
|
+
* Fetch the anon key for a tenant
|
|
24
|
+
*
|
|
25
|
+
* The anon key is a pre-signed JWT with `role = "anon"` that can be used
|
|
26
|
+
* for unauthenticated requests. It's designed to be public - security
|
|
27
|
+
* comes from RLS policies, not from the key being secret.
|
|
28
|
+
*
|
|
29
|
+
* The response is cached by the server (Cache-Control: public, max-age=3600).
|
|
30
|
+
*
|
|
31
|
+
* @param baseUrl - Base URL of the stack (e.g., "https://stack.zenku.app")
|
|
32
|
+
* @param tenantId - Tenant identifier (default: "_platform")
|
|
33
|
+
* @returns The anon key (JWT string)
|
|
34
|
+
* @throws AnonKeyError if the fetch fails
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```typescript
|
|
38
|
+
* import { fetchAnonKey } from "@kaiz11/stack-client";
|
|
39
|
+
*
|
|
40
|
+
* // Fetch anon key for a tenant
|
|
41
|
+
* const anonKey = await fetchAnonKey("https://stack.zenku.app", "acme");
|
|
42
|
+
*
|
|
43
|
+
* // Use it for unauthenticated requests
|
|
44
|
+
* const response = await fetch("https://stack.zenku.app/rest/acme/items", {
|
|
45
|
+
* headers: { Authorization: `Bearer ${anonKey}` },
|
|
46
|
+
* });
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
export declare function fetchAnonKey(baseUrl: string, tenantId?: string): Promise<string>;
|
|
50
|
+
/**
|
|
51
|
+
* Fetch the anon key with caching
|
|
52
|
+
*
|
|
53
|
+
* Same as `fetchAnonKey` but caches the result in memory to avoid
|
|
54
|
+
* repeated network requests. The cache respects the server's
|
|
55
|
+
* Cache-Control header (1 hour).
|
|
56
|
+
*
|
|
57
|
+
* @param baseUrl - Base URL of the stack
|
|
58
|
+
* @param tenantId - Tenant identifier (default: "_platform")
|
|
59
|
+
* @param options - Cache options
|
|
60
|
+
* @returns The anon key (JWT string)
|
|
61
|
+
*
|
|
62
|
+
* @example
|
|
63
|
+
* ```typescript
|
|
64
|
+
* // First call fetches from network
|
|
65
|
+
* const key1 = await fetchAnonKeyCached("https://stack.zenku.app", "acme");
|
|
66
|
+
*
|
|
67
|
+
* // Second call returns cached value
|
|
68
|
+
* const key2 = await fetchAnonKeyCached("https://stack.zenku.app", "acme");
|
|
69
|
+
*
|
|
70
|
+
* // Force refresh
|
|
71
|
+
* const key3 = await fetchAnonKeyCached("https://stack.zenku.app", "acme", {
|
|
72
|
+
* forceRefresh: true,
|
|
73
|
+
* });
|
|
74
|
+
* ```
|
|
75
|
+
*/
|
|
76
|
+
export declare function fetchAnonKeyCached(baseUrl: string, tenantId?: string, options?: {
|
|
77
|
+
forceRefresh?: boolean;
|
|
78
|
+
ttl?: number;
|
|
79
|
+
}): Promise<string>;
|
|
80
|
+
/**
|
|
81
|
+
* Clear the anon key cache
|
|
82
|
+
*
|
|
83
|
+
* @param baseUrl - If provided, only clear cache for this base URL
|
|
84
|
+
* @param tenantId - If provided with baseUrl, only clear cache for this tenant
|
|
85
|
+
*/
|
|
86
|
+
export declare function clearAnonKeyCache(baseUrl?: string, tenantId?: string): void;
|
|
87
|
+
//# sourceMappingURL=keys.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../src/lib/keys.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,qBAAa,YAAa,SAAQ,KAAK;aAGnB,UAAU,CAAC,EAAE,MAAM;gBADnC,OAAO,EAAE,MAAM,EACC,UAAU,CAAC,EAAE,MAAM,YAAA;CAKtC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,MAA2B,GACpC,MAAM,CAGR;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,MAA2B,GACpC,OAAO,CAAC,MAAM,CAAC,CAsBjB;AAYD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,MAA2B,EACrC,OAAO,CAAC,EAAE;IAAE,YAAY,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GACjD,OAAO,CAAC,MAAM,CAAC,CAuBjB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAY3E"}
|