cogsbox-state 0.5.451 → 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 -477
- package/dist/CogsState.jsx.map +1 -1
- package/package.json +1 -1
- package/src/CogsState.tsx +5 -68
package/package.json
CHANGED
package/src/CogsState.tsx
CHANGED
|
@@ -684,47 +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
|
-
// Fixed version that properly handles the apiParams type
|
|
728
687
|
export function createCogsStateFromSync<
|
|
729
688
|
TSyncSchema extends {
|
|
730
689
|
schemas: Record<
|
|
@@ -753,35 +712,12 @@ export function createCogsStateFromSync<
|
|
|
753
712
|
__syncNotifications: syncSchema.notifications,
|
|
754
713
|
});
|
|
755
714
|
|
|
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
|
-
> & {
|
|
762
|
-
apiParams?: any; // Allow any apiParams, validate at runtime
|
|
763
|
-
}
|
|
764
|
-
): StateObject<TSyncSchema['schemas'][K]['schemas']['defaultValues']> => {
|
|
765
|
-
// Runtime validation of API params
|
|
766
|
-
const schemaEntry = schemas[stateKey as keyof typeof schemas];
|
|
767
|
-
if (schemaEntry?.apiParamsSchema && options?.apiParams) {
|
|
768
|
-
// Validate the API params at runtime
|
|
769
|
-
const result = schemaEntry.apiParamsSchema.safeParse(options.apiParams);
|
|
770
|
-
if (!result.success) {
|
|
771
|
-
throw new Error(
|
|
772
|
-
`Invalid API params for ${String(stateKey)}: ${result.error.message}`
|
|
773
|
-
);
|
|
774
|
-
}
|
|
775
|
-
}
|
|
776
|
-
|
|
777
|
-
// Create options without apiParams for the base call
|
|
778
|
-
const { apiParams, ...baseOptions } = options || {};
|
|
779
|
-
|
|
780
|
-
// Cast to the correct type since we know it's properly typed
|
|
781
|
-
return baseApi.useCogsState(
|
|
782
|
-
stateKey as any,
|
|
783
|
-
baseOptions as any
|
|
784
|
-
) as StateObject<TSyncSchema['schemas'][K]['schemas']['defaultValues']>;
|
|
718
|
+
options?: any // Just make this flexible
|
|
719
|
+
) => {
|
|
720
|
+
return baseApi.useCogsState(stateKey as any, options);
|
|
785
721
|
};
|
|
786
722
|
|
|
787
723
|
return {
|
|
@@ -789,6 +725,7 @@ export function createCogsStateFromSync<
|
|
|
789
725
|
setCogsOptions: baseApi.setCogsOptions,
|
|
790
726
|
};
|
|
791
727
|
}
|
|
728
|
+
|
|
792
729
|
const {
|
|
793
730
|
getInitialOptions,
|
|
794
731
|
getValidationErrors,
|