functype 0.8.85 → 0.9.1

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 (51) hide show
  1. package/README.md +108 -27
  2. package/dist/{Either-BlY4VB1r.d.ts → Either-BHep7I0d.d.ts} +5 -53
  3. package/dist/Serializable-BbKuhDDL.d.ts +78 -0
  4. package/dist/branded/index.d.ts +8 -7
  5. package/dist/branded/index.mjs +1 -1
  6. package/dist/chunk-BQJB6CCW.mjs +3 -0
  7. package/dist/chunk-BQJB6CCW.mjs.map +1 -0
  8. package/dist/chunk-GHBOC52G.mjs +43 -0
  9. package/dist/chunk-GHBOC52G.mjs.map +1 -0
  10. package/dist/chunk-R2TQJN3P.mjs +2 -0
  11. package/dist/chunk-R2TQJN3P.mjs.map +1 -0
  12. package/dist/either/index.d.ts +2 -2
  13. package/dist/either/index.mjs +1 -1
  14. package/dist/fpromise/index.d.ts +2 -2
  15. package/dist/fpromise/index.mjs +1 -1
  16. package/dist/index.d.ts +554 -147
  17. package/dist/index.mjs +1 -1
  18. package/dist/list/index.d.ts +2 -2
  19. package/dist/list/index.mjs +1 -1
  20. package/dist/map/index.d.ts +3 -3
  21. package/dist/map/index.mjs +1 -1
  22. package/dist/option/index.d.ts +2 -2
  23. package/dist/option/index.mjs +1 -1
  24. package/dist/set/index.d.ts +2 -2
  25. package/dist/set/index.mjs +1 -1
  26. package/dist/try/index.d.ts +2 -2
  27. package/dist/try/index.mjs +1 -1
  28. package/dist/tuple/index.d.ts +75 -2
  29. package/dist/tuple/index.mjs +1 -1
  30. package/package.json +13 -13
  31. package/readme/BUNDLE_OPTIMIZATION.md +74 -0
  32. package/readme/FPromise-Assessment.md +43 -0
  33. package/readme/HKT.md +110 -0
  34. package/readme/ROADMAP.md +113 -0
  35. package/readme/TASK-TODO.md +33 -0
  36. package/readme/TUPLE-EXAMPLES.md +76 -0
  37. package/readme/TaskMigration.md +129 -0
  38. package/readme/ai-guide.md +406 -0
  39. package/readme/examples.md +2093 -0
  40. package/readme/quick-reference.md +514 -0
  41. package/readme/task-error-handling.md +283 -0
  42. package/readme/tasks.md +203 -0
  43. package/readme/type-index.md +238 -0
  44. package/dist/Tuple-ZYh96cGE.d.ts +0 -41
  45. package/dist/Typeable-BBXrKPTY.d.ts +0 -14
  46. package/dist/chunk-B6FR572T.mjs +0 -2
  47. package/dist/chunk-B6FR572T.mjs.map +0 -1
  48. package/dist/chunk-JAPOUVPL.mjs +0 -42
  49. package/dist/chunk-JAPOUVPL.mjs.map +0 -1
  50. package/dist/chunk-TQJDL6YW.mjs +0 -2
  51. package/dist/chunk-TQJDL6YW.mjs.map +0 -1
