@bessemer/cornerstone 0.5.71 → 0.5.73

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.
Files changed (76) hide show
  1. package/dist/aspect-ratio.d.ts +2 -2
  2. package/dist/aspect-ratio.d.ts.map +1 -1
  3. package/dist/aspect-ratio.js +1 -1
  4. package/dist/aspect-ratio.js.map +1 -1
  5. package/dist/data-size.d.ts +2 -2
  6. package/dist/data-size.d.ts.map +1 -1
  7. package/dist/data-size.js +1 -1
  8. package/dist/data-size.js.map +1 -1
  9. package/dist/duration.d.ts +2 -2
  10. package/dist/duration.d.ts.map +1 -1
  11. package/dist/duration.js +1 -1
  12. package/dist/duration.js.map +1 -1
  13. package/dist/hex-code.d.ts +2 -2
  14. package/dist/hex-code.d.ts.map +1 -1
  15. package/dist/hex-code.js +1 -1
  16. package/dist/hex-code.js.map +1 -1
  17. package/dist/index.d.ts +8 -3
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +13 -3
  20. package/dist/index.js.map +1 -1
  21. package/dist/intl/country-code.d.ts +45 -0
  22. package/dist/intl/country-code.d.ts.map +1 -0
  23. package/dist/intl/country-code.js +91 -0
  24. package/dist/intl/country-code.js.map +1 -0
  25. package/dist/intl/country-subdivision-code.d.ts +9 -0
  26. package/dist/intl/country-subdivision-code.d.ts.map +1 -0
  27. package/dist/intl/country-subdivision-code.js +20 -0
  28. package/dist/intl/country-subdivision-code.js.map +1 -0
  29. package/dist/{currency.d.ts → intl/currency-code.d.ts} +3 -3
  30. package/dist/intl/currency-code.d.ts.map +1 -0
  31. package/dist/{currency.js → intl/currency-code.js} +3 -3
  32. package/dist/intl/currency-code.js.map +1 -0
  33. package/dist/intl/language-code.d.ts +32 -0
  34. package/dist/intl/language-code.d.ts.map +1 -0
  35. package/dist/intl/language-code.js +65 -0
  36. package/dist/intl/language-code.js.map +1 -0
  37. package/dist/intl/locale.d.ts +26 -0
  38. package/dist/intl/locale.d.ts.map +1 -0
  39. package/dist/intl/locale.js +70 -0
  40. package/dist/intl/locale.js.map +1 -0
  41. package/dist/mime-type.d.ts +2 -2
  42. package/dist/mime-type.d.ts.map +1 -1
  43. package/dist/mime-type.js +1 -1
  44. package/dist/mime-type.js.map +1 -1
  45. package/dist/monetary-amount.d.ts +6 -3
  46. package/dist/monetary-amount.d.ts.map +1 -1
  47. package/dist/monetary-amount.js +1 -1
  48. package/dist/monetary-amount.js.map +1 -1
  49. package/dist/object/object-diff.d.ts +42 -0
  50. package/dist/object/object-diff.d.ts.map +1 -0
  51. package/dist/object/object-diff.js +24 -0
  52. package/dist/object/object-diff.js.map +1 -0
  53. package/dist/object/object-path.d.ts +13 -0
  54. package/dist/object/object-path.d.ts.map +1 -0
  55. package/dist/{object-path.js → object/object-path.js} +18 -27
  56. package/dist/object/object-path.js.map +1 -0
  57. package/dist/object/type-path.d.ts +9 -0
  58. package/dist/object/type-path.d.ts.map +1 -0
  59. package/dist/object/type-path.js +44 -0
  60. package/dist/object/type-path.js.map +1 -0
  61. package/dist/types.d.ts +5 -0
  62. package/dist/types.d.ts.map +1 -1
  63. package/dist/ulid.d.ts +2 -2
  64. package/dist/ulid.d.ts.map +1 -1
  65. package/dist/ulid.js +1 -1
  66. package/dist/ulid.js.map +1 -1
  67. package/dist/uuid.d.ts +2 -2
  68. package/dist/uuid.d.ts.map +1 -1
  69. package/dist/uuid.js +1 -1
  70. package/dist/uuid.js.map +1 -1
  71. package/package.json +1 -1
  72. package/dist/currency.d.ts.map +0 -1
  73. package/dist/currency.js.map +0 -1
  74. package/dist/object-path.d.ts +0 -11
  75. package/dist/object-path.d.ts.map +0 -1
  76. package/dist/object-path.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ulid.d.ts","sourceRoot":"","sources":["../src/ulid.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AACxD,OAAY,EAAE,OAAO,EAAE,MAAM,KAAK,CAAA;AAElC,MAAM,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAC7C,eAAO,MAAM,MAAM,EAAE,OAAO,CAAC,IAAI,CAAgF,CAAA;AAEjH,eAAO,MAAM,EAAE,GAAI,OAAO,MAAM,KAAG,IAElC,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,OAAO,MAAM,KAAG,IAE1C,CAAA;AAED,eAAO,MAAM,QAAQ,QAAO,IAE3B,CAAA"}
