@levo-so/core 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/dist/LevoClient.d.ts +23 -0
  2. package/dist/chunk-QJSKNLTV.js +9 -0
  3. package/dist/chunk-ZLLCLSGE.js +8 -0
  4. package/dist/constants/collection/defaultByKind.d.ts +3 -0
  5. package/dist/constants/collection/defaultByKind.d.ts.map +1 -0
  6. package/dist/constants/collection/fieldInterfaceFormat.d.ts +3 -0
  7. package/dist/constants/collection/fieldInterfaceFormat.d.ts.map +1 -0
  8. package/dist/constants/collection/fieldInterfaces.d.ts +3 -0
  9. package/dist/constants/collection/fieldInterfaces.d.ts.map +1 -0
  10. package/dist/constants/collection/fieldKind.d.ts +25 -0
  11. package/dist/constants/collection/fieldKind.d.ts.map +1 -0
  12. package/dist/constants/index.d.ts +7 -0
  13. package/dist/constants/index.d.ts.map +1 -0
  14. package/dist/constants/media.d.ts +3 -0
  15. package/dist/constants/media.d.ts.map +1 -0
  16. package/dist/constants/oauthProvider.d.ts +3 -0
  17. package/dist/constants/oauthProvider.d.ts.map +1 -0
  18. package/dist/index.d.ts +7 -0
  19. package/dist/index.js +261 -0
  20. package/dist/plugins/LevoAudience.d.ts +21 -0
  21. package/dist/plugins/LevoAudience.d.ts.map +1 -0
  22. package/dist/plugins/LevoAudience.js +362 -0
  23. package/dist/plugins/LevoBlog.d.ts +8 -0
  24. package/dist/plugins/LevoBlog.d.ts.map +1 -0
  25. package/dist/plugins/LevoBlog.js +21 -0
  26. package/dist/plugins/LevoCollection.d.ts +24 -0
  27. package/dist/plugins/LevoCollection.d.ts.map +1 -0
  28. package/dist/plugins/LevoCollection.js +49 -0
  29. package/dist/plugins/LevoLogger.d.ts +8 -0
  30. package/dist/plugins/LevoLogger.d.ts.map +1 -0
  31. package/dist/plugins/LevoLogger.js +23 -0
  32. package/dist/plugins/LevoMedia.d.ts +9 -0
  33. package/dist/plugins/LevoMedia.d.ts.map +1 -0
  34. package/dist/plugins/LevoMedia.js +13 -0
  35. package/dist/plugins/LevoMembership.d.ts +40 -0
  36. package/dist/plugins/LevoMembership.d.ts.map +1 -0
  37. package/dist/plugins/LevoMembership.js +167 -0
  38. package/dist/plugins/LevoPlugin.d.ts +6 -0
  39. package/dist/plugins/LevoPlugin.d.ts.map +1 -0
  40. package/dist/plugins/LevoPlugin.js +1 -0
  41. package/dist/types/audience.d.ts +35 -0
  42. package/dist/types/audience.d.ts.map +1 -0
  43. package/dist/types/blog/author.d.ts +30 -0
  44. package/dist/types/blog/author.d.ts.map +1 -0
  45. package/dist/types/blog/blogClient.d.ts +51 -0
  46. package/dist/types/blog/blogClient.d.ts.map +1 -0
  47. package/dist/types/blog/category.d.ts +20 -0
  48. package/dist/types/blog/category.d.ts.map +1 -0
  49. package/dist/types/blog/index.d.ts +71 -0
  50. package/dist/types/blog/index.d.ts.map +1 -0
  51. package/dist/types/blog/post.d.ts +63 -0
  52. package/dist/types/blog/post.d.ts.map +1 -0
  53. package/dist/types/blog/tag.d.ts +19 -0
  54. package/dist/types/blog/tag.d.ts.map +1 -0
  55. package/dist/types/collection/collectionView.d.ts +35 -0
  56. package/dist/types/collection/collectionView.d.ts.map +1 -0
  57. package/dist/types/collection/draft.d.ts +9 -0
  58. package/dist/types/collection/draft.d.ts.map +1 -0
  59. package/dist/types/collection/index.d.ts +7 -0
  60. package/dist/types/collection/index.d.ts.map +1 -0
  61. package/dist/types/collection/lemaCollection.d.ts +33 -0
  62. package/dist/types/collection/lemaCollection.d.ts.map +1 -0
  63. package/dist/types/collection/lemaField.d.ts +35 -0
  64. package/dist/types/collection/lemaField.d.ts.map +1 -0
  65. package/dist/types/collection/lemaSection.d.ts +6 -0
  66. package/dist/types/collection/lemaSection.d.ts.map +1 -0
  67. package/dist/types/collection/relation.d.ts +11 -0
  68. package/dist/types/collection/relation.d.ts.map +1 -0
  69. package/dist/types/emoji.d.ts +21 -0
  70. package/dist/types/emoji.d.ts.map +1 -0
  71. package/dist/types/index.d.ts +11 -0
  72. package/dist/types/index.d.ts.map +1 -0
  73. package/dist/types/levo-query.d.ts +48 -0
  74. package/dist/types/levo-query.d.ts.map +1 -0
  75. package/dist/types/media.d.ts +34 -0
  76. package/dist/types/media.d.ts.map +1 -0
  77. package/dist/types/membership/index.d.ts +193 -0
  78. package/dist/types/membership/index.d.ts.map +1 -0
  79. package/dist/types/query.d.ts +65 -0
  80. package/dist/types/query.d.ts.map +1 -0
  81. package/dist/types/schema/field.d.ts +27 -0
  82. package/dist/types/schema/field.d.ts.map +1 -0
  83. package/dist/types/schema/index.d.ts +3 -0
  84. package/dist/types/schema/index.d.ts.map +1 -0
  85. package/dist/types/schema/schema.d.ts +29 -0
  86. package/dist/types/schema/schema.d.ts.map +1 -0
  87. package/dist/types/utils.d.ts +8 -0
  88. package/dist/types/utils.d.ts.map +1 -0
  89. package/dist/utils/LevoMembershipError.d.ts +8 -0
  90. package/dist/utils/LevoMembershipError.d.ts.map +1 -0
  91. package/dist/utils/createSrcSet.d.ts +5 -0
  92. package/dist/utils/createSrcSet.d.ts.map +1 -0
  93. package/dist/utils/formatImagePath.d.ts +3 -0
  94. package/dist/utils/formatImagePath.d.ts.map +1 -0
  95. package/dist/utils/getUserProperties.d.ts +7 -0
  96. package/dist/utils/getUserProperties.d.ts.map +1 -0
  97. package/dist/utils/isIncognito.d.ts +9 -0
  98. package/dist/utils/isIncognito.d.ts.map +1 -0
  99. package/package.json +70 -0
