@proofkit/fmdapi 5.0.2 → 5.0.3-beta.0

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.
@@ -1,10 +1,8 @@
1
- import { S, L, U } from 'ts-toolbelt';
2
- type TransformedFields<T extends Record<string, any>> = U.Merge<{
3
- [Field in keyof T]: {
4
- [Key in Field extends string ? L.Last<S.Split<Field, "::">> : Field]: T[Field];
5
- };
6
- }[keyof T]>;
7
- export declare function removeFMTableNames<T extends Record<string, any>>(obj: T): TransformedFields<T>;
1
+ type StripFMTableName<K extends PropertyKey> = K extends `${string}::${infer R}` ? R : K;
2
+ type TransformedFields<T extends object> = {
3
+ [K in keyof T as K extends string ? StripFMTableName<K> : K]: T[K];
4
+ };
5
+ export declare function removeFMTableNames<T extends object>(obj: T): TransformedFields<T>;
8
6
  export type InferZodPortals<T extends Record<string, any>> = {
9
7
  [K in keyof T]: T[K] extends {
10
8
  _def: any;
package/dist/esm/utils.js CHANGED
@@ -1,12 +1,10 @@
1
1
  function removeFMTableNames(obj) {
2
2
  const newObj = {};
3
3
  for (const key in obj) {
4
- if (key.includes("::")) {
5
- const newKey = key.split("::")[1];
6
- newObj[newKey] = obj[key];
7
- } else {
8
- newObj[key] = obj[key];
9
- }
4
+ const originalKey = key;
5
+ const value = obj[originalKey];
6
+ const mappedKey = typeof key === "string" && key.includes("::") ? key.split("::")[1] : key;
7
+ newObj[mappedKey] = value;
10
8
  }
11
9
  return newObj;
12
10
  }
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../src/utils.ts"],"sourcesContent":["import type { S, L, U } from \"ts-toolbelt\";\nimport type * as z3 from \"zod/v3\";\nimport type * as z4 from \"zod/v4/core\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype TransformedFields<T extends Record<string, any>> = U.Merge<\n {\n [Field in keyof T]: {\n [Key in Field extends string\n ? L.Last<S.Split<Field, \"::\">>\n : Field]: T[Field];\n };\n }[keyof T]\n>;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function removeFMTableNames<T extends Record<string, any>>(\n obj: T,\n): TransformedFields<T> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const newObj: any = {};\n for (const key in obj) {\n if (key.includes(\"::\")) {\n const newKey = key.split(\"::\")[1];\n newObj[newKey as keyof TransformedFields<T>] = obj[key];\n } else {\n newObj[key] = obj[key];\n }\n }\n return newObj;\n}\n\nexport type InferZodPortals<T extends Record<string, any>> = {\n [K in keyof T]: T[K] extends { _def: any; parse: (...args: any[]) => any }\n ? ReturnType<T[K][\"parse\"]>\n : T[K] extends { _def: any; safeParse: (...args: any[]) => any }\n ? T[K] extends { parse: (...args: any[]) => any }\n ? ReturnType<T[K][\"parse\"]>\n : any\n : never;\n};\n"],"names":[],"mappings":"AAgBO,SAAS,mBACd,KACsB;AAEtB,QAAM,SAAc,CAAC;AACrB,aAAW,OAAO,KAAK;AACjB,QAAA,IAAI,SAAS,IAAI,GAAG;AACtB,YAAM,SAAS,IAAI,MAAM,IAAI,EAAE,CAAC;AACzB,aAAA,MAAoC,IAAI,IAAI,GAAG;AAAA,IAAA,OACjD;AACE,aAAA,GAAG,IAAI,IAAI,GAAG;AAAA,IAAA;AAAA,EACvB;AAEK,SAAA;AACT;"}
1
+ {"version":3,"file":"utils.js","sources":["../../src/utils.ts"],"sourcesContent":["import type * as z3 from \"zod/v3\";\nimport type * as z4 from \"zod/v4/core\";\n\ntype StripFMTableName<K extends PropertyKey> = K extends `${string}::${infer R}`\n ? R\n : K;\n\ntype TransformedFields<T extends object> = {\n [K in keyof T as K extends string ? StripFMTableName<K> : K]: T[K];\n};\n\nexport function removeFMTableNames<T extends object>(\n obj: T,\n): TransformedFields<T> {\n const newObj = {} as TransformedFields<T>;\n for (const key in obj) {\n const originalKey = key as keyof T;\n const value = obj[originalKey];\n const mappedKey = (\n typeof key === \"string\" && key.includes(\"::\") ? key.split(\"::\")[1] : key\n ) as keyof TransformedFields<T>;\n\n // Use a temporary index signature cast to assign without any\n (newObj as unknown as Record<PropertyKey, unknown>)[\n mappedKey as unknown as PropertyKey\n ] = value as unknown;\n }\n return newObj;\n}\n\nexport type InferZodPortals<T extends Record<string, any>> = {\n [K in keyof T]: T[K] extends { _def: any; parse: (...args: any[]) => any }\n ? ReturnType<T[K][\"parse\"]>\n : T[K] extends { _def: any; safeParse: (...args: any[]) => any }\n ? T[K] extends { parse: (...args: any[]) => any }\n ? ReturnType<T[K][\"parse\"]>\n : any\n : never;\n};\n"],"names":[],"mappings":"AAWO,SAAS,mBACd,KACsB;AACtB,QAAM,SAAS,CAAC;AAChB,aAAW,OAAO,KAAK;AACrB,UAAM,cAAc;AACd,UAAA,QAAQ,IAAI,WAAW;AAC7B,UAAM,YACJ,OAAO,QAAQ,YAAY,IAAI,SAAS,IAAI,IAAI,IAAI,MAAM,IAAI,EAAE,CAAC,IAAI;AAItE,WACC,SACF,IAAI;AAAA,EAAA;AAEC,SAAA;AACT;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@proofkit/fmdapi",
3
- "version": "5.0.2",
3
+ "version": "5.0.3-beta.0",
4
4
  "description": "FileMaker Data API client",
5
5
  "repository": "git@github.com:proofgeist/fm-dapi.git",
6
6
  "author": "Eric <37158449+eluce2@users.noreply.github.com>",
package/src/utils.ts CHANGED
@@ -1,31 +1,29 @@
1
- import type { S, L, U } from "ts-toolbelt";
2
1
  import type * as z3 from "zod/v3";
3
2
  import type * as z4 from "zod/v4/core";
4
3
 
5
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
6
- type TransformedFields<T extends Record<string, any>> = U.Merge<
7
- {
8
- [Field in keyof T]: {
9
- [Key in Field extends string
10
- ? L.Last<S.Split<Field, "::">>
11
- : Field]: T[Field];
12
- };
13
- }[keyof T]
14
- >;
4
+ type StripFMTableName<K extends PropertyKey> = K extends `${string}::${infer R}`
5
+ ? R
6
+ : K;
15
7
 
16
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
17
- export function removeFMTableNames<T extends Record<string, any>>(
8
+ type TransformedFields<T extends object> = {
9
+ [K in keyof T as K extends string ? StripFMTableName<K> : K]: T[K];
10
+ };
11
+
12
+ export function removeFMTableNames<T extends object>(
18
13
  obj: T,
19
14
  ): TransformedFields<T> {
20
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
21
- const newObj: any = {};
15
+ const newObj = {} as TransformedFields<T>;
22
16
  for (const key in obj) {
23
- if (key.includes("::")) {
24
- const newKey = key.split("::")[1];
25
- newObj[newKey as keyof TransformedFields<T>] = obj[key];
26
- } else {
27
- newObj[key] = obj[key];
28
- }
17
+ const originalKey = key as keyof T;
18
+ const value = obj[originalKey];
19
+ const mappedKey = (
20
+ typeof key === "string" && key.includes("::") ? key.split("::")[1] : key
21
+ ) as keyof TransformedFields<T>;
22
+
23
+ // Use a temporary index signature cast to assign without any
24
+ (newObj as unknown as Record<PropertyKey, unknown>)[
25
+ mappedKey as unknown as PropertyKey
26
+ ] = value as unknown;
29
27
  }
30
28
  return newObj;
31
29
  }