@flexbe/sdk 0.2.39 → 0.2.41

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 (42) hide show
  1. package/dist/browser/client/pages.js +2 -0
  2. package/dist/browser/index.js +0 -2
  3. package/dist/browser/types/index.js +4 -0
  4. package/dist/browser/types/pages.js +14 -0
  5. package/dist/cjs/client/pages.js +2 -0
  6. package/dist/cjs/index.js +0 -2
  7. package/dist/cjs/types/index.js +18 -0
  8. package/dist/cjs/types/pages.js +15 -1
  9. package/dist/esm/client/pages.js +2 -0
  10. package/dist/esm/index.js +0 -2
  11. package/dist/esm/types/index.js +4 -0
  12. package/dist/esm/types/pages.js +14 -0
  13. package/dist/types/client/client.d.ts +2 -1
  14. package/dist/types/client/pages.d.ts +2 -0
  15. package/dist/types/index.d.ts +0 -2
  16. package/dist/types/types/animations.d.ts +61 -0
  17. package/dist/types/types/index.d.ts +4 -0
  18. package/dist/types/types/pages.d.ts +102 -58
  19. package/package.json +2 -2
  20. package/dist/browser/client/auth.js +0 -74
  21. package/dist/cjs/client/auth.js +0 -63
  22. package/dist/client/flexbe-client.d.ts +0 -13
  23. package/dist/client/flexbe-client.js +0 -62
  24. package/dist/esm/client/auth.js +0 -59
  25. package/dist/index.d.ts +0 -2
  26. package/dist/index.js +0 -18
  27. package/dist/src/client/flexbe-client.d.ts +0 -20
  28. package/dist/src/client/flexbe-client.js +0 -86
  29. package/dist/src/client/pages-client.d.ts +0 -14
  30. package/dist/src/client/pages-client.js +0 -23
  31. package/dist/src/index.d.ts +0 -4
  32. package/dist/src/index.js +0 -20
  33. package/dist/src/types/index.d.ts +0 -23
  34. package/dist/src/types/pages.d.ts +0 -41
  35. package/dist/src/types/pages.js +0 -19
  36. package/dist/test/client/flexbe-client.test.js +0 -38
  37. package/dist/test/client/pages-client.test.js +0 -82
  38. package/dist/types/client/auth.d.ts +0 -11
  39. package/dist/types/index.js +0 -2
  40. /package/dist/{test/client/flexbe-client.test.d.ts → browser/types/animations.js} +0 -0
  41. /package/dist/{src/types/index.js → cjs/types/animations.js} +0 -0
  42. /package/dist/{test/client/pages-client.test.d.ts → esm/types/animations.js} +0 -0
@@ -240,6 +240,7 @@ export class Pages {
240
240
  });
241
241
  }