@@ -0,0 +1,362 @@
1
+ import { LevoPlugin } from '../chunk-QJSKNLTV.js';
2
+ import { onUserActivity } from '@analytics/activity-utils';
3
+ import { getVisitorSource } from '@analytics/visitor-source';
4
+ import { Analytics } from 'analytics';
5
+ import wretch from 'wretch';
6
+ import getUserLocale from 'get-user-locale';
7
+
8
+ // src/utils/isIncognito.ts
9
+ var isIncognito = () => new Promise((resolve, reject) => {
10
+ let browserName = "Unknown";
11
+ function __callback(isPrivate) {
12
+ resolve({
13
+ isPrivate,
14
+ browserName
15
+ });
16
+ }
17
+ function identifyChromium() {
18
+ const ua = navigator.userAgent;
19
+ if (ua.match(/Chrome/)) {
20
+ if (navigator.brave !== void 0) {
21
+ return "Brave";
22
+ }
23
+ if (ua.match(/Edg/)) {
24
+ return "Edge";
25
+ }
26
+ if (ua.match(/OPR/)) {
27
+ return "Opera";
28
+ }
29
+ return "Chrome";
30
+ }
31
+ return "Chromium";
32
+ }
33
+ function assertEvalToString(value) {
34
+ return value === eval.toString().length;
35
+ }
36
+ function isSafari() {
37
+ const v = navigator.vendor;
38
+ return v !== void 0 && v.indexOf("Apple") === 0 && assertEvalToString(37);
39
+ }
40
+ function isChrome() {
41
+ const v = navigator.vendor;
42
+ return v !== void 0 && v.indexOf("Google") === 0 && assertEvalToString(33);
43
+ }
44
+ function isFirefox() {
45
+ return document.documentElement !== void 0 && document.documentElement.style.MozAppearance !== void 0 && assertEvalToString(37);
46
+ }
47
+ function isMSIE() {
48
+ return navigator.msSaveBlob !== void 0 && assertEvalToString(39);
49
+ }
50
+ function newSafariTest() {
51
+ const tmp_name = String(Math.random());
52
+ try {
53
+ const db = window.indexedDB.open(tmp_name, 1);
54
+ db.onupgradeneeded = (i) => {
55
+ const res = i.target?.result;
56
+ try {
57
+ res.createObjectStore("test", {
58
+ autoIncrement: true
59
+ }).put(new Blob());
60
+ __callback(false);
61
+ } catch (e) {
62
+ let message = e;
63
+ if (e instanceof Error) {
64
+ message = e.message ?? e;
65
+ }
66
+ if (typeof message !== "string") {
67
+ return __callback(false);
68
+ }
69
+ const matchesExpectedError = /BlobURLs are not yet supported/.test(
70
+ message
71
+ );
72
+ return __callback(matchesExpectedError);
73
+ } finally {
74
+ res.close();
75
+ window.indexedDB.deleteDatabase(tmp_name);
76
+ }
77
+ };
78
+ } catch (e) {
79
+ return __callback(false);
80
+ }
81
+ }
82
+ function oldSafariTest() {
83
+ const openDB = window.openDatabase;
84
+ const storage = window.localStorage;
85
+ try {
86
+ openDB(null, null, null, null);
87
+ } catch (e) {
88
+ return __callback(true);
89
+ }
90
+ try {
91
+ storage.setItem("test", "1");
92
+ storage.removeItem("test");
93
+ } catch (e) {
94
+ return __callback(true);
95
+ }
96
+ return __callback(false);
97
+ }
98
+ function safariPrivateTest() {
99
+ if (navigator.maxTouchPoints !== void 0) {
100
+ newSafariTest();
101
+ } else {
102
+ oldSafariTest();
103
+ }
104
+ }
105
+ function getQuotaLimit() {
106
+ const w = window;
107
+ if (w.performance !== void 0 && w.performance.memory !== void 0 && w.performance.memory.jsHeapSizeLimit !== void 0) {
108
+ return performance.memory.jsHeapSizeLimit;
109
+ }
110
+ return 1073741824;
111
+ }
112
+ function storageQuotaChromePrivateTest() {
113
+ navigator.webkitTemporaryStorage.queryUsageAndQuota(
114
+ (_, quota) => {
115
+ const quotaInMib = Math.round(quota / (1024 * 1024));
116
+ const quotaLimitInMib = Math.round(getQuotaLimit() / (1024 * 1024)) * 2;
117
+ __callback(quotaInMib < quotaLimitInMib);
118
+ },
119
+ (e) => {
120
+ reject(
121
+ new Error(
122
+ `detectIncognito somehow failed to query storage quota: ${e.message}`
123
+ )
124
+ );
125
+ }
126
+ );
127
+ }
128
+ function oldChromePrivateTest() {
129
+ const fs = window.webkitRequestFileSystem;
130
+ const success = () => {
131
+ __callback(false);
132
+ };
133
+ const error = () => {
134
+ __callback(true);
135
+ };
136
+ fs(0, 1, success, error);
137
+ }
138
+ function chromePrivateTest() {
139
+ if (self.Promise !== void 0 && self.Promise.allSettled !== void 0) {
140
+ storageQuotaChromePrivateTest();
141
+ } else {
142
+ oldChromePrivateTest();
143
+ }
144
+ }
145
+ function firefoxPrivateTest() {
146
+ __callback(navigator.serviceWorker === void 0);
147
+ }
148
+ function msiePrivateTest() {
149
+ __callback(window.indexedDB === void 0);
150
+ }
151
+ function main() {
152
+ if (isSafari()) {
153
+ browserName = "Safari";
154
+ safariPrivateTest();
155
+ } else if (isChrome()) {
156
+ browserName = identifyChromium();
157
+ chromePrivateTest();
158
+ } else if (isFirefox()) {
159
+ browserName = "Firefox";
160
+ firefoxPrivateTest();
161
+ } else if (isMSIE()) {
162
+ browserName = "Internet Explorer";
163
+ msiePrivateTest();
164
+ } else {
165
+ reject(new Error("detectIncognito cannot determine the browser"));
166
+ }
167
+ }
168
+ main();
169
+ });
170
+ var isIncognito_default = isIncognito;
171
+
172
+ // src/utils/getUserProperties.ts
173
+ var getUserProperties = async () => {
174
+ if (window) {
175
+ let locale = null;
176
+ let timezone = null;
177
+ let dark_mode = false;
178
+ let private_mode = false;
179
+ try {
180
+ ({ isPrivate: private_mode } = await isIncognito_default());
181
+ } catch (e) {
182
+ console.error(e);
183
+ }
184
+ try {
185
+ dark_mode = window.matchMedia?.("(prefers-color-scheme: dark)").matches;
186
+ } catch (e) {
187
+ console.error(e);
188
+ }
189
+ try {
190
+ timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
191
+ } catch (e) {
192
+ console.error(e);
193
+ }
194
+ try {
195
+ locale = getUserLocale();
196
+ } catch (e) {
197
+ console.error(e);
198
+ }
199
+ return {
200
+ locale,
201
+ timezone,
202
+ dark_mode,
203
+ private_mode
204
+ };
205
+ }
206
+ };
207
+
208
+ // src/plugins/LevoAudience.ts
209
+ var LevoAudience = class extends LevoPlugin {
210
+ instance = null;
211
+ #IDLE_THROTTLE = 1 * 1e3;
212
+ // every 1 second we check for idlness
213
+ #IDLE_TIMEOUT = 60 * 1e3;
214
+ // 60 seconds till we consider user idle
215
+ request(url, data) {
216
+ return wretch(url).options({
217
+ keepAlive: true
218
+ }).post(data).json();
219
+ }
220
+ async initiate(properties) {
221
+ if (this.client.NODE_ENV === "development") {
222
+ return;
223
+ }
224
+ const plugin = {
225
+ name: this.client.workspace,
226
+ track: ({ payload }) => {
227
+ if (!this.client.insightsUrl) {
228
+ return;
229
+ }
230
+ this.request(`${this.client.insightsUrl}/v1/insights/event/collect`, {
231
+ event: payload.event,
232
+ properties: {
233
+ ...properties,
234
+ ...payload.properties,
235
+ resource: void 0,
236
+ identifier: void 0
237
+ },
238
+ hostname: window.location.hostname,
239
+ pathname: window.location.pathname,
240
+ url: window.location.href,
241
+ resource: payload.properties.resource || "page",
242
+ identifier: payload.properties.identifier || properties.id,
243
+ workspace_id: this.client.workspace
244
+ }).catch((e) => {
245
+ console.error(e);
246
+ });
247
+ },
248
+ page: ({ payload }) => {
249
+ if (!this.client.insightsUrl) {
250
+ return;
251
+ }
252
+ this.request(`${this.client.insightsUrl}/v1/insights/event/collect`, {
253
+ event: "page.view",
254
+ properties: {
255
+ ...properties,
256
+ ...payload.properties,
257
+ title: document.title,
258
+ resource: void 0,
259
+ identifier: void 0
260
+ },
261
+ hostname: window.location.hostname,
262
+ pathname: window.location.pathname,
263
+ url: window.location.href,
264
+ resource: payload.properties.resource,
265
+ identifier: payload.properties.identifier,
266
+ workspace_id: this.client.workspace
267
+ }).catch((e) => {
268
+ console.error(e);
269
+ });
270
+ },
271
+ identify: ({ payload }) => {
272
+ if (!this.client.insightsUrl) {
273
+ return;
274
+ }
275
+ this.request(
276
+ `${this.client.insightsUrl}/v1/insights/session/identify`,
277
+ {
278
+ private_mode: payload.traits.private_mode,
279
+ dark_mode: payload.traits.dark_mode,
280
+ timezone: payload.traits.timezone,
281
+ locale: payload.traits.locale,
282
+ referrer: payload.traits.referrer,
283
+ workspace_id: this.client.workspace
284
+ }
285
+ ).catch((e) => {
286
+ console.error(e);
287
+ });
288
+ }
289
+ };
290
+ this.instance = Analytics({
291
+ app: this.client.workspace || "",
292
+ plugins: [plugin]
293
+ });
294
+ const referrer = this.getReferrer();
295
+ this.instance.identify("", {
296
+ ...await getUserProperties(),
297
+ referrer
298
+ });
299
+ this.startActivityListener();
300
+ return this.instance.page({
301
+ resource: "page",
302
+ identifier: properties.id
303
+ });
304
+ }
305
+ getReferrer() {
306
+ if (typeof document !== "undefined") {
307
+ const {
308
+ type,
309
+ referrer,
310
+ data = {}
311
+ } = getVisitorSource({
312
+ referrer: document.referrer,
313
+ currentUrl: window.location.href,
314
+ mapper: null
315
+ });
316
+ const dataKeys = Object.keys(data);
317
+ for (const key of dataKeys) {
318
+ if (data[key] && Array.isArray(data[key]) && data[key].length > 0) {
319
+ data[key] = data[key]?.[0];
320
+ }
321
+ }
322
+ return { type, referrer, data };
323
+ }
324
+ return { type: null, referrer: {}, data: {} };
325
+ }
326
+ startActivityListener() {
327
+ if (typeof document !== "undefined") {
328
+ return onUserActivity({
329
+ timeout: this.#IDLE_TIMEOUT,
330
+ throttle: this.#IDLE_THROTTLE,
331
+ onIdle: (activeForSeconds) => {
332
+ this.track("user.idle", {
333
+ seconds_active: activeForSeconds
334
+ });
335
+ },
336
+ onWakeUp: (idleForSeconds) => {
337
+ this.track("user.active", {
338
+ seconds_idle: idleForSeconds
339
+ });
340
+ }
341
+ });
342
+ }
343
+ return null;
344
+ }
345
+ async track(event, properties) {
346
+ if (this.instance) {
347
+ return this.instance.track(event, properties);
348
+ }
349
+ }
350
+ click = ({
351
+ properties,
352
+ target
353
+ }) => {
354
+ const label = target.innerText;
355
+ this.track("button.click", {
356
+ ...properties,
357
+ label
358
+ });
359
+ };
360
+ };
361
+
362
+ export { LevoAudience };
@@ -0,0 +1,8 @@
1
+ import type { BlogClient, IResponseMultipleV2, IResponseSingle } from "../types";
2
+ import type { LevoQuery } from "../types/levo-query";
3
+ import { LevoPlugin } from "./LevoPlugin";
4
+ export declare class LevoBlog extends LevoPlugin {
5
+ getAllBlogs(blog_key: string, data?: LevoQuery.FindQuery, options?: BlogClient.OptionParams): Promise<IResponseMultipleV2<import("../types").IPost>>;
6
+ getSingleBlog(blog_key: string, slug: string, options?: BlogClient.OptionParams): Promise<IResponseSingle<import("../types").IPost, any>>;
7
+ }
8
+ //# sourceMappingURL=LevoBlog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LevoBlog.d.ts","sourceRoot":"","sources":["../../src/plugins/LevoBlog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,mBAAmB,EACnB,eAAe,EAChB,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,qBAAa,QAAS,SAAQ,UAAU;IACtC,WAAW,CACT,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,SAAS,CAAC,SAAc,EAC9B,OAAO,CAAC,EAAE,UAAU,CAAC,YAAY;IAcnC,aAAa,CACX,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,UAAU,CAAC,YAAY;CAapC"}
@@ -0,0 +1,21 @@
1
+ import { LevoPlugin } from '../chunk-QJSKNLTV.js';
2
+
3
+ // src/plugins/LevoBlog.ts
4
+ var LevoBlog = class extends LevoPlugin {
5
+ getAllBlogs(blog_key, data = {}, options) {
6
+ return this.client.fetch.url(`/v1/blog/${blog_key}/post/query`).query({ ...options?.params || {} }).options({
7
+ headers: {
8
+ "Levo-Workspace": options?.workspace_id || ""
9
+ }
10
+ }).post(data).json();
11
+ }
12
+ getSingleBlog(blog_key, slug, options) {
13
+ return this.client.fetch.url(`/v1/blog/${blog_key}/post/${slug}`).query({ ...options?.params || {} }).options({
14
+ headers: {
15
+ "Levo-Workspace": options?.workspace_id || ""
16
+ }
17
+ }).get().json();
18
+ }
19
+ };
20
+
21
+ export { LevoBlog };
@@ -0,0 +1,24 @@
1
+ import type { WretchOptions } from "wretch";
2
+ import { LevoPlugin } from "./LevoPlugin";
3
+ import type { LevoQuery } from "../types/levo-query";
4
+ import type { IDraftEntry, ILemaCollection, IResponseMultiple, IResponseSingle } from "../types";
5
+ export declare class LevoCollection extends LevoPlugin {
6
+ getAllCollections(data?: LevoQuery.FindQuery, options?: WretchOptions): Promise<IResponseMultiple<ILemaCollection>>;
7
+ getCollectionByIDExpanded<T = ILemaCollection>(id: string, options?: WretchOptions): Promise<IResponseSingle<T, any>>;
8
+ createCollection(data: ILemaCollection): Promise<IResponseSingle<ILemaCollection, any>>;
9
+ saveCollectionData({ collection_id, data, options, }: {
10
+ collection_id: string;
11
+ data: any;
12
+ options?: WretchOptions;
13
+ }): Promise<IResponseSingle<any, any>>;
14
+ getCollectionContentList({ collection_key, page, search, limit, }: {
15
+ collection_key: string;
16
+ page?: number;
17
+ search?: string;
18
+ limit?: number;
19
+ }): Promise<IResponseMultiple<Record<string, unknown>>>;
20
+ saveDraftEntry(collection_key: string, data: any): Promise<IResponseSingle<IDraftEntry, any>>;
21
+ getDraftEntry(collection_key: string): Promise<IResponseSingle<IDraftEntry, any>>;
22
+ submitDraftEntry(collection_key: string, data: any): Promise<IResponseSingle<IDraftEntry, any>>;
23
+ }
24
+ //# sourceMappingURL=LevoCollection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LevoCollection.d.ts","sourceRoot":"","sources":["../../src/plugins/LevoCollection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EACV,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,eAAe,EAChB,MAAM,UAAU,CAAC;AAElB,qBAAa,cAAe,SAAQ,UAAU;IAC5C,iBAAiB,CAAC,IAAI,GAAE,SAAS,CAAC,SAAc,EAAE,OAAO,CAAC,EAAE,aAAa;IAUzE,yBAAyB,CAAC,CAAC,GAAG,eAAe,EAC3C,EAAE,EAAE,MAAM,EACV,OAAO,GAAE,aAAkB;IAS7B,gBAAgB,CAAC,IAAI,EAAE,eAAe;IAOtC,kBAAkB,CAAC,EACjB,aAAa,EACb,IAAI,EACJ,OAAY,GACb,EAAE;QACD,aAAa,EAAE,MAAM,CAAC;QACtB,IAAI,EAAE,GAAG,CAAC;QACV,OAAO,CAAC,EAAE,aAAa,CAAC;KACzB;IAQD,wBAAwB,CAAC,EACvB,cAAc,EACd,IAAI,EACJ,MAAM,EACN,KAAU,GACX,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;QACvB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB;IAYD,cAAc,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG;IAOhD,aAAa,CAAC,cAAc,EAAE,MAAM;IAOpC,gBAAgB,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG;CAMnD"}
@@ -0,0 +1,49 @@
1
+ import { LevoPlugin } from '../chunk-QJSKNLTV.js';
2
+
3
+ // src/plugins/LevoCollection.ts
4
+ var LevoCollection = class extends LevoPlugin {
5
+ getAllCollections(data = {}, options) {
6
+ let request = this.client.fetch.url("/v1/bevy/collection/query");
7
+ if (options) {
8
+ request = request.options(options);
9
+ }
10
+ return request.post(data).json();
11
+ }
12
+ getCollectionByIDExpanded(id, options = {}) {
13
+ return this.client.fetch.url(`/v1/bevy/collection/${id}`).options(options).get().json();
14
+ }
15
+ createCollection(data) {
16
+ return this.client.fetch.url("/v1/bevy/collection").post(data).json();
17
+ }
18
+ saveCollectionData({
19
+ collection_id,
20
+ data,
21
+ options = {}
22
+ }) {
23
+ return this.client.fetch.url(`/v1/bevy/content/${collection_id}`).options(options).post(data).json();
24
+ }
25
+ getCollectionContentList({
26
+ collection_key,
27
+ page,
28
+ search,
29
+ limit = 10
30
+ }) {
31
+ return this.client.fetch.url(`/v1/bevy/content/${collection_key}/query`).post({
32
+ page,
33
+ limit,
34
+ search
35
+ }).json();
36
+ }
37
+ // Collection Draft APIs
38
+ saveDraftEntry(collection_key, data) {
39
+ return this.client.fetch.url(`/v1/bevy/content/${collection_key}/save-entry`).post(data).json();
40
+ }
41
+ getDraftEntry(collection_key) {
42
+ return this.client.fetch.url(`/v1/bevy/content/${collection_key}/list-entry`).get().json();
43
+ }
44
+ submitDraftEntry(collection_key, data) {
45
+ return this.client.fetch.url(`/v1/bevy/content/${collection_key}/submit-entry`).post(data).json();
46
+ }
47
+ };
48
+
49
+ export { LevoCollection };
@@ -0,0 +1,8 @@
1
+ import logger from "loglevel";
2
+ import { LevoPlugin } from "./LevoPlugin";
3
+ import type LevoClient from "../LevoClient";
4
+ export declare class LevoLogger extends LevoPlugin {
5
+ logger: logger.RootLogger;
6
+ constructor(props: LevoClient);
7
+ }
8
+ //# sourceMappingURL=LevoLogger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LevoLogger.d.ts","sourceRoot":"","sources":["../../src/plugins/LevoLogger.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,UAAU,CAAC;AAE9B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,UAAU,MAAM,eAAe,CAAC;AAE5C,qBAAa,UAAW,SAAQ,UAAU;IACxC,MAAM,EAAE,MAAM,CAAC,UAAU,CAAU;gBAEvB,KAAK,EAAE,UAAU;CAwB9B"}
@@ -0,0 +1,23 @@
1
+ import { LevoPlugin } from '../chunk-QJSKNLTV.js';
2
+ import logger from 'loglevel';
3
+ import wretch from 'wretch';
4
+
5
+ var LevoLogger = class extends LevoPlugin {
6
+ logger = logger;
7
+ constructor(props) {
8
+ super(props);
9
+ logger.setLevel(
10
+ this.client.NODE_ENV === "production" ? logger.levels.INFO : logger.levels.DEBUG
11
+ );
12
+ logger.methodFactory = (methodName, logLevel, loggerName) => (message, attributes = {}) => {
13
+ wretch().url(`${this.client.apiUrl}/v1/apm/logs/json`).post({
14
+ timestamp: (/* @__PURE__ */ new Date()).toISOString(),
15
+ level: methodName,
16
+ message,
17
+ ...attributes
18
+ }).res().catch((e) => console.error(e));
19
+ };
20
+ }
21
+ };
22
+
23
+ export { LevoLogger };
@@ -0,0 +1,9 @@
1
+ import type { WretchOptions } from "wretch";
2
+ import type { IMedia, IResponseMultiple, IResponseMultipleV2 } from "../types";
3
+ import type { LevoQuery } from "../types/levo-query";
4
+ import { LevoPlugin } from "./LevoPlugin";
5
+ export declare class LevoMedia extends LevoPlugin {
6
+ mediaBulkUpload: (formData: FormData, options?: WretchOptions) => Promise<IResponseMultiple<IMedia>>;
7
+ getAllMedia: (data?: LevoQuery.FindQuery) => Promise<IResponseMultipleV2<IMedia>>;
8
+ }
9
+ //# sourceMappingURL=LevoMedia.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LevoMedia.d.ts","sourceRoot":"","sources":["../../src/plugins/LevoMedia.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC/E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,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,0CAK5C;CACH"}
@@ -0,0 +1,13 @@
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 };
@@ -0,0 +1,40 @@
1
+ import type { WretchOptions } from "wretch";
2
+ import { LevoPlugin } from "./LevoPlugin";
3
+ import type { ILevoMembership } from "../types/membership";
4
+ export declare class LevoMembership extends LevoPlugin {
5
+ #private;
6
+ /**
7
+ * The Account of the Currently Logged in Member
8
+ */
9
+ account: ILevoMembership.Account | null;
10
+ /**
11
+ * Get the list of URL for OAuth providers to redirect to
12
+ * This can be used in the OAuth Buttons like "Continue with Google" etc.
13
+ * The URL contains the current page's URL and the current workspace
14
+ *
15
+ * @example
16
+ * const urls = await LevoMembership.getOAuthURL();
17
+ * console.log(urls.google)
18
+ *
19
+ * @returns {ILevoMembership.OAuthURLList}
20
+ */
21
+ getOAuthURL(options?: WretchOptions): Promise<ILevoMembership.OAuthURLList>;
22
+ /**
23
+ * Sign out the current user's account
24
+ * @returns ILevoMembership.Account | null
25
+ */
26
+ signOut(options?: WretchOptions): Promise<ILevoMembership.Account | null>;
27
+ /**
28
+ * Get the current user's account
29
+ * @returns ILevoMembership.Account | null
30
+ */
31
+ getMe(options?: WretchOptions): Promise<ILevoMembership.Account | null>;
32
+ updateMe(data: ILevoMembership.Request.UpdateMe, options?: WretchOptions): Promise<ILevoMembership.Account | null>;
33
+ isLoggedIn(options?: WretchOptions): Promise<boolean>;
34
+ requestMagicLink(data: ILevoMembership.Request.RequestMagicLink, options?: WretchOptions): Promise<Pick<ILevoMembership.Otp, "_id" | "content">>;
35
+ requestOtp(data: ILevoMembership.Request.RequestOtp, options?: WretchOptions): Promise<Pick<ILevoMembership.Otp, "_id" | "content">>;
36
+ signInWithOtp(data: ILevoMembership.Request.SignInWithOtp, options?: WretchOptions): Promise<ILevoMembership.Account | null>;
37
+ signInWithPassword(data: ILevoMembership.Request.SignInWithPassword, options?: WretchOptions): Promise<ILevoMembership.Account | null>;
38
+ signUpWithPassword(data: ILevoMembership.Request.SignUpWithPassword, options?: WretchOptions): Promise<ILevoMembership.Account | null>;
39
+ }
40
+ //# sourceMappingURL=LevoMembership.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LevoMembership.d.ts","sourceRoot":"","sources":["../../src/plugins/LevoMembership.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAE5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAO3D,qBAAa,cAAe,SAAQ,UAAU;;IAC5C;;OAEG;IACH,OAAO,EAAE,eAAe,CAAC,OAAO,GAAG,IAAI,CAAQ;IAQ/C;;;;;;;;;;OAUG;IACG,WAAW,CACf,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,eAAe,CAAC,YAAY,CAAC;IAmDxC;;;OAGG;IACG,OAAO,CACX,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC;IAwB1C;;;OAGG;IACG,KAAK,CACT,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC;IAyBpC,QAAQ,CACZ,IAAI,EAAE,eAAe,CAAC,OAAO,CAAC,QAAQ,EACtC,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC;IAyBpC,UAAU,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,OAAO,CAAC;IAKzD,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;IAsBlD,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;IAelD,aAAa,CACjB,IAAI,EAAE,eAAe,CAAC,OAAO,CAAC,aAAa,EAC3C,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC;IAepC,kBAAkB,CACtB,IAAI,EAAE,eAAe,CAAC,OAAO,CAAC,kBAAkB,EAChD,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC;IAepC,kBAAkB,CACtB,IAAI,EAAE,eAAe,CAAC,OAAO,CAAC,kBAAkB,EAChD,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC;CAc3C"}