woodsportal-client-sdk 1.1.4-dev.9 → 1.1.5-dev.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.
package/CHANGELOG.md CHANGED
@@ -9,6 +9,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
9
9
 
10
10
  ### Added
11
11
 
12
+ - **`formatHubSpotActivityDateTime`**, **`formatHubSpotActivityDateTimeParts`**, **`formatGmtOffset`**, **`normalizeToTimestamp`**, and **`DEFAULT_HUBSPOT_TIMEZONE`** (`Asia/Kolkata`) for HubSpot-style activity timestamps (e.g. `May 27, 2026 at 11:31 PM GMT+5:30`).
13
+
14
+ ### Added
15
+
12
16
  - **`examples/smoke-consumer`**: local `file:` dependency + `npm run test:consumer` to validate `dist/` and types before publish.
13
17
  - **`examples/smoke-consumer/smoke-live.mjs`** + **`npm run test:consumer:live`**: optional real dev login; loads **`examples/smoke-consumer/.env`** via **`dotenv`** using **`BASE_URL`**, **`USER_NAME`**, **`USER_PASSWORD`** (plus legacy `WOODSPORTAL_*` / camelCase aliases). Skips in CI when unset. **`.env.example`** and gitignore for local `.env`.
14
18
 
package/README.md CHANGED
@@ -37,7 +37,7 @@ yarn add woodsportal-client-sdk
37
37
 
38
38
  ## Configure the HTTP client (required for production)
39
39
 
40
- The SDK uses one shared Axios instance. If **`initializeHttpClient` has never been called**, the first request lazily creates a client using the compiled-in default `baseURL` in `src/clint/config.ts` **treat that default as development-only** unless your team explicitly owns that host.
40
+ The SDK uses one shared Axios instance. If **`initializeHttpClient` has never been called**, the first request throws **call `initializeHttpClient` at app startup** with a `baseURL` from your environment (see client-frontend `configureWoodsPortalSdk`).
41
41
 
42
42
  Call **`initializeHttpClient` once** during application bootstrap (before any `api.*` calls):
43
43
 
@@ -175,7 +175,53 @@ cd path/to/your-app
175
175
  npm link woodsportal-client-sdk
