@akanjs/store 0.9.60-canary.0 → 0.9.60-canary.11
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/README.md +1 -11
- package/cjs/src/storeDecorators.js +21 -13
- package/esm/src/storeDecorators.js +21 -13
- package/package.json +2 -2
- package/src/storeDecorators.d.ts +4 -3
package/README.md
CHANGED
|
@@ -1,11 +1 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
This library was generated with [Nx](https://nx.dev).
|
|
4
|
-
|
|
5
|
-
## Building
|
|
6
|
-
|
|
7
|
-
Run `nx build akan` to build the library.
|
|
8
|
-
|
|
9
|
-
## Running unit tests
|
|
10
|
-
|
|
11
|
-
Run `nx test akan` to execute the unit tests via [Jest](https://jestjs.io).
|
|
1
|
+
이 패키지는 akanjs의 서브 라이브러리입니다. 더 자세한 내용은 [@akanjs/cli](https://www.npmjs.com/package/@akanjs/cli)와 [Akan.js Github](https://github.com/akan-team/akanjs)를 참고하세요.
|
|
@@ -556,18 +556,23 @@ const makeActions = (refName, slices) => {
|
|
|
556
556
|
const model = await fetch[names.model](id, { onError });
|
|
557
557
|
this.set({ [names.model]: model, [names.modelViewAt]: /* @__PURE__ */ new Date(), [names.modelLoading]: false });
|
|
558
558
|
},
|
|
559
|
-
[names.setModel]: function(
|
|
559
|
+
[names.setModel]: function(...fullOrLightModels) {
|
|
560
560
|
const currentState = this.get();
|
|
561
|
+
if (fullOrLightModels.length === 0)
|
|
562
|
+
return;
|
|
563
|
+
const firstModel = fullOrLightModels[0];
|
|
561
564
|
const model = currentState[names.model];
|
|
562
|
-
const isFull =
|
|
565
|
+
const isFull = firstModel instanceof modelRef;
|
|
563
566
|
if (isFull) {
|
|
564
|
-
const crystalizedModel = cnst.crystalize(
|
|
567
|
+
const crystalizedModel = cnst.crystalize(firstModel);
|
|
565
568
|
this.set({ [names.model]: crystalizedModel });
|
|
566
|
-
} else if (model?.id ===
|
|
567
|
-
const crystalizedModel = cnst.crystalize({ ...model, ...
|
|
569
|
+
} else if (model?.id === firstModel.id) {
|
|
570
|
+
const crystalizedModel = cnst.crystalize({ ...model, ...firstModel });
|
|
568
571
|
this.set({ [names.model]: crystalizedModel });
|
|
569
572
|
}
|
|
570
|
-
const
|
|
573
|
+
const lightModels = fullOrLightModels.map(
|
|
574
|
+
(fullOrLightModel) => cnst.lightCrystalize(fullOrLightModel)
|
|
575
|
+
);
|
|
571
576
|
slices.forEach(({ sliceName }) => {
|
|
572
577
|
const namesOfSlice = {
|
|
573
578
|
modelList: sliceName.replace(names.model, names.modelList),
|
|
@@ -575,9 +580,14 @@ const makeActions = (refName, slices) => {
|
|
|
575
580
|
};
|
|
576
581
|
const modelList = currentState[namesOfSlice.modelList];
|
|
577
582
|
const modelListLoading = currentState[namesOfSlice.modelListLoading];
|
|
578
|
-
if (modelListLoading
|
|
583
|
+
if (modelListLoading)
|
|
579
584
|
return;
|
|
580
|
-
|
|
585
|
+
lightModels.forEach((lightModel) => {
|
|
586
|
+
if (!modelList.has(lightModel.id))
|
|
587
|
+
return;
|
|
588
|
+
modelList.set(lightModel);
|
|
589
|
+
});
|
|
590
|
+
this.set({ [namesOfSlice.modelList]: modelList.save() });
|
|
581
591
|
});
|
|
582
592
|
},
|
|
583
593
|
[names.resetModel]: function(model) {
|
|
@@ -623,11 +633,10 @@ const makeActions = (refName, slices) => {
|
|
|
623
633
|
const queryArgs = new Array(initArgLength).fill(null).map((_, i) => args[i]);
|
|
624
634
|
const defaultModel = (0, import_signal.immerify)(modelRef, { ...cnst.getDefault(), ...initForm.default ?? {} });
|
|
625
635
|
this.set({ [names.defaultModel]: defaultModel });
|
|
626
|
-
await this[namesOfSlice.refreshModel](
|
|
627
|
-
...initArgLength === argLength ? [...queryArgs, initForm] : queryArgs
|
|
628
|
-
);
|
|
636
|
+
await this[namesOfSlice.refreshModel]({ ...initForm, queryArgs });
|
|
629
637
|
},
|
|
630
|
-
[namesOfSlice.refreshModel]: async function(
|
|
638
|
+
[namesOfSlice.refreshModel]: async function(initForm = {}) {
|
|
639
|
+
const args = initForm.queryArgs ?? [];
|
|
631
640
|
const refreshArgLength = Math.min(args.length, argLength);
|
|
632
641
|
const currentState = this.get();
|
|
633
642
|
const existingQueryArgs = currentState[namesOfSlice.queryArgsOfModel];
|
|
@@ -635,7 +644,6 @@ const makeActions = (refName, slices) => {
|
|
|
635
644
|
...new Array(refreshArgLength).fill(null).map((_, i) => args[i]),
|
|
636
645
|
...existingQueryArgs.slice(refreshArgLength, argLength)
|
|
637
646
|
];
|
|
638
|
-
const initForm = args[argLength] ?? {};
|
|
639
647
|
const {
|
|
640
648
|
page = currentState[namesOfSlice.pageOfModel],
|
|
641
649
|
limit = currentState[namesOfSlice.limitOfModel],
|
|
@@ -543,18 +543,23 @@ const makeActions = (refName, slices) => {
|
|
|
543
543
|
const model = await fetch[names.model](id, { onError });
|
|
544
544
|
this.set({ [names.model]: model, [names.modelViewAt]: /* @__PURE__ */ new Date(), [names.modelLoading]: false });
|
|
545
545
|
},
|
|
546
|
-
[names.setModel]: function(
|
|
546
|
+
[names.setModel]: function(...fullOrLightModels) {
|
|
547
547
|
const currentState = this.get();
|
|
548
|
+
if (fullOrLightModels.length === 0)
|
|
549
|
+
return;
|
|
550
|
+
const firstModel = fullOrLightModels[0];
|
|
548
551
|
const model = currentState[names.model];
|
|
549
|
-
const isFull =
|
|
552
|
+
const isFull = firstModel instanceof modelRef;
|
|
550
553
|
if (isFull) {
|
|
551
|
-
const crystalizedModel = cnst.crystalize(
|
|
554
|
+
const crystalizedModel = cnst.crystalize(firstModel);
|
|
552
555
|
this.set({ [names.model]: crystalizedModel });
|
|
553
|
-
} else if (model?.id ===
|
|
554
|
-
const crystalizedModel = cnst.crystalize({ ...model, ...
|
|
556
|
+
} else if (model?.id === firstModel.id) {
|
|
557
|
+
const crystalizedModel = cnst.crystalize({ ...model, ...firstModel });
|
|
555
558
|
this.set({ [names.model]: crystalizedModel });
|
|
556
559
|
}
|
|
557
|
-
const
|
|
560
|
+
const lightModels = fullOrLightModels.map(
|
|
561
|
+
(fullOrLightModel) => cnst.lightCrystalize(fullOrLightModel)
|
|
562
|
+
);
|
|
558
563
|
slices.forEach(({ sliceName }) => {
|
|
559
564
|
const namesOfSlice = {
|
|
560
565
|
modelList: sliceName.replace(names.model, names.modelList),
|
|
@@ -562,9 +567,14 @@ const makeActions = (refName, slices) => {
|
|
|
562
567
|
};
|
|
563
568
|
const modelList = currentState[namesOfSlice.modelList];
|
|
564
569
|
const modelListLoading = currentState[namesOfSlice.modelListLoading];
|
|
565
|
-
if (modelListLoading
|
|
570
|
+
if (modelListLoading)
|
|
566
571
|
return;
|
|
567
|
-
|
|
572
|
+
lightModels.forEach((lightModel) => {
|
|
573
|
+
if (!modelList.has(lightModel.id))
|
|
574
|
+
return;
|
|
575
|
+
modelList.set(lightModel);
|
|
576
|
+
});
|
|
577
|
+
this.set({ [namesOfSlice.modelList]: modelList.save() });
|
|
568
578
|
});
|
|
569
579
|
},
|
|
570
580
|
[names.resetModel]: function(model) {
|
|
@@ -610,11 +620,10 @@ const makeActions = (refName, slices) => {
|
|
|
610
620
|
const queryArgs = new Array(initArgLength).fill(null).map((_, i) => args[i]);
|
|
611
621
|
const defaultModel = immerify(modelRef, { ...cnst.getDefault(), ...initForm.default ?? {} });
|
|
612
622
|
this.set({ [names.defaultModel]: defaultModel });
|
|
613
|
-
await this[namesOfSlice.refreshModel](
|
|
614
|
-
...initArgLength === argLength ? [...queryArgs, initForm] : queryArgs
|
|
615
|
-
);
|
|
623
|
+
await this[namesOfSlice.refreshModel]({ ...initForm, queryArgs });
|
|
616
624
|
},
|
|
617
|
-
[namesOfSlice.refreshModel]: async function(
|
|
625
|
+
[namesOfSlice.refreshModel]: async function(initForm = {}) {
|
|
626
|
+
const args = initForm.queryArgs ?? [];
|
|
618
627
|
const refreshArgLength = Math.min(args.length, argLength);
|
|
619
628
|
const currentState = this.get();
|
|
620
629
|
const existingQueryArgs = currentState[namesOfSlice.queryArgsOfModel];
|
|
@@ -622,7 +631,6 @@ const makeActions = (refName, slices) => {
|
|
|
622
631
|
...new Array(refreshArgLength).fill(null).map((_, i) => args[i]),
|
|
623
632
|
...existingQueryArgs.slice(refreshArgLength, argLength)
|
|
624
633
|
];
|
|
625
|
-
const initForm = args[argLength] ?? {};
|
|
626
634
|
const {
|
|
627
635
|
page = currentState[namesOfSlice.pageOfModel],
|
|
628
636
|
limit = currentState[namesOfSlice.limitOfModel],
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@akanjs/store",
|
|
3
|
-
"version": "0.9.60-canary.
|
|
3
|
+
"version": "0.9.60-canary.11",
|
|
4
4
|
"sourceType": "module",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"node": ">=20"
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"react": "19.2.
|
|
18
|
+
"react": "19.2.1",
|
|
19
19
|
"zustand": "^5.0.2"
|
|
20
20
|
},
|
|
21
21
|
"exports": {
|
package/src/storeDecorators.d.ts
CHANGED
|
@@ -105,7 +105,6 @@ export interface NewOption {
|
|
|
105
105
|
type PartialOrNull<O> = {
|
|
106
106
|
[K in keyof O]?: O[K] | null;
|
|
107
107
|
};
|
|
108
|
-
type OptionalArgs<T extends any[]> = T extends [infer Head, ...infer Tail] ? [arg?: Head | null, ...OptionalArgs<Tail>] : [];
|
|
109
108
|
type BaseAction<T extends string, Input, Full extends {
|
|
110
109
|
id: string;
|
|
111
110
|
}, Light, _CapitalizedT extends string = Capitalize<T>, _CreateOption = CreateOption<Full>> = {
|
|
@@ -137,7 +136,7 @@ type BaseAction<T extends string, Input, Full extends {
|
|
|
137
136
|
modal?: string | null;
|
|
138
137
|
} & FetchPolicy) => Promise<void>;
|
|
139
138
|
} & {
|
|
140
|
-
[K in `set${_CapitalizedT}`]: (
|
|
139
|
+
[K in `set${_CapitalizedT}`]: (...models: (Full | Light)[]) => void;
|
|
141
140
|
} & {
|
|
142
141
|
[K in `reset${_CapitalizedT}`]: (model?: Full) => void;
|
|
143
142
|
};
|
|
@@ -146,7 +145,9 @@ type SliceAction<T extends string, Input, Full extends {
|
|
|
146
145
|
}, Light, QueryArgs extends any[], Filter extends FilterInstance, _CapitalizedT extends string = Capitalize<T>, _Sort = ExtractSort<Filter>, _FetchInitFormWithFetchPolicy = FetchInitForm<Input, Full, Filter> & FetchPolicy> = {
|
|
147
146
|
[K in `init${_CapitalizedT}`]: (...args: [...args: QueryArgs, initForm?: _FetchInitFormWithFetchPolicy]) => Promise<void>;
|
|
148
147
|
} & {
|
|
149
|
-
[K in `refresh${_CapitalizedT}`]: (
|
|
148
|
+
[K in `refresh${_CapitalizedT}`]: (initForm?: _FetchInitFormWithFetchPolicy & {
|
|
149
|
+
queryArgs?: QueryArgs;
|
|
150
|
+
}) => Promise<void>;
|
|
150
151
|
} & {
|
|
151
152
|
[K in `select${_CapitalizedT}`]: (model: Light | Light[], options?: {
|
|
152
153
|
refresh?: boolean;
|