242
242
  /**
243
+ * @deprecated This method is deprecated and will be removed in a future release. Use the new page version API instead.
243
244
  * Get page content
244
245
  * @param pageId - ID of the page to get content for
245
246
  * @returns The page content
@@ -256,6 +257,7 @@ export class Pages {
256
257
  });
257
258
  }
258
259
  /**
260
+ * @deprecated This method is deprecated and will be removed in a future release. Use the new page version API instead.
259
261
  * Update page content
260
262
  * @param pageId - ID of the page to update content for
261
263
  * @param content - The new page content (excluding versionId and versionTime)
@@ -1,5 +1,3 @@
1
1
  export * from './client/client';
2
2
  export * from './client/pages';
3
3
  export * from './types';
4
- export * from './types/pages';
5
- export * from './types/stat';
@@ -1,3 +1,7 @@
1
+ export * from './meta';
2
+ export * from './animations';
3
+ export * from './pages';
4
+ export * from './stat';
1
5
  export var FlexbeAuthType;
2
6
  (function (FlexbeAuthType) {
3
7
  FlexbeAuthType["API_KEY"] = "apiKey";
@@ -15,3 +15,17 @@ export var PageStatus;
15
15
  PageStatus["REMOVED"] = "removed";
16
16
  PageStatus["DELETED"] = "deleted";
17
17
  })(PageStatus || (PageStatus = {}));
18
+ export var PageEntityType;
19
+ (function (PageEntityType) {
20
+ PageEntityType["Block"] = "block";
21
+ PageEntityType["Modal"] = "modal";
22
+ PageEntityType["Element"] = "element";
23
+ PageEntityType["Widget"] = "widget";
24
+ PageEntityType["Layout"] = "layout";
25
+ })(PageEntityType || (PageEntityType = {}));
26
+ export var PageEntityHidden;
27
+ (function (PageEntityHidden) {
28
+ PageEntityHidden["All"] = "all";
29
+ PageEntityHidden["Mobile"] = "mobile";
30
+ PageEntityHidden["Desktop"] = "desktop";
31
+ })(PageEntityHidden || (PageEntityHidden = {}));
@@ -215,6 +215,7 @@ class Pages {
215
215
  return response.data;
216
216
  }
217
217
  /**
218
+ * @deprecated This method is deprecated and will be removed in a future release. Use the new page version API instead.
218
219
  * Get page content
219
220
  * @param pageId - ID of the page to get content for
220
221
  * @returns The page content
@@ -229,6 +230,7 @@ class Pages {
229
230
  return response.data;
230
231
  }
231
232
  /**
233
+ * @deprecated This method is deprecated and will be removed in a future release. Use the new page version API instead.
232
234
  * Update page content
233
235
  * @param pageId - ID of the page to update content for
234
236
  * @param content - The new page content (excluding versionId and versionTime)
package/dist/cjs/index.js CHANGED
@@ -17,5 +17,3 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./client/client"), exports);
18
18
  __exportStar(require("./client/pages"), exports);
19
19
  __exportStar(require("./types"), exports);
20
- __exportStar(require("./types/pages"), exports);
21
- __exportStar(require("./types/stat"), exports);
@@ -1,6 +1,24 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
2
16
  Object.defineProperty(exports, "__esModule", { value: true });
3
17
  exports.TimeoutException = exports.ServerException = exports.UnauthorizedException = exports.BadRequestException = exports.ForbiddenException = exports.NotFoundException = exports.FlexbeAuthType = void 0;
18
+ __exportStar(require("./meta"), exports);
19
+ __exportStar(require("./animations"), exports);
20
+ __exportStar(require("./pages"), exports);
21
+ __exportStar(require("./stat"), exports);
4
22
  var FlexbeAuthType;
5
23
  (function (FlexbeAuthType) {
6
24
  FlexbeAuthType["API_KEY"] = "apiKey";
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PageStatus = exports.PageType = void 0;
3
+ exports.PageEntityHidden = exports.PageEntityType = exports.PageStatus = exports.PageType = void 0;
4
4
  var PageType;
5
5
  (function (PageType) {
6
6
  PageType["PAGE"] = "page";
@@ -18,3 +18,17 @@ var PageStatus;
18
18
  PageStatus["REMOVED"] = "removed";
19
19
  PageStatus["DELETED"] = "deleted";
20
20
  })(PageStatus || (exports.PageStatus = PageStatus = {}));
21
+ var PageEntityType;
22
+ (function (PageEntityType) {
23
+ PageEntityType["Block"] = "block";
24
+ PageEntityType["Modal"] = "modal";
25
+ PageEntityType["Element"] = "element";
26
+ PageEntityType["Widget"] = "widget";
27
+ PageEntityType["Layout"] = "layout";
28
+ })(PageEntityType || (exports.PageEntityType = PageEntityType = {}));
29
+ var PageEntityHidden;
30
+ (function (PageEntityHidden) {
31
+ PageEntityHidden["All"] = "all";
32
+ PageEntityHidden["Mobile"] = "mobile";
33
+ PageEntityHidden["Desktop"] = "desktop";
34
+ })(PageEntityHidden || (exports.PageEntityHidden = PageEntityHidden = {}));
@@ -212,6 +212,7 @@ export class Pages {
212
212
  return response.data;
213
213
  }
214
214
  /**
215
+ * @deprecated This method is deprecated and will be removed in a future release. Use the new page version API instead.
215
216
  * Get page content
216
217
  * @param pageId - ID of the page to get content for
217
218
  * @returns The page content
@@ -226,6 +227,7 @@ export class Pages {
226
227
  return response.data;
227
228
  }
228
229
  /**
230
+ * @deprecated This method is deprecated and will be removed in a future release. Use the new page version API instead.
229
231
  * Update page content
230
232
  * @param pageId - ID of the page to update content for
231
233
  * @param content - The new page content (excluding versionId and versionTime)
package/dist/esm/index.js CHANGED
@@ -1,5 +1,3 @@
1
1
  export * from './client/client';
2
2
  export * from './client/pages';
3
3
  export * from './types';
4
- export * from './types/pages';
5
- export * from './types/stat';
@@ -1,3 +1,7 @@
1
+ export * from './meta';
2
+ export * from './animations';
3
+ export * from './pages';
4
+ export * from './stat';
1
5
  export var FlexbeAuthType;
2
6
  (function (FlexbeAuthType) {
3
7
  FlexbeAuthType["API_KEY"] = "apiKey";
@@ -15,3 +15,17 @@ export var PageStatus;
15
15
  PageStatus["REMOVED"] = "removed";
16
16
  PageStatus["DELETED"] = "deleted";
17
17
  })(PageStatus || (PageStatus = {}));
18
+ export var PageEntityType;
19
+ (function (PageEntityType) {
20
+ PageEntityType["Block"] = "block";
21
+ PageEntityType["Modal"] = "modal";
22
+ PageEntityType["Element"] = "element";
23
+ PageEntityType["Widget"] = "widget";
24
+ PageEntityType["Layout"] = "layout";
25
+ })(PageEntityType || (PageEntityType = {}));
26
+ export var PageEntityHidden;
27
+ (function (PageEntityHidden) {
28
+ PageEntityHidden["All"] = "all";
29
+ PageEntityHidden["Mobile"] = "mobile";
30
+ PageEntityHidden["Desktop"] = "desktop";
31
+ })(PageEntityHidden || (PageEntityHidden = {}));
@@ -1,10 +1,11 @@
1
+ import { ApiClient } from './api-client';
1
2
  import { MetaApi } from './meta-api';
2
3
  import { SiteApi } from './site-api';
3
4
  import type { FlexbeConfig } from '../types';
4
5
  export declare class FlexbeClient {
5
6
  private readonly config;
6
- private readonly api;
7
7
  private readonly siteApis;
8
+ readonly api: ApiClient;
8
9
  readonly meta: MetaApi;
9
10
  constructor(config?: Partial<FlexbeConfig>);
10
11
  /**
@@ -170,6 +170,7 @@ export declare class Pages {
170
170
  */
171
171
  bulkDeletePages(ids: number[]): Promise<BulkDeleteResponse>;
172
172
  /**
173
+ * @deprecated This method is deprecated and will be removed in a future release. Use the new page version API instead.
173
174
  * Get page content
174
175
  * @param pageId - ID of the page to get content for
175
176
  * @returns The page content
@@ -181,6 +182,7 @@ export declare class Pages {
181
182
  */
182
183
  getPageContent(pageId: number): Promise<PageContent>;
