@levo-so/core 0.1.35 → 0.1.37
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/client.d.ts +81 -0
- package/dist/constants/media.d.ts +1 -1
- package/dist/control/audience.d.ts +22 -0
- package/dist/control/audience.d.ts.map +1 -0
- package/dist/control/index.d.ts +23 -0
- package/dist/control/index.d.ts.map +1 -0
- package/dist/httpClient.d.ts +13 -0
- package/dist/index.d.ts +1 -2
- package/dist/index.js +1196 -70
- package/dist/logger/batch.d.ts +3 -10
- package/dist/logger/batch.d.ts.map +1 -1
- package/dist/logger/index.d.ts +22 -0
- package/dist/logger/index.d.ts.map +1 -0
- package/dist/modules/blog.d.ts +10 -0
- package/dist/modules/blog.d.ts.map +1 -0
- package/dist/modules/collection.d.ts +25 -0
- package/dist/modules/collection.d.ts.map +1 -0
- package/dist/{plugins/LevoMedia.d.ts → modules/media.d.ts} +6 -4
- package/dist/modules/media.d.ts.map +1 -0
- package/dist/modules/membership.d.ts +21 -0
- package/dist/modules/membership.d.ts.map +1 -0
- package/dist/types/audience.d.ts +35 -2
- package/dist/types/audience.d.ts.map +1 -1
- package/dist/utils/listToX.d.ts +3 -0
- package/dist/utils/listToX.d.ts.map +1 -0
- package/dist/utils/lock.d.ts.map +1 -1
- package/package.json +5 -3
- package/dist/LevoClient.d.ts +0 -38
- package/dist/chunk-OT564SO4.js +0 -69
- package/dist/chunk-QJSKNLTV.js +0 -9
- package/dist/chunk-ZLLCLSGE.js +0 -8
- package/dist/plugins/LevoAudience.d.ts +0 -32
- package/dist/plugins/LevoAudience.d.ts.map +0 -1
- package/dist/plugins/LevoAudience.js +0 -561
- package/dist/plugins/LevoBlog.d.ts +0 -8
- package/dist/plugins/LevoBlog.d.ts.map +0 -1
- package/dist/plugins/LevoBlog.js +0 -21
- package/dist/plugins/LevoCollection.d.ts +0 -23
- package/dist/plugins/LevoCollection.d.ts.map +0 -1
- package/dist/plugins/LevoCollection.js +0 -47
- package/dist/plugins/LevoLogger.d.ts +0 -32
- package/dist/plugins/LevoLogger.d.ts.map +0 -1
- package/dist/plugins/LevoLogger.js +0 -193
- package/dist/plugins/LevoMedia.d.ts.map +0 -1
- package/dist/plugins/LevoMedia.js +0 -13
- package/dist/plugins/LevoMembership.d.ts +0 -38
- package/dist/plugins/LevoMembership.d.ts.map +0 -1
- package/dist/plugins/LevoMembership.js +0 -104
- package/dist/plugins/LevoPlugin.d.ts +0 -6
- package/dist/plugins/LevoPlugin.d.ts.map +0 -1
- package/dist/plugins/LevoPlugin.js +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LevoLogger.d.ts","sourceRoot":"","sources":["../../src/plugins/LevoLogger.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,UAAU,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,eAAO,MAAM,SAAS,SAAgC,CAAC;AAEvD,oBAAY,QAAQ;IAClB,KAAK,IAAI;IACT,IAAI,IAAI;IACR,IAAI,IAAI;IACR,KAAK,IAAI;IACT,GAAG,MAAM;CACV;AAiBD,MAAM,WAAW,aAAc,SAAQ,YAAY;IACjD,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AACD,qBAAa,UAAW,SAAQ,UAAU;IACxC,QAAQ,EAAE,QAAQ,CAAkB;IACpC,YAAY,EAAE,OAAO,CAAS;IAE9B,KAAK,EAAE,QAAQ,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;gBAG3B,MAAM,EAAE,UAAU,EAClB,YAAY,GAAE,aAAkB,EAChC,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM;IAcnC,KAAK,YAAa,GAAG,EAAE,UAErB;IAEF,IAAI,YAAa,GAAG,EAAE,UAEpB;IAEF,IAAI,YAAa,GAAG,EAAE,UAEpB;IAEF,KAAK,YAAa,GAAG,EAAE,UAErB;IAEF,MAAM,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG;QACvB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC;KAC3C;IAsDD,GAAG,UAAW,QAAQ,QAAQ,GAAG,EAAE,UAsCjC;CACH"}
|
|
@@ -1,193 +0,0 @@
|
|
|
1
|
-
import { LevoPlugin } from '../chunk-QJSKNLTV.js';
|
|
2
|
-
import wretch from 'wretch';
|
|
3
|
-
|
|
4
|
-
var LogBatch = class {
|
|
5
|
-
logApiUrl = "https://public-api.levo.so";
|
|
6
|
-
logs = [];
|
|
7
|
-
activeFlush = Promise.resolve();
|
|
8
|
-
nextFlush = setTimeout(() => {
|
|
9
|
-
}, 0);
|
|
10
|
-
lastFlush = /* @__PURE__ */ new Date();
|
|
11
|
-
constructor(options = {}) {
|
|
12
|
-
if (options?.logApiUrl) {
|
|
13
|
-
this.logApiUrl = options?.logApiUrl;
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
sendLogs = async (logs) => {
|
|
17
|
-
const url = `${this.logApiUrl}/v1/apm/logs/json`;
|
|
18
|
-
const sendFallback = () => {
|
|
19
|
-
return wretch().url(url).post(logs).res().catch((e) => console.error(e));
|
|
20
|
-
};
|
|
21
|
-
try {
|
|
22
|
-
if (typeof fetch === "undefined") {
|
|
23
|
-
throw new Error("fetch is not defined");
|
|
24
|
-
} else if (typeof window !== "undefined" && navigator.sendBeacon) {
|
|
25
|
-
try {
|
|
26
|
-
if (!navigator.sendBeacon.bind(navigator)(url, JSON.stringify(logs))) {
|
|
27
|
-
return sendFallback();
|
|
28
|
-
}
|
|
29
|
-
} catch {
|
|
30
|
-
return sendFallback();
|
|
31
|
-
}
|
|
32
|
-
} else {
|
|
33
|
-
return sendFallback();
|
|
34
|
-
}
|
|
35
|
-
} catch (e) {
|
|
36
|
-
console.warn(`Failed to send logs to server: ${e}`);
|
|
37
|
-
this.logs = [...this.logs, ...logs];
|
|
38
|
-
}
|
|
39
|
-
};
|
|
40
|
-
ingest = (log) => {
|
|
41
|
-
if (!this.logApiUrl) return;
|
|
42
|
-
const task = Array.isArray(log) ? log : [log];
|
|
43
|
-
this.logs.push(task);
|
|
44
|
-
if (this.logs.length >= 50 || this.lastFlush.getTime() < Date.now() - 1500) {
|
|
45
|
-
clearTimeout(this.nextFlush);
|
|
46
|
-
this.activeFlush = this.flush();
|
|
47
|
-
} else {
|
|
48
|
-
clearTimeout(this.nextFlush);
|
|
49
|
-
this.nextFlush = setTimeout(() => {
|
|
50
|
-
this.activeFlush = this.flush();
|
|
51
|
-
}, 1500);
|
|
52
|
-
}
|
|
53
|
-
};
|
|
54
|
-
flush = async () => {
|
|
55
|
-
const tasks = this.logs.splice(0, this.logs.length);
|
|
56
|
-
clearTimeout(this.nextFlush);
|
|
57
|
-
await this.activeFlush;
|
|
58
|
-
if (tasks.length === 0) {
|
|
59
|
-
this.lastFlush = /* @__PURE__ */ new Date();
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
try {
|
|
63
|
-
await this.sendLogs(tasks);
|
|
64
|
-
} catch (e) {
|
|
65
|
-
console.log("error sending logs", e);
|
|
66
|
-
} finally {
|
|
67
|
-
this.lastFlush = /* @__PURE__ */ new Date();
|
|
68
|
-
}
|
|
69
|
-
};
|
|
70
|
-
};
|
|
71
|
-
|
|
72
|
-
// src/plugins/LevoLogger.ts
|
|
73
|
-
var isBrowser = typeof window !== "undefined";
|
|
74
|
-
var LogLevel = /* @__PURE__ */ ((LogLevel2) => {
|
|
75
|
-
LogLevel2[LogLevel2["debug"] = 0] = "debug";
|
|
76
|
-
LogLevel2[LogLevel2["info"] = 1] = "info";
|
|
77
|
-
LogLevel2[LogLevel2["warn"] = 2] = "warn";
|
|
78
|
-
LogLevel2[LogLevel2["error"] = 3] = "error";
|
|
79
|
-
LogLevel2[LogLevel2["off"] = 100] = "off";
|
|
80
|
-
return LogLevel2;
|
|
81
|
-
})(LogLevel || {});
|
|
82
|
-
var getMethodName = (level) => {
|
|
83
|
-
switch (level) {
|
|
84
|
-
case 0 /* debug */:
|
|
85
|
-
return "log";
|
|
86
|
-
case 1 /* info */:
|
|
87
|
-
return "info";
|
|
88
|
-
case 2 /* warn */:
|
|
89
|
-
return "warn";
|
|
90
|
-
case 3 /* error */:
|
|
91
|
-
return "error";
|
|
92
|
-
default:
|
|
93
|
-
return "log";
|
|
94
|
-
}
|
|
95
|
-
};
|
|
96
|
-
var LevoLogger = class extends LevoPlugin {
|
|
97
|
-
logLevel = 0 /* debug */;
|
|
98
|
-
enableRemote = false;
|
|
99
|
-
batch;
|
|
100
|
-
context;
|
|
101
|
-
constructor(client, batchOptions = {}, context = {}) {
|
|
102
|
-
super(client);
|
|
103
|
-
this.batch = new LogBatch(batchOptions);
|
|
104
|
-
this.context = context;
|
|
105
|
-
this.logLevel = batchOptions?.level ?? (this.client.NODE_ENV !== "development" ? 1 /* info */ : 0 /* debug */);
|
|
106
|
-
this.enableRemote = batchOptions?.enableRemote ?? this.client.NODE_ENV !== "development";
|
|
107
|
-
}
|
|
108
|
-
debug = (...args) => {
|
|
109
|
-
this.log(0 /* debug */, args);
|
|
110
|
-
};
|
|
111
|
-
info = (...args) => {
|
|
112
|
-
this.log(1 /* info */, args);
|
|
113
|
-
};
|
|
114
|
-
warn = (...args) => {
|
|
115
|
-
this.log(2 /* warn */, args);
|
|
116
|
-
};
|
|
117
|
-
error = (...args) => {
|
|
118
|
-
this.log(3 /* error */, args);
|
|
119
|
-
};
|
|
120
|
-
format(messages) {
|
|
121
|
-
let message = "";
|
|
122
|
-
const formattedMessages = messages.map((arg) => {
|
|
123
|
-
let payload = "";
|
|
124
|
-
const isMessageEmpty = !message;
|
|
125
|
-
if (typeof arg === "string") {
|
|
126
|
-
payload = arg;
|
|
127
|
-
if (isMessageEmpty) {
|
|
128
|
-
message = arg;
|
|
129
|
-
}
|
|
130
|
-
} else if (arg instanceof Error) {
|
|
131
|
-
payload = {
|
|
132
|
-
message: arg.message,
|
|
133
|
-
name: arg.name,
|
|
134
|
-
stack: arg.stack
|
|
135
|
-
};
|
|
136
|
-
if (isMessageEmpty) {
|
|
137
|
-
message = arg.message;
|
|
138
|
-
}
|
|
139
|
-
} else if (typeof arg === "object") {
|
|
140
|
-
payload = arg;
|
|
141
|
-
} else {
|
|
142
|
-
payload = String(arg);
|
|
143
|
-
if (isMessageEmpty) {
|
|
144
|
-
message = String(arg);
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
return payload;
|
|
148
|
-
}).filter(Boolean);
|
|
149
|
-
if (!message && formattedMessages.length > 0) {
|
|
150
|
-
message = "Default message (Check content for details)";
|
|
151
|
-
}
|
|
152
|
-
if (formattedMessages?.length === 1 && formattedMessages[0] === message) {
|
|
153
|
-
return { message, content: {} };
|
|
154
|
-
}
|
|
155
|
-
return {
|
|
156
|
-
message,
|
|
157
|
-
content: formattedMessages
|
|
158
|
-
};
|
|
159
|
-
}
|
|
160
|
-
log = (level, args) => {
|
|
161
|
-
const messages = Array.isArray(args) ? args : [args];
|
|
162
|
-
if (level < this.logLevel) {
|
|
163
|
-
return;
|
|
164
|
-
}
|
|
165
|
-
if (this.enableRemote && level === 3 /* error */) {
|
|
166
|
-
const { content = {}, message } = this.format(messages);
|
|
167
|
-
if (message) {
|
|
168
|
-
const log = {
|
|
169
|
-
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
170
|
-
level: "error",
|
|
171
|
-
workspace: this.client.workspace,
|
|
172
|
-
appName: this.client.appName,
|
|
173
|
-
isBrowser,
|
|
174
|
-
...this.context,
|
|
175
|
-
message,
|
|
176
|
-
content
|
|
177
|
-
};
|
|
178
|
-
if (isBrowser) {
|
|
179
|
-
log.hostname = window.location.hostname;
|
|
180
|
-
log.pathname = window.location.pathname;
|
|
181
|
-
log.url = window.location.href;
|
|
182
|
-
log.page_title = window.document.title;
|
|
183
|
-
log.userAgent = window.navigator.userAgent;
|
|
184
|
-
}
|
|
185
|
-
this.batch.ingest(log);
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
const method = getMethodName(level);
|
|
189
|
-
console[method](...messages);
|
|
190
|
-
};
|
|
191
|
-
};
|
|
192
|
-
|
|
193
|
-
export { LevoLogger, LogLevel, isBrowser };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LevoMedia.d.ts","sourceRoot":"","sources":["../../src/plugins/LevoMedia.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAE5C,OAAO,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,qBAAa,SAAU,SAAQ,UAAU;IACvC,eAAe,aAAc,QAAQ,YAAW,aAAa,wCAM3D;IAEF,WAAW,UAAgB,SAAS,CAAC,SAAS,wCAK5C;CACH"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { LevoPlugin } from '../chunk-QJSKNLTV.js';
|
|
2
|
-
|
|
3
|
-
// src/plugins/LevoMedia.ts
|
|
4
|
-
var LevoMedia = class extends LevoPlugin {
|
|
5
|
-
mediaBulkUpload = (formData, options = {}) => {
|
|
6
|
-
return this.client.fetch.url("/v1/assets/media/bulk").options(options).post(formData).json();
|
|
7
|
-
};
|
|
8
|
-
getAllMedia = async (data = {}) => {
|
|
9
|
-
return await this.client.fetch.url("/v1/assets/media/query").post(data).json();
|
|
10
|
-
};
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
export { LevoMedia };
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import type { WretchOptions } from "wretch";
|
|
2
|
-
import type { ILevoMembership } from "../types/membership";
|
|
3
|
-
import { LevoPlugin } from "./LevoPlugin";
|
|
4
|
-
export declare class LevoMembership extends LevoPlugin {
|
|
5
|
-
/**
|
|
6
|
-
* Get the list of URL for OAuth providers to redirect to
|
|
7
|
-
* This can be used in the OAuth Buttons like "Continue with Google" etc.
|
|
8
|
-
* The URL contains the current page's URL and the current workspace
|
|
9
|
-
*
|
|
10
|
-
* @example
|
|
11
|
-
* const urls = await LevoMembership.getOAuthURL();
|
|
12
|
-
* console.log(urls.google)
|
|
13
|
-
*
|
|
14
|
-
* @returns {ILevoMembership.OAuthURLList}
|
|
15
|
-
*/
|
|
16
|
-
getOAuthURL(options?: WretchOptions): Promise<ILevoMembership.OAuthURLList>;
|
|
17
|
-
/**
|
|
18
|
-
* Sign out the current user's account
|
|
19
|
-
* @returns T | null
|
|
20
|
-
*/
|
|
21
|
-
signOut<T = {
|
|
22
|
-
status: boolean;
|
|
23
|
-
}>(options?: WretchOptions): Promise<T>;
|
|
24
|
-
/**
|
|
25
|
-
* Get the current user's account
|
|
26
|
-
* @returns T | null
|
|
27
|
-
*/
|
|
28
|
-
getMe<T = ILevoMembership.Account>(options?: WretchOptions): Promise<T>;
|
|
29
|
-
updateMe<T = ILevoMembership.Account, D = ILevoMembership.Request.UpdateMe>(data: D, options?: WretchOptions): Promise<T>;
|
|
30
|
-
createPassword<T = ILevoMembership.Account>(data: ILevoMembership.Request.CreatePassword, options?: WretchOptions): Promise<T>;
|
|
31
|
-
isLoggedIn<T = ILevoMembership.Account>(options?: WretchOptions): Promise<T | null>;
|
|
32
|
-
requestMagicLink(data: ILevoMembership.Request.RequestMagicLink, options?: WretchOptions): Promise<Pick<ILevoMembership.Otp, "_id" | "content">>;
|
|
33
|
-
requestOtp(data: ILevoMembership.Request.RequestOtp, options?: WretchOptions): Promise<Pick<ILevoMembership.Otp, "_id" | "content">>;
|
|
34
|
-
signInWithOtp<T = ILevoMembership.Account>(data: ILevoMembership.Request.SignInWithOtp, options?: WretchOptions): Promise<T | null>;
|
|
35
|
-
signInWithPassword<T = ILevoMembership.Account>(data: ILevoMembership.Request.SignInWithPassword, options?: WretchOptions): Promise<T | null>;
|
|
36
|
-
signUpWithPassword<T = ILevoMembership.Account>(data: ILevoMembership.Request.SignUpWithPassword, options?: WretchOptions): Promise<T | null>;
|
|
37
|
-
}
|
|
38
|
-
//# sourceMappingURL=LevoMembership.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LevoMembership.d.ts","sourceRoot":"","sources":["../../src/plugins/LevoMembership.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAM5C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAG3D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,qBAAa,cAAe,SAAQ,UAAU;IAC5C;;;;;;;;;;OAUG;IACG,WAAW,CACf,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,eAAe,CAAC,YAAY,CAAC;IAoDxC;;;OAGG;IACG,OAAO,CAAC,CAAC,GAAG;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE,EACnC,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,CAAC,CAAC;IAQb;;;OAGG;IACG,KAAK,CAAC,CAAC,GAAG,eAAe,CAAC,OAAO,EACrC,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,CAAC,CAAC;IAUP,QAAQ,CACZ,CAAC,GAAG,eAAe,CAAC,OAAO,EAC3B,CAAC,GAAG,eAAe,CAAC,OAAO,CAAC,QAAQ,EACpC,IAAI,EAAE,CAAC,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAU7C,cAAc,CAAC,CAAC,GAAG,eAAe,CAAC,OAAO,EAC9C,IAAI,EAAE,eAAe,CAAC,OAAO,CAAC,cAAc,EAC5C,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,CAAC,CAAC;IAUP,UAAU,CAAC,CAAC,GAAG,eAAe,CAAC,OAAO,EAC1C,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IASd,gBAAgB,CACpB,IAAI,EAAE,eAAe,CAAC,OAAO,CAAC,gBAAgB,EAC9C,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,KAAK,GAAG,SAAS,CAAC,CAAC;IAiBlD,UAAU,CACd,IAAI,EAAE,eAAe,CAAC,OAAO,CAAC,UAAU,EACxC,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,KAAK,GAAG,SAAS,CAAC,CAAC;IAUlD,aAAa,CAAC,CAAC,GAAG,eAAe,CAAC,OAAO,EAC7C,IAAI,EAAE,eAAe,CAAC,OAAO,CAAC,aAAa,EAC3C,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAUd,kBAAkB,CAAC,CAAC,GAAG,eAAe,CAAC,OAAO,EAClD,IAAI,EAAE,eAAe,CAAC,OAAO,CAAC,kBAAkB,EAChD,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAUd,kBAAkB,CAAC,CAAC,GAAG,eAAe,CAAC,OAAO,EAClD,IAAI,EAAE,eAAe,CAAC,OAAO,CAAC,kBAAkB,EAChD,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;CASrB"}
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
import { LevoOAuthProviderList } from '../chunk-ZLLCLSGE.js';
|
|
2
|
-
import { LevoPlugin } from '../chunk-QJSKNLTV.js';
|
|
3
|
-
|
|
4
|
-
// src/plugins/LevoMembership.ts
|
|
5
|
-
var LevoMembership = class extends LevoPlugin {
|
|
6
|
-
/**
|
|
7
|
-
* Get the list of URL for OAuth providers to redirect to
|
|
8
|
-
* This can be used in the OAuth Buttons like "Continue with Google" etc.
|
|
9
|
-
* The URL contains the current page's URL and the current workspace
|
|
10
|
-
*
|
|
11
|
-
* @example
|
|
12
|
-
* const urls = await LevoMembership.getOAuthURL();
|
|
13
|
-
* console.log(urls.google)
|
|
14
|
-
*
|
|
15
|
-
* @returns {ILevoMembership.OAuthURLList}
|
|
16
|
-
*/
|
|
17
|
-
async getOAuthURL(options = {}) {
|
|
18
|
-
try {
|
|
19
|
-
const response = await this.client.fetch.url("/v1/membership/auth/oauth/get-redirect-url").options(options).get().json();
|
|
20
|
-
const result = response?.content?.data;
|
|
21
|
-
const providers = Object.keys(result);
|
|
22
|
-
if (typeof window !== "undefined") {
|
|
23
|
-
for (const provider of providers) {
|
|
24
|
-
const raw_url = result[provider];
|
|
25
|
-
if (raw_url) {
|
|
26
|
-
const url = new URL(raw_url);
|
|
27
|
-
const url_params = url.searchParams;
|
|
28
|
-
url_params.set("redirect_uri", window.location.href);
|
|
29
|
-
if (this.client.workspace) {
|
|
30
|
-
url_params.set("workspace_id", this.client.workspace);
|
|
31
|
-
}
|
|
32
|
-
const pageContext = this.client.getPageContext();
|
|
33
|
-
if (pageContext) {
|
|
34
|
-
url_params.set("page_context", JSON.stringify(pageContext));
|
|
35
|
-
}
|
|
36
|
-
result[provider] = `${url.origin}${url.pathname}?${url_params.toString()}`;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
return result;
|
|
41
|
-
} catch (_) {
|
|
42
|
-
return LevoOAuthProviderList.reduce((acc, provider) => {
|
|
43
|
-
acc[provider] = null;
|
|
44
|
-
return acc;
|
|
45
|
-
}, {});
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Sign out the current user's account
|
|
50
|
-
* @returns T | null
|
|
51
|
-
*/
|
|
52
|
-
async signOut(options = {}) {
|
|
53
|
-
return this.client.fetch.url("/v1/membership/auth/sign-out").options(options).post("").json();
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Get the current user's account
|
|
57
|
-
* @returns T | null
|
|
58
|
-
*/
|
|
59
|
-
async getMe(options = {}) {
|
|
60
|
-
const response = await this.client.fetch.url("/v1/membership/auth/get-me").options(options).get().json();
|
|
61
|
-
return response?.content?.data;
|
|
62
|
-
}
|
|
63
|
-
async updateMe(data, options = {}) {
|
|
64
|
-
const response = await this.client.fetch.url("/v1/membership/auth/update-me").options(options).put(data).json();
|
|
65
|
-
return response?.content?.data;
|
|
66
|
-
}
|
|
67
|
-
async createPassword(data, options = {}) {
|
|
68
|
-
const response = await this.client.fetch.url("/v1/membership/auth/change-password").options(options).put(data).json();
|
|
69
|
-
return response?.content?.data;
|
|
70
|
-
}
|
|
71
|
-
async isLoggedIn(options = {}) {
|
|
72
|
-
try {
|
|
73
|
-
const account = await this.getMe(options);
|
|
74
|
-
return account;
|
|
75
|
-
} catch (_) {
|
|
76
|
-
return null;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
async requestMagicLink(data, options = {}) {
|
|
80
|
-
if (typeof window !== "undefined" && !data.redirect_uri) {
|
|
81
|
-
data.redirect_uri = window.location.href;
|
|
82
|
-
}
|
|
83
|
-
const response = await this.client.fetch.url("/v1/membership/auth/request-magic-link").options(options).post(data).json();
|
|
84
|
-
return response?.content?.data;
|
|
85
|
-
}
|
|
86
|
-
async requestOtp(data, options = {}) {
|
|
87
|
-
const response = await this.client.fetch.url("/v1/membership/auth/request-otp").options(options).post(data).json();
|
|
88
|
-
return response?.content?.data;
|
|
89
|
-
}
|
|
90
|
-
async signInWithOtp(data, options = {}) {
|
|
91
|
-
const response = await this.client.fetch.url("/v1/membership/auth/signin-with-otp").options(options).post(data).json();
|
|
92
|
-
return response?.content?.data;
|
|
93
|
-
}
|
|
94
|
-
async signInWithPassword(data, options = {}) {
|
|
95
|
-
const response = await this.client.fetch.url("/v1/membership/auth/signin-with-password").options(options).post(data).json();
|
|
96
|
-
return response?.content?.data;
|
|
97
|
-
}
|
|
98
|
-
async signUpWithPassword(data, options = {}) {
|
|
99
|
-
const response = await this.client.fetch.url("/v1/membership/auth/signup-with-password").options(options).post(data).json();
|
|
100
|
-
return response?.content?.data;
|
|
101
|
-
}
|
|
102
|
-
};
|
|
103
|
-
|
|
104
|
-
export { LevoMembership };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LevoPlugin.d.ts","sourceRoot":"","sources":["../../src/plugins/LevoPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,eAAe,CAAC;AAE5C,8BAAsB,UAAU;IAC9B,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC;gBAEjB,MAAM,EAAE,UAAU;CAG/B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { LevoPlugin } from '../chunk-QJSKNLTV.js';
|