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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cogsbox-state",
3
- "version": "0.5.451",
3
+ "version": "0.5.452",
4
4
  "description": "React state management library with form controls and server sync",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
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?: Omit<
759
- OptionsType<TSyncSchema['schemas'][K]['schemas']['defaultValues']>,
760
- 'apiParams'
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,