@akanjs/store 0.0.149 → 0.0.151

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.
@@ -0,0 +1,99 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var __decorateClass = (decorators, target, key, kind) => {
19
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
20
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
21
+ if (decorator = decorators[i])
22
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
23
+ if (kind && result)
24
+ __defProp(target, key, result);
25
+ return result;
26
+ };
27
+ var baseSt_exports = {};
28
+ __export(baseSt_exports, {
29
+ RootStore: () => RootStore,
30
+ st: () => st,
31
+ store: () => store
32
+ });
33
+ module.exports = __toCommonJS(baseSt_exports);
34
+ var import_client = require("@akanjs/client");
35
+ var import_constant = require("@akanjs/constant");
36
+ var import_signal = require("@akanjs/signal");
37
+ var import_storeDecorators = require("./storeDecorators");
38
+ const defaultMessage = {
39
+ type: "info",
40
+ content: "",
41
+ duration: 3,
42
+ // seconds
43
+ key: Math.random().toString(36).slice(2, 15)
44
+ };
45
+ let RootStore = class extends (0, import_storeDecorators.scalarStateOf)("root", {
46
+ csrLoaded: false,
47
+ path: "/",
48
+ pathname: typeof window !== "undefined" ? window.location.pathname : "/",
49
+ params: {},
50
+ searchParams: {},
51
+ theme: "system",
52
+ prefix: void 0,
53
+ innerWidth: 0,
54
+ innerHeight: 0,
55
+ responsive: "md",
56
+ uiOperation: "sleep",
57
+ messages: [],
58
+ tryJwt: null,
59
+ trySignalType: "graphql",
60
+ tryRoles: [...import_signal.roleTypes],
61
+ tryAccount: import_signal.defaultAccount,
62
+ keyboardHeight: 0,
63
+ pageState: import_client.defaultPageState,
64
+ devMode: false,
65
+ getSelf: async ({ reset } = {}) => {
66
+ },
67
+ deviceToken: "",
68
+ currentPath: "",
69
+ connectStatus: "disconnected"
70
+ }) {
71
+ setDevMode(value) {
72
+ this.set({ devMode: value });
73
+ localStorage.setItem("devMode", value.toString());
74
+ }
75
+ setWindowSize() {
76
+ if (typeof window === "undefined")
77
+ return;
78
+ const responsive = import_constant.Responsive.values[import_constant.responsiveWidths.findIndex((w) => w < window.innerWidth)];
79
+ this.set({ innerWidth: window.innerWidth, innerHeight: window.innerHeight, responsive });
80
+ }
81
+ showMessage(message) {
82
+ message.key ??= Math.random().toString(36).slice(2, 15);
83
+ const { messages } = this.get();
84
+ const newMessage = { ...defaultMessage, ...message };
85
+ if (messages.some((m) => m.key === newMessage.key))
86
+ this.set({ messages: messages.map((m) => m.key === newMessage.key ? newMessage : m) });
87
+ else
88
+ this.set({ messages: [...messages.length > 6 ? messages.slice(1) : messages, newMessage] });
89
+ }
90
+ hideMessage(key) {
91
+ const { messages } = this.get();
92
+ this.set({ messages: messages.filter((m) => m.key !== key) });
93
+ }
94
+ };
95
+ RootStore = __decorateClass([
96
+ (0, import_storeDecorators.Store)({ name: "root" })
97
+ ], RootStore);
98
+ const store = RootStore;
99
+ const st = (0, import_storeDecorators.makeStore)(import_storeDecorators.baseSt, store, { library: true });
package/cjs/src/index.js CHANGED
@@ -16,3 +16,4 @@ var src_exports = {};
16
16
  module.exports = __toCommonJS(src_exports);
17
17
  __reExport(src_exports, require("./types"), module.exports);
18
18
  __reExport(src_exports, require("./storeDecorators"), module.exports);
19
+ __reExport(src_exports, require("./baseSt"), module.exports);
@@ -21,12 +21,12 @@ __export(storeDecorators_exports, {
21
21
  MixStore: () => MixStore,
22
22
  Store: () => Store,
23
23
  Toast: () => Toast,
24
+ baseSt: () => baseSt,
24
25
  createActions: () => createActions,
25
26
  createState: () => createState,
26
27
  makeStore: () => makeStore,
27
28
  rootStoreOf: () => rootStoreOf,
28
29
  scalarStateOf: () => scalarStateOf,
29
- st: () => st,
30
30
  stateOf: () => stateOf
31
31
  });