@@ -0,0 +1,2 @@
1
+ function e(r,n){let d=n,t={unbrand(){return n},unwrap(){return n},toString(){return String(n)}};return typeof n=="number"&&Object.assign(t,{valueOf(){return n}}),Object.assign(d,t)}function a(r){return r.unbrand()}function s(r,n){return r!=null}function o(r){return n=>e(r,n)}var i=r=>n=>e(r,n),K=r=>n=>e(r,n),B=r=>n=>e(r,n);export{e as a,a as b,s as c,o as d,i as e,K as f,B as g};//# sourceMappingURL=chunk-R2TQJN3P.mjs.map
2
+ //# sourceMappingURL=chunk-R2TQJN3P.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/branded/Brand.ts"],"names":["Brand","brand","value","branded","methods","unbrand","hasBrand","createBrander","BrandedString","BrandedNumber","BrandedBoolean"],"mappings":"AAsBO,SAASA,CAAAA,CAA2BC,EAAUC,CAAAA,CAAuB,CAC1E,IAAMC,CAAAA,CAAUD,CAAAA,CACVE,EAAU,CACd,OAAA,EAAa,CACX,OAAOF,CACT,EACA,MAAA,EAAY,CACV,OAAOA,CACT,CAAA,CACA,QAAA,EAAmB,CACjB,OAAO,MAAA,CAAOA,CAAK,CACrB,CACF,EAGA,OAAI,OAAOA,GAAU,QAAA,EACnB,MAAA,CAAO,OAAOE,CAAAA,CAAS,CACrB,SAAkB,CAChB,OAAOF,CACT,CACF,CAAC,EAGI,MAAA,CAAO,MAAA,CAAOC,CAAAA,CAASC,CAAO,CACvC,CAOO,SAASC,CAAAA,CAAWF,CAAAA,CAA8B,CACvD,OAAOA,CAAAA,CAAQ,SACjB,CAaO,SAASG,CAAAA,CAA8BJ,CAAAA,CAAgBD,EAAgC,CAG5F,OAAOC,GAAU,IACnB,CAOO,SAASK,CAAAA,CAAmCN,CAAAA,CAAU,CAC3D,OAAQC,CAAAA,EAA0BF,CAAAA,CAAMC,EAAOC,CAAK,CACtD,CAQO,IAAMM,CAAAA,CACQP,GAClBC,CAAAA,EACCF,CAAAA,CAAMC,CAAAA,CAAOC,CAAK,CAAA,CAETO,CAAAA,CACQR,GAClBC,CAAAA,EACCF,CAAAA,CAAMC,EAAOC,CAAK,CAAA,CAETQ,EACQT,CAAAA,EAClBC,CAAAA,EACCF,CAAAA,CAAMC,CAAAA,CAAOC,CAAK","file":"chunk-R2TQJN3P.mjs","sourcesContent":["// The brand symbol type with instance methods\nexport type Brand<K extends string, T> = T & {\n readonly __brand: K\n readonly unbrand: () => T\n readonly unwrap: () => T\n}\n\n// Utility type to extract the underlying type from a branded type\nexport type Unbrand<T> = T extends Brand<string, infer U> ? U : never\n\n// Utility type to extract the brand from a branded type\nexport type ExtractBrand<T> = T extends Brand<infer K, unknown> ? K : never\n\n/**\n * Brand is a utility for creating nominal typing in TypeScript.\n * It allows for creating distinct types that are structurally identical\n * but considered different by TypeScript's type system.\n *\n * @param brand - The brand name\n * @param value - The value to brand\n * @returns The branded value with unbrand/unwrap methods\n */\nexport function Brand<K extends string, T>(brand: K, value: T): Brand<K, T> {\n const branded = value as Brand<K, T>\n const methods = {\n unbrand(): T {\n return value\n },\n unwrap(): T {\n return value\n },\n toString(): string {\n return String(value)\n },\n }\n\n // Add valueOf for numeric types to support numeric operations\n if (typeof value === \"number\") {\n Object.assign(methods, {\n valueOf(): number {\n return value as number\n },\n })\n }\n\n return Object.assign(branded, methods)\n}\n\n/**\n * Helper to remove a brand from a value\n * @param branded - The branded value\n * @returns The original value without the brand\n */\nexport function unbrand<T>(branded: Brand<string, T>): T {\n return branded.unbrand()\n}\n\n/**\n * Type guard for checking if a value has a specific brand\n * @param value - The value to check\n * @param brand - The brand to check for\n * @returns True if the value has the specified brand\n *\n * Note: Since brands are phantom types that exist only at compile time,\n * this function can only provide a runtime approximation. It always returns true\n * for non-null values, as we have no way to actually check the brand at runtime.\n * This function is primarily for API consistency and documentation purposes.\n */\nexport function hasBrand<K extends string, T>(value: unknown, brand: K): value is Brand<K, T> {\n // In a phantom type system, we can't actually check the brand at runtime\n // We can only verify the value exists\n return value !== null && value !== undefined\n}\n\n/**\n * Create a branded type constructor for a specific brand\n * @param brand - The brand name\n * @returns A function that brands values with the specified brand\n */\nexport function createBrander<K extends string, T>(brand: K) {\n return (value: T): Brand<K, T> => Brand(brand, value)\n}\n\n// Common branded primitive types\nexport type BrandedString<K extends string> = Brand<K, string>\nexport type BrandedNumber<K extends string> = Brand<K, number>\nexport type BrandedBoolean<K extends string> = Brand<K, boolean>\n\n// Factory for common primitive branded types\nexport const BrandedString =\n <K extends string>(brand: K) =>\n (value: string): BrandedString<K> =>\n Brand(brand, value)\n\nexport const BrandedNumber =\n <K extends string>(brand: K) =>\n (value: number): BrandedNumber<K> =>\n Brand(brand, value)\n\nexport const BrandedBoolean =\n <K extends string>(brand: K) =>\n (value: boolean): BrandedBoolean<K> =>\n Brand(brand, value)\n"]}
@@ -1,2 +1,2 @@
1
- export { E as Either, d as Left, R as Right, c as TestEither, g as TypeCheckLeft, f as TypeCheckRight, e as isLeft, i as isRight, t as tryCatch, h as tryCatchAsync } from '../Either-BlY4VB1r.js';
2
- import '../Typeable-BBXrKPTY.js';
1
+ export { E as Either, c as Left, R as Right, b as TestEither, f as TypeCheckLeft, e as TypeCheckRight, d as isLeft, i as isRight, t as tryCatch, g as tryCatchAsync } from '../Either-BHep7I0d.js';
2
+ import '../Serializable-BbKuhDDL.js';
@@ -1,2 +1,2 @@
1
- export{p as Either,i as Left,h as Right,n as TypeCheckLeft,m as TypeCheckRight,k as isLeft,j as isRight,l as tryCatch,o as tryCatchAsync}from'../chunk-JAPOUVPL.mjs';import'../chunk-B6FR572T.mjs';import'../chunk-TQJDL6YW.mjs';//# sourceMappingURL=index.mjs.map
1
+ export{o as Either,h as Left,g as Right,m as TypeCheckLeft,l as TypeCheckRight,j as isLeft,i as isRight,k as tryCatch,n as tryCatchAsync}from'../chunk-GHBOC52G.mjs';import'../chunk-BQJB6CCW.mjs';import'../chunk-R2TQJN3P.mjs';//# sourceMappingURL=index.mjs.map
2
2
  //# sourceMappingURL=index.mjs.map
@@ -1,5 +1,5 @@
1
- import { E as Either } from '../Either-BlY4VB1r.js';
2
- import { T as Type } from '../Typeable-BBXrKPTY.js';
1
+ import { E as Either } from '../Either-BHep7I0d.js';
2
+ import { T as Type } from '../Serializable-BbKuhDDL.js';
3
3
 
4
4
  /**
5
5
  * Error context information that provides additional metadata about errors.
@@ -1,2 +1,2 @@
1
- export{J as FPromise,I as FPromiseCompanion}from'../chunk-JAPOUVPL.mjs';import'../chunk-B6FR572T.mjs';import'../chunk-TQJDL6YW.mjs';//# sourceMappingURL=index.mjs.map
1
+ export{I as FPromise,H as FPromiseCompanion}from'../chunk-GHBOC52G.mjs';import'../chunk-BQJB6CCW.mjs';import'../chunk-R2TQJN3P.mjs';//# sourceMappingURL=index.mjs.map
2
2
  //# sourceMappingURL=index.mjs.map