176
176
  ```
177
177
 
178
- Consume with the same import path as npm: `import { api } from "woodsportal-client-sdk"`.
178
+ Consume with the same import paths as npm:
179
+
180
+ ```ts
181
+ import { api } from "woodsportal-client-sdk";
182
+ import { useTable, useSync } from "woodsportal-client-sdk/react";
183
+ // import { useTable, useSync } from "woodsportal-client-sdk/vue";
184
+ // import { useTable, useSync } from "woodsportal-client-sdk/angular";
185
+ ```
186
+
187
+ After `npm run build`, the main entry and framework adapters (`/react`, `/vue`, `/angular`) share one `store2` state via ESM code-splitting — API calls like `api.objects.list()` update the same stores your composables subscribe to.
188
+
189
+ ### React
190
+
191
+ ```tsx
192
+ import { useTable } from "woodsportal-client-sdk/react";
193
+
194
+ function ObjectsTable() {
195
+ const table = useTable();
196
+ // table.tableData, table.setTableData(...)
197
+ }
198
+ ```
199
+
200
+ ### Vue 3
201
+
202
+ Call composables inside `setup()` (or `<script setup>`):
203
+
204
+ ```vue
205
+ <script setup lang="ts">
206
+ import { useTable } from "woodsportal-client-sdk/vue";
207
+
208
+ const table = useTable();
209
+ </script>
210
+ ```
211
+
212
+ ### Angular (16+)
213
+
214
+ Call composables in an injection context (constructor, field initializer, or `runInInjectionContext`):
215
+
216
+ ```typescript
217
+ import { Component } from "@angular/core";
218
+ import { useTable } from "woodsportal-client-sdk/angular";
219
+
220
+ @Component({ /* ... */ })
221
+ export class ObjectsTableComponent {
222
+ readonly table = useTable();
223
+ }
224
+ ```
179
225
 
180
226
  ---
181
227
 
@@ -0,0 +1,27 @@
1
+ import { E as EmailState, N as NoteState, S as SyncState, T as TableState } from '../../use-sync-LbURBOs_.js';
2
+
3
+ declare const useTable: () => TableState & {
4
+ setObjectsData(response: any): Promise<void>;
5
+ setTableData(response: any, payload: any): void;
6
+ modifiedObjectsData(results: any): void;
7
+ clearTablePrependData(): void;
8
+ setTablePrependData(response: any, props?: any): Promise<void>;
9
+ };
10
+ declare const useNote: () => NoteState & {
11
+ setNotes(response: any, payload: any): void;
12
+ setPrependNote(response: any): Promise<void>;
13
+ updatePrependNote(response: any): Promise<void>;
14
+ };
15
+ declare const useEmail: () => EmailState & {
16
+ setEmails(response: any, payload: any): void;
17
+ setPrependEmail(response: any): Promise<void>;
18
+ updatePrependEmail(response: any): Promise<void>;
19
+ };
20
+ declare const useSync: () => SyncState & {
21
+ setIsSyncLoading(status: boolean): void;
22
+ setSync(status: boolean): void;
23
+ setApiSync(status: boolean): void;
24
+ setSyncDisable(status: boolean): void;
25
+ };
26
+
27
+ export { useEmail, useNote, useSync, useTable };
@@ -0,0 +1,34 @@
1
+ import { bindStoreWithActions } from '../../chunk-Y5MRAAGK.js';
2
+ import { createAdapterHooks } from '../../chunk-J7MDPY5P.js';
3
+ import '../../chunk-RDCT25UV.js';
4
+ import '../../chunk-NB7AINV4.js';
5
+ import { inject, DestroyRef, signal } from '@angular/core';
6
+
7
+ function createAngularStoreComposable(store, actions) {
8
+ return function useStore() {
9
+ const destroyRef = inject(DestroyRef);
10
+ const binding = bindStoreWithActions(store, actions);
11
+ const snapshot = signal(binding.getSnapshot());
12
+ destroyRef.onDestroy(
13
+ binding.subscribe(() => {
14
+ snapshot.set(binding.getSnapshot());
15
+ })
16
+ );
17
+ return new Proxy({}, {
18
+ get(_target, prop) {
19
+ const key = String(prop);
20
+ if (key in actions) {
21
+ return actions[key];
22
+ }
23
+ return snapshot()[key];
24
+ }
25
+ });
26
+ };
27
+ }
28
+
29
+ // src/adapters/angular/index.ts
30
+ var { useTable, useNote, useEmail, useSync } = createAdapterHooks(createAngularStoreComposable);
31
+
32
+ export { useEmail, useNote, useSync, useTable };
33
+ //# sourceMappingURL=index.js.map
34
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/adapters/shared/createAngularComposable.ts","../../../src/adapters/angular/index.ts"],"names":[],"mappings":";;;;;;AAGO,SAAS,4BAAA,CAGd,OAAkC,OAAA,EAAmB;AACnD,EAAA,OAAO,SAAS,QAAA,GAA8B;AAC1C,IAAA,MAAM,UAAA,GAAa,OAAO,UAAU,CAAA;AACpC,IAAA,MAAM,OAAA,GAAU,oBAAA,CAAqB,KAAA,EAAO,OAAO,CAAA;AACnD,IAAA,MAAM,QAAA,GAAW,MAAA,CAAO,OAAA,CAAQ,WAAA,EAAa,CAAA;AAE7C,IAAA,UAAA,CAAW,SAAA;AAAA,MACP,OAAA,CAAQ,UAAU,MAAM;AACpB,QAAA,QAAA,CAAS,GAAA,CAAI,OAAA,CAAQ,WAAA,EAAa,CAAA;AAAA,MACtC,CAAC;AAAA,KACL;AAEA,IAAA,OAAO,IAAI,KAAA,CAAM,EAAC,EAAwB;AAAA,MACtC,GAAA,CAAI,SAAS,IAAA,EAAM;AACf,QAAA,MAAM,GAAA,GAAM,OAAO,IAAI,CAAA;AACvB,QAAA,IAAI,OAAO,OAAA,EAAS;AAChB,UAAA,OAAQ,QAAoC,GAAG,CAAA;AAAA,QACnD;AACA,QAAA,OAAO,QAAA,GAAW,GAAmB,CAAA;AAAA,MACzC;AAAA,KACH,CAAA;AAAA,EACL,CAAA;AACJ;;;ACzBO,IAAM,EAAE,QAAA,EAAU,OAAA,EAAS,UAAU,OAAA,EAAQ,GAAI,mBAAmB,4BAA4B","file":"index.js","sourcesContent":["import { DestroyRef, inject, signal } from \"@angular/core\";\nimport { bindStoreWithActions, type SubscribableStore } from \"./bindStoreWithActions\";\n\nexport function createAngularStoreComposable<\n TState extends object,\n TActions extends object,\n>(store: SubscribableStore<TState>, actions: TActions) {\n return function useStore(): TState & TActions {\n const destroyRef = inject(DestroyRef);\n const binding = bindStoreWithActions(store, actions);\n const snapshot = signal(binding.getSnapshot());\n\n destroyRef.onDestroy(\n binding.subscribe(() => {\n snapshot.set(binding.getSnapshot());\n }),\n );\n\n return new Proxy({} as TState & TActions, {\n get(_target, prop) {\n const key = String(prop);\n if (key in actions) {\n return (actions as Record<string, unknown>)[key];\n }\n return snapshot()[key as keyof TState];\n },\n });\n };\n}\n","import { createAdapterHooks } from \"../shared/createAdapterHooks\";\nimport { createAngularStoreComposable } from \"../shared/createAngularComposable\";\n\nexport const { useTable, useNote, useEmail, useSync } = createAdapterHooks(createAngularStoreComposable);\n"]}
@@ -0,0 +1,27 @@
1
+ import { E as EmailState, N as NoteState, S as SyncState, T as TableState } from '../../use-sync-LbURBOs_.js';
2
+
3
+ declare const useTable: () => TableState & {
4
+ setObjectsData(response: any): Promise<void>;
5
+ setTableData(response: any, payload: any): void;
6
+ modifiedObjectsData(results: any): void;
7
+ clearTablePrependData(): void;
8
+ setTablePrependData(response: any, props?: any): Promise<void>;
9
+ };
10
+ declare const useNote: () => NoteState & {
11
+ setNotes(response: any, payload: any): void;
12
+ setPrependNote(response: any): Promise<void>;
13
+ updatePrependNote(response: any): Promise<void>;
14
+ };
15
+ declare const useEmail: () => EmailState & {
16
+ setEmails(response: any, payload: any): void;
17
+ setPrependEmail(response: any): Promise<void>;
18
+ updatePrependEmail(response: any): Promise<void>;
19
+ };
20
+ declare const useSync: () => SyncState & {
21
+ setIsSyncLoading(status: boolean): void;
22
+ setSync(status: boolean): void;
23
+ setApiSync(status: boolean): void;
24
+ setSyncDisable(status: boolean): void;
25
+ };
26
+
27
+ export { useEmail, useNote, useSync, useTable };
@@ -0,0 +1,18 @@
1
+ import { createAdapterHooks } from '../../chunk-J7MDPY5P.js';
2
+ import '../../chunk-RDCT25UV.js';
3
+ import '../../chunk-NB7AINV4.js';
4
+ import { useSyncExternalStore } from 'react';
5
+
6
+ function createReactStoreComposable(store, actions) {
7
+ return function useStore() {
8
+ const state = useSyncExternalStore(store.subscribe, store.getState, store.getState);
9
+ return { ...state, ...actions };
10
+ };
11
+ }
12
+
13
+ // src/adapters/react/index.ts
14
+ var { useTable, useNote, useEmail, useSync } = createAdapterHooks(createReactStoreComposable);
15
+
16
+ export { useEmail, useNote, useSync, useTable };
17
+ //# sourceMappingURL=index.js.map
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/adapters/shared/createReactComposable.ts","../../../src/adapters/react/index.ts"],"names":[],"mappings":";;;;;AAGO,SAAS,0BAAA,CAGd,OAAkC,OAAA,EAAmB;AACnD,EAAA,OAAO,SAAS,QAAA,GAA8B;AAC1C,IAAA,MAAM,QAAQ,oBAAA,CAAqB,KAAA,CAAM,WAAW,KAAA,CAAM,QAAA,EAAU,MAAM,QAAQ,CAAA;AAClF,IAAA,OAAO,EAAE,GAAG,KAAA,EAAO,GAAG,OAAA,EAAQ;AAAA,EAClC,CAAA;AACJ;;;ACRO,IAAM,EAAE,QAAA,EAAU,OAAA,EAAS,UAAU,OAAA,EAAQ,GAAI,mBAAmB,0BAA0B","file":"index.js","sourcesContent":["import { useSyncExternalStore } from \"react\";\nimport type { SubscribableStore } from \"./bindStoreWithActions\";\n\nexport function createReactStoreComposable<\n TState extends object,\n TActions extends object,\n>(store: SubscribableStore<TState>, actions: TActions) {\n return function useStore(): TState & TActions {\n const state = useSyncExternalStore(store.subscribe, store.getState, store.getState);\n return { ...state, ...actions };\n };\n}\n","import { createAdapterHooks } from \"../shared/createAdapterHooks\";\nimport { createReactStoreComposable } from \"../shared/createReactComposable\";\n\nexport const { useTable, useNote, useEmail, useSync } = createAdapterHooks(createReactStoreComposable);\n"]}
@@ -0,0 +1,27 @@
1
+ import { E as EmailState, N as NoteState, S as SyncState, T as TableState } from '../../use-sync-LbURBOs_.js';
2
+
3
+ declare const useTable: () => TableState & {
4
+ setObjectsData(response: any): Promise<void>;
5
+ setTableData(response: any, payload: any): void;
6
+ modifiedObjectsData(results: any): void;
7
+ clearTablePrependData(): void;
8
+ setTablePrependData(response: any, props?: any): Promise<void>;
9
+ };
10
+ declare const useNote: () => NoteState & {
11
+ setNotes(response: any, payload: any): void;
12
+ setPrependNote(response: any): Promise<void>;
13
+ updatePrependNote(response: any): Promise<void>;
14
+ };
15
+ declare const useEmail: () => EmailState & {
16
+ setEmails(response: any, payload: any): void;
17
+ setPrependEmail(response: any): Promise<void>;
18
+ updatePrependEmail(response: any): Promise<void>;
19
+ };
20
+ declare const useSync: () => SyncState & {
21
+ setIsSyncLoading(status: boolean): void;
22
+ setSync(status: boolean): void;
23
+ setApiSync(status: boolean): void;
24
+ setSyncDisable(status: boolean): void;
25
+ };
26
+
27
+ export { useEmail, useNote, useSync, useTable };
@@ -0,0 +1,25 @@
1
+ import { bindStoreWithActions } from '../../chunk-Y5MRAAGK.js';
2
+ import { createAdapterHooks } from '../../chunk-J7MDPY5P.js';
3
+ import '../../chunk-RDCT25UV.js';
4
+ import '../../chunk-NB7AINV4.js';
5
+ import { reactive, onScopeDispose } from 'vue';
6
+
7
+ function createVueStoreComposable(store, actions) {
8
+ return function useStore() {
9
+ const binding = bindStoreWithActions(store, actions);
10
+ const state = reactive(binding.getSnapshot());
11
+ onScopeDispose(
12
+ binding.subscribe(() => {
13
+ Object.assign(state, binding.getSnapshot());
14
+ })
15
+ );
16
+ return state;
17
+ };
18
+ }
19
+
20
+ // src/adapters/vue/index.ts
21
+ var { useTable, useNote, useEmail, useSync } = createAdapterHooks(createVueStoreComposable);
22
+
23
+ export { useEmail, useNote, useSync, useTable };
24
+ //# sourceMappingURL=index.js.map
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/adapters/shared/createVueComposable.ts","../../../src/adapters/vue/index.ts"],"names":[],"mappings":";;;;;;AAGO,SAAS,wBAAA,CAGd,OAAkC,OAAA,EAAmB;AACnD,EAAA,OAAO,SAAS,QAAA,GAA8B;AAC1C,IAAA,MAAM,OAAA,GAAU,oBAAA,CAAqB,KAAA,EAAO,OAAO,CAAA;AACnD,IAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,OAAA,CAAQ,WAAA,EAAa,CAAA;AAE5C,IAAA,cAAA;AAAA,MACI,OAAA,CAAQ,UAAU,MAAM;AACpB,QAAA,MAAA,CAAO,MAAA,CAAO,KAAA,EAAO,OAAA,CAAQ,WAAA,EAAa,CAAA;AAAA,MAC9C,CAAC;AAAA,KACL;AAEA,IAAA,OAAO,KAAA;AAAA,EACX,CAAA;AACJ;;;AChBO,IAAM,EAAE,QAAA,EAAU,OAAA,EAAS,UAAU,OAAA,EAAQ,GAAI,mBAAmB,wBAAwB","file":"index.js","sourcesContent":["import { onScopeDispose, reactive } from \"vue\";\nimport { bindStoreWithActions, type SubscribableStore } from \"./bindStoreWithActions\";\n\nexport function createVueStoreComposable<\n TState extends object,\n TActions extends object,\n>(store: SubscribableStore<TState>, actions: TActions) {\n return function useStore(): TState & TActions {\n const binding = bindStoreWithActions(store, actions);\n const state = reactive(binding.getSnapshot()) as TState & TActions;\n\n onScopeDispose(\n binding.subscribe(() => {\n Object.assign(state, binding.getSnapshot());\n }),\n );\n\n return state;\n };\n}\n","import { createAdapterHooks } from \"../shared/createAdapterHooks\";\nimport { createVueStoreComposable } from \"../shared/createVueComposable\";\n\nexport const { useTable, useNote, useEmail, useSync } = createAdapterHooks(createVueStoreComposable);\n"]}
@@ -0,0 +1,4 @@
1
+ export { getPortal, getProfile, getRefreshToken, getSubscriptionType, setAccessToken, setLoggedInDetails, setPortal, setRefreshToken, setSubscriptionType } from './chunk-YLZA5S7A.js';
2
+ import './chunk-NB7AINV4.js';
3
+ //# sourceMappingURL=auth-utils-A4WPJMPK.js.map
4
+ //# sourceMappingURL=auth-utils-A4WPJMPK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"auth-utils-A4WPJMPK.js"}
@@ -0,0 +1,54 @@
1
+ import { createStore, emailStore, actions3, noteStore, actions2, tableStore, actions } from './chunk-RDCT25UV.js';
2
+
3
+ // src/store2/use-sync.ts
4
+ var syncStore = createStore({
5
+ apiSync: false,
6
+ sync: false,
7
+ isSyncLoading: false,
8
+ isSyncDisable: false
9
+ });
10
+ var actions4 = {
11
+ setIsSyncLoading(status) {
12
+ syncStore.setState({
13
+ isSyncLoading: status,
14
+ sync: status
15
+ });
16
+ },
17
+ setSync(status) {
18
+ resetAllStore();
19
+ syncStore.setState({
20
+ isSyncLoading: status,
21
+ sync: status
22
+ });
23
+ },
24
+ setApiSync(status) {
25
+ syncStore.setState({
26
+ isSyncLoading: status,
27
+ apiSync: status
28
+ });
29
+ },
30
+ setSyncDisable(status) {
31
+ syncStore.setState({
32
+ isSyncDisable: status
33
+ });
34
+ }
35
+ };
36
+ var resetAllStore = () => {
37
+ actions.clearTablePrependData();
38
+ actions2.setPrependNote([]);
39
+ actions3.setPrependEmail([]);
40
+ };
41
+
42
+ // src/adapters/shared/createAdapterHooks.ts
43
+ function createAdapterHooks(createComposable) {
44
+ return {
45
+ useTable: createComposable(tableStore, actions),
46
+ useNote: createComposable(noteStore, actions2),
47
+ useEmail: createComposable(emailStore, actions3),
48
+ useSync: createComposable(syncStore, actions4)
49
+ };
50
+ }
51
+
52
+ export { createAdapterHooks };
53
+ //# sourceMappingURL=chunk-J7MDPY5P.js.map
54
+ //# sourceMappingURL=chunk-J7MDPY5P.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/store2/use-sync.ts","../src/adapters/shared/createAdapterHooks.ts"],"names":["actions"],"mappings":";;;AAYO,IAAM,YAAY,WAAA,CAAuB;AAAA,EAC5C,OAAA,EAAS,KAAA;AAAA,EACT,IAAA,EAAM,KAAA;AAAA,EACN,aAAA,EAAe,KAAA;AAAA,EACf,aAAA,EAAe;AACnB,CAAC,CAAA;AAEM,IAAMA,QAAAA,GAAU;AAAA,EACnB,iBAAiB,MAAA,EAAiB;AAC9B,IAAA,SAAA,CAAU,QAAA,CAAS;AAAA,MACf,aAAA,EAAe,MAAA;AAAA,MACf,IAAA,EAAM;AAAA,KACT,CAAA;AAAA,EACL,CAAA;AAAA,EAEA,QAAQ,MAAA,EAAiB;AACrB,IAAA,aAAA,EAAc;AACd,IAAA,SAAA,CAAU,QAAA,CAAS;AAAA,MACf,aAAA,EAAe,MAAA;AAAA,MACf,IAAA,EAAM;AAAA,KACT,CAAA;AAAA,EACL,CAAA;AAAA,EAEA,WAAW,MAAA,EAAiB;AACxB,IAAA,SAAA,CAAU,QAAA,CAAS;AAAA,MACf,aAAA,EAAe,MAAA;AAAA,MACf,OAAA,EAAS;AAAA,KACZ,CAAA;AAAA,EACL,CAAA;AAAA,EAEA,eAAe,MAAA,EAAiB;AAC5B,IAAA,SAAA,CAAU,QAAA,CAAS;AAAA,MACf,aAAA,EAAe;AAAA,KAClB,CAAA;AAAA,EACL;AACJ,CAAA;AAEA,IAAM,gBAAgB,MAAM;AACxB,EAAA,OAAA,CAAa,qBAAA,EAAsB;AACnC,EAAAA,QAAAA,CAAY,cAAA,CAAe,EAAE,CAAA;AAC7B,EAAAA,QAAAA,CAAa,eAAA,CAAgB,EAAE,CAAA;AACnC,CAAA;;;AChCO,SAAS,mBAAmB,gBAAA,EAAqC;AACpE,EAAA,OAAO;AAAA,IACH,QAAA,EAAU,gBAAA,CAAkD,UAAA,EAAY,OAAY,CAAA;AAAA,IACpF,OAAA,EAAS,gBAAA,CAAgD,SAAA,EAAWA,QAAW,CAAA;AAAA,IAC/E,QAAA,EAAU,gBAAA,CAAkD,UAAA,EAAYA,QAAY,CAAA;AAAA,IACpF,OAAA,EAAS,gBAAA,CAAgD,SAAA,EAAWA,QAAW;AAAA,GACnF;AACJ","file":"chunk-J7MDPY5P.js","sourcesContent":["import { createStore } from \"./store\";\nimport { actions as tableActions } from \"./use-table\";\nimport { actions as noteActions } from \"./use-note\";\nimport { actions as emailActions } from \"./use-email\";\n\nexport interface SyncState {\n apiSync: boolean;\n sync: boolean;\n isSyncLoading: boolean;\n isSyncDisable: boolean;\n}\n\nexport const syncStore = createStore<SyncState>({\n apiSync: false,\n sync: false,\n isSyncLoading: false,\n isSyncDisable: false,\n});\n\nexport const actions = {\n setIsSyncLoading(status: boolean) {\n syncStore.setState({\n isSyncLoading: status,\n sync: status,\n });\n },\n\n setSync(status: boolean) {\n resetAllStore()\n syncStore.setState({\n isSyncLoading: status,\n sync: status,\n });\n },\n\n setApiSync(status: boolean) {\n syncStore.setState({\n isSyncLoading: status,\n apiSync: status,\n });\n },\n\n setSyncDisable(status: boolean) {\n syncStore.setState({\n isSyncDisable: status,\n });\n },\n};\n\nconst resetAllStore = () => {\n tableActions.clearTablePrependData();\n noteActions.setPrependNote([]);\n emailActions.setPrependEmail([]);\n};","import type { SubscribableStore } from \"./bindStoreWithActions\";\nimport {\n tableStore,\n tableActions,\n type TableState,\n noteStore,\n noteActions,\n type NoteState,\n emailStore,\n emailActions,\n type EmailState,\n syncStore,\n syncActions,\n type SyncState,\n} from \"./stores\";\n\ntype ComposableFactory = <TState extends object, TActions extends object>(\n store: SubscribableStore<TState>,\n actions: TActions,\n) => () => TState & TActions;\n\nexport function createAdapterHooks(createComposable: ComposableFactory) {\n return {\n useTable: createComposable<TableState, typeof tableActions>(tableStore, tableActions),\n useNote: createComposable<NoteState, typeof noteActions>(noteStore, noteActions),\n useEmail: createComposable<EmailState, typeof emailActions>(emailStore, emailActions),\n useSync: createComposable<SyncState, typeof syncActions>(syncStore, syncActions),\n };\n}\n"]}
@@ -0,0 +1,35 @@
1
+ import Cookies from 'js-cookie';
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __export = (target, all) => {
5
+ for (var name in all)
6
+ __defProp(target, name, { get: all[name], enumerable: true });
7
+ };
8
+ var setCookie = (key, value, expire) => {
9
+ return Cookies.set(key, value, {
10
+ expires: expire,
11
+ sameSite: "none",
12
+ secure: true
13
+ });
14
+ };
15
+ var getCookie = (key) => {
16
+ return Cookies.get(key);
17
+ };
18
+ var removeAllCookie = () => {
19
+ Object.keys(Cookies.get()).forEach((cookieName) => {
20
+ Cookies.remove(cookieName);
21
+ });
22
+ };
23
+ var isCookieExpired = (key) => {
24
+ const value = Cookies.get(key);
25
+ try {
26
+ const { expiresAt } = JSON.parse(value);
27
+ return Date.now() > expiresAt ? true : false;
28
+ } catch {
29
+ return false;
30
+ }
31
+ };
32
+
33
+ export { __export, getCookie, isCookieExpired, removeAllCookie, setCookie };
34
+ //# sourceMappingURL=chunk-NB7AINV4.js.map
35
+ //# sourceMappingURL=chunk-NB7AINV4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/cookie.ts"],"names":[],"mappings":";;;;;;;AAEO,IAAM,SAAA,GAAY,CAAC,GAAA,EAAa,KAAA,EAAe,MAAA,KAA2B;AAC7E,EAAA,OAAO,OAAA,CAAQ,GAAA,CAAI,GAAA,EAAK,KAAA,EAAO;AAAA,IAC3B,OAAA,EAAS,MAAA;AAAA,IACT,QAAA,EAAU,MAAA;AAAA,IACV,MAAA,EAAQ;AAAA,GACX,CAAA;AACL;AAEO,IAAM,SAAA,GAAiB,CAAC,GAAA,KAAa;AACxC,EAAA,OAAO,OAAA,CAAQ,IAAI,GAAG,CAAA;AAC1B;AAMO,IAAM,kBAAkB,MAAM;AACjC,EAAA,MAAA,CAAO,KAAK,OAAA,CAAQ,GAAA,EAAK,CAAA,CAAE,OAAA,CAAQ,CAAC,UAAA,KAAe;AAC/C,IAAA,OAAA,CAAQ,OAAO,UAAU,CAAA;AAAA,EAC7B,CAAC,CAAA;AACL;AAQO,IAAM,eAAA,GAAkB,CAAC,GAAA,KAAyB;AACvD,EAAA,MAAM,KAAA,GAAa,OAAA,CAAQ,GAAA,CAAI,GAAG,CAAA;AAClC,EAAA,IAAI;AACF,IAAA,MAAM,EAAE,SAAA,EAAU,GAAI,IAAA,CAAK,MAAM,KAAK,CAAA;AACtC,IAAA,OAAO,IAAA,CAAK,GAAA,EAAI,GAAI,SAAA,GAAY,IAAA,GAAO,KAAA;AAAA,EACzC,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,KAAA;AAAA,EACT;AACF","file":"chunk-NB7AINV4.js","sourcesContent":["import Cookies from 'js-cookie';\n\nexport const setCookie = (key: string, value: string, expire?: number | Date) => {\n return Cookies.set(key, value, {\n expires: expire,\n sameSite: 'none',\n secure: true,\n });\n}\n\nexport const getCookie: any = (key: any) => {\n return Cookies.get(key);\n}\n\nexport const removeCookie = (key: any) => {\n return Cookies.remove(key);\n}\n\nexport const removeAllCookie = () => {\n Object.keys(Cookies.get()).forEach((cookieName) => {\n Cookies.remove(cookieName);\n });\n}\n\n// export const isCookieExpired = (key: string): boolean => {\n// const value = Cookies.get(key);\n// return value === undefined; // true means expired or never set\n// };\n\n\nexport const isCookieExpired = (key: string): boolean => {\n const value: any = Cookies.get(key);\n try {\n const { expiresAt } = JSON.parse(value);\n return Date.now() > expiresAt ? true : false;\n } catch {\n return false; // if invalid format, treat as valid\n }\n};"]}