@akanjs/store 0.0.28 → 0.0.30

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@akanjs/store",
3
- "version": "0.0.28",
3
+ "version": "0.0.30",
4
4
  "type": "commonjs",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -10,5 +10,22 @@
10
10
  "url": "https://github.com/akan-team/akanjs.git",
11
11
  "directory": "pkgs/@akanjs/store"
12
12
  },
13
+ "dependencies": {
14
+ "@urql/core": "^5.1.0",
15
+ "bull": "^4.16.5",
16
+ "dayjs": "^1.11.13",
17
+ "express": "^4.21.2",
18
+ "immer": "^10.1.1",
19
+ "mongoose": "^8.9.3",
20
+ "next": "^15.3.0",
21
+ "pluralize": "^8.0.0",
22
+ "react": "^18.3.1",
23
+ "react-dom": "^18.3.1",
24
+ "reflect-metadata": "^0.2.2",
25
+ "socket.io": "^4.8.1",
26
+ "socket.io-client": "^4.8.1",
27
+ "tunnel-ssh": "^5.2.0",
28
+ "zustand": "^5.0.2"
29
+ },
13
30
  "main": "./index.js"
14
31
  }
package/src/index.d.ts CHANGED
@@ -1 +1,2 @@
1
- export declare const a = 1;
1
+ export * from "./types";
2
+ export * from "./storeDecorators";
package/src/index.js CHANGED
@@ -2,10 +2,6 @@ var __defProp = Object.defineProperty;
2
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
4
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
5
  var __copyProps = (to, from, except, desc) => {
10
6
  if (from && typeof from === "object" || typeof from === "function") {
11
7
  for (let key of __getOwnPropNames(from))
@@ -14,14 +10,14 @@ var __copyProps = (to, from, except, desc) => {
14
10
  }
15
11
  return to;
16
12
  };
13
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
17
14
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
15
  var src_exports = {};
19
- __export(src_exports, {
20
- a: () => a
21
- });
22
16
  module.exports = __toCommonJS(src_exports);
23
- const a = 1;
17
+ __reExport(src_exports, require("./types"), module.exports);
18
+ __reExport(src_exports, require("./storeDecorators"), module.exports);
24
19
  // Annotate the CommonJS export names for ESM import in node:
25
20
  0 && (module.exports = {
26
- a
21
+ ...require("./types"),
22
+ ...require("./storeDecorators")
27
23
  });
@@ -0,0 +1,276 @@
1
+ import { DataList, type Dayjs, Type } from "@akanjs/base";
2
+ import { type FetchPolicy } from "@akanjs/common";
3
+ import { DocumentModel, type FilterType, type GetStateObject, ProtoFile, QueryOf, type SortOf } from "@akanjs/constant";
4
+ import { DbGraphQL, DefaultOf, FetchInitForm, FieldState, FilterListArgs, FilterStateArgs, SliceMeta } from "@akanjs/signal";
5
+ import { MutableRefObject } from "react";
6
+ import { Mutate, StoreApi } from "zustand";
7
+ import type { Submit } from "./types";
8
+ export declare const st: WithSelectors<any>;
9
+ type BaseState<T extends string, Full> = {
10
+ [K in Uncapitalize<T>]: Full | null;
11
+ } & {
12
+ [K in `${Uncapitalize<T>}Loading`]: string | boolean;
13
+ } & {
14
+ [K in `${Uncapitalize<T>}Form`]: DefaultOf<Full>;
15
+ } & {
16
+ [K in `${Uncapitalize<T>}FormLoading`]: string | boolean;
17
+ } & {
18
+ [K in `${Uncapitalize<T>}Submit`]: Submit;
19
+ } & {
20
+ [K in `${Uncapitalize<T>}ViewAt`]: Date;
21
+ } & {
22
+ [K in `${Uncapitalize<T>}Modal`]: string | null;
23
+ } & {
24
+ [K in `${Uncapitalize<T>}Operation`]: "sleep" | "reset" | "idle" | "error" | "loading";
25
+ };
26
+ type SliceState<T extends string, Full, Light extends {
27
+ id: string;
28
+ }, QueryArgs, Insight, Filter extends FilterType, Suffix extends string = ""> = {
29
+ [K in `default${Capitalize<T>}${Suffix}`]: DefaultOf<Full>;
30
+ } & {
31
+ [K in `${Uncapitalize<T>}List${Suffix}`]: DataList<Light>;
32
+ } & {
33
+ [K in `${Uncapitalize<T>}ListLoading${Suffix}`]: boolean;
34
+ } & {
35
+ [K in `${Uncapitalize<T>}InitList${Suffix}`]: DataList<Light>;
36
+ } & {
37
+ [K in `${Uncapitalize<T>}InitAt${Suffix}`]: Date;
38
+ } & {
39
+ [K in `${Uncapitalize<T>}Selection${Suffix}`]: DataList<Light>;
40
+ } & {
41
+ [K in `${Uncapitalize<T>}Insight${Suffix}`]: Insight;
42
+ } & {
43
+ [K in `lastPageOf${Capitalize<T>}${Suffix}`]: number;
44
+ } & {
45
+ [K in `pageOf${Capitalize<T>}${Suffix}`]: number;
46
+ } & {
47
+ [K in `limitOf${Capitalize<T>}${Suffix}`]: number;
48
+ } & {
49
+ [K in `queryArgsOf${Capitalize<T>}${Suffix}`]: QueryArgs;
50
+ } & {
51
+ [K in `sortOf${Capitalize<T>}${Suffix}`]: SortOf<Filter>;
52
+ };
53
+ type MergeFields<T> = {
54
+ [K in keyof T]: T[K] extends object ? T[K] : never;
55
+ }[keyof T];
56
+ type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
57
+ type DefaultState<T extends string, Full, Light extends {
58
+ id: string;
59
+ }, Insight, Filter extends FilterType, Signal> = BaseState<T, Full> & SliceState<T, Full, Light, [query: QueryOf<DocumentModel<Full>>], Insight, Filter> & UnionToIntersection<MergeFields<{
60
+ [K in keyof Signal as K extends `${T}List${infer Suffix}` ? K : never]: K extends `${T}List${infer Suffix}` ? Signal[K] extends (...args: infer Args) => Promise<Full[]> ? SliceState<T, Full, Light, FilterStateArgs<Args, Filter>, Insight, Filter, Suffix> : never : never;
61
+ }>>;
62
+ export declare const createState: <T extends string, Input, Full, Light extends {
63
+ id: string;
64
+ }, Insight, Filter extends FilterType, Fetch, Signal>(gql: DbGraphQL<T, Input, Full, Light, Insight, Filter, Fetch, Signal>) => DefaultState<T, Full, Light, Insight, Filter, Signal>;
65
+ type GetState<T, K> = K extends keyof T ? T[K] : never;
66
+ type PickState<G> = G extends () => infer S ? PickFunc<S, keyof S> : never;
67
+ type PickFunc<T, F extends keyof T = keyof T> = (...fields: F[]) => {
68
+ [K in (typeof fields)[number]]: Exclude<T[K], null | undefined | "loading">;
69
+ };
70
+ type MakeState<Maker> = Maker extends (...args: any) => infer S ? S : Maker;
71
+ export interface SetGet<State> {
72
+ set: (state: Partial<MakeState<State>> | ((state: MakeState<State>) => any)) => void;
73
+ get: GetState<Mutate<StoreApi<MakeState<State>>, []>, "getState">;
74
+ pick: PickState<GetState<Mutate<StoreApi<MakeState<State>>, []>, "getState">>;
75
+ }
76
+ export interface SetPick<State> {
77
+ set: (state: Partial<MakeState<State>> | ((state: MakeState<State>) => any)) => void;
78
+ pick: PickState<GetState<Mutate<StoreApi<MakeState<State>>, []>, "getState">>;
79
+ }
80
+ export type State<StateMaker, Actions = () => Record<string, never>> = (StateMaker extends (...args: any) => infer R ? R : StateMaker) & (Actions extends (...args: any) => infer R ? R : never);
81
+ export type Get<State, Actions> = MakeState<State> & MakeState<Actions>;
82
+ export interface CreateOption<Full extends {
83
+ id: string;
84
+ }> {
85
+ idx?: number;
86
+ path?: string;
87
+ modal?: string;
88
+ sliceName?: string;
89
+ onError?: (e: string) => void;
90
+ onSuccess?: (model: Full) => void | Promise<void>;
91
+ }
92
+ export interface NewOption {
93
+ modal?: string;
94
+ setDefault?: boolean;
95
+ sliceName?: string;
96
+ }
97
+ type PartialOrNull<O> = {
98
+ [K in keyof O]?: O[K] | null;
99
+ };
100
+ type BaseAction<T extends string, Input, Full extends {
101
+ id: string;
102
+ }, Light> = {
103
+ [K in `create${Capitalize<T>}InForm`]: (options?: CreateOption<Full>) => Promise<void>;
104
+ } & {
105
+ [K in `update${Capitalize<T>}InForm`]: (options?: CreateOption<Full>) => Promise<void>;
106
+ } & {
107
+ [K in `create${Capitalize<T>}`]: (data: GetStateObject<Input>, options?: CreateOption<Full>) => Promise<void>;
108
+ } & {
109
+ [K in `update${Capitalize<T>}`]: (id: string, data: GetStateObject<Input>, options?: CreateOption<Full>) => Promise<void>;
110
+ } & {
111
+ [K in `remove${Capitalize<T>}`]: (id: string, options?: FetchPolicy & {
112
+ modal?: string | null;
113
+ }) => Promise<void>;
114
+ } & {
115
+ [K in `check${Capitalize<T>}Submitable`]: (disabled?: boolean) => Promise<void>;
116
+ } & {
117
+ [K in `submit${Capitalize<T>}`]: (options?: CreateOption<Full>) => Promise<void>;
118
+ } & {
119
+ [K in `new${Capitalize<T>}`]: (partial?: PartialOrNull<Full>, options?: NewOption) => void;
120
+ } & {
121
+ [K in `edit${Capitalize<T>}`]: (model: Full | string, options?: {
122
+ modal?: string | null;
123
+ } & FetchPolicy) => Promise<void>;
124
+ } & {
125
+ [K in `merge${Capitalize<T>}`]: (model: Full | string, data: Partial<Full>, options?: FetchPolicy) => Promise<void>;
126
+ } & {
127
+ [K in `view${Capitalize<T>}`]: (model: Full | string, options?: {
128
+ modal?: string | null;
129
+ } & FetchPolicy) => Promise<void>;
130
+ } & {
131
+ [K in `set${Capitalize<T>}`]: (model: Full | Light) => void;
132
+ } & {
133
+ [K in `reset${Capitalize<T>}`]: (model?: Full) => void;
134
+ };
135
+ type SliceAction<T extends string, Input, Full extends {
136
+ id: string;
137
+ }, Light, QueryArgs extends any[], Filter extends FilterType, Suffix extends string = ""> = {
138
+ [K in `init${Capitalize<T>}${Suffix}`]: (...args: [...args: QueryArgs, initForm?: FetchInitForm<Input, Full, Filter> & FetchPolicy]) => Promise<void>;
139
+ } & {
140
+ [K in `refresh${Capitalize<T>}${Suffix}`]: (...args: [...args: QueryArgs, initForm?: FetchInitForm<Input, Full, Filter> & FetchPolicy]) => Promise<void>;
141
+ } & {
142
+ [K in `select${Capitalize<T>}${Suffix}`]: (model: Light | Light[], options?: {
143
+ refresh?: boolean;
144
+ remove?: boolean;
145
+ }) => void;
146
+ } & {
147
+ [K in `setPageOf${Capitalize<T>}${Suffix}`]: (page: number, options?: FetchPolicy) => Promise<void>;
148
+ } & {
149
+ [K in `addPageOf${Capitalize<T>}${Suffix}`]: (page: number, options?: FetchPolicy) => Promise<void>;
150
+ } & {
151
+ [K in `setLimitOf${Capitalize<T>}${Suffix}`]: (limit: number, options?: FetchPolicy) => Promise<void>;
152
+ } & {
153
+ [K in `setQueryArgsOf${Capitalize<T>}${Suffix}`]: (...args: [...args: QueryArgs, options?: FetchPolicy]) => Promise<void>;
154
+ } & {
155
+ [K in `setSortOf${Capitalize<T>}${Suffix}`]: (sort: SortOf<Filter>, options?: FetchPolicy) => Promise<void>;
156
+ };
157
+ type DefaultActions<T extends string, Input, Full extends {
158
+ id: string;
159
+ }, Light, Filter extends FilterType, Fetch, Signal> = BaseAction<T, Input, Full, Light> & FormSetter<Full, T> & SliceAction<T, Input, Full, Light, [query: QueryOf<DocumentModel<Full>>], Filter> & UnionToIntersection<MergeFields<{
160
+ [K in keyof Signal as K extends `${T}List${infer Suffix}` ? K : never]: K extends `${T}List${infer Suffix}` ? Signal[K] extends (...args: infer Args) => Promise<Full[]> ? SliceAction<T, Input, Full, Light, FilterListArgs<Args, Filter>, Filter, Suffix> : never : never;
161
+ }>>;
162
+ export declare const createActions: <T extends string, Input, Full extends {
163
+ id: string;
164
+ }, Light extends {
165
+ id: string;
166
+ }, Insight, Filter extends FilterType, Fetch, Signal>(gql: DbGraphQL<T, Input, Full, Light, Insight, Filter, Fetch, Signal>) => DefaultActions<T, Input, Full, Light, Filter, Fetch, Signal>;
167
+ type SingleOf<M> = M extends (infer V)[] ? V : never;
168
+ type SetterKey<Prefix extends string, K extends string, S extends string> = `${Prefix}${Capitalize<K>}On${Capitalize<S>}`;
169
+ type FormSetter<Full, S extends string> = {
170
+ [K in keyof Full as Full[K] extends (...args: any) => any ? never : SetterKey<"set", string & K, S>]: (value?: FieldState<Full[K]>) => void;
171
+ } & {
172
+ [K in keyof Full as Full[K] extends any[] ? SetterKey<"add", string & K, S> : never]: (value: DefaultOf<SingleOf<Full[K]>> | DefaultOf<SingleOf<Full[K]>>[], options?: {
173
+ idx?: number;
174
+ limit?: number;
175
+ }) => void;
176
+ } & {
177
+ [K in keyof Full as Full[K] extends any[] ? SetterKey<"sub", string & K, S> : never]: (idx: number | number[]) => void;
178
+ } & {
179
+ [K in keyof Full as Full[K] extends any[] ? SetterKey<"addOrSub", string & K, S> : never]: (value: SingleOf<Full[K]>, options?: {
180
+ idx?: number;
181
+ limit?: number;
182
+ }) => void;
183
+ } & {
184
+ [K in keyof Full as Full[K] extends (ProtoFile | null) | ProtoFile[] ? SetterKey<"upload", string & K, S> : never]: (fileList: FileList, idx?: number) => Promise<void>;
185
+ } & {
186
+ [K in `writeOn${Capitalize<S>}`]: (path: string | (string | number)[], value: any) => void;
187
+ };
188
+ export declare const stateOf: <T extends string, Input, Full extends {
189
+ id: string;
190
+ }, Light extends {
191
+ id: string;
192
+ }, Insight, Filter extends FilterType, Fetch, Signal, State extends {
193
+ [key: string]: any;
194
+ }>(gql: DbGraphQL<T, Input, Full, Light, Insight, Filter, Fetch, Signal>, state: State) => Type<{
195
+ readonly get: () => State & { [K in Uncapitalize<T>]: Full | null; } & { [K_1 in `${Uncapitalize<T>}Loading`]: string | boolean; } & { [K_2 in `${Uncapitalize<T>}Form`]: DefaultOf<Full>; } & { [K_3 in `${Uncapitalize<T>}FormLoading`]: string | boolean; } & { [K_4 in `${Uncapitalize<T>}Submit`]: Submit; } & { [K_5 in `${Uncapitalize<T>}ViewAt`]: Date; } & { [K_6 in `${Uncapitalize<T>}Modal`]: string | null; } & { [K_7 in `${Uncapitalize<T>}Operation`]: "error" | "reset" | "sleep" | "idle" | "loading"; } & { [K_8 in `default${Capitalize<T>}`]: DefaultOf<Full>; } & { [K_9 in `${Uncapitalize<T>}List`]: DataList<Light>; } & { [K_10 in `${Uncapitalize<T>}ListLoading`]: boolean; } & { [K_11 in `${Uncapitalize<T>}InitList`]: DataList<Light>; } & { [K_12 in `${Uncapitalize<T>}InitAt`]: Date; } & { [K_13 in `${Uncapitalize<T>}Selection`]: DataList<Light>; } & { [K_14 in `${Uncapitalize<T>}Insight`]: Insight; } & { [K_15 in `lastPageOf${Capitalize<T>}`]: number; } & { [K_16 in `pageOf${Capitalize<T>}`]: number; } & { [K_17 in `limitOf${Capitalize<T>}`]: number; } & { [K_18 in `queryArgsOf${Capitalize<T>}`]: [query: QueryOf<DocumentModel<Full, Dayjs>>]; } & { [K_19 in `sortOf${Capitalize<T>}`]: Exclude<keyof { [K_20 in keyof Filter as Filter[K_20] extends (...args: any) => any ? never : K_20]: Filter[K_20]; }, "prototype">; } & UnionToIntersection<MergeFields<{ [K_21 in keyof Signal as K_21 extends `${T}List${infer Suffix}` ? K_21 : never]: K_21 extends `${T}List${infer Suffix_1}` ? Signal[K_21] extends (...args: infer Args) => Promise<Full[]> ? SliceState<T, Full, Light, import("@akanjs/signal").FilterOutInternalArgs<Args> extends infer T_1 ? T_1 extends import("@akanjs/signal").FilterOutInternalArgs<Args> ? T_1 extends [...args: infer QueryArgs, skip: number | null, limit: number | null, sort: string | null] ? QueryArgs : never : never : never, Insight, Filter, Suffix_1> : never : never; }>>;
196
+ readonly set: (state: Partial<MakeState<State & { [K in Uncapitalize<T>]: Full | null; } & { [K_1 in `${Uncapitalize<T>}Loading`]: string | boolean; } & { [K_2 in `${Uncapitalize<T>}Form`]: DefaultOf<Full>; } & { [K_3 in `${Uncapitalize<T>}FormLoading`]: string | boolean; } & { [K_4 in `${Uncapitalize<T>}Submit`]: Submit; } & { [K_5 in `${Uncapitalize<T>}ViewAt`]: Date; } & { [K_6 in `${Uncapitalize<T>}Modal`]: string | null; } & { [K_7 in `${Uncapitalize<T>}Operation`]: "error" | "reset" | "sleep" | "idle" | "loading"; } & { [K_8 in `default${Capitalize<T>}`]: DefaultOf<Full>; } & { [K_9 in `${Uncapitalize<T>}List`]: DataList<Light>; } & { [K_10 in `${Uncapitalize<T>}ListLoading`]: boolean; } & { [K_11 in `${Uncapitalize<T>}InitList`]: DataList<Light>; } & { [K_12 in `${Uncapitalize<T>}InitAt`]: Date; } & { [K_13 in `${Uncapitalize<T>}Selection`]: DataList<Light>; } & { [K_14 in `${Uncapitalize<T>}Insight`]: Insight; } & { [K_15 in `lastPageOf${Capitalize<T>}`]: number; } & { [K_16 in `pageOf${Capitalize<T>}`]: number; } & { [K_17 in `limitOf${Capitalize<T>}`]: number; } & { [K_18 in `queryArgsOf${Capitalize<T>}`]: [query: QueryOf<DocumentModel<Full, Dayjs>>]; } & { [K_19 in `sortOf${Capitalize<T>}`]: Exclude<keyof { [K_20 in keyof Filter as Filter[K_20] extends (...args: any) => any ? never : K_20]: Filter[K_20]; }, "prototype">; } & UnionToIntersection<MergeFields<{ [K_21 in keyof Signal as K_21 extends `${T}List${infer Suffix}` ? K_21 : never]: K_21 extends `${T}List${infer Suffix_1}` ? Signal[K_21] extends (...args: infer Args) => Promise<Full[]> ? SliceState<T, Full, Light, import("@akanjs/signal").FilterOutInternalArgs<Args> extends infer T_1 ? T_1 extends import("@akanjs/signal").FilterOutInternalArgs<Args> ? T_1 extends [...args: infer QueryArgs, skip: number | null, limit: number | null, sort: string | null] ? QueryArgs : never : never : never, Insight, Filter, Suffix_1> : never : never; }>>>> | ((state: MakeState<State & { [K in Uncapitalize<T>]: Full | null; } & { [K_1 in `${Uncapitalize<T>}Loading`]: string | boolean; } & { [K_2 in `${Uncapitalize<T>}Form`]: DefaultOf<Full>; } & { [K_3 in `${Uncapitalize<T>}FormLoading`]: string | boolean; } & { [K_4 in `${Uncapitalize<T>}Submit`]: Submit; } & { [K_5 in `${Uncapitalize<T>}ViewAt`]: Date; } & { [K_6 in `${Uncapitalize<T>}Modal`]: string | null; } & { [K_7 in `${Uncapitalize<T>}Operation`]: "error" | "reset" | "sleep" | "idle" | "loading"; } & { [K_8 in `default${Capitalize<T>}`]: DefaultOf<Full>; } & { [K_9 in `${Uncapitalize<T>}List`]: DataList<Light>; } & { [K_10 in `${Uncapitalize<T>}ListLoading`]: boolean; } & { [K_11 in `${Uncapitalize<T>}InitList`]: DataList<Light>; } & { [K_12 in `${Uncapitalize<T>}InitAt`]: Date; } & { [K_13 in `${Uncapitalize<T>}Selection`]: DataList<Light>; } & { [K_14 in `${Uncapitalize<T>}Insight`]: Insight; } & { [K_15 in `lastPageOf${Capitalize<T>}`]: number; } & { [K_16 in `pageOf${Capitalize<T>}`]: number; } & { [K_17 in `limitOf${Capitalize<T>}`]: number; } & { [K_18 in `queryArgsOf${Capitalize<T>}`]: [query: QueryOf<DocumentModel<Full, Dayjs>>]; } & { [K_19 in `sortOf${Capitalize<T>}`]: Exclude<keyof { [K_20 in keyof Filter as Filter[K_20] extends (...args: any) => any ? never : K_20]: Filter[K_20]; }, "prototype">; } & UnionToIntersection<MergeFields<{ [K_21 in keyof Signal as K_21 extends `${T}List${infer Suffix}` ? K_21 : never]: K_21 extends `${T}List${infer Suffix_1}` ? Signal[K_21] extends (...args: infer Args) => Promise<Full[]> ? SliceState<T, Full, Light, import("@akanjs/signal").FilterOutInternalArgs<Args> extends infer T_2 ? T_2 extends import("@akanjs/signal").FilterOutInternalArgs<Args> ? T_2 extends [...args: infer QueryArgs, skip: number | null, limit: number | null, sort: string | null] ? QueryArgs : never : never : never, Insight, Filter, Suffix_1> : never : never; }>>>) => any)) => void;
197
+ readonly pick: PickState<GetState<Mutate<StoreApi<MakeState<State & { [K in Uncapitalize<T>]: Full | null; } & { [K_1 in `${Uncapitalize<T>}Loading`]: string | boolean; } & { [K_2 in `${Uncapitalize<T>}Form`]: DefaultOf<Full>; } & { [K_3 in `${Uncapitalize<T>}FormLoading`]: string | boolean; } & { [K_4 in `${Uncapitalize<T>}Submit`]: Submit; } & { [K_5 in `${Uncapitalize<T>}ViewAt`]: Date; } & { [K_6 in `${Uncapitalize<T>}Modal`]: string | null; } & { [K_7 in `${Uncapitalize<T>}Operation`]: "error" | "reset" | "sleep" | "idle" | "loading"; } & { [K_8 in `default${Capitalize<T>}`]: DefaultOf<Full>; } & { [K_9 in `${Uncapitalize<T>}List`]: DataList<Light>; } & { [K_10 in `${Uncapitalize<T>}ListLoading`]: boolean; } & { [K_11 in `${Uncapitalize<T>}InitList`]: DataList<Light>; } & { [K_12 in `${Uncapitalize<T>}InitAt`]: Date; } & { [K_13 in `${Uncapitalize<T>}Selection`]: DataList<Light>; } & { [K_14 in `${Uncapitalize<T>}Insight`]: Insight; } & { [K_15 in `lastPageOf${Capitalize<T>}`]: number; } & { [K_16 in `pageOf${Capitalize<T>}`]: number; } & { [K_17 in `limitOf${Capitalize<T>}`]: number; } & { [K_18 in `queryArgsOf${Capitalize<T>}`]: [query: QueryOf<DocumentModel<Full, Dayjs>>]; } & { [K_19 in `sortOf${Capitalize<T>}`]: Exclude<keyof { [K_20 in keyof Filter as Filter[K_20] extends (...args: any) => any ? never : K_20]: Filter[K_20]; }, "prototype">; } & UnionToIntersection<MergeFields<{ [K_21 in keyof Signal as K_21 extends `${T}List${infer Suffix}` ? K_21 : never]: K_21 extends `${T}List${infer Suffix_1}` ? Signal[K_21] extends (...args: infer Args) => Promise<Full[]> ? SliceState<T, Full, Light, import("@akanjs/signal").FilterOutInternalArgs<Args> extends infer T_1 ? T_1 extends import("@akanjs/signal").FilterOutInternalArgs<Args> ? T_1 extends [...args: infer QueryArgs, skip: number | null, limit: number | null, sort: string | null] ? QueryArgs : never : never : never, Insight, Filter, Suffix_1> : never : never; }>>>>, []>, "getState">>;
198
+ } & (State & { [K in Uncapitalize<T>]: Full | null; } & { [K_1 in `${Uncapitalize<T>}Loading`]: string | boolean; } & { [K_2 in `${Uncapitalize<T>}Form`]: DefaultOf<Full>; } & { [K_3 in `${Uncapitalize<T>}FormLoading`]: string | boolean; } & { [K_4 in `${Uncapitalize<T>}Submit`]: Submit; } & { [K_5 in `${Uncapitalize<T>}ViewAt`]: Date; } & { [K_6 in `${Uncapitalize<T>}Modal`]: string | null; } & { [K_7 in `${Uncapitalize<T>}Operation`]: "error" | "reset" | "sleep" | "idle" | "loading"; } & { [K_8 in `default${Capitalize<T>}`]: DefaultOf<Full>; } & { [K_9 in `${Uncapitalize<T>}List`]: DataList<Light>; } & { [K_10 in `${Uncapitalize<T>}ListLoading`]: boolean; } & { [K_11 in `${Uncapitalize<T>}InitList`]: DataList<Light>; } & { [K_12 in `${Uncapitalize<T>}InitAt`]: Date; } & { [K_13 in `${Uncapitalize<T>}Selection`]: DataList<Light>; } & { [K_14 in `${Uncapitalize<T>}Insight`]: Insight; } & { [K_15 in `lastPageOf${Capitalize<T>}`]: number; } & { [K_16 in `pageOf${Capitalize<T>}`]: number; } & { [K_17 in `limitOf${Capitalize<T>}`]: number; } & { [K_18 in `queryArgsOf${Capitalize<T>}`]: [query: QueryOf<DocumentModel<Full, Dayjs>>]; } & { [K_19 in `sortOf${Capitalize<T>}`]: Exclude<keyof { [K_20 in keyof Filter as Filter[K_20] extends (...args: any) => any ? never : K_20]: Filter[K_20]; }, "prototype">; } & UnionToIntersection<MergeFields<{ [K_21 in keyof Signal as K_21 extends `${T}List${infer Suffix}` ? K_21 : never]: K_21 extends `${T}List${infer Suffix_1}` ? Signal[K_21] extends (...args: infer Args) => Promise<Full[]> ? SliceState<T, Full, Light, import("@akanjs/signal").FilterOutInternalArgs<Args> extends infer T_2 ? T_2 extends import("@akanjs/signal").FilterOutInternalArgs<Args> ? T_2 extends [...args: infer QueryArgs, skip: number | null, limit: number | null, sort: string | null] ? QueryArgs : never : never : never, Insight, Filter, Suffix_1> : never : never; }>>) & DefaultActions<T, Input, Full, Light, Filter, Fetch, Signal> & { [K_22 in keyof Fetch as K_22 extends `${T}List${infer Suffix_2}` ? `__SLICE__${T}${Suffix_2}` : never]: K_22 extends `${T}List${infer Suffix_3}` ? Fetch[K_22] extends (...args: [...args: infer QueryArgs_1, skip: null | undefined, limit: null | undefined, sort: null | undefined, option?: FetchPolicy]) => Promise<Light[]> ? StoreOf<T, RemoveSuffix<{ [K_23 in `default${Capitalize<T>}${Suffix_3}`]: DefaultOf<Full>; } & { [K_24 in `${Uncapitalize<T>}List${Suffix_3}`]: DataList<Light>; } & { [K_25 in `${Uncapitalize<T>}ListLoading${Suffix_3}`]: boolean; } & { [K_26 in `${Uncapitalize<T>}InitList${Suffix_3}`]: DataList<Light>; } & { [K_27 in `${Uncapitalize<T>}InitAt${Suffix_3}`]: Date; } & { [K_28 in `${Uncapitalize<T>}Selection${Suffix_3}`]: DataList<Light>; } & { [K_29 in `${Uncapitalize<T>}Insight${Suffix_3}`]: Insight; } & { [K_30 in `lastPageOf${Capitalize<T>}${Suffix_3}`]: number; } & { [K_31 in `pageOf${Capitalize<T>}${Suffix_3}`]: number; } & { [K_32 in `limitOf${Capitalize<T>}${Suffix_3}`]: number; } & { [K_33 in `queryArgsOf${Capitalize<T>}${Suffix_3}`]: QueryArgs_1; } & { [K_34 in `sortOf${Capitalize<T>}${Suffix_3}`]: Exclude<keyof { [K_20 in keyof Filter as Filter[K_20] extends (...args: any) => any ? never : K_20]: Filter[K_20]; }, "prototype">; } & { [K_35 in `init${Capitalize<T>}${Suffix_3}`]: (...args: [...args: QueryArgs_1, initForm?: (FetchInitForm<Input, Full, Filter> & FetchPolicy<any>) | undefined]) => Promise<void>; } & { [K_36 in `refresh${Capitalize<T>}${Suffix_3}`]: (...args: [...args: QueryArgs_1, initForm?: (FetchInitForm<Input, Full, Filter> & FetchPolicy<any>) | undefined]) => Promise<void>; } & { [K_37 in `select${Capitalize<T>}${Suffix_3}`]: (model: Light | Light[], options?: {
199
+ refresh?: boolean;
200
+ remove?: boolean;
201
+ }) => void; } & { [K_38 in `setPageOf${Capitalize<T>}${Suffix_3}`]: (page: number, options?: FetchPolicy) => Promise<void>; } & { [K_39 in `addPageOf${Capitalize<T>}${Suffix_3}`]: (page: number, options?: FetchPolicy) => Promise<void>; } & { [K_40 in `setLimitOf${Capitalize<T>}${Suffix_3}`]: (limit: number, options?: FetchPolicy) => Promise<void>; } & { [K_41 in `setQueryArgsOf${Capitalize<T>}${Suffix_3}`]: (...args: [...args: QueryArgs_1, options?: FetchPolicy<any> | undefined]) => Promise<void>; } & { [K_42 in `setSortOf${Capitalize<T>}${Suffix_3}`]: (sort: Exclude<keyof { [K_20 in keyof Filter as Filter[K_20] extends (...args: any) => any ? never : K_20]: Filter[K_20]; }, "prototype">, options?: FetchPolicy) => Promise<void>; }, Suffix_3>> : never : never; }>;
202
+ export declare const scalarStateOf: <T extends string, State extends {
203
+ [key: string]: any;
204
+ }>(refName: string, state: State) => Type<{
205
+ readonly get: () => State;
206
+ readonly set: (state: Partial<MakeState<State>> | ((state: MakeState<State>) => any)) => void;
207
+ readonly pick: PickState<GetState<Mutate<StoreApi<MakeState<State>>, []>, "getState">>;
208
+ } & State>;
209
+ interface StoreDecoratorInput {
210
+ name: string;
211
+ }
212
+ export declare const Store: (returnsOrObj: (() => Type) | StoreDecoratorInput) => (target: Type) => void;
213
+ type SetKey<T extends string> = `set${Capitalize<T>}`;
214
+ type WithSelectors<SA> = {
215
+ sub: {
216
+ (listener: (selectedState: SA, previousSelectedState: SA) => void): () => void;
217
+ <U>(selector: (state: SA) => U, listener: (selectedState: U, previousSelectedState: U) => void, options?: {
218
+ equalityFn?: (a: U, b: U) => boolean;
219
+ fireImmediately?: boolean;
220
+ }): () => void;
221
+ };
222
+ } & {
223
+ ref: <U>(selector: (state: SA) => U) => MutableRefObject<U>;
224
+ } & {
225
+ sel: <U>(selector: (state: SA) => U, equals?: (a: U, b: U) => boolean) => U;
226
+ } & {
227
+ use: {
228
+ [K in keyof SA as SA[K] extends (...args: any) => any ? never : K]: () => SA[K];
229
+ };
230
+ } & {
231
+ do: {
232
+ [K in keyof SA as SA[K] extends (...args: any) => any ? K : never]: SA[K];
233
+ } & {
234
+ [K in keyof SA as SA[K] extends (...args: any) => any ? never : SetKey<K & string>]: (value: FieldState<SA[K]>) => void;
235
+ };
236
+ } & {
237
+ get: () => SA;
238
+ } & {
239
+ set: (state: Partial<SA> | ((state: SA) => any)) => void;
240
+ } & {
241
+ slice: {
242
+ [K in keyof SA as K extends `__SLICE__${infer S}` ? S : never]: SA[K];
243
+ };
244
+ };
245
+ interface MakeStoreOption {
246
+ library?: boolean;
247
+ }
248
+ export declare const makeStore: <SA extends {
249
+ [key: string]: any;
250
+ }>(st: WithSelectors<any>, storeRef: Type<SA>, { library }?: MakeStoreOption) => WithSelectors<SA>;
251
+ export type StoreOf<T extends string, State> = SliceMeta & {
252
+ use: {
253
+ [K in keyof State as State[K] extends (...args: any) => any ? never : K]: () => State[K];
254
+ };
255
+ } & {
256
+ do: {
257
+ [K in keyof State as State[K] extends (...args: any) => any ? K : never]: State[K];
258
+ };
259
+ } & {
260
+ do: {
261
+ [K in keyof State as State[K] extends (...args: any) => any ? never : `set${Capitalize<K & string>}`]: (value: FieldState<State[K]>) => void;
262
+ };
263
+ };
264
+ type RemoveSuffix<State, Suffix extends string> = {
265
+ [K in keyof State as K extends `${infer Prefix}${Suffix}` ? Prefix : never]: State[K];
266
+ };
267
+ export type Store<State> = WithSelectors<State>;
268
+ type OmitGetSetPick<T> = Omit<T, "get" | "set" | "pick">;
269
+ export declare 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>(s1: Type<S1>, s2?: Type<S2>, s3?: Type<S3>, s4?: Type<S4>, s5?: Type<S5>, s6?: Type<S6>, s7?: Type<S7>, s8?: Type<S8>, s9?: Type<S9>, s10?: Type<S10>, s11?: Type<S11>, s12?: Type<S12>, s13?: Type<S13>, s14?: Type<S14>, s15?: Type<S15>, s16?: Type<S16>, s17?: Type<S17>, s18?: Type<S18>, s19?: Type<S19>, s20?: Type<S20>, s21?: Type<S21>, s22?: Type<S22>, s23?: Type<S23>, s24?: Type<S24>, s25?: Type<S25>, s26?: Type<S26>, s27?: Type<S27>, s28?: Type<S28>, s29?: Type<S29>, s30?: Type<S30>) => Type<OmitGetSetPick<S1> & OmitGetSetPick<S2> & OmitGetSetPick<S3> & OmitGetSetPick<S4> & OmitGetSetPick<S5> & OmitGetSetPick<S6> & OmitGetSetPick<S7> & OmitGetSetPick<S8> & OmitGetSetPick<S9> & OmitGetSetPick<S10> & OmitGetSetPick<S11> & OmitGetSetPick<S12> & OmitGetSetPick<S13> & OmitGetSetPick<S14> & OmitGetSetPick<S15> & OmitGetSetPick<S16> & OmitGetSetPick<S17> & OmitGetSetPick<S18> & OmitGetSetPick<S19> & OmitGetSetPick<S20> & OmitGetSetPick<S21> & OmitGetSetPick<S22> & OmitGetSetPick<S23> & OmitGetSetPick<S24> & OmitGetSetPick<S25> & OmitGetSetPick<S26> & OmitGetSetPick<S27> & OmitGetSetPick<S28> & OmitGetSetPick<S29> & OmitGetSetPick<S30> & SetGet<OmitGetSetPick<S1> & OmitGetSetPick<S2> & OmitGetSetPick<S3> & OmitGetSetPick<S4> & OmitGetSetPick<S5> & OmitGetSetPick<S6> & OmitGetSetPick<S7> & OmitGetSetPick<S8> & OmitGetSetPick<S9> & OmitGetSetPick<S10> & OmitGetSetPick<S11> & OmitGetSetPick<S12> & OmitGetSetPick<S13> & OmitGetSetPick<S14> & OmitGetSetPick<S15> & OmitGetSetPick<S16> & OmitGetSetPick<S17> & OmitGetSetPick<S18> & OmitGetSetPick<S19> & OmitGetSetPick<S20> & OmitGetSetPick<S21> & OmitGetSetPick<S22> & OmitGetSetPick<S23> & OmitGetSetPick<S24> & OmitGetSetPick<S25> & OmitGetSetPick<S26> & OmitGetSetPick<S27> & OmitGetSetPick<S28> & OmitGetSetPick<S29> & OmitGetSetPick<S30>>>;
270
+ export declare const rootStoreOf: <Store>(store: Type<Store>) => Type<Store>;
271
+ interface ToastProps {
272
+ root?: string;
273
+ duration?: number;
274
+ }
275
+ export declare const Toast: ({ root, duration }?: ToastProps) => (target: any, key: string, descriptor: PropertyDescriptor) => void;
276
+ export {};