@omnibase/core-js 0.1.1 → 0.1.3
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/dist/index.cjs +0 -200
- package/dist/index.d.cts +1 -195
- package/dist/index.d.ts +1 -195
- package/dist/index.js +0 -186
- package/dist/tenants/index.d.cts +3 -10
- package/dist/tenants/index.d.ts +3 -10
- package/package.json +5 -2
package/dist/index.cjs
CHANGED
|
@@ -3,10 +3,6 @@ var __defProp = Object.defineProperty;
|
|
|
3
3
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
4
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
5
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
6
|
var __copyProps = (to, from, except, desc) => {
|
|
11
7
|
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
8
|
for (let key of __getOwnPropNames(from))
|
|
@@ -19,200 +15,4 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
19
15
|
|
|
20
16
|
// src/index.ts
|
|
21
17
|
var index_exports = {};
|
|
22
|
-
__export(index_exports, {
|
|
23
|
-
acceptTenantInvite: () => acceptTenantInvite,
|
|
24
|
-
createClient: () => createClient,
|
|
25
|
-
createTenant: () => createTenant,
|
|
26
|
-
createTenantUserInvite: () => createTenantUserInvite,
|
|
27
|
-
deleteTenant: () => deleteTenant,
|
|
28
|
-
switchActiveTenant: () => switchActiveTenant
|
|
29
|
-
});
|
|
30
18
|
module.exports = __toCommonJS(index_exports);
|
|
31
|
-
|
|
32
|
-
// src/database/client.ts
|
|
33
|
-
var import_postgrest_js = require("@supabase/postgrest-js");
|
|
34
|
-
var createClient = (url, anonKey, getCookie) => {
|
|
35
|
-
const jwt = getCookie("postgrest_jwt") || anonKey;
|
|
36
|
-
return new import_postgrest_js.PostgrestClient(url, {
|
|
37
|
-
headers: {
|
|
38
|
-
Authorization: `Bearer ${jwt}`
|
|
39
|
-
}
|
|
40
|
-
});
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
// src/tenants/switch-tenant.ts
|
|
44
|
-
async function switchActiveTenant(tenantId) {
|
|
45
|
-
const baseUrl = process.env.OMNIBASE_API_URL;
|
|
46
|
-
if (!baseUrl) {
|
|
47
|
-
throw new Error("OMNIBASE_API_URL is not configured");
|
|
48
|
-
}
|
|
49
|
-
const requestBody = {
|
|
50
|
-
tenant_id: tenantId
|
|
51
|
-
};
|
|
52
|
-
try {
|
|
53
|
-
const response = await fetch(`${baseUrl}/api/v1/tenants/switch-active`, {
|
|
54
|
-
method: "PUT",
|
|
55
|
-
headers: {
|
|
56
|
-
"Content-Type": "application/json"
|
|
57
|
-
},
|
|
58
|
-
body: JSON.stringify(requestBody),
|
|
59
|
-
credentials: "include"
|
|
60
|
-
});
|
|
61
|
-
if (!response.ok) {
|
|
62
|
-
const errorData = await response.text();
|
|
63
|
-
throw new Error(
|
|
64
|
-
`Failed to switch tenant: ${response.status} - ${errorData}`
|
|
65
|
-
);
|
|
66
|
-
}
|
|
67
|
-
const data = await response.json();
|
|
68
|
-
return data;
|
|
69
|
-
} catch (error) {
|
|
70
|
-
console.error("Error switching active tenant:", error);
|
|
71
|
-
throw error;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
// src/tenants/create-invite.ts
|
|
76
|
-
async function createTenantUserInvite(tenantId, inviteData) {
|
|
77
|
-
const baseUrl = process.env.OMNIBASE_API_URL;
|
|
78
|
-
if (!baseUrl) {
|
|
79
|
-
throw new Error("OMNIBASE_API_URL is not configured");
|
|
80
|
-
}
|
|
81
|
-
if (!tenantId) {
|
|
82
|
-
throw new Error("Tenant ID is required");
|
|
83
|
-
}
|
|
84
|
-
if (!inviteData.email || !inviteData.role) {
|
|
85
|
-
throw new Error("Email and role are required");
|
|
86
|
-
}
|
|
87
|
-
try {
|
|
88
|
-
const response = await fetch(
|
|
89
|
-
`${baseUrl}/api/v1/tenants/${tenantId}/invites`,
|
|
90
|
-
{
|
|
91
|
-
method: "POST",
|
|
92
|
-
headers: {
|
|
93
|
-
"Content-Type": "application/json"
|
|
94
|
-
},
|
|
95
|
-
body: JSON.stringify(inviteData),
|
|
96
|
-
credentials: "include"
|
|
97
|
-
}
|
|
98
|
-
);
|
|
99
|
-
if (!response.ok) {
|
|
100
|
-
const errorData = await response.text();
|
|
101
|
-
throw new Error(
|
|
102
|
-
`Failed to create invite: ${response.status} - ${errorData}`
|
|
103
|
-
);
|
|
104
|
-
}
|
|
105
|
-
const data = await response.json();
|
|
106
|
-
return data;
|
|
107
|
-
} catch (error) {
|
|
108
|
-
console.error("Error creating tenant user invite:", error);
|
|
109
|
-
throw error;
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
// src/tenants/create-tenant.ts
|
|
114
|
-
async function createTenant(tenantData) {
|
|
115
|
-
const baseUrl = process.env.OMNIBASE_API_URL;
|
|
116
|
-
if (!baseUrl) {
|
|
117
|
-
throw new Error("OMNIBASE_API_URL is not configured");
|
|
118
|
-
}
|
|
119
|
-
if (!tenantData.name || !tenantData.user_id) {
|
|
120
|
-
throw new Error("Name and user_id are required");
|
|
121
|
-
}
|
|
122
|
-
try {
|
|
123
|
-
const response = await fetch(`${baseUrl}/api/v1/tenants`, {
|
|
124
|
-
method: "POST",
|
|
125
|
-
headers: {
|
|
126
|
-
"Content-Type": "application/json"
|
|
127
|
-
},
|
|
128
|
-
body: JSON.stringify(tenantData),
|
|
129
|
-
credentials: "include"
|
|
130
|
-
});
|
|
131
|
-
if (!response.ok) {
|
|
132
|
-
const errorData = await response.text();
|
|
133
|
-
throw new Error(
|
|
134
|
-
`Failed to create tenant: ${response.status} - ${errorData}`
|
|
135
|
-
);
|
|
136
|
-
}
|
|
137
|
-
const data = await response.json();
|
|
138
|
-
return data;
|
|
139
|
-
} catch (error) {
|
|
140
|
-
console.error("Error creating tenant:", error);
|
|
141
|
-
throw error;
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
// src/tenants/accept-invite.ts
|
|
146
|
-
async function acceptTenantInvite(token) {
|
|
147
|
-
const baseUrl = process.env.OMNIBASE_API_URL;
|
|
148
|
-
if (!baseUrl) {
|
|
149
|
-
throw new Error("OMNIBASE_API_URL is not configured");
|
|
150
|
-
}
|
|
151
|
-
if (!token) {
|
|
152
|
-
throw new Error("Invite token is required");
|
|
153
|
-
}
|
|
154
|
-
const requestBody = {
|
|
155
|
-
token
|
|
156
|
-
};
|
|
157
|
-
try {
|
|
158
|
-
const response = await fetch(`${baseUrl}/api/v1/tenants/invites/accept`, {
|
|
159
|
-
method: "PUT",
|
|
160
|
-
headers: {
|
|
161
|
-
"Content-Type": "application/json"
|
|
162
|
-
},
|
|
163
|
-
body: JSON.stringify(requestBody),
|
|
164
|
-
credentials: "include"
|
|
165
|
-
});
|
|
166
|
-
if (!response.ok) {
|
|
167
|
-
const errorData = await response.text();
|
|
168
|
-
throw new Error(
|
|
169
|
-
`Failed to accept invite: ${response.status} - ${errorData}`
|
|
170
|
-
);
|
|
171
|
-
}
|
|
172
|
-
const data = await response.json();
|
|
173
|
-
return data;
|
|
174
|
-
} catch (error) {
|
|
175
|
-
console.error("Error accepting tenant invite:", error);
|
|
176
|
-
throw error;
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
// src/tenants/delete-tenant.ts
|
|
181
|
-
async function deleteTenant(tenantId) {
|
|
182
|
-
const baseUrl = process.env.OMNIBASE_API_URL;
|
|
183
|
-
if (!baseUrl) {
|
|
184
|
-
throw new Error("OMNIBASE_API_URL is not configured");
|
|
185
|
-
}
|
|
186
|
-
if (!tenantId) {
|
|
187
|
-
throw new Error("Tenant ID is required");
|
|
188
|
-
}
|
|
189
|
-
try {
|
|
190
|
-
const response = await fetch(`${baseUrl}/api/v1/tenants/${tenantId}`, {
|
|
191
|
-
method: "DELETE",
|
|
192
|
-
headers: {
|
|
193
|
-
"Content-Type": "application/json"
|
|
194
|
-
},
|
|
195
|
-
credentials: "include"
|
|
196
|
-
});
|
|
197
|
-
if (!response.ok) {
|
|
198
|
-
const errorData = await response.text();
|
|
199
|
-
throw new Error(
|
|
200
|
-
`Failed to delete tenant: ${response.status} - ${errorData}`
|
|
201
|
-
);
|
|
202
|
-
}
|
|
203
|
-
const data = await response.json();
|
|
204
|
-
return data;
|
|
205
|
-
} catch (error) {
|
|
206
|
-
console.error("Error deleting tenant:", error);
|
|
207
|
-
throw error;
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
211
|
-
0 && (module.exports = {
|
|
212
|
-
acceptTenantInvite,
|
|
213
|
-
createClient,
|
|
214
|
-
createTenant,
|
|
215
|
-
createTenantUserInvite,
|
|
216
|
-
deleteTenant,
|
|
217
|
-
switchActiveTenant
|
|
218
|
-
});
|
package/dist/index.d.cts
CHANGED
|
@@ -1,159 +1,3 @@
|
|
|
1
|
-
import * as _supabase_postgrest_js from '@supabase/postgrest-js';
|
|
2
|
-
import { PostgrestClient } from '@supabase/postgrest-js';
|
|
3
|
-
import { LoginFlow as LoginFlow$1, RecoveryFlow as RecoveryFlow$1, VerificationFlow as VerificationFlow$1, RegistrationFlow as RegistrationFlow$1, SettingsFlow as SettingsFlow$1 } from '@ory/client-fetch';
|
|
4
|
-
|
|
5
|
-
declare type GenericRelationship = {
|
|
6
|
-
foreignKeyName: string;
|
|
7
|
-
columns: string[];
|
|
8
|
-
isOneToOne?: boolean;
|
|
9
|
-
referencedRelation: string;
|
|
10
|
-
referencedColumns: string[];
|
|
11
|
-
};
|
|
12
|
-
declare type GenericTable = {
|
|
13
|
-
Row: Record<string, unknown>;
|
|
14
|
-
Insert: Record<string, unknown>;
|
|
15
|
-
Update: Record<string, unknown>;
|
|
16
|
-
Relationships: GenericRelationship[];
|
|
17
|
-
};
|
|
18
|
-
declare type GenericUpdatableView = {
|
|
19
|
-
Row: Record<string, unknown>;
|
|
20
|
-
Insert: Record<string, unknown>;
|
|
21
|
-
Update: Record<string, unknown>;
|
|
22
|
-
Relationships: GenericRelationship[];
|
|
23
|
-
};
|
|
24
|
-
declare type GenericNonUpdatableView = {
|
|
25
|
-
Row: Record<string, unknown>;
|
|
26
|
-
Relationships: GenericRelationship[];
|
|
27
|
-
};
|
|
28
|
-
declare type GenericView = GenericUpdatableView | GenericNonUpdatableView;
|
|
29
|
-
declare type GenericFunction = {
|
|
30
|
-
Args: Record<string, unknown>;
|
|
31
|
-
Returns: unknown;
|
|
32
|
-
};
|
|
33
|
-
declare type GenericSchema = {
|
|
34
|
-
Tables: Record<string, GenericTable>;
|
|
35
|
-
Views: Record<string, GenericView>;
|
|
36
|
-
Functions: Record<string, GenericFunction>;
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* PostgREST client.
|
|
41
|
-
*
|
|
42
|
-
* @typeParam
|
|
43
|
-
* Database - Types for the schema from the type generator
|
|
44
|
-
*
|
|
45
|
-
* @typeParam
|
|
46
|
-
* SchemaName - Postgres schema to switch to. Must be a string literal, the same one passed to the constructor. If the schema is not "public", this must be supplied manually.
|
|
47
|
-
*
|
|
48
|
-
* @param url - Your Postgres RESTapi url
|
|
49
|
-
* @param anonKey - Your Postgres RESTapi anon JWT key
|
|
50
|
-
* @param getCookie - Custom callback to get cookie by name
|
|
51
|
-
* @returns
|
|
52
|
-
*/
|
|
53
|
-
declare const createClient: <T = any>(url: string, anonKey: string, getCookie: (cookie: string) => string) => PostgrestClient<T, T extends {
|
|
54
|
-
__InternalSupabase: infer I extends _supabase_postgrest_js.PostgrestClientOptions;
|
|
55
|
-
} ? I : {}, "public" extends Exclude<keyof T, "__InternalSupabase"> ? Exclude<keyof T, "__InternalSupabase"> & "public" : string & Exclude<keyof T, "__InternalSupabase">, Omit<T, "__InternalSupabase">["public" extends Exclude<keyof T, "__InternalSupabase"> ? Exclude<keyof T, "__InternalSupabase"> & "public" : string & Exclude<keyof T, "__InternalSupabase">] extends GenericSchema ? Omit<T, "__InternalSupabase">["public" extends Exclude<keyof T, "__InternalSupabase"> ? Exclude<keyof T, "__InternalSupabase"> & "public" : string & Exclude<keyof T, "__InternalSupabase">] : any>;
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* Return type of the `acceptTenantInvite` function
|
|
59
|
-
*/
|
|
60
|
-
type AcceptTenantInviteResponse = ApiResponse<{
|
|
61
|
-
tenant_id: string;
|
|
62
|
-
message: string;
|
|
63
|
-
}>;
|
|
64
|
-
/**
|
|
65
|
-
* Accept a tenant invite using token
|
|
66
|
-
* Calls PUT /api/v1/tenants/invites/accept
|
|
67
|
-
*/
|
|
68
|
-
declare function acceptTenantInvite(token: string): Promise<ApiResponse<{
|
|
69
|
-
tenant_id: string;
|
|
70
|
-
message: string;
|
|
71
|
-
}>>;
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* Return type of the `createTenantUserInvite` function
|
|
75
|
-
*/
|
|
76
|
-
type CreateTenantUserInviteResponse = ApiResponse<{
|
|
77
|
-
invite: TenantInvite;
|
|
78
|
-
message: string;
|
|
79
|
-
}>;
|
|
80
|
-
/**
|
|
81
|
-
* The TenantInvite Schema that maps directly to `auth.tenant_invites`
|
|
82
|
-
*/
|
|
83
|
-
interface TenantInvite {
|
|
84
|
-
id: string;
|
|
85
|
-
tenant_id: string;
|
|
86
|
-
email: string;
|
|
87
|
-
role: string;
|
|
88
|
-
token: string;
|
|
89
|
-
inviter_id: string;
|
|
90
|
-
expires_at: string;
|
|
91
|
-
created_at: string;
|
|
92
|
-
used_at?: string;
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Invite Data describing who the invite is going to `email` and their
|
|
96
|
-
* role `role`
|
|
97
|
-
*/
|
|
98
|
-
type CreateTenantUserInviteRequest = {
|
|
99
|
-
email: string;
|
|
100
|
-
role: string;
|
|
101
|
-
};
|
|
102
|
-
/**
|
|
103
|
-
* Create a tenant user invite
|
|
104
|
-
* Calls POST /api/v1/tenants/{id}/invites
|
|
105
|
-
*/
|
|
106
|
-
declare function createTenantUserInvite(tenantId: string, inviteData: CreateTenantUserInviteRequest): Promise<CreateTenantUserInviteResponse>;
|
|
107
|
-
|
|
108
|
-
/**
|
|
109
|
-
* Return type of the `createTenant` function
|
|
110
|
-
*
|
|
111
|
-
* The `token` is the authenticated users `postgrest_jwt` cookie for RLS policies specific to the active tenant
|
|
112
|
-
*/
|
|
113
|
-
type CreateTenantResponse = ApiResponse<{
|
|
114
|
-
tenant: Tenant;
|
|
115
|
-
message: string;
|
|
116
|
-
token: string;
|
|
117
|
-
}>;
|
|
118
|
-
/**
|
|
119
|
-
* The Tenant Schema that maps directly to `auth.tenants`
|
|
120
|
-
*/
|
|
121
|
-
type Tenant = {
|
|
122
|
-
id: string;
|
|
123
|
-
name: string;
|
|
124
|
-
stripe_customer_id: string;
|
|
125
|
-
type: string;
|
|
126
|
-
created_at: string;
|
|
127
|
-
updated_at: string;
|
|
128
|
-
};
|
|
129
|
-
/**
|
|
130
|
-
* The data required to create a tenant.
|
|
131
|
-
*/
|
|
132
|
-
type CreateTenantRequest = {
|
|
133
|
-
name: string;
|
|
134
|
-
billing_email: string;
|
|
135
|
-
user_id: string;
|
|
136
|
-
};
|
|
137
|
-
/**
|
|
138
|
-
* Create a new tenant
|
|
139
|
-
*
|
|
140
|
-
* Calls POST /api/v1/tenants
|
|
141
|
-
*/
|
|
142
|
-
declare function createTenant(tenantData: CreateTenantRequest): Promise<CreateTenantResponse>;
|
|
143
|
-
|
|
144
|
-
/**
|
|
145
|
-
* Return type of the `deleteTenant` function
|
|
146
|
-
*/
|
|
147
|
-
type DeleteTenantResponse = ApiResponse<{
|
|
148
|
-
message: string;
|
|
149
|
-
}>;
|
|
150
|
-
/**
|
|
151
|
-
* Delete a tenant (only owners can delete)
|
|
152
|
-
*
|
|
153
|
-
* Calls DELETE /api/v1/tenants/{id}
|
|
154
|
-
*/
|
|
155
|
-
declare function deleteTenant(tenantId: string): Promise<DeleteTenantResponse>;
|
|
156
|
-
|
|
157
1
|
/**
|
|
158
2
|
* Base API Response structure for API
|
|
159
3
|
*/
|
|
@@ -163,42 +7,4 @@ type ApiResponse<T> = {
|
|
|
163
7
|
error?: string;
|
|
164
8
|
};
|
|
165
9
|
|
|
166
|
-
|
|
167
|
-
* Return type of the `switchActiveTenant` function
|
|
168
|
-
*/
|
|
169
|
-
type SwitchActiveTenantResponse = ApiResponse<{
|
|
170
|
-
token: string;
|
|
171
|
-
message: string;
|
|
172
|
-
}>;
|
|
173
|
-
/**
|
|
174
|
-
* Switch the user's active tenant
|
|
175
|
-
*
|
|
176
|
-
* Calls PUT /api/v1/tenants/switch-active
|
|
177
|
-
*/
|
|
178
|
-
declare function switchActiveTenant(tenantId: string): Promise<SwitchActiveTenantResponse>;
|
|
179
|
-
|
|
180
|
-
type FlowType = LoginFlow | RecoveryFlow | VerificationFlow | RegistrationFlow | SettingsFlow;
|
|
181
|
-
/**
|
|
182
|
-
* This object represents a login flow. A login flow is initiated at the "Initiate Login API / Browser Flow" endpoint by a client.
|
|
183
|
-
*
|
|
184
|
-
* Once a login flow is completed successfully, a session cookie or session token will be issued.
|
|
185
|
-
*/
|
|
186
|
-
type LoginFlow = LoginFlow$1;
|
|
187
|
-
/**
|
|
188
|
-
* This flow is used when an identity wants to recover their account.
|
|
189
|
-
*/
|
|
190
|
-
type RecoveryFlow = RecoveryFlow$1;
|
|
191
|
-
/**
|
|
192
|
-
* Used to verify an out-of-band communication channel such as an email address or a phone number.
|
|
193
|
-
*/
|
|
194
|
-
type VerificationFlow = VerificationFlow$1;
|
|
195
|
-
/**
|
|
196
|
-
* Used when a user is registering an account
|
|
197
|
-
*/
|
|
198
|
-
type RegistrationFlow = RegistrationFlow$1;
|
|
199
|
-
/**
|
|
200
|
-
* This flow is used when an identity wants to update settings (e.g. profile data, passwords, ...) in a selfservice manner.
|
|
201
|
-
*/
|
|
202
|
-
type SettingsFlow = SettingsFlow$1;
|
|
203
|
-
|
|
204
|
-
export { type AcceptTenantInviteResponse, type CreateTenantRequest, type CreateTenantResponse, type CreateTenantUserInviteRequest, type CreateTenantUserInviteResponse, type DeleteTenantResponse, type FlowType, type LoginFlow, type RecoveryFlow, type RegistrationFlow, type SettingsFlow, type SwitchActiveTenantResponse, type Tenant, type TenantInvite, type VerificationFlow, acceptTenantInvite, createClient, createTenant, createTenantUserInvite, deleteTenant, switchActiveTenant };
|
|
10
|
+
export type { ApiResponse };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,159 +1,3 @@
|
|
|
1
|
-
import * as _supabase_postgrest_js from '@supabase/postgrest-js';
|
|
2
|
-
import { PostgrestClient } from '@supabase/postgrest-js';
|
|
3
|
-
import { LoginFlow as LoginFlow$1, RecoveryFlow as RecoveryFlow$1, VerificationFlow as VerificationFlow$1, RegistrationFlow as RegistrationFlow$1, SettingsFlow as SettingsFlow$1 } from '@ory/client-fetch';
|
|
4
|
-
|
|
5
|
-
declare type GenericRelationship = {
|
|
6
|
-
foreignKeyName: string;
|
|
7
|
-
columns: string[];
|
|
8
|
-
isOneToOne?: boolean;
|
|
9
|
-
referencedRelation: string;
|
|
10
|
-
referencedColumns: string[];
|
|
11
|
-
};
|
|
12
|
-
declare type GenericTable = {
|
|
13
|
-
Row: Record<string, unknown>;
|
|
14
|
-
Insert: Record<string, unknown>;
|
|
15
|
-
Update: Record<string, unknown>;
|
|
16
|
-
Relationships: GenericRelationship[];
|
|
17
|
-
};
|
|
18
|
-
declare type GenericUpdatableView = {
|
|
19
|
-
Row: Record<string, unknown>;
|
|
20
|
-
Insert: Record<string, unknown>;
|
|
21
|
-
Update: Record<string, unknown>;
|
|
22
|
-
Relationships: GenericRelationship[];
|
|
23
|
-
};
|
|
24
|
-
declare type GenericNonUpdatableView = {
|
|
25
|
-
Row: Record<string, unknown>;
|
|
26
|
-
Relationships: GenericRelationship[];
|
|
27
|
-
};
|
|
28
|
-
declare type GenericView = GenericUpdatableView | GenericNonUpdatableView;
|
|
29
|
-
declare type GenericFunction = {
|
|
30
|
-
Args: Record<string, unknown>;
|
|
31
|
-
Returns: unknown;
|
|
32
|
-
};
|
|
33
|
-
declare type GenericSchema = {
|
|
34
|
-
Tables: Record<string, GenericTable>;
|
|
35
|
-
Views: Record<string, GenericView>;
|
|
36
|
-
Functions: Record<string, GenericFunction>;
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* PostgREST client.
|
|
41
|
-
*
|
|
42
|
-
* @typeParam
|
|
43
|
-
* Database - Types for the schema from the type generator
|
|
44
|
-
*
|
|
45
|
-
* @typeParam
|
|
46
|
-
* SchemaName - Postgres schema to switch to. Must be a string literal, the same one passed to the constructor. If the schema is not "public", this must be supplied manually.
|
|
47
|
-
*
|
|
48
|
-
* @param url - Your Postgres RESTapi url
|
|
49
|
-
* @param anonKey - Your Postgres RESTapi anon JWT key
|
|
50
|
-
* @param getCookie - Custom callback to get cookie by name
|
|
51
|
-
* @returns
|
|
52
|
-
*/
|
|
53
|
-
declare const createClient: <T = any>(url: string, anonKey: string, getCookie: (cookie: string) => string) => PostgrestClient<T, T extends {
|
|
54
|
-
__InternalSupabase: infer I extends _supabase_postgrest_js.PostgrestClientOptions;
|
|
55
|
-
} ? I : {}, "public" extends Exclude<keyof T, "__InternalSupabase"> ? Exclude<keyof T, "__InternalSupabase"> & "public" : string & Exclude<keyof T, "__InternalSupabase">, Omit<T, "__InternalSupabase">["public" extends Exclude<keyof T, "__InternalSupabase"> ? Exclude<keyof T, "__InternalSupabase"> & "public" : string & Exclude<keyof T, "__InternalSupabase">] extends GenericSchema ? Omit<T, "__InternalSupabase">["public" extends Exclude<keyof T, "__InternalSupabase"> ? Exclude<keyof T, "__InternalSupabase"> & "public" : string & Exclude<keyof T, "__InternalSupabase">] : any>;
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* Return type of the `acceptTenantInvite` function
|
|
59
|
-
*/
|
|
60
|
-
type AcceptTenantInviteResponse = ApiResponse<{
|
|
61
|
-
tenant_id: string;
|
|
62
|
-
message: string;
|
|
63
|
-
}>;
|
|
64
|
-
/**
|
|
65
|
-
* Accept a tenant invite using token
|
|
66
|
-
* Calls PUT /api/v1/tenants/invites/accept
|
|
67
|
-
*/
|
|
68
|
-
declare function acceptTenantInvite(token: string): Promise<ApiResponse<{
|
|
69
|
-
tenant_id: string;
|
|
70
|
-
message: string;
|
|
71
|
-
}>>;
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* Return type of the `createTenantUserInvite` function
|
|
75
|
-
*/
|
|
76
|
-
type CreateTenantUserInviteResponse = ApiResponse<{
|
|
77
|
-
invite: TenantInvite;
|
|
78
|
-
message: string;
|
|
79
|
-
}>;
|
|
80
|
-
/**
|
|
81
|
-
* The TenantInvite Schema that maps directly to `auth.tenant_invites`
|
|
82
|
-
*/
|
|
83
|
-
interface TenantInvite {
|
|
84
|
-
id: string;
|
|
85
|
-
tenant_id: string;
|
|
86
|
-
email: string;
|
|
87
|
-
role: string;
|
|
88
|
-
token: string;
|
|
89
|
-
inviter_id: string;
|
|
90
|
-
expires_at: string;
|
|
91
|
-
created_at: string;
|
|
92
|
-
used_at?: string;
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Invite Data describing who the invite is going to `email` and their
|
|
96
|
-
* role `role`
|
|
97
|
-
*/
|
|
98
|
-
type CreateTenantUserInviteRequest = {
|
|
99
|
-
email: string;
|
|
100
|
-
role: string;
|
|
101
|
-
};
|
|
102
|
-
/**
|
|
103
|
-
* Create a tenant user invite
|
|
104
|
-
* Calls POST /api/v1/tenants/{id}/invites
|
|
105
|
-
*/
|
|
106
|
-
declare function createTenantUserInvite(tenantId: string, inviteData: CreateTenantUserInviteRequest): Promise<CreateTenantUserInviteResponse>;
|
|
107
|
-
|
|
108
|
-
/**
|
|
109
|
-
* Return type of the `createTenant` function
|
|
110
|
-
*
|
|
111
|
-
* The `token` is the authenticated users `postgrest_jwt` cookie for RLS policies specific to the active tenant
|
|
112
|
-
*/
|
|
113
|
-
type CreateTenantResponse = ApiResponse<{
|
|
114
|
-
tenant: Tenant;
|
|
115
|
-
message: string;
|
|
116
|
-
token: string;
|
|
117
|
-
}>;
|
|
118
|
-
/**
|
|
119
|
-
* The Tenant Schema that maps directly to `auth.tenants`
|
|
120
|
-
*/
|
|
121
|
-
type Tenant = {
|
|
122
|
-
id: string;
|
|
123
|
-
name: string;
|
|
124
|
-
stripe_customer_id: string;
|
|
125
|
-
type: string;
|
|
126
|
-
created_at: string;
|
|
127
|
-
updated_at: string;
|
|
128
|
-
};
|
|
129
|
-
/**
|
|
130
|
-
* The data required to create a tenant.
|
|
131
|
-
*/
|
|
132
|
-
type CreateTenantRequest = {
|
|
133
|
-
name: string;
|
|
134
|
-
billing_email: string;
|
|
135
|
-
user_id: string;
|
|
136
|
-
};
|
|
137
|
-
/**
|
|
138
|
-
* Create a new tenant
|
|
139
|
-
*
|
|
140
|
-
* Calls POST /api/v1/tenants
|
|
141
|
-
*/
|
|
142
|
-
declare function createTenant(tenantData: CreateTenantRequest): Promise<CreateTenantResponse>;
|
|
143
|
-
|
|
144
|
-
/**
|
|
145
|
-
* Return type of the `deleteTenant` function
|
|
146
|
-
*/
|
|
147
|
-
type DeleteTenantResponse = ApiResponse<{
|
|
148
|
-
message: string;
|
|
149
|
-
}>;
|
|
150
|
-
/**
|
|
151
|
-
* Delete a tenant (only owners can delete)
|
|
152
|
-
*
|
|
153
|
-
* Calls DELETE /api/v1/tenants/{id}
|
|
154
|
-
*/
|
|
155
|
-
declare function deleteTenant(tenantId: string): Promise<DeleteTenantResponse>;
|
|
156
|
-
|
|
157
1
|
/**
|
|
158
2
|
* Base API Response structure for API
|
|
159
3
|
*/
|
|
@@ -163,42 +7,4 @@ type ApiResponse<T> = {
|
|
|
163
7
|
error?: string;
|
|
164
8
|
};
|
|
165
9
|
|
|
166
|
-
|
|
167
|
-
* Return type of the `switchActiveTenant` function
|
|
168
|
-
*/
|
|
169
|
-
type SwitchActiveTenantResponse = ApiResponse<{
|
|
170
|
-
token: string;
|
|
171
|
-
message: string;
|
|
172
|
-
}>;
|
|
173
|
-
/**
|
|
174
|
-
* Switch the user's active tenant
|
|
175
|
-
*
|
|
176
|
-
* Calls PUT /api/v1/tenants/switch-active
|
|
177
|
-
*/
|
|
178
|
-
declare function switchActiveTenant(tenantId: string): Promise<SwitchActiveTenantResponse>;
|
|
179
|
-
|
|
180
|
-
type FlowType = LoginFlow | RecoveryFlow | VerificationFlow | RegistrationFlow | SettingsFlow;
|
|
181
|
-
/**
|
|
182
|
-
* This object represents a login flow. A login flow is initiated at the "Initiate Login API / Browser Flow" endpoint by a client.
|
|
183
|
-
*
|
|
184
|
-
* Once a login flow is completed successfully, a session cookie or session token will be issued.
|
|
185
|
-
*/
|
|
186
|
-
type LoginFlow = LoginFlow$1;
|
|
187
|
-
/**
|
|
188
|
-
* This flow is used when an identity wants to recover their account.
|
|
189
|
-
*/
|
|
190
|
-
type RecoveryFlow = RecoveryFlow$1;
|
|
191
|
-
/**
|
|
192
|
-
* Used to verify an out-of-band communication channel such as an email address or a phone number.
|
|
193
|
-
*/
|
|
194
|
-
type VerificationFlow = VerificationFlow$1;
|
|
195
|
-
/**
|
|
196
|
-
* Used when a user is registering an account
|
|
197
|
-
*/
|
|
198
|
-
type RegistrationFlow = RegistrationFlow$1;
|
|
199
|
-
/**
|
|
200
|
-
* This flow is used when an identity wants to update settings (e.g. profile data, passwords, ...) in a selfservice manner.
|
|
201
|
-
*/
|
|
202
|
-
type SettingsFlow = SettingsFlow$1;
|
|
203
|
-
|
|
204
|
-
export { type AcceptTenantInviteResponse, type CreateTenantRequest, type CreateTenantResponse, type CreateTenantUserInviteRequest, type CreateTenantUserInviteResponse, type DeleteTenantResponse, type FlowType, type LoginFlow, type RecoveryFlow, type RegistrationFlow, type SettingsFlow, type SwitchActiveTenantResponse, type Tenant, type TenantInvite, type VerificationFlow, acceptTenantInvite, createClient, createTenant, createTenantUserInvite, deleteTenant, switchActiveTenant };
|
|
10
|
+
export type { ApiResponse };
|
package/dist/index.js
CHANGED
|
@@ -1,186 +0,0 @@
|
|
|
1
|
-
// src/database/client.ts
|
|
2
|
-
import { PostgrestClient } from "@supabase/postgrest-js";
|
|
3
|
-
var createClient = (url, anonKey, getCookie) => {
|
|
4
|
-
const jwt = getCookie("postgrest_jwt") || anonKey;
|
|
5
|
-
return new PostgrestClient(url, {
|
|
6
|
-
headers: {
|
|
7
|
-
Authorization: `Bearer ${jwt}`
|
|
8
|
-
}
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
// src/tenants/switch-tenant.ts
|
|
13
|
-
async function switchActiveTenant(tenantId) {
|
|
14
|
-
const baseUrl = process.env.OMNIBASE_API_URL;
|
|
15
|
-
if (!baseUrl) {
|
|
16
|
-
throw new Error("OMNIBASE_API_URL is not configured");
|
|
17
|
-
}
|
|
18
|
-
const requestBody = {
|
|
19
|
-
tenant_id: tenantId
|
|
20
|
-
};
|
|
21
|
-
try {
|
|
22
|
-
const response = await fetch(`${baseUrl}/api/v1/tenants/switch-active`, {
|
|
23
|
-
method: "PUT",
|
|
24
|
-
headers: {
|
|
25
|
-
"Content-Type": "application/json"
|
|
26
|
-
},
|
|
27
|
-
body: JSON.stringify(requestBody),
|
|
28
|
-
credentials: "include"
|
|
29
|
-
});
|
|
30
|
-
if (!response.ok) {
|
|
31
|
-
const errorData = await response.text();
|
|
32
|
-
throw new Error(
|
|
33
|
-
`Failed to switch tenant: ${response.status} - ${errorData}`
|
|
34
|
-
);
|
|
35
|
-
}
|
|
36
|
-
const data = await response.json();
|
|
37
|
-
return data;
|
|
38
|
-
} catch (error) {
|
|
39
|
-
console.error("Error switching active tenant:", error);
|
|
40
|
-
throw error;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
// src/tenants/create-invite.ts
|
|
45
|
-
async function createTenantUserInvite(tenantId, inviteData) {
|
|
46
|
-
const baseUrl = process.env.OMNIBASE_API_URL;
|
|
47
|
-
if (!baseUrl) {
|
|
48
|
-
throw new Error("OMNIBASE_API_URL is not configured");
|
|
49
|
-
}
|
|
50
|
-
if (!tenantId) {
|
|
51
|
-
throw new Error("Tenant ID is required");
|
|
52
|
-
}
|
|
53
|
-
if (!inviteData.email || !inviteData.role) {
|
|
54
|
-
throw new Error("Email and role are required");
|
|
55
|
-
}
|
|
56
|
-
try {
|
|
57
|
-
const response = await fetch(
|
|
58
|
-
`${baseUrl}/api/v1/tenants/${tenantId}/invites`,
|
|
59
|
-
{
|
|
60
|
-
method: "POST",
|
|
61
|
-
headers: {
|
|
62
|
-
"Content-Type": "application/json"
|
|
63
|
-
},
|
|
64
|
-
body: JSON.stringify(inviteData),
|
|
65
|
-
credentials: "include"
|
|
66
|
-
}
|
|
67
|
-
);
|
|
68
|
-
if (!response.ok) {
|
|
69
|
-
const errorData = await response.text();
|
|
70
|
-
throw new Error(
|
|
71
|
-
`Failed to create invite: ${response.status} - ${errorData}`
|
|
72
|
-
);
|
|
73
|
-
}
|
|
74
|
-
const data = await response.json();
|
|
75
|
-
return data;
|
|
76
|
-
} catch (error) {
|
|
77
|
-
console.error("Error creating tenant user invite:", error);
|
|
78
|
-
throw error;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
// src/tenants/create-tenant.ts
|
|
83
|
-
async function createTenant(tenantData) {
|
|
84
|
-
const baseUrl = process.env.OMNIBASE_API_URL;
|
|
85
|
-
if (!baseUrl) {
|
|
86
|
-
throw new Error("OMNIBASE_API_URL is not configured");
|
|
87
|
-
}
|
|
88
|
-
if (!tenantData.name || !tenantData.user_id) {
|
|
89
|
-
throw new Error("Name and user_id are required");
|
|
90
|
-
}
|
|
91
|
-
try {
|
|
92
|
-
const response = await fetch(`${baseUrl}/api/v1/tenants`, {
|
|
93
|
-
method: "POST",
|
|
94
|
-
headers: {
|
|
95
|
-
"Content-Type": "application/json"
|
|
96
|
-
},
|
|
97
|
-
body: JSON.stringify(tenantData),
|
|
98
|
-
credentials: "include"
|
|
99
|
-
});
|
|
100
|
-
if (!response.ok) {
|
|
101
|
-
const errorData = await response.text();
|
|
102
|
-
throw new Error(
|
|
103
|
-
`Failed to create tenant: ${response.status} - ${errorData}`
|
|
104
|
-
);
|
|
105
|
-
}
|
|
106
|
-
const data = await response.json();
|
|
107
|
-
return data;
|
|
108
|
-
} catch (error) {
|
|
109
|
-
console.error("Error creating tenant:", error);
|
|
110
|
-
throw error;
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
// src/tenants/accept-invite.ts
|
|
115
|
-
async function acceptTenantInvite(token) {
|
|
116
|
-
const baseUrl = process.env.OMNIBASE_API_URL;
|
|
117
|
-
if (!baseUrl) {
|
|
118
|
-
throw new Error("OMNIBASE_API_URL is not configured");
|
|
119
|
-
}
|
|
120
|
-
if (!token) {
|
|
121
|
-
throw new Error("Invite token is required");
|
|
122
|
-
}
|
|
123
|
-
const requestBody = {
|
|
124
|
-
token
|
|
125
|
-
};
|
|
126
|
-
try {
|
|
127
|
-
const response = await fetch(`${baseUrl}/api/v1/tenants/invites/accept`, {
|
|
128
|
-
method: "PUT",
|
|
129
|
-
headers: {
|
|
130
|
-
"Content-Type": "application/json"
|
|
131
|
-
},
|
|
132
|
-
body: JSON.stringify(requestBody),
|
|
133
|
-
credentials: "include"
|
|
134
|
-
});
|
|
135
|
-
if (!response.ok) {
|
|
136
|
-
const errorData = await response.text();
|
|
137
|
-
throw new Error(
|
|
138
|
-
`Failed to accept invite: ${response.status} - ${errorData}`
|
|
139
|
-
);
|
|
140
|
-
}
|
|
141
|
-
const data = await response.json();
|
|
142
|
-
return data;
|
|
143
|
-
} catch (error) {
|
|
144
|
-
console.error("Error accepting tenant invite:", error);
|
|
145
|
-
throw error;
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
// src/tenants/delete-tenant.ts
|
|
150
|
-
async function deleteTenant(tenantId) {
|
|
151
|
-
const baseUrl = process.env.OMNIBASE_API_URL;
|
|
152
|
-
if (!baseUrl) {
|
|
153
|
-
throw new Error("OMNIBASE_API_URL is not configured");
|
|
154
|
-
}
|
|
155
|
-
if (!tenantId) {
|
|
156
|
-
throw new Error("Tenant ID is required");
|
|
157
|
-
}
|
|
158
|
-
try {
|
|
159
|
-
const response = await fetch(`${baseUrl}/api/v1/tenants/${tenantId}`, {
|
|
160
|
-
method: "DELETE",
|
|
161
|
-
headers: {
|
|
162
|
-
"Content-Type": "application/json"
|
|
163
|
-
},
|
|
164
|
-
credentials: "include"
|
|
165
|
-
});
|
|
166
|
-
if (!response.ok) {
|
|
167
|
-
const errorData = await response.text();
|
|
168
|
-
throw new Error(
|
|
169
|
-
`Failed to delete tenant: ${response.status} - ${errorData}`
|
|
170
|
-
);
|
|
171
|
-
}
|
|
172
|
-
const data = await response.json();
|
|
173
|
-
return data;
|
|
174
|
-
} catch (error) {
|
|
175
|
-
console.error("Error deleting tenant:", error);
|
|
176
|
-
throw error;
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
export {
|
|
180
|
-
acceptTenantInvite,
|
|
181
|
-
createClient,
|
|
182
|
-
createTenant,
|
|
183
|
-
createTenantUserInvite,
|
|
184
|
-
deleteTenant,
|
|
185
|
-
switchActiveTenant
|
|
186
|
-
};
|
package/dist/tenants/index.d.cts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { ApiResponse } from '../index.cjs';
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* Return type of the `acceptTenantInvite` function
|
|
3
5
|
*/
|
|
@@ -98,15 +100,6 @@ type DeleteTenantResponse = ApiResponse<{
|
|
|
98
100
|
*/
|
|
99
101
|
declare function deleteTenant(tenantId: string): Promise<DeleteTenantResponse>;
|
|
100
102
|
|
|
101
|
-
/**
|
|
102
|
-
* Base API Response structure for API
|
|
103
|
-
*/
|
|
104
|
-
type ApiResponse<T> = {
|
|
105
|
-
data?: T;
|
|
106
|
-
status: number;
|
|
107
|
-
error?: string;
|
|
108
|
-
};
|
|
109
|
-
|
|
110
103
|
/**
|
|
111
104
|
* Return type of the `switchActiveTenant` function
|
|
112
105
|
*/
|
|
@@ -121,4 +114,4 @@ type SwitchActiveTenantResponse = ApiResponse<{
|
|
|
121
114
|
*/
|
|
122
115
|
declare function switchActiveTenant(tenantId: string): Promise<SwitchActiveTenantResponse>;
|
|
123
116
|
|
|
124
|
-
export { type AcceptTenantInviteResponse, type CreateTenantRequest, type CreateTenantResponse, type CreateTenantUserInviteRequest, type CreateTenantUserInviteResponse, type DeleteTenantResponse, type SwitchActiveTenantResponse, type Tenant, type TenantInvite, acceptTenantInvite, createTenant, createTenantUserInvite, deleteTenant, switchActiveTenant };
|
|
117
|
+
export { type AcceptTenantInviteResponse, ApiResponse, type CreateTenantRequest, type CreateTenantResponse, type CreateTenantUserInviteRequest, type CreateTenantUserInviteResponse, type DeleteTenantResponse, type SwitchActiveTenantResponse, type Tenant, type TenantInvite, acceptTenantInvite, createTenant, createTenantUserInvite, deleteTenant, switchActiveTenant };
|
package/dist/tenants/index.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { ApiResponse } from '../index.js';
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* Return type of the `acceptTenantInvite` function
|
|
3
5
|
*/
|
|
@@ -98,15 +100,6 @@ type DeleteTenantResponse = ApiResponse<{
|
|
|
98
100
|
*/
|
|
99
101
|
declare function deleteTenant(tenantId: string): Promise<DeleteTenantResponse>;
|
|
100
102
|
|
|
101
|
-
/**
|
|
102
|
-
* Base API Response structure for API
|
|
103
|
-
*/
|
|
104
|
-
type ApiResponse<T> = {
|
|
105
|
-
data?: T;
|
|
106
|
-
status: number;
|
|
107
|
-
error?: string;
|
|
108
|
-
};
|
|
109
|
-
|
|
110
103
|
/**
|
|
111
104
|
* Return type of the `switchActiveTenant` function
|
|
112
105
|
*/
|
|
@@ -121,4 +114,4 @@ type SwitchActiveTenantResponse = ApiResponse<{
|
|
|
121
114
|
*/
|
|
122
115
|
declare function switchActiveTenant(tenantId: string): Promise<SwitchActiveTenantResponse>;
|
|
123
116
|
|
|
124
|
-
export { type AcceptTenantInviteResponse, type CreateTenantRequest, type CreateTenantResponse, type CreateTenantUserInviteRequest, type CreateTenantUserInviteResponse, type DeleteTenantResponse, type SwitchActiveTenantResponse, type Tenant, type TenantInvite, acceptTenantInvite, createTenant, createTenantUserInvite, deleteTenant, switchActiveTenant };
|
|
117
|
+
export { type AcceptTenantInviteResponse, ApiResponse, type CreateTenantRequest, type CreateTenantResponse, type CreateTenantUserInviteRequest, type CreateTenantUserInviteResponse, type DeleteTenantResponse, type SwitchActiveTenantResponse, type Tenant, type TenantInvite, acceptTenantInvite, createTenant, createTenantUserInvite, deleteTenant, switchActiveTenant };
|
package/package.json
CHANGED
|
@@ -1,16 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@omnibase/core-js",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"description": "OmniBase core Javascript SDK - framework agnostic",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist/**/*"
|
|
7
7
|
],
|
|
8
8
|
"type": "module",
|
|
9
9
|
"scripts": {
|
|
10
|
-
"build": "tsup src/database/index.ts src/tenants/index.ts src/auth/types.ts --format cjs,esm --dts",
|
|
10
|
+
"build": "tsup src/index.ts src/database/index.ts src/tenants/index.ts src/auth/types.ts --format cjs,esm --dts",
|
|
11
11
|
"prepublishOnly": "npm run build"
|
|
12
12
|
},
|
|
13
13
|
"exports": {
|
|
14
|
+
".": {
|
|
15
|
+
"types": "./dist/index.d.ts"
|
|
16
|
+
},
|
|
14
17
|
"./auth": {
|
|
15
18
|
"types": "./dist/auth/index.d.ts"
|
|
16
19
|
},
|