32
32
  module.exports = __toCommonJS(storeDecorators_exports);
@@ -39,7 +39,7 @@ var import_react = require("react");
39
39
  var import_zustand = require("zustand");
40
40
  var import_middleware = require("zustand/middleware");
41
41
  var import_immer = require("zustand/middleware/immer");
42
- const st = {};
42
+ const baseSt = {};
43
43
  class StoreStorage {
44
44
  }
45
45
  const getStoreMeta = (storeName) => {
@@ -877,8 +877,8 @@ const createSelectors = (_store, store = {}) => {
877
877
  store.get = _store.getState;
878
878
  store.set = (s) => {
879
879
  if (typeof s === "function")
880
- _store.setState((st2) => {
881
- s(st2);
880
+ _store.setState((st) => {
881
+ s(st);
882
882
  });
883
883
  else
884
884
  _store.setState(s);
@@ -1019,9 +1019,9 @@ const makePicker = (set, get) => (...fields) => {
1019
1019
  }
1020
1020
  return ret;
1021
1021
  };
1022
- const makeStore = (st2, storeRef, { library } = {}) => {
1022
+ const makeStore = (st, storeRef, { library } = {}) => {
1023
1023
  if (library)
1024
- return st2;
1024
+ return st;
1025
1025
  const zustandStore = (0, import_zustand.create)(
1026
1026
  (0, import_middleware.devtools)(
1027
1027
  (0, import_middleware.subscribeWithSelector)(
@@ -1040,7 +1040,7 @@ const makeStore = (st2, storeRef, { library } = {}) => {
1040
1040
  { name: "root", anonymousActionType: "root", type: "root" }
1041
1041
  )
1042
1042
  );
1043
- return createSelectors(zustandStore, st2);
1043
+ return createSelectors(zustandStore, st);
1044
1044
  };
1045
1045
  const MixStore = (s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, s17, s18, s19, s20, s21, s22, s23, s24, s25, s26, s27, s28, s29, s30) => {
1046
1046
  const stores = [
@@ -0,0 +1,82 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __decorateClass = (decorators, target, key, kind) => {
4
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
5
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
6
+ if (decorator = decorators[i])
7
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
8
+ if (kind && result)
9
+ __defProp(target, key, result);
10
+ return result;
11
+ };
12
+ import { defaultPageState } from "@akanjs/client";
13
+ import { Responsive, responsiveWidths } from "@akanjs/constant";
14
+ import { defaultAccount, roleTypes } from "@akanjs/signal";
15
+ import { baseSt, makeStore, scalarStateOf, Store } from "./storeDecorators";
16
+ const defaultMessage = {
17
+ type: "info",
18
+ content: "",
19
+ duration: 3,
20
+ // seconds
21
+ key: Math.random().toString(36).slice(2, 15)
22
+ };
23
+ let RootStore = class extends scalarStateOf("root", {
24
+ csrLoaded: false,
25
+ path: "/",
26
+ pathname: typeof window !== "undefined" ? window.location.pathname : "/",
27
+ params: {},
28
+ searchParams: {},
29
+ theme: "system",
30
+ prefix: void 0,
31
+ innerWidth: 0,
32
+ innerHeight: 0,
33
+ responsive: "md",
34
+ uiOperation: "sleep",
35
+ messages: [],
36
+ tryJwt: null,
37
+ trySignalType: "graphql",
38
+ tryRoles: [...roleTypes],
39
+ tryAccount: defaultAccount,
40
+ keyboardHeight: 0,
41
+ pageState: defaultPageState,
42
+ devMode: false,
43
+ getSelf: async ({ reset } = {}) => {
44
+ },
45
+ deviceToken: "",
46
+ currentPath: "",
47
+ connectStatus: "disconnected"
48
+ }) {
49
+ setDevMode(value) {
50
+ this.set({ devMode: value });
51
+ localStorage.setItem("devMode", value.toString());
52
+ }
53
+ setWindowSize() {
54
+ if (typeof window === "undefined")
55
+ return;
56
+ const responsive = Responsive.values[responsiveWidths.findIndex((w) => w < window.innerWidth)];
57
+ this.set({ innerWidth: window.innerWidth, innerHeight: window.innerHeight, responsive });
58
+ }
59
+ showMessage(message) {
60
+ message.key ??= Math.random().toString(36).slice(2, 15);
61
+ const { messages } = this.get();
62
+ const newMessage = { ...defaultMessage, ...message };
63
+ if (messages.some((m) => m.key === newMessage.key))
64
+ this.set({ messages: messages.map((m) => m.key === newMessage.key ? newMessage : m) });
65
+ else
66
+ this.set({ messages: [...messages.length > 6 ? messages.slice(1) : messages, newMessage] });
67
+ }
68
+ hideMessage(key) {
69
+ const { messages } = this.get();
70
+ this.set({ messages: messages.filter((m) => m.key !== key) });
71
+ }
72
+ };
73
+ RootStore = __decorateClass([
74
+ Store({ name: "root" })
75
+ ], RootStore);
76
+ const store = RootStore;
77
+ const st = makeStore(baseSt, store, { library: true });
78
+ export {
79
+ RootStore,
80
+ st,
81
+ store
82
+ };
package/esm/src/index.js CHANGED
@@ -1,2 +1,3 @@
1
1
  export * from "./types";
2
2
  export * from "./storeDecorators";
3
+ export * from "./baseSt";
@@ -24,7 +24,7 @@ import { useEffect, useRef } from "react";
24
24
  import { create } from "zustand";
25
25
  import { devtools, subscribeWithSelector } from "zustand/middleware";
26
26
  import { immer } from "zustand/middleware/immer";
27
- const st = {};
27
+ const baseSt = {};
28
28
  class StoreStorage {
29
29
  }
30
30
  const getStoreMeta = (storeName) => {
@@ -862,8 +862,8 @@ const createSelectors = (_store, store = {}) => {
862
862
  store.get = _store.getState;
863
863
  store.set = (s) => {
864
864
  if (typeof s === "function")
865
- _store.setState((st2) => {
866
- s(st2);
865
+ _store.setState((st) => {
866
+ s(st);
867
867
  });
868
868
  else
869
869
  _store.setState(s);
@@ -1004,9 +1004,9 @@ const makePicker = (set, get) => (...fields) => {
1004
1004
  }
1005
1005
  return ret;
1006
1006
  };
1007
- const makeStore = (st2, storeRef, { library } = {}) => {
1007
+ const makeStore = (st, storeRef, { library } = {}) => {
1008
1008
  if (library)
1009
- return st2;
1009
+ return st;
1010
1010
  const zustandStore = create(
1011
1011
  devtools(
1012
1012
  subscribeWithSelector(
@@ -1025,7 +1025,7 @@ const makeStore = (st2, storeRef, { library } = {}) => {
1025
1025
  { name: "root", anonymousActionType: "root", type: "root" }
1026
1026
  )
1027
1027
  );
1028
- return createSelectors(zustandStore, st2);
1028
+ return createSelectors(zustandStore, st);
1029
1029
  };
1030
1030
  const MixStore = (s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, s17, s18, s19, s20, s21, s22, s23, s24, s25, s26, s27, s28, s29, s30) => {
1031
1031
  const stores = [
@@ -1089,11 +1089,11 @@ export {
1089
1089
  MixStore,
1090
1090
  Store,
1091
1091
  Toast,
1092
+ baseSt,
1092
1093
  createActions,
1093
1094
  createState,
1094
1095
  makeStore,
1095
1096
  rootStoreOf,
1096
1097
  scalarStateOf,
1097
- st,
1098
1098
  stateOf
1099
1099
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@akanjs/store",
3
- "version": "0.0.149",
3
+ "version": "0.0.151",
4
4
  "sourceType": "module",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -0,0 +1,204 @@
1
+ import { Responsive } from "@akanjs/constant";
2
+ import { RoleType, SignalType } from "@akanjs/signal";
3
+ declare const defaultMessage: {
4
+ type: "info" | "success" | "error" | "warning" | "loading";
5
+ content: string;
6
+ duration: number;
7
+ key: string;
8
+ };
9
+ declare const RootStore_base: import("@akanjs/base").Type<{
10
+ readonly get: () => {
11
+ csrLoaded: boolean;
12
+ path: string;
13
+ pathname: string;
14
+ params: {
15
+ [key: string]: string;
16
+ };
17
+ searchParams: {
18
+ [key: string]: string;
19
+ };
20
+ theme: string;
21
+ prefix: string | undefined;
22
+ innerWidth: number;
23
+ innerHeight: number;
24
+ responsive: Responsive;
25
+ uiOperation: "sleep" | "loading" | "idle";
26
+ messages: (typeof defaultMessage)[];
27
+ tryJwt: string | null;
28
+ trySignalType: SignalType;
29
+ tryRoles: RoleType[];
30
+ tryAccount: {
31
+ __InternalArg__: "Account";
32
+ self?: import("@akanjs/signal").Self;
33
+ me?: import("@akanjs/signal").Me;
34
+ appName: string;
35
+ environment: import("@akanjs/base").Environment;
36
+ };
37
+ keyboardHeight: number;
38
+ pageState: import("@akanjs/client").PageState;
39
+ devMode: boolean;
40
+ getSelf: ({ reset }?: {
41
+ reset?: boolean;
42
+ }) => Promise<void>;
43
+ deviceToken: string;
44
+ currentPath: string;
45
+ connectStatus: "connected" | "connecting" | "disconnected";
46
+ };
47
+ readonly set: (state: Partial<{
48
+ csrLoaded: boolean;
49
+ path: string;
50
+ pathname: string;
51
+ params: {
52
+ [key: string]: string;
53
+ };
54
+ searchParams: {
55
+ [key: string]: string;
56
+ };
57
+ theme: string;
58
+ prefix: string | undefined;
59
+ innerWidth: number;
60
+ innerHeight: number;
61
+ responsive: Responsive;
62
+ uiOperation: "sleep" | "loading" | "idle";
63
+ messages: (typeof defaultMessage)[];
64
+ tryJwt: string | null;
65
+ trySignalType: SignalType;
66
+ tryRoles: RoleType[];
67
+ tryAccount: {
68
+ __InternalArg__: "Account";
69
+ self?: import("@akanjs/signal").Self;
70
+ me?: import("@akanjs/signal").Me;
71
+ appName: string;
72
+ environment: import("@akanjs/base").Environment;
73
+ };
74
+ keyboardHeight: number;
75
+ pageState: import("@akanjs/client").PageState;
76
+ devMode: boolean;
77
+ getSelf: ({ reset }?: {
78
+ reset?: boolean;
79
+ }) => Promise<void>;
80
+ deviceToken: string;
81
+ currentPath: string;
82
+ connectStatus: "connected" | "connecting" | "disconnected";
83
+ }> | ((state: {
84
+ csrLoaded: boolean;
85
+ path: string;
86
+ pathname: string;
87
+ params: {
88
+ [key: string]: string;
89
+ };
90
+ searchParams: {
91
+ [key: string]: string;
92
+ };
93
+ theme: string;
94
+ prefix: string | undefined;
95
+ innerWidth: number;
96
+ innerHeight: number;
97
+ responsive: Responsive;
98
+ uiOperation: "sleep" | "loading" | "idle";
99
+ messages: (typeof defaultMessage)[];
100
+ tryJwt: string | null;
101
+ trySignalType: SignalType;
102
+ tryRoles: RoleType[];
103
+ tryAccount: {
104
+ __InternalArg__: "Account";
105
+ self?: import("@akanjs/signal").Self;
106
+ me?: import("@akanjs/signal").Me;
107
+ appName: string;
108
+ environment: import("@akanjs/base").Environment;
109
+ };
110
+ keyboardHeight: number;
111
+ pageState: import("@akanjs/client").PageState;
112
+ devMode: boolean;
113
+ getSelf: ({ reset }?: {
114
+ reset?: boolean;
115
+ }) => Promise<void>;
116
+ deviceToken: string;
117
+ currentPath: string;
118
+ connectStatus: "connected" | "connecting" | "disconnected";
119
+ }) => any)) => void;
120
+ readonly pick: (...fields: ("path" | "prefix" | "params" | "innerHeight" | "innerWidth" | "pathname" | "searchParams" | "csrLoaded" | "theme" | "tryAccount" | "keyboardHeight" | "pageState" | "devMode" | "getSelf" | "responsive" | "uiOperation" | "messages" | "tryJwt" | "trySignalType" | "tryRoles" | "deviceToken" | "currentPath" | "connectStatus")[]) => {
121
+ path: string;
122
+ prefix: string;
123
+ params: {
124
+ [key: string]: string;
125
+ };
126
+ innerHeight: number;
127
+ innerWidth: number;
128
+ pathname: string;
129
+ searchParams: {
130
+ [key: string]: string;
131
+ };
132
+ csrLoaded: boolean;
133
+ theme: string;
134
+ tryAccount: {
135
+ __InternalArg__: "Account";
136
+ self?: import("@akanjs/signal").Self;
137
+ me?: import("@akanjs/signal").Me;
138
+ appName: string;
139
+ environment: import("@akanjs/base").Environment;
140
+ };
141
+ keyboardHeight: number;
142
+ pageState: import("@akanjs/client").PageState;
143
+ devMode: boolean;
144
+ getSelf: ({ reset }?: {
145
+ reset?: boolean;
146
+ }) => Promise<void>;
147
+ responsive: Responsive;
148
+ uiOperation: "sleep" | "idle";
149
+ messages: (typeof defaultMessage)[];
150
+ tryJwt: string;
151
+ trySignalType: SignalType;
152
+ tryRoles: RoleType[];
153
+ deviceToken: string;
154
+ currentPath: string;
155
+ connectStatus: "connected" | "connecting" | "disconnected";
156
+ };
157
+ } & {
158
+ csrLoaded: boolean;
159
+ path: string;
160
+ pathname: string;
161
+ params: {
162
+ [key: string]: string;
163
+ };
164
+ searchParams: {
165
+ [key: string]: string;
166
+ };
167
+ theme: string;
168
+ prefix: string | undefined;
169
+ innerWidth: number;
170
+ innerHeight: number;
171
+ responsive: Responsive;
172
+ uiOperation: "sleep" | "loading" | "idle";
173
+ messages: (typeof defaultMessage)[];
174
+ tryJwt: string | null;
175
+ trySignalType: SignalType;
176
+ tryRoles: RoleType[];
177
+ tryAccount: {
178
+ __InternalArg__: "Account";
179
+ self?: import("@akanjs/signal").Self;
180
+ me?: import("@akanjs/signal").Me;
181
+ appName: string;
182
+ environment: import("@akanjs/base").Environment;
183
+ };
184
+ keyboardHeight: number;
185
+ pageState: import("@akanjs/client").PageState;
186
+ devMode: boolean;
187
+ getSelf: ({ reset }?: {
188
+ reset?: boolean;
189
+ }) => Promise<void>;
190
+ deviceToken: string;
191
+ currentPath: string;
192
+ connectStatus: "connected" | "connecting" | "disconnected";
193
+ }>;
194
+ export declare class RootStore extends RootStore_base {
195
+ setDevMode(value: boolean): void;
196
+ setWindowSize(): void;
197
+ showMessage(message: {
198
+ content: string | string[];
199
+ } & Partial<typeof defaultMessage>): void;
200
+ hideMessage(key: string): void;
201
+ }
202
+ export declare const store: typeof RootStore;
203
+ export declare const st: import("./storeDecorators").WithSelectors<RootStore> & import("./storeDecorators").WithSelectors<any>;
204
+ export {};
package/src/index.d.ts CHANGED
@@ -1,2 +1,3 @@
1
1
  export * from "./types";
2
2
  export * from "./storeDecorators";
3
+ export * from "./baseSt";
@@ -5,7 +5,7 @@ import { DbGraphQL, DefaultOf, FetchInitForm, FieldState, FilterListArgs, Filter
5
5
  import { MutableRefObject } from "react";
6
6
  import { Mutate, StoreApi } from "zustand";
7
7
  import type { Submit } from "./types";
8
- export declare const st: WithSelectors<any>;
8
+ export declare const baseSt: WithSelectors<any>;
9
9
  type BaseState<T extends string, Full> = {
10
10
  [K in Uncapitalize<T>]: Full | null;
11
11
  } & {
@@ -211,7 +211,7 @@ interface StoreDecoratorInput {
211
211
  }
212
212
  export declare const Store: (returnsOrObj: (() => Type) | StoreDecoratorInput) => (target: Type) => void;
213
213
  type SetKey<T extends string> = `set${Capitalize<T>}`;
214
- interface WithSelectors<SA> {
214
+ export interface WithSelectors<SA> {
215
215
  sub: {
216
216
  (listener: (selectedState: SA, previousSelectedState: SA) => void): () => void;
217
217
  <U>(selector: (state: SA) => U, listener: (selectedState: U, previousSelectedState: U) => void, options?: {
@@ -238,9 +238,9 @@ interface WithSelectors<SA> {
238
238
  interface MakeStoreOption {
239
239
  library?: boolean;
240
240
  }
241
- export declare const makeStore: <SA extends {
241
+ export declare const makeStore: <BaseStore extends WithSelectors<any>, SA extends {
242
242
  [key: string]: any;
243
- }>(st: WithSelectors<any>, storeRef: Type<SA>, { library }?: MakeStoreOption) => WithSelectors<SA>;
243
+ }>(st: BaseStore, storeRef: Type<SA>, { library }?: MakeStoreOption) => WithSelectors<SA> & BaseStore;
244
244
  export type StoreOf<T extends string, State> = SliceMeta & {
245
245
  use: {
246
246
  [K in keyof State as State[K] extends (...args: any) => any ? never : K]: () => State[K];