1
+ {"version":3,"file":"ulid.d.ts","sourceRoot":"","sources":["../src/ulid.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AACxD,OAAO,GAAG,MAAM,KAAK,CAAA;AAErB,MAAM,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAE7C,eAAO,MAAM,EAAE,GAAI,OAAO,MAAM,KAAG,IAElC,CAAA;AAED,eAAO,MAAM,MAAM,4DAEH,CAAA;AAEhB,eAAO,MAAM,UAAU,GAAI,OAAO,MAAM,KAAG,IAE1C,CAAA;AAED,eAAO,MAAM,QAAQ,QAAO,IAE3B,CAAA"}
package/dist/ulid.js CHANGED
@@ -1,10 +1,10 @@
1
1
  // src/ulid.ts
2
2
  import { ulid } from "ulid";
3
3
  import Zod from "zod";
4
- var Schema = Zod.string().regex(/^[0-9A-HJKMNP-TV-Z]{26}$/, "Invalid ULID format");
5
4
  var of = (value) => {
6
5
  return value;
7
6
  };
7
+ var Schema = Zod.string().regex(/^[0-9A-HJKMNP-TV-Z]{26}$/, "Invalid ULID format").transform(of);
8
8
  var fromString = (value) => {
9
9
  return Schema.parse(value);
10
10
  };
package/dist/ulid.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ulid.ts"],"sourcesContent":["import { ulid } from 'ulid'\nimport { TaggedType } from '@bessemer/cornerstone/types'\nimport Zod, { ZodType } from 'zod'\n\nexport type Ulid = TaggedType<string, 'Ulid'>\nexport const Schema: ZodType<Ulid> = Zod.string().regex(/^[0-9A-HJKMNP-TV-Z]{26}$/, 'Invalid ULID format') as any\n\nexport const of = (value: string): Ulid => {\n return value as Ulid\n}\n\nexport const fromString = (value: string): Ulid => {\n return Schema.parse(value)\n}\n\nexport const generate = (): Ulid => {\n return ulid() as Ulid\n}\n"],"mappings":";AAAA,SAAS,YAAY;AAErB,OAAO,SAAsB;AAGtB,IAAM,SAAwB,IAAI,OAAO,EAAE,MAAM,4BAA4B,qBAAqB;AAElG,IAAM,KAAK,CAAC,UAAwB;AACzC,SAAO;AACT;AAEO,IAAM,aAAa,CAAC,UAAwB;AACjD,SAAO,OAAO,MAAM,KAAK;AAC3B;AAEO,IAAM,WAAW,MAAY;AAClC,SAAO,KAAK;AACd;","names":[]}
1
+ {"version":3,"sources":["../src/ulid.ts"],"sourcesContent":["import { ulid } from 'ulid'\nimport { TaggedType } from '@bessemer/cornerstone/types'\nimport Zod from 'zod'\n\nexport type Ulid = TaggedType<string, 'Ulid'>\n\nexport const of = (value: string): Ulid => {\n return value as Ulid\n}\n\nexport const Schema = Zod.string()\n .regex(/^[0-9A-HJKMNP-TV-Z]{26}$/, 'Invalid ULID format')\n .transform(of)\n\nexport const fromString = (value: string): Ulid => {\n return Schema.parse(value)\n}\n\nexport const generate = (): Ulid => {\n return ulid() as Ulid\n}\n"],"mappings":";AAAA,SAAS,YAAY;AAErB,OAAO,SAAS;AAIT,IAAM,KAAK,CAAC,UAAwB;AACzC,SAAO;AACT;AAEO,IAAM,SAAS,IAAI,OAAO,EAC9B,MAAM,4BAA4B,qBAAqB,EACvD,UAAU,EAAE;AAER,IAAM,aAAa,CAAC,UAAwB;AACjD,SAAO,OAAO,MAAM,KAAK;AAC3B;AAEO,IAAM,WAAW,MAAY;AAClC,SAAO,KAAK;AACd;","names":[]}
package/dist/uuid.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  import { TaggedType } from '@bessemer/cornerstone/types';
2
- import { ZodType } from 'zod';
2
+ import Zod from 'zod';
3
3
  export type Uuid = TaggedType<string, 'Uuid'>;
4
- export declare const Schema: ZodType<Uuid>;
5
4
  export declare const of: (value: string) => Uuid;
5
+ export declare const Schema: Zod.ZodPipe<Zod.ZodUUID, Zod.ZodTransform<Uuid, string>>;
6
6
  export declare const fromString: (value: string) => Uuid;
7
7
  export declare const generate: () => Uuid;
8
8
  //# sourceMappingURL=uuid.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"uuid.d.ts","sourceRoot":"","sources":["../src/uuid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AACxD,OAAY,EAAE,OAAO,EAAE,MAAM,KAAK,CAAA;AAIlC,MAAM,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAC7C,eAAO,MAAM,MAAM,EAAE,OAAO,CAAC,IAAI,CAA8B,CAAA;AAE/D,eAAO,MAAM,EAAE,GAAI,OAAO,MAAM,KAAG,IAElC,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,OAAO,MAAM,KAAG,IAE1C,CAAA;AAED,eAAO,MAAM,QAAQ,QAAO,IAM3B,CAAA"}
1
+ {"version":3,"file":"uuid.d.ts","sourceRoot":"","sources":["../src/uuid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AACxD,OAAO,GAAG,MAAM,KAAK,CAAA;AAIrB,MAAM,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAE7C,eAAO,MAAM,EAAE,GAAI,OAAO,MAAM,KAAG,IAElC,CAAA;AAED,eAAO,MAAM,MAAM,0DAA2B,CAAA;AAE9C,eAAO,MAAM,UAAU,GAAI,OAAO,MAAM,KAAG,IAE1C,CAAA;AAED,eAAO,MAAM,QAAQ,QAAO,IAM3B,CAAA"}
package/dist/uuid.js CHANGED
@@ -2,10 +2,10 @@
2
2
  import Zod from "zod";
3
3
  import { isNil } from "@bessemer/cornerstone/object";
4
4
  import { padStart } from "@bessemer/cornerstone/string";
5
- var Schema = Zod.string().uuid();
6
5
  var of = (value) => {
7
6
  return value;
8
7
  };
8
+ var Schema = Zod.uuid().transform(of);
9
9
  var fromString = (value) => {
10
10
  return Schema.parse(value);
11
11
  };
package/dist/uuid.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/uuid.ts"],"sourcesContent":["import { TaggedType } from '@bessemer/cornerstone/types'\nimport Zod, { ZodType } from 'zod'\nimport { isNil } from '@bessemer/cornerstone/object'\nimport { padStart } from '@bessemer/cornerstone/string'\n\nexport type Uuid = TaggedType<string, 'Uuid'>\nexport const Schema: ZodType<Uuid> = Zod.string().uuid() as any\n\nexport const of = (value: string): Uuid => {\n return value as Uuid\n}\n\nexport const fromString = (value: string): Uuid => {\n return Schema.parse(value)\n}\n\nexport const generate = (): Uuid => {\n if (isNil(crypto.randomUUID)) {\n return `${randomHex(8)}-${randomHex(4)}-${randomHex(4)}-${randomHex(4)}-${randomHex(12)}` as Uuid\n } else {\n return crypto.randomUUID() as Uuid\n }\n}\n\nconst randomHex = (characters: number) => {\n // Generates a random number between 0x0..0 and 0xF..F for the target number of characters\n const randomNum = Math.floor(Math.random() * (16 ** characters - 1))\n return padStart(randomNum.toString(16), characters, '0')\n}\n"],"mappings":";AACA,OAAO,SAAsB;AAC7B,SAAS,aAAa;AACtB,SAAS,gBAAgB;AAGlB,IAAM,SAAwB,IAAI,OAAO,EAAE,KAAK;AAEhD,IAAM,KAAK,CAAC,UAAwB;AACzC,SAAO;AACT;AAEO,IAAM,aAAa,CAAC,UAAwB;AACjD,SAAO,OAAO,MAAM,KAAK;AAC3B;AAEO,IAAM,WAAW,MAAY;AAClC,MAAI,MAAM,OAAO,UAAU,GAAG;AAC5B,WAAO,GAAG,UAAU,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,UAAU,EAAE,CAAC;AAAA,EACzF,OAAO;AACL,WAAO,OAAO,WAAW;AAAA,EAC3B;AACF;AAEA,IAAM,YAAY,CAAC,eAAuB;AAExC,QAAM,YAAY,KAAK,MAAM,KAAK,OAAO,KAAK,MAAM,aAAa,EAAE;AACnE,SAAO,SAAS,UAAU,SAAS,EAAE,GAAG,YAAY,GAAG;AACzD;","names":[]}
1
+ {"version":3,"sources":["../src/uuid.ts"],"sourcesContent":["import { TaggedType } from '@bessemer/cornerstone/types'\nimport Zod from 'zod'\nimport { isNil } from '@bessemer/cornerstone/object'\nimport { padStart } from '@bessemer/cornerstone/string'\n\nexport type Uuid = TaggedType<string, 'Uuid'>\n\nexport const of = (value: string): Uuid => {\n return value as Uuid\n}\n\nexport const Schema = Zod.uuid().transform(of)\n\nexport const fromString = (value: string): Uuid => {\n return Schema.parse(value)\n}\n\nexport const generate = (): Uuid => {\n if (isNil(crypto.randomUUID)) {\n return `${randomHex(8)}-${randomHex(4)}-${randomHex(4)}-${randomHex(4)}-${randomHex(12)}` as Uuid\n } else {\n return crypto.randomUUID() as Uuid\n }\n}\n\nconst randomHex = (characters: number) => {\n // Generates a random number between 0x0..0 and 0xF..F for the target number of characters\n const randomNum = Math.floor(Math.random() * (16 ** characters - 1))\n return padStart(randomNum.toString(16), characters, '0')\n}\n"],"mappings":";AACA,OAAO,SAAS;AAChB,SAAS,aAAa;AACtB,SAAS,gBAAgB;AAIlB,IAAM,KAAK,CAAC,UAAwB;AACzC,SAAO;AACT;AAEO,IAAM,SAAS,IAAI,KAAK,EAAE,UAAU,EAAE;AAEtC,IAAM,aAAa,CAAC,UAAwB;AACjD,SAAO,OAAO,MAAM,KAAK;AAC3B;AAEO,IAAM,WAAW,MAAY;AAClC,MAAI,MAAM,OAAO,UAAU,GAAG;AAC5B,WAAO,GAAG,UAAU,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,UAAU,EAAE,CAAC;AAAA,EACzF,OAAO;AACL,WAAO,OAAO,WAAW;AAAA,EAC3B;AACF;AAEA,IAAM,YAAY,CAAC,eAAuB;AAExC,QAAM,YAAY,KAAK,MAAM,KAAK,OAAO,KAAK,MAAM,aAAa,EAAE;AACnE,SAAO,SAAS,UAAU,SAAS,EAAE,GAAG,YAAY,GAAG;AACzD;","names":[]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@bessemer/cornerstone",
3
3
  "type": "module",
4
- "version": "0.5.71",
4
+ "version": "0.5.73",
5
5
  "module": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
7
7
  "sideEffects": false,
@@ -1 +0,0 @@
1
- {"version":3,"file":"currency.d.ts","sourceRoot":"","sources":["../src/currency.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AACxD,OAAY,EAAE,OAAO,EAAE,MAAM,KAAK,CAAA;AAElC,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;AAC7D,eAAO,MAAM,MAAM,EAAE,OAAO,CAAC,YAAY,EAAE,YAAY,CAGR,CAAA;AAE/C,eAAO,MAAM,EAAE,GAAI,OAAO,MAAM,KAAG,YAElC,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,OAAO,MAAM,KAAG,YAE1C,CAAA;AAED,eAAO,MAAM,GAAG,cAAY,CAAA;AAC5B,eAAO,MAAM,GAAG,cAAY,CAAA;AAC5B,eAAO,MAAM,GAAG,cAAY,CAAA;AAC5B,eAAO,MAAM,GAAG,cAAY,CAAA;AAC5B,eAAO,MAAM,GAAG,cAAY,CAAA;AAC5B,eAAO,MAAM,GAAG,cAAY,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/currency.ts"],"sourcesContent":["import { TaggedType } from '@bessemer/cornerstone/types'\nimport Zod, { ZodType } from 'zod'\n\nexport type CurrencyCode = TaggedType<string, 'CurrencyCode'>\nexport const Schema: ZodType<CurrencyCode, CurrencyCode> = Zod.string()\n .trim()\n .regex(/^[a-zA-Z]{3}$/, 'Currency Code must be exactly 3 letters')\n .transform((val) => val.toUpperCase()) as any\n\nexport const of = (value: string): CurrencyCode => {\n return value as CurrencyCode\n}\n\nexport const fromString = (value: string): CurrencyCode => {\n return Schema.parse(value)\n}\n\nexport const USD = of('USD')\nexport const EUR = of('EUR')\nexport const GBP = of('GBP')\nexport const JPY = of('JPY')\nexport const CAD = of('CAD')\nexport const AUD = of('AUD')\n"],"mappings":";AACA,OAAO,SAAsB;AAGtB,IAAM,SAA8C,IAAI,OAAO,EACnE,KAAK,EACL,MAAM,iBAAiB,yCAAyC,EAChE,UAAU,CAAC,QAAQ,IAAI,YAAY,CAAC;AAEhC,IAAM,KAAK,CAAC,UAAgC;AACjD,SAAO;AACT;AAEO,IAAM,aAAa,CAAC,UAAgC;AACzD,SAAO,OAAO,MAAM,KAAK;AAC3B;AAEO,IAAM,MAAM,GAAG,KAAK;AACpB,IAAM,MAAM,GAAG,KAAK;AACpB,IAAM,MAAM,GAAG,KAAK;AACpB,IAAM,MAAM,GAAG,KAAK;AACpB,IAAM,MAAM,GAAG,KAAK;AACpB,IAAM,MAAM,GAAG,KAAK;","names":[]}
@@ -1,11 +0,0 @@
1
- import { TaggedType } from '@bessemer/cornerstone/types';
2
- import { ZodType } from 'zod';
3
- import { UnknownRecord } from 'type-fest';
4
- export type ObjectPath = TaggedType<Array<string | number>, 'ObjectPath'>;
5
- export declare const Schema: ZodType<ObjectPath>;
6
- export declare const of: (value: Array<string | number>) => ObjectPath;
7
- export declare const fromString: (path: string) => ObjectPath;
8
- export declare const getValue: (object: UnknownRecord, path: ObjectPath) => unknown;
9
- export declare const findValue: (object: UnknownRecord, path: ObjectPath) => unknown | undefined;
10
- export declare const applyValue: (object: UnknownRecord, path: ObjectPath, valueToApply: unknown) => unknown;
11
- //# sourceMappingURL=object-path.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"object-path.d.ts","sourceRoot":"","sources":["../src/object-path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AACxD,OAAY,EAAE,OAAO,EAAE,MAAM,KAAK,CAAA;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AASzC,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,YAAY,CAAC,CAAA;AACzE,eAAO,MAAM,MAAM,EAAE,OAAO,CAAC,UAAU,CAA6D,CAAA;AAEpG,eAAO,MAAM,EAAE,GAAI,OAAO,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,KAAG,UAElD,CAAA;AAKD,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,KAAG,UAoBzC,CAAA;AAED,eAAO,MAAM,QAAQ,GAAI,QAAQ,aAAa,EAAE,MAAM,UAAU,KAAG,OAQlE,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,QAAQ,aAAa,EAAE,MAAM,UAAU,KAAG,OAAO,GAAG,SAQ7E,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,QAAQ,aAAa,EAAE,MAAM,UAAU,EAAE,cAAc,OAAO,KAAG,OAc3F,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/object-path.ts"],"sourcesContent":["import { TaggedType } from '@bessemer/cornerstone/types'\nimport Zod, { ZodType } from 'zod'\nimport { UnknownRecord } from 'type-fest'\nimport { isObject } from '@bessemer/cornerstone/object'\nimport { produce } from 'immer'\nimport { isNumber } from '@bessemer/cornerstone/math'\nimport { isString } from '@bessemer/cornerstone/string'\nimport { assert } from '@bessemer/cornerstone/assertion'\nimport { isEmpty } from '@bessemer/cornerstone/array'\nimport { failure, Result, success } from '@bessemer/cornerstone/result'\n\nexport type ObjectPath = TaggedType<Array<string | number>, 'ObjectPath'>\nexport const Schema: ZodType<ObjectPath> = Zod.array(Zod.union([Zod.string(), Zod.number()])) as any\n\nexport const of = (value: Array<string | number>): ObjectPath => {\n return value as ObjectPath\n}\n\nconst ObjectPathRegex = /^[a-zA-Z_$][a-zA-Z0-9_$]*(?:\\.[a-zA-Z_$][a-zA-Z0-9_$]*|\\.\\d+|\\[\\d+])*$/\nconst ObjectPathPartRegex = /([a-zA-Z_$][a-zA-Z0-9_$]*)|\\[(\\d+)]|\\.(\\d+)/g\n\nexport const fromString = (path: string): ObjectPath => {\n assert(ObjectPathRegex.test(path), () => `Unable to parse ObjectPath from string: ${path}`)\n\n const result: Array<string | number> = []\n\n let match: RegExpExecArray | null\n while ((match = ObjectPathPartRegex.exec(path)) !== null) {\n if (match[1] !== undefined) {\n // Property name (e.g., 'users', 'profile')\n result.push(match[1])\n } else if (match[2] !== undefined) {\n // Bracket notation array index (e.g., [0])\n result.push(Number(match[2]))\n } else if (match[3] !== undefined) {\n // Dot notation array index (e.g., .0)\n result.push(Number(match[3]))\n }\n }\n\n return of(result)\n}\n\nexport const getValue = (object: UnknownRecord, path: ObjectPath): unknown => {\n const result = getValueResult(object, path)\n\n if (result.isSuccess) {\n return result.value\n } else {\n throw new Error(`Unable to resolve ObjectPath: ${path} against record: ${JSON.stringify(object)}`)\n }\n}\n\nexport const findValue = (object: UnknownRecord, path: ObjectPath): unknown | undefined => {\n const result = getValueResult(object, path)\n\n if (result.isSuccess) {\n return result.value\n } else {\n return undefined\n }\n}\n\nexport const applyValue = (object: UnknownRecord, path: ObjectPath, valueToApply: unknown): unknown => {\n if (isEmpty(path)) {\n return valueToApply\n }\n\n return produce(object, (draft) => {\n const rest = path.slice(0, -1)\n const last = path[path.length - 1]!\n const parent: any = isEmpty(rest) ? draft : getValue(draft, of(rest))\n\n // Check to make sure the last index is ok\n assertLegalIndex(parent, last, object, path)\n parent[last] = valueToApply\n })\n}\n\nconst getValueResult = (object: UnknownRecord, path: ObjectPath): Result<any> => {\n let value: any = object\n\n for (const key of path) {\n if (isNumber(key) && Array.isArray(value)) {\n if (key < 0 || key >= value.length) {\n return failure()\n }\n\n value = value[key]\n } else if (isString(key) && isObject(value)) {\n if (!(key in value)) {\n return failure()\n }\n\n value = value[key]\n } else {\n return failure()\n }\n }\n\n return success(value)\n}\n\nconst assertLegalIndex = (value: any, key: string | number, object: UnknownRecord, path: ObjectPath): void => {\n if (isNumber(key) && Array.isArray(value)) {\n return\n } else if (isString(key) && isObject(value)) {\n return\n } else {\n throw new Error(`Unable to resolve ObjectPath: ${path} against record: ${JSON.stringify(object)}`)\n }\n}\n"],"mappings":"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","names":[]}