183
184
  /**
185
+ * @deprecated This method is deprecated and will be removed in a future release. Use the new page version API instead.
184
186
  * Update page content
185
187
  * @param pageId - ID of the page to update content for
186
188
  * @param content - The new page content (excluding versionId and versionTime)
@@ -1,5 +1,3 @@
1
1
  export * from './client/client';
2
2
  export * from './client/pages';
3
3
  export * from './types';
4
- export * from './types/pages';
5
- export * from './types/stat';
@@ -0,0 +1,61 @@
1
+ export type PageEntityAnimationAdaptiveMode = 'inherited' | 'redefined' | 'disabled';
2
+ export type PageEntityAnimationRetriggerBehavior = 'reverse' | 'restart' | 'pause' | 'reset' | 'none';
3
+ export type PageEntityAnimationPlayMode = 'normal' | 'bounce';
4
+ export type PageEntityAnimationReverseSeekBehavior = 'seek' | 'stop';
5
+ export type PageEntityAnimationSeekAxis = 'x' | 'y';
6
+ export type PageEntityAnimationTriggerEvent = 'start' | 'complete' | 'loopstart' | 'loopcomplete' | 'pause' | 'unpause';
7
+ export type PageEntityAnimationInteractionType = 'none' | 'screen' | 'scroll' | 'click' | 'hover' | 'hold' | 'trigger' | 'custom';
8
+ export type PageEntityAnimationIntersectionLine = 'top' | 'center' | 'bottom';
9
+ export type PageEntityAnimationIntersectionLineOffsetUnit = 'px' | '%';
10
+ export interface PageEntityAnimationStep {
11
+ id: string;
12
+ name: string;
13
+ distance: number;
14
+ animationParams: {
15
+ clipPath?: string;
16
+ clipPathEnabled?: boolean;
17
+ skewEnabled?: boolean;
18
+ seekEasing?: string;
19
+ opacity?: string | number;
20
+ duration?: number;
21
+ rotate?: number;
22
+ easing?: string;
23
+ translateX?: string;
24
+ translateY?: string;
25
+ scaleX?: number;
26
+ scaleY?: number;
27
+ skewX?: string;
28
+ skewY?: string;
29
+ };
30
+ }
31
+ export interface PageEntityAnimationInteractionSettings {
32
+ intersectionLine?: PageEntityAnimationIntersectionLine;
33
+ intersectionLineOffset?: string;
34
+ retriggerBehavior?: PageEntityAnimationRetriggerBehavior;
35
+ loop?: number;
36
+ playMode?: PageEntityAnimationPlayMode;
37
+ seekMode?: string;
38
+ seekAxis?: PageEntityAnimationSeekAxis;
39
+ seekSmoothing?: number;
40
+ triggerElements?: string[];
41
+ triggerAnimationItem?: string;
42
+ triggerEvent?: PageEntityAnimationTriggerEvent;
43
+ fixed?: boolean;
44
+ }
45
+ export interface PageEntityAnimationDeviceConfig {
46
+ enabled: boolean;
47
+ inherit: boolean | string;
48
+ animationType?: string;
49
+ interactionType?: PageEntityAnimationInteractionType;
50
+ interactionSettings?: PageEntityAnimationInteractionSettings;
51
+ steps: PageEntityAnimationStep[];
52
+ }
53
+ export interface PageEntityAnimationResponsive {
54
+ desktop?: PageEntityAnimationDeviceConfig;
55
+ mobile?: Partial<PageEntityAnimationDeviceConfig>;
56
+ }
57
+ export interface PageEntityAnimation {
58
+ id?: string | number;
59
+ responsive: PageEntityAnimationResponsive;
60
+ [key: string]: any;
61
+ }
@@ -1,3 +1,7 @@
1
+ export * from './meta';
2
+ export * from './animations';
3
+ export * from './pages';
4
+ export * from './stat';
1
5
  export declare enum FlexbeAuthType {
2
6
  API_KEY = "apiKey",
3
7
  BEARER = "bearer"
@@ -1,3 +1,4 @@
1
+ import type { PageEntityAnimation } from './animations';
1
2
  import type { FlexbeBulkError, Pagination } from './index';
2
3
  export interface GridConfig {
3
4
  color?: string;
@@ -232,35 +233,81 @@ export interface StylesDataRaw {
232
233
  siteTextStyles: TextStyleItem[];
233
234
  pageTextStyles?: TextStyleItem[];
234
235
  }
235
- export interface PageBlock {
236
- update_time: number;
237
- data: Record<string, unknown>;
236
+ export declare enum PageEntityType {
237
+ Block = "block",
238
+ Modal = "modal",
239
+ Element = "element",
240
+ Widget = "widget",
241
+ Layout = "layout"
242
+ }
243
+ export declare enum PageEntityHidden {
244
+ All = "all",
245
+ Mobile = "mobile",
246
+ Desktop = "desktop"
247
+ }
248
+ export type PageEntityEvent = {
249
+ event: string;
250
+ action: string;
251
+ action_code: string;
252
+ onlyFirst: boolean;
253
+ state: 'all' | 'in' | 'out';
254
+ [key: string]: any;
255
+ };
256
+ export type PageEntityData<T = Record<string, unknown>> = T;
257
+ export type PageEntityMultiVars<T> = Record<string, {
258
+ data: PageEntityData<T>;
259
+ }>;
260
+ export interface PageEntity<T = Record<string, unknown>> {
238
261
  id: string;
239
- is: string;
262
+ is: PageEntityType;
240
263
  template_id: string;
264
+ mod_id?: string;
265
+ source_id?: string;
266
+ update_time: number;
267
+ data: T;
268
+ p_id?: number;
269
+ untouched?: boolean;
270
+ hidden?: 'none' | 'mobile' | 'desktop';
271
+ className?: string;
272
+ modals?: PageModal[];
273
+ animation?: PageEntityAnimation;
274
+ events?: PageEntityEvent[];
275
+ multidata?: {
276
+ enabled: boolean;
277
+ vars: PageEntityMultiVars<T>;
278
+ };
279
+ }
280
+ export interface PageBlock<T = Record<string, unknown>> extends PageEntity<T> {
281
+ is: PageEntityType.Block;
241
282
  refPageId?: number;
242
- p_id: number;
243
283
  aboveTheFold?: boolean;
284
+ children?: Array<PageBlock | PageElement>;
285
+ multisection?: {
286
+ enabled: boolean;
287
+ main_var: string;
288
+ vars: PageEntityMultiVars<T>;
289
+ };
290
+ geolanding?: {
291
+ enabled: boolean;
292
+ vars: Record<string, {
293
+ city: string;
294
+ data: PageEntityData<T>;
295
+ }>;
296
+ };
244
297
  }
245
- export interface PageElement {
246
- update_time: number;
247
- data: Record<string, unknown>;
248
- id: string;
249
- is: string;
250
- template_id: string;
251
- mod_id?: string;
252
- p_id: number;
253
- aboveTheFold?: boolean;
254
- hidden?: string;
298
+ export interface PageWidget<T = Record<string, unknown>> extends PageEntity<T> {
299
+ is: PageEntityType.Widget;
300
+ children?: PageElement[];
255
301
  }
256
- export interface PageWidget {
257
- update_time: number;
258
- data: Record<string, unknown>;
259
- id: string;
260
- is: string;
261
- template_id: string;
262
- untouched?: boolean;
263
- p_id: number;
302
+ export interface PageModal<T = Record<string, unknown>> extends PageEntity<T> {
303
+ is: PageEntityType.Modal;
304
+ screenshot: ImageObj | null;
305
+ children?: PageElement[];
306
+ }
307
+ export interface PageElement<T = Record<string, unknown>> extends PageEntity<T> {
308
+ is: PageEntityType.Element;
309
+ aboveTheFold?: boolean;
310
+ children?: PageElement[];
264
311
  }
265
312
  export interface PageABTest {
266
313
  id: number;
@@ -268,36 +315,6 @@ export interface PageABTest {
268
315
  b: string;
269
316
  isActive: boolean;
270
317
  }
271
- export interface PageModal {
272
- update_time: number;
273
- data: Record<string, unknown>;
274
- id: string;
275
- is: string;
276
- template_id: string;
277
- mod_id: string;
278
- p_id: number;
279
- screenshot: ImageObj | null;
280
- }
281
- export interface PageContent {
282
- versionId: number;
283
- versionTime: number;
284
- blocks: PageBlock[];
285
- modals: PageModal[];
286
- elements: PageElement[];
287
- widgets: PageWidget[];
288
- codes: string[];
289
- settings: {
290
- background?: PageBackground;
291
- textStyles?: TextStyleItem[];
292
- responsive?: string | boolean;
293
- } | null;
294
- abtests: PageABTest[];
295
- assets: {
296
- images: number[];
297
- files: string[];
298
- };
299
- }
300
- export type UpdatePageContentParams = Omit<PageContent, 'versionId' | 'versionTime'>;
301
318
  export interface PageHistoryItem {
302
319
  id: number;
303
320
  createdAt: string;
@@ -322,13 +339,40 @@ export interface PageDataStructure {
322
339
  blocks: PageBlock[];
323
340
  modals: PageModal[];
324
341
  widgets: PageWidget[];
325
- codes: string[];
326
- abtests: PageABTest[];
327
- background: PageBackground;
328
- textStyles: TextStyleItem[];
329
- responsive: string | boolean;
342
+ abtests?: PageABTest[];
343
+ codes?: string[];
344
+ textStyles?: TextStyleItem[];
345
+ background?: PageBackground;
346
+ responsive?: 'auto' | boolean;
330
347
  }
331
348
  export interface PageVersionDataResponse extends PageVersionItem {
332
349
  data: PageDataStructure;
350
+ abtests?: PageABTest[];
351
+ }
352
+ /**
353
+ * @deprecated This type is deprecated and will be removed in a future release. Use PageDataStructure or related types instead.
354
+ */
355
+ export interface PageContent {
356
+ versionId: number;
357
+ versionTime: number;
358
+ blocks: PageBlock[];
359
+ modals: PageModal[];
360
+ elements: PageElement[];
361
+ widgets: PageWidget[];
362
+ codes: string[];
363
+ settings: {
364
+ background?: PageBackground;
365
+ textStyles?: TextStyleItem[];
366
+ responsive?: string | boolean;
367
+ } | null;
368
+ abtests: PageABTest[];
369
+ assets: {
370
+ images: number[];
371
+ files: string[];
372
+ };
333
373
  }
