cogsbox-state 0.5.450 → 0.5.452
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/dist/CogsState.d.ts +1 -3
- package/dist/CogsState.d.ts.map +1 -1
- package/dist/CogsState.jsx +463 -473
- package/dist/CogsState.jsx.map +1 -1
- package/package.json +1 -1
- package/src/CogsState.tsx +5 -63
package/package.json
CHANGED
package/src/CogsState.tsx
CHANGED
|
@@ -684,46 +684,6 @@ export const createCogsState = <State extends Record<StateKeys, unknown>>(
|
|
|
684
684
|
return { useCogsState, setCogsOptions } as CogsApi<State>;
|
|
685
685
|
};
|
|
686
686
|
|
|
687
|
-
// First, let's create a proper type to extract API params from the sync schema
|
|
688
|
-
type ExtractApiParamsFromSchema<T> = T extends {
|
|
689
|
-
apiParamsSchema: z.ZodObject<infer U>;
|
|
690
|
-
}
|
|
691
|
-
? { [K in keyof U]: z.infer<U[K]> }
|
|
692
|
-
: never;
|
|
693
|
-
|
|
694
|
-
// Type to check if a schema has API params
|
|
695
|
-
type HasApiParams<T> = T extends { apiParamsSchema: z.ZodObject<any> }
|
|
696
|
-
? true
|
|
697
|
-
: false;
|
|
698
|
-
|
|
699
|
-
// Create the proper return type for useCogsState
|
|
700
|
-
type UseCogsStateFromSync<
|
|
701
|
-
TSyncSchema extends {
|
|
702
|
-
schemas: Record<
|
|
703
|
-
string,
|
|
704
|
-
{ schemas: { defaultValues: any }; apiParamsSchema?: z.ZodObject<any> }
|
|
705
|
-
>;
|
|
706
|
-
},
|
|
707
|
-
> = {
|
|
708
|
-
// For schemas WITH API params - require apiParams
|
|
709
|
-
<K extends keyof TSyncSchema['schemas']>(
|
|
710
|
-
stateKey: K,
|
|
711
|
-
options: HasApiParams<TSyncSchema['schemas'][K]> extends true
|
|
712
|
-
? OptionsType<TSyncSchema['schemas'][K]['schemas']['defaultValues']> & {
|
|
713
|
-
apiParams: ExtractApiParamsFromSchema<TSyncSchema['schemas'][K]>;
|
|
714
|
-
}
|
|
715
|
-
: never
|
|
716
|
-
): StateObject<TSyncSchema['schemas'][K]['schemas']['defaultValues']>;
|
|
717
|
-
|
|
718
|
-
// For schemas WITHOUT API params - apiParams is optional
|
|
719
|
-
<K extends keyof TSyncSchema['schemas']>(
|
|
720
|
-
stateKey: K,
|
|
721
|
-
options?: HasApiParams<TSyncSchema['schemas'][K]> extends true
|
|
722
|
-
? never
|
|
723
|
-
: OptionsType<TSyncSchema['schemas'][K]['schemas']['defaultValues']>
|
|
724
|
-
): StateObject<TSyncSchema['schemas'][K]['schemas']['defaultValues']>;
|
|
725
|
-
};
|
|
726
|
-
// Simplified approach that actually works
|
|
727
687
|
export function createCogsStateFromSync<
|
|
728
688
|
TSyncSchema extends {
|
|
729
689
|
schemas: Record<
|
|
@@ -752,31 +712,12 @@ export function createCogsStateFromSync<
|
|
|
752
712
|
__syncNotifications: syncSchema.notifications,
|
|
753
713
|
});
|
|
754
714
|
|
|
755
|
-
//
|
|
715
|
+
// Override the useCogsState function to handle apiParams properly
|
|
756
716
|
const useCogsState = <K extends keyof TSyncSchema['schemas']>(
|
|
757
717
|
stateKey: K,
|
|
758
|
-
options?:
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
apiParams?: any; // We'll validate this at runtime
|
|
762
|
-
}
|
|
763
|
-
): StateObject<TSyncSchema['schemas'][K]['schemas']['defaultValues']> => {
|
|
764
|
-
// Runtime validation of API params
|
|
765
|
-
const schemaEntry = schemas[stateKey as keyof typeof schemas];
|
|
766
|
-
if (schemaEntry?.apiParamsSchema && options?.apiParams) {
|
|
767
|
-
// Validate the API params at runtime
|
|
768
|
-
const result = schemaEntry.apiParamsSchema.safeParse(options.apiParams);
|
|
769
|
-
if (!result.success) {
|
|
770
|
-
throw new Error(
|
|
771
|
-
`Invalid API params for ${String(stateKey)}: ${result.error.message}`
|
|
772
|
-
);
|
|
773
|
-
}
|
|
774
|
-
}
|
|
775
|
-
|
|
776
|
-
// Cast to the correct type since we know it's properly typed
|
|
777
|
-
return baseApi.useCogsState(stateKey as any, options as any) as StateObject<
|
|
778
|
-
TSyncSchema['schemas'][K]['schemas']['defaultValues']
|
|
779
|
-
>;
|
|
718
|
+
options?: any // Just make this flexible
|
|
719
|
+
) => {
|
|
720
|
+
return baseApi.useCogsState(stateKey as any, options);
|
|
780
721
|
};
|
|
781
722
|
|
|
782
723
|
return {
|
|
@@ -784,6 +725,7 @@ export function createCogsStateFromSync<
|
|
|
784
725
|
setCogsOptions: baseApi.setCogsOptions,
|
|
785
726
|
};
|
|
786
727
|
}
|
|
728
|
+
|
|
787
729
|
const {
|
|
788
730
|
getInitialOptions,
|
|
789
731
|
getValidationErrors,
|