374
+ /**
375
+ * @deprecated This type is deprecated and will be removed in a future release. Use PageDataStructure or related types instead.
376
+ */
377
+ export type UpdatePageContentParams = Omit<PageContent, 'versionId' | 'versionTime'>;
334
378
  export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flexbe/sdk",
3
- "version": "0.2.39",
3
+ "version": "0.2.41",
4
4
  "description": "TypeScript SDK for Flexbe API",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -23,7 +23,7 @@
23
23
  "lint": "eslint src --ext .ts",
24
24
  "format": "prettier --write \"src/**/*.ts\"",
25
25
  "prepare": "npm run build",
26
- "prepublishOnly": "npm test && npm run lint"
26
+ "prepublishOnly_": "npm test && npm run lint"
27
27
  },
28
28
  "keywords": [
29
29
  "flexbe",
@@ -1,74 +0,0 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
- import { FlexbeAuthType } from '../types';
11
- import { TokenManager } from './token-manager';
12
- export class FlexbeAuth {
13
- constructor(config) {
14
- this.initialized = false;
15
- this.initializationPromise = null;
16
- this.config = config;
17
- this.tokenManager = TokenManager.getInstance();
18
- if (this.config.authType === FlexbeAuthType.BEARER) {
19
- // Start initialization but don't wait for it
20
- this.initializationPromise = this.initialize();
21
- }
22
- else {
23
- this.initialized = true;
24
- }
25
- }
26
- initialize() {
27
- return __awaiter(this, void 0, void 0, function* () {
28
- try {
29
- const token = yield this.tokenManager.getToken();
30
- this.initialized = !!token;
31
- }
32
- catch (error) {
33
- console.error('Failed to initialize auth:', error);
34
- this.initialized = false;
35
- }
36
- finally {
37
- this.initializationPromise = null;
38
- }
39
- });
40
- }
41
- ensureInitialized() {
42
- return __awaiter(this, void 0, void 0, function* () {
43
- if (this.config.authType !== FlexbeAuthType.BEARER || this.initialized) {
44
- return;
45
- }
46
- // If initialization is in progress, wait for it
47
- if (this.initializationPromise) {
48
- yield this.initializationPromise;
49
- return;
50
- }
51
- // If not initialized and no initialization in progress, start one
52
- yield this.initialize();
53
- });
54
- }
55
- getAuthHeaders() {
56
- return __awaiter(this, void 0, void 0, function* () {
57
- yield this.ensureInitialized();
58
- const headers = {
59
- 'Content-Type': 'application/json',
60
- };
61
- if (this.config.authType === FlexbeAuthType.API_KEY) {
62
- headers['x-api-key'] = this.config.apiKey;
63
- }
64
- else if (this.config.authType === FlexbeAuthType.BEARER) {
65
- const token = yield this.tokenManager.getToken();
66
- if (!token) {
67
- throw new Error('No valid bearer token available');
68
- }
69
- headers['Authorization'] = `Bearer ${token}`;
70
- }
71
- return headers;
72
- });
73
- }
74
- }
@@ -1,63 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FlexbeAuth = void 0;
4
- const types_1 = require("../types");
5
- const token_manager_1 = require("./token-manager");
6
- class FlexbeAuth {
7
- constructor(config) {
8
- this.initialized = false;
9
- this.initializationPromise = null;
10
- this.config = config;
11
- this.tokenManager = token_manager_1.TokenManager.getInstance();
12
- if (this.config.authType === types_1.FlexbeAuthType.BEARER) {
13
- // Start initialization but don't wait for it
14
- this.initializationPromise = this.initialize();
15
- }
16
- else {
17
- this.initialized = true;
18
- }
19
- }
20
- async initialize() {
21
- try {
22
- const token = await this.tokenManager.getToken();
23
- this.initialized = !!token;
24
- }
25
- catch (error) {
26
- console.error('Failed to initialize auth:', error);
27
- this.initialized = false;
28
- }
29
- finally {
30
- this.initializationPromise = null;
31
- }
32
- }
33
- async ensureInitialized() {
34
- if (this.config.authType !== types_1.FlexbeAuthType.BEARER || this.initialized) {
35
- return;
36
- }
37
- // If initialization is in progress, wait for it
38
- if (this.initializationPromise) {
39
- await this.initializationPromise;
40
- return;
41
- }
42
- // If not initialized and no initialization in progress, start one
43
- await this.initialize();
44
- }
45
- async getAuthHeaders() {
46
- await this.ensureInitialized();
47
- const headers = {
48
- 'Content-Type': 'application/json',
49
- };
50
- if (this.config.authType === types_1.FlexbeAuthType.API_KEY) {
51
- headers['x-api-key'] = this.config.apiKey;
52
- }
53
- else if (this.config.authType === types_1.FlexbeAuthType.BEARER) {
54
- const token = await this.tokenManager.getToken();
55
- if (!token) {
56
- throw new Error('No valid bearer token available');
57
- }
58
- headers['Authorization'] = `Bearer ${token}`;
59
- }
60
- return headers;
61
- }
62
- }
63
- exports.FlexbeAuth = FlexbeAuth;
@@ -1,13 +0,0 @@
1
- import { AxiosRequestConfig } from 'axios';
2
- import { FlexbeConfig, FlexbeResponse } from '../types';
3
- export declare class FlexbeClient {
4
- private readonly client;
5
- private readonly config;
6
- constructor(config: FlexbeConfig);
7
- private setupInterceptors;
8
- protected request<T>(config: AxiosRequestConfig): Promise<FlexbeResponse<T>>;
9
- protected get<T>(url: string, config?: AxiosRequestConfig): Promise<FlexbeResponse<T>>;
10
- protected post<T>(url: string, data?: unknown, config?: AxiosRequestConfig): Promise<FlexbeResponse<T>>;
11
- protected put<T>(url: string, data?: unknown, config?: AxiosRequestConfig): Promise<FlexbeResponse<T>>;
12
- protected delete<T>(url: string, config?: AxiosRequestConfig): Promise<FlexbeResponse<T>>;
13
- }
@@ -1,62 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.FlexbeClient = void 0;
7
- const axios_1 = __importDefault(require("axios"));
8
- class FlexbeClient {
9
- constructor(config) {
10
- this.config = {
11
- baseUrl: config.baseUrl || 'https://api.flexbe.com',
12
- timeout: config.timeout || 30000,
13
- ...config,
14
- };
15
- this.client = axios_1.default.create({
16
- baseURL: this.config.baseUrl,
17
- timeout: this.config.timeout,
18
- headers: {
19
- 'Authorization': `Bearer ${this.config.apiKey}`,
20
- 'Content-Type': 'application/json',
21
- },
22
- });
23
- this.setupInterceptors();
24
- }
25
- setupInterceptors() {
26
- this.client.interceptors.response.use((response) => response, (error) => {
27
- const flexbeError = {
28
- message: error.response?.data?.message || error.message,
29
- code: error.response?.data?.code,
30
- status: error.response?.status,
31
- details: error.response?.data?.details,
32
- };
33
- return Promise.reject(flexbeError);
34
- });
35
- }
36
- async request(config) {
37
- try {
38
- const response = await this.client.request(config);
39
- return {
40
- data: response.data,
41
- status: response.status,
42
- statusText: response.statusText,
43
- };
44
- }
45
- catch (error) {
46
- throw error;
47
- }
48
- }
49
- get(url, config) {
50
- return this.request({ ...config, method: 'GET', url });
51
- }
52
- post(url, data, config) {
53
- return this.request({ ...config, method: 'POST', url, data });
54
- }
55
- put(url, data, config) {
56
- return this.request({ ...config, method: 'PUT', url, data });
57
- }
58
- delete(url, config) {
59
- return this.request({ ...config, method: 'DELETE', url });
60
- }
61
- }
62
- exports.FlexbeClient = FlexbeClient;
@@ -1,59 +0,0 @@
1
- import { FlexbeAuthType } from '../types';
2
- import { TokenManager } from './token-manager';
3
- export class FlexbeAuth {
4
- constructor(config) {
5
- this.initialized = false;
6
- this.initializationPromise = null;
7
- this.config = config;
8
- this.tokenManager = TokenManager.getInstance();
9
- if (this.config.authType === FlexbeAuthType.BEARER) {
10
- // Start initialization but don't wait for it
11
- this.initializationPromise = this.initialize();
12
- }
13
- else {
14
- this.initialized = true;
15
- }
16
- }
17
- async initialize() {
18
- try {
19
- const token = await this.tokenManager.getToken();
20
- this.initialized = !!token;
21
- }
22
- catch (error) {
23
- console.error('Failed to initialize auth:', error);
24
- this.initialized = false;
25
- }
26
- finally {
27
- this.initializationPromise = null;
28
- }
29
- }
30
- async ensureInitialized() {
31
- if (this.config.authType !== FlexbeAuthType.BEARER || this.initialized) {
32
- return;
33
- }
34
- // If initialization is in progress, wait for it
35
- if (this.initializationPromise) {
36
- await this.initializationPromise;
37
- return;
38
- }
39
- // If not initialized and no initialization in progress, start one
40
- await this.initialize();
41
- }
42
- async getAuthHeaders() {
43
- await this.ensureInitialized();
44
- const headers = {
45
- 'Content-Type': 'application/json',
46
- };
47
- if (this.config.authType === FlexbeAuthType.API_KEY) {
48
- headers['x-api-key'] = this.config.apiKey;
49
- }
50
- else if (this.config.authType === FlexbeAuthType.BEARER) {
51
- const token = await this.tokenManager.getToken();
52
- if (!token) {
53
- throw new Error('No valid bearer token available');
54
- }
55
- headers['Authorization'] = `Bearer ${token}`;
56
- }
57
- return headers;
58
- }
59
- }
package/dist/index.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export * from './types';
2
- export * from './client/flexbe-client';
package/dist/index.js DELETED
@@ -1,18 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./types"), exports);
18
- __exportStar(require("./client/flexbe-client"), exports);
@@ -1,20 +0,0 @@
1
- import { AxiosRequestConfig } from 'axios';
2
- import { FlexbeConfig, FlexbeResponse } from '../types';
3
- import { PagesClient } from './pages-client';
4
- export declare class FlexbeClient {
5
- private readonly client;
6
- private readonly config;
7
- readonly pages: PagesClient;
8
- constructor(config?: Partial<FlexbeConfig>);
9
- private setupInterceptors;
10
- private request;
11
- private get;
12
- private post;
13
- private put;
14
- private delete;
15
- private getSiteUrl;
16
- sitesGet<T>(path: string, config?: AxiosRequestConfig): Promise<FlexbeResponse<T>>;
17
- sitesPost<T>(path: string, data?: unknown, config?: AxiosRequestConfig): Promise<FlexbeResponse<T>>;
18
- sitesPut<T>(path: string, data?: unknown, config?: AxiosRequestConfig): Promise<FlexbeResponse<T>>;
19
- sitesDelete<T>(path: string, config?: AxiosRequestConfig): Promise<FlexbeResponse<T>>;
20
- }
@@ -1,86 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.FlexbeClient = void 0;
7
- const axios_1 = __importDefault(require("axios"));
8
- const pages_client_1 = require("./pages-client");
9
- class FlexbeClient {
10
- constructor(config) {
11
- this.config = {
12
- baseUrl: config?.baseUrl || process.env.FLEXBE_API_URL || 'https://api.flexbe.com',
13
- timeout: config?.timeout || 30000,
14
- apiKey: config?.apiKey || process.env.FLEXBE_API_KEY || '',
15
- siteId: config?.siteId || process.env.FLEXBE_SITE_ID,
16
- };
17
- if (!this.config.apiKey) {
18
- throw new Error('API key is required. Please provide it either through config or FLEXBE_API_KEY environment variable.');
19
- }
20
- this.client = axios_1.default.create({
21
- baseURL: this.config.baseUrl,
22
- timeout: this.config.timeout,
23
- headers: {
24
- 'Authorization': `Bearer ${this.config.apiKey}`,
25
- 'Content-Type': 'application/json',
26
- },
27
- });
28
- this.setupInterceptors();
29
- this.pages = new pages_client_1.PagesClient(this);
30
- }
31
- setupInterceptors() {
32
- this.client.interceptors.response.use((response) => response, (error) => {
33
- const flexbeError = {
34
- message: error.response?.data?.message || error.message,
35
- code: error.response?.data?.code,
36
- status: error.response?.status,
37
- details: error.response?.data?.details,
38
- };
39
- return Promise.reject(flexbeError);
40
- });
41
- }
42
- async request(config) {
43
- try {
44
- const response = await this.client.request(config);
45
- return {
46
- data: response.data,
47
- status: response.status,
48
- statusText: response.statusText,
49
- };
50
- }
51
- catch (error) {
52
- throw error;
53
- }
54
- }
55
- get(url, config) {
56
- return this.request({ ...config, method: 'GET', url });
57
- }
58
- post(url, data, config) {
59
- return this.request({ ...config, method: 'POST', url, data });
60
- }
61
- put(url, data, config) {
62
- return this.request({ ...config, method: 'PUT', url, data });
63
- }
64
- delete(url, config) {
65
- return this.request({ ...config, method: 'DELETE', url });
66
- }
67
- getSiteUrl(path) {
68
- if (!this.config.siteId) {
69
- return path;
70
- }
71
- return `/sites/${this.config.siteId}${path}`;
72
- }
73
- sitesGet(path, config) {
74
- return this.get(this.getSiteUrl(path), config);
75
- }
76
- sitesPost(path, data, config) {
77
- return this.post(this.getSiteUrl(path), data, config);
78
- }
79
- sitesPut(path, data, config) {
80
- return this.put(this.getSiteUrl(path), data, config);
81
- }
82
- sitesDelete(path, config) {
83
- return this.delete(this.getSiteUrl(path), config);
84
- }
85
- }
86
- exports.FlexbeClient = FlexbeClient;
@@ -1,14 +0,0 @@
1
- import { Page, GetPagesParams, PageListResponse } from '../types/pages';
2
- import { FlexbeClient } from './flexbe-client';
3
- export declare class PagesClient {
4
- private readonly client;
5
- constructor(client: FlexbeClient);
6
- /**
7
- * Get list of pages for a site
8
- */
9
- getPages(params?: GetPagesParams): Promise<PageListResponse>;
10
- /**
11
- * Get a single page by ID
12
- */
13
- getPage(pageId: number): Promise<Page>;
14
- }
@@ -1,23 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PagesClient = void 0;
4
- class PagesClient {
5
- constructor(client) {
6
- this.client = client;
7
- }
8
- /**
9
- * Get list of pages for a site
10
- */
11
- async getPages(params) {
12
- const response = await this.client.sitesGet('/pages', { params });
13
- return response.data;
14
- }
15
- /**
16
- * Get a single page by ID
17
- */
18
- async getPage(pageId) {
19
- const response = await this.client.sitesGet(`/pages/${pageId}`);
20
- return response.data;
21
- }
22
- }
23
- exports.PagesClient = PagesClient;
@@ -1,4 +0,0 @@
1
- export * from './client/flexbe-client';
2
- export * from './client/pages-client';
3
- export * from './types';
4
- export * from './types/pages';
package/dist/src/index.js DELETED
@@ -1,20 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./client/flexbe-client"), exports);
18
- __exportStar(require("./client/pages-client"), exports);
19
- __exportStar(require("./types"), exports);
20
- __exportStar(require("./types/pages"), exports);
@@ -1,23 +0,0 @@
1
- export interface FlexbeConfig {
2
- apiKey?: string;
3
- baseUrl?: string;
4
- timeout?: number;
5
- siteId?: string;
6
- }
7
- export interface FlexbeResponse<T> {
8
- data: T;
9
- status: number;
10
- statusText: string;
11
- }
12
- export interface FlexbeErrorResponse {
13
- message: string;
14
- code?: string;
15
- details?: unknown;
16
- }
17
- export interface FlexbeError {
18
- message: string;
19
- code?: string;
20
- status?: number;
21
- details?: unknown;
22
- }
23
- export type FlexbeAuthType = 'apiKey' | 'bearer' | 'oauth2';
@@ -1,41 +0,0 @@
1
- export declare enum PageType {
2
- PAGE = "page",
3
- FILE = "file",
4
- GLOBAL = "global",
5
- AI = "ai",
6
- CMS = "cms",
7
- ECOMMERCE_PRODUCT = "ecommerce_product",
8
- ECOMMERCE_CATEGORY = "ecommerce_category"
9
- }
10
- export declare enum PageStatus {
11
- PUBLISHED = "published",
12
- DRAFTED = "drafted",
13
- DELETED = "deleted"
14
- }
15
- export interface Page {
16
- id: number;
17
- siteId: number;
18
- type: PageType;
19
- uri: string;
20
- title: string | null;
21
- status: PageStatus;
22
- updatedAt?: Date;
23
- imgId: number | null;
24
- sortIndex: number;
25
- }
26
- export interface GetPagesParams {
27
- offset?: number;
28
- limit?: number;
29
- type?: PageType;
30
- status?: PageStatus;
31
- search?: string;
32
- }
33
- export interface Pagination {
34
- limit: number;
35
- offset: number;
36
- total: number;
37
- }
38
- export interface PageListResponse {
39
- pages: Page[];
40
- pagination: Pagination;
41
- }
@@ -1,19 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PageStatus = exports.PageType = void 0;
4
- var PageType;
5
- (function (PageType) {
6
- PageType["PAGE"] = "page";
7
- PageType["FILE"] = "file";
8
- PageType["GLOBAL"] = "global";
9
- PageType["AI"] = "ai";
10
- PageType["CMS"] = "cms";
11
- PageType["ECOMMERCE_PRODUCT"] = "ecommerce_product";
12
- PageType["ECOMMERCE_CATEGORY"] = "ecommerce_category";
13
- })(PageType || (exports.PageType = PageType = {}));
14
- var PageStatus;
15
- (function (PageStatus) {
16
- PageStatus["PUBLISHED"] = "published";
17
- PageStatus["DRAFTED"] = "drafted";
18
- PageStatus["DELETED"] = "deleted";
19
- })(PageStatus || (exports.PageStatus = PageStatus = {}));
@@ -1,38 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const flexbe_client_1 = require("../../src/client/flexbe-client");
4
- describe('FlexbeClient', () => {
5
- let client;
6
- const testConfig = {
7
- apiKey: process.env.FLEXBE_API_KEY || 'test-api-key',
8
- baseUrl: process.env.FLEXBE_API_URL || 'https://api.flexbe.com',
9
- };
10
- beforeEach(() => {
11
- client = new flexbe_client_1.FlexbeClient(testConfig);
12
- });
13
- it('should initialize with correct configuration', () => {
14
- expect(client).toBeDefined();
15
- const axiosInstance = client.client;
16
- expect(axiosInstance.defaults.baseURL).toBe(testConfig.baseUrl);
17
- expect(axiosInstance.defaults.headers.Authorization).toBe(`Bearer ${testConfig.apiKey}`);
18
- });
19
- it('should handle successful GET request', async () => {
20
- // Access protected method for testing
21
- const response = await client.get('/');
22
- expect(response).toBeDefined();
23
- expect(response.status).toBe(200);
24
- expect(response.data).toBeDefined();
25
- });
26
- it('should handle error response', async () => {
27
- try {
28
- // Access protected method for testing
29
- await client.get('/non-existent-endpoint');
30
- fail('Should have thrown an error');
31
- }
32
- catch (error) {
33
- const flexbeError = error;
34
- expect(flexbeError.message).toBeDefined();
35
- expect(flexbeError.status).toBeDefined();
36
- }
37
- });
38
- });
@@ -1,82 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const flexbe_client_1 = require("../../src/client/flexbe-client");
4
- const pages_1 = require("../../src/types/pages");
5
- describe('PagesClient', () => {
6
- let client;
7
- const testConfig = {
8
- apiKey: process.env.FLEXBE_API_KEY || 'test-api-key',
9
- baseUrl: process.env.FLEXBE_API_URL || 'https://api.flexbe.com',
10
- siteId: process.env.FLEXBE_SITE_ID || '0',
11
- };
12
- beforeEach(() => {
13
- client = new flexbe_client_1.FlexbeClient(testConfig);
14
- });
15
- it('should initialize with correct configuration', () => {
16
- expect(client.pages).toBeDefined();
17
- const axiosInstance = client.client;
18
- expect(axiosInstance.defaults.baseURL).toBe(testConfig.baseUrl);
19
- expect(axiosInstance.defaults.headers.Authorization).toBe(`Bearer ${testConfig.apiKey}`);
20
- });
21
- it('should get list of pages with default parameters', async () => {
22
- const response = await client.pages.getPages();
23
- expect(response).toBeDefined();
24
- expect(response.pages).toBeDefined();
25
- expect(response.pagination).toBeDefined();
26
- expect(response.pagination.limit).toBe(10);
27
- expect(response.pagination.offset).toBe(0);
28
- expect(response.pagination.total).toBeDefined();
29
- });
30
- it('should get list of pages with custom parameters', async () => {
31
- const params = {
32
- offset: 0,
33
- limit: 20,
34
- type: pages_1.PageType.PAGE,
35
- status: pages_1.PageStatus.PUBLISHED,
36
- search: ''
37
- };
38
- const response = await client.pages.getPages(params);
39
- expect(response).toBeDefined();
40
- expect(response.pages).toBeDefined();
41
- expect(response.pagination).toBeDefined();
42
- expect(response.pagination.limit).toBe(params.limit);
43
- expect(response.pagination.offset).toBe(params.offset);
44
- expect(response.pagination.total).toBeDefined();
45
- });
46
- it('should get a single page by ID', async () => {
47
- const pageId = 2272741;
48
- const response = await client.pages.getPage(pageId);
49
- expect(response).toBeDefined();
50
- expect(response.id).toBe(pageId);
51
- expect(response.siteId).toBe(Number(testConfig.siteId));
52
- expect(response.type).toBeDefined();
53
- expect(response.uri).toBeDefined();
54
- expect(response.status).toBeDefined();
55
- expect(response.sortIndex).toBeDefined();
56
- });
57
- it('should handle error when getting non-existent page', async () => {
58
- try {
59
- await client.pages.getPage(999999);
60
- fail('Should have thrown an error');
61
- }
62
- catch (error) {
63
- const flexbeError = error;
64
- expect(flexbeError.message).toBeDefined();
65
- expect(flexbeError.status).toBeDefined();
66
- }
67
- });
68
- it('should handle error when getting pages with invalid parameters', async () => {
69
- try {
70
- await client.pages.getPages({
71
- offset: -1,
72
- limit: 0
73
- });
74
- fail('Should have thrown an error');
75
- }
76
- catch (error) {
77
- const flexbeError = error;
78
- expect(flexbeError.message).toBeDefined();
79
- expect(flexbeError.status).toBeDefined();
80
- }
81
- });
82
- });
@@ -1,11 +0,0 @@
1
- import { FlexbeConfig } from '../types';
2
- export declare class FlexbeAuth {
3
- private readonly config;
4
- private readonly tokenManager;
5
- private initialized;
6
- private initializationPromise;
7
- constructor(config: FlexbeConfig);
8
- private initialize;
9
- ensureInitialized(): Promise<void>;
10
- getAuthHeaders(): Promise<Record<string, string>>;
11
- }
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });