@pithos/core 2.3.0 → 2.5.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.
Files changed (108) hide show
  1. package/README.md +1 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/autocompletion.d.ts +135 -1
  4. package/dist/eidos/abstract-factory/abstract-factory.d.ts +125 -0
  5. package/dist/eidos/abstract-factory/abstract-factory.d.ts.map +1 -0
  6. package/dist/eidos/abstract-factory/abstract-factory.js +128 -0
  7. package/dist/eidos/abstract-factory/abstract-factory.js.map +1 -0
  8. package/dist/eidos/adapter/adapter.d.ts +97 -0
  9. package/dist/eidos/adapter/adapter.d.ts.map +1 -0
  10. package/dist/eidos/adapter/adapter.js +90 -0
  11. package/dist/eidos/adapter/adapter.js.map +1 -0
  12. package/dist/eidos/bridge/bridge.d.ts +81 -0
  13. package/dist/eidos/bridge/bridge.d.ts.map +1 -0
  14. package/dist/eidos/bridge/bridge.js +75 -0
  15. package/dist/eidos/bridge/bridge.js.map +1 -0
  16. package/dist/eidos/builder/builder.d.ts +181 -0
  17. package/dist/eidos/builder/builder.d.ts.map +1 -0
  18. package/dist/eidos/builder/builder.js +139 -0
  19. package/dist/eidos/builder/builder.js.map +1 -0
  20. package/dist/eidos/chain/chain.d.ts +99 -0
  21. package/dist/eidos/chain/chain.d.ts.map +1 -0
  22. package/dist/eidos/chain/chain.js +111 -0
  23. package/dist/eidos/chain/chain.js.map +1 -0
  24. package/dist/eidos/command/command.d.ts +267 -0
  25. package/dist/eidos/command/command.d.ts.map +1 -0
  26. package/dist/eidos/command/command.js +298 -0
  27. package/dist/eidos/command/command.js.map +1 -0
  28. package/dist/eidos/composite/composite.d.ts +168 -0
  29. package/dist/eidos/composite/composite.d.ts.map +1 -0
  30. package/dist/eidos/composite/composite.js +157 -0
  31. package/dist/eidos/composite/composite.js.map +1 -0
  32. package/dist/eidos/decorator/decorator.d.ts +138 -0
  33. package/dist/eidos/decorator/decorator.d.ts.map +1 -0
  34. package/dist/eidos/decorator/decorator.js +143 -0
  35. package/dist/eidos/decorator/decorator.js.map +1 -0
  36. package/dist/eidos/facade/facade.d.ts +61 -0
  37. package/dist/eidos/facade/facade.d.ts.map +1 -0
  38. package/dist/eidos/facade/facade.js +63 -0
  39. package/dist/eidos/facade/facade.js.map +1 -0
  40. package/dist/eidos/factory-method/factory-method.d.ts +76 -0
  41. package/dist/eidos/factory-method/factory-method.d.ts.map +1 -0
  42. package/dist/eidos/factory-method/factory-method.js +60 -0
  43. package/dist/eidos/factory-method/factory-method.js.map +1 -0
  44. package/dist/eidos/flyweight/flyweight.d.ts +40 -0
  45. package/dist/eidos/flyweight/flyweight.d.ts.map +1 -0
  46. package/dist/eidos/flyweight/flyweight.js +41 -0
  47. package/dist/eidos/flyweight/flyweight.js.map +1 -0
  48. package/dist/eidos/interpreter/interpreter.d.ts +82 -0
  49. package/dist/eidos/interpreter/interpreter.d.ts.map +1 -0
  50. package/dist/eidos/interpreter/interpreter.js +84 -0
  51. package/dist/eidos/interpreter/interpreter.js.map +1 -0
  52. package/dist/eidos/iterator/iterator.d.ts +164 -0
  53. package/dist/eidos/iterator/iterator.d.ts.map +1 -0
  54. package/dist/eidos/iterator/iterator.js +258 -0
  55. package/dist/eidos/iterator/iterator.js.map +1 -0
  56. package/dist/eidos/mediator/mediator.d.ts +102 -0
  57. package/dist/eidos/mediator/mediator.d.ts.map +1 -0
  58. package/dist/eidos/mediator/mediator.js +112 -0
  59. package/dist/eidos/mediator/mediator.js.map +1 -0
  60. package/dist/eidos/memento/memento.d.ts +103 -0
  61. package/dist/eidos/memento/memento.d.ts.map +1 -0
  62. package/dist/eidos/memento/memento.js +114 -0
  63. package/dist/eidos/memento/memento.js.map +1 -0
  64. package/dist/eidos/observer/observer-lite.d.ts +49 -0
  65. package/dist/eidos/observer/observer-lite.d.ts.map +1 -0
  66. package/dist/eidos/observer/observer-lite.js +55 -0
  67. package/dist/eidos/observer/observer-lite.js.map +1 -0
  68. package/dist/eidos/observer/observer.d.ts +96 -0
  69. package/dist/eidos/observer/observer.d.ts.map +1 -0
  70. package/dist/eidos/observer/observer.js +117 -0
  71. package/dist/eidos/observer/observer.js.map +1 -0
  72. package/dist/eidos/prototype/prototype.d.ts +32 -0
  73. package/dist/eidos/prototype/prototype.d.ts.map +1 -0
  74. package/dist/eidos/prototype/prototype.js +33 -0
  75. package/dist/eidos/prototype/prototype.js.map +1 -0
  76. package/dist/eidos/proxy/proxy.d.ts +108 -0
  77. package/dist/eidos/proxy/proxy.d.ts.map +1 -0
  78. package/dist/eidos/proxy/proxy.js +121 -0
  79. package/dist/eidos/proxy/proxy.js.map +1 -0
  80. package/dist/eidos/singleton/singleton.d.ts +76 -0
  81. package/dist/eidos/singleton/singleton.d.ts.map +1 -0
  82. package/dist/eidos/singleton/singleton.js +77 -0
  83. package/dist/eidos/singleton/singleton.js.map +1 -0
  84. package/dist/eidos/state/state-lite.d.ts +102 -0
  85. package/dist/eidos/state/state-lite.d.ts.map +1 -0
  86. package/dist/eidos/state/state-lite.js +69 -0
  87. package/dist/eidos/state/state-lite.js.map +1 -0
  88. package/dist/eidos/state/state.d.ts +152 -0
  89. package/dist/eidos/state/state.d.ts.map +1 -0
  90. package/dist/eidos/state/state.js +85 -0
  91. package/dist/eidos/state/state.js.map +1 -0
  92. package/dist/eidos/strategy/strategy.d.ts +148 -0
  93. package/dist/eidos/strategy/strategy.d.ts.map +1 -0
  94. package/dist/eidos/strategy/strategy.js +167 -0
  95. package/dist/eidos/strategy/strategy.js.map +1 -0
  96. package/dist/eidos/template/template.d.ts +95 -0
  97. package/dist/eidos/template/template.d.ts.map +1 -0
  98. package/dist/eidos/template/template.js +110 -0
  99. package/dist/eidos/template/template.js.map +1 -0
  100. package/dist/eidos/visitor/visitor.d.ts +78 -0
  101. package/dist/eidos/visitor/visitor.d.ts.map +1 -0
  102. package/dist/eidos/visitor/visitor.js +80 -0
  103. package/dist/eidos/visitor/visitor.js.map +1 -0
  104. package/dist/zygos/result/index.d.ts +19 -0
  105. package/dist/zygos/result/index.d.ts.map +1 -0
  106. package/dist/zygos/result/index.js +29 -0
  107. package/dist/zygos/result/index.js.map +1 -0
  108. package/package.json +28 -3
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Functional Visitor Pattern.
3
+ *
4
+ * In OOP, the Visitor pattern requires a Component interface with `accept()`,
5
+ * concrete components that call `visitor.visitX(this)`, and Visitor interfaces
6
+ * with a method per component type. This "double dispatch" works around the
7
+ * limitation that OOP languages dispatch only on the receiver type.
8
+ *
9
+ * In functional TypeScript, this is absorbed by discriminated unions + switch:
10
+ * - Define your types as a union with a discriminant (`type`, `kind`, `_tag`)
11
+ * - Use `switch` on the discriminant — TypeScript narrows the type in each case
12
+ * - Exhaustiveness is checked at compile time
13
+ *
14
+ * No wrapper needed — it's native language behavior.
15
+ *
16
+ * @module eidos/visitor
17
+ * @since 2.4.0
18
+ *
19
+ * @see {@link https://pithos.dev/api/eidos/visitor/ | Explanations, examples and live demo}
20
+ *
21
+ * @example
22
+ * ```ts
23
+ * // No import needed — just use discriminated unions + switch:
24
+ *
25
+ * type Shape =
26
+ * | { type: "circle"; radius: number }
27
+ * | { type: "rectangle"; width: number; height: number }
28
+ * | { type: "triangle"; base: number; height: number };
29
+ *
30
+ * // "Visitor 1" - calculate area
31
+ * const area = (shape: Shape): number => {
32
+ * switch (shape.type) {
33
+ * case "circle": return Math.PI * shape.radius ** 2;
34
+ * case "rectangle": return shape.width * shape.height;
35
+ * case "triangle": return (shape.base * shape.height) / 2;
36
+ * }
37
+ * };
38
+ *
39
+ * // "Visitor 2" - describe shape
40
+ * const describe = (shape: Shape): string => {
41
+ * switch (shape.type) {
42
+ * case "circle": return `Circle with radius ${shape.radius}`;
43
+ * case "rectangle": return `Rectangle ${shape.width}x${shape.height}`;
44
+ * case "triangle": return `Triangle base=${shape.base}`;
45
+ * }
46
+ * };
47
+ *
48
+ * // Same data, different "visitors" (functions)
49
+ * const shapes: Shape[] = [
50
+ * { type: "circle", radius: 5 },
51
+ * { type: "rectangle", width: 3, height: 4 },
52
+ * ];
53
+ *
54
+ * shapes.map(area); // [78.54, 12]
55
+ * shapes.map(describe); // ["Circle with radius 5", "Rectangle 3x4"]
56
+ * ```
57
+ *
58
+ * @deprecated **Pattern absorbed by the language.**
59
+ *
60
+ * In functional TypeScript, the Visitor pattern is just a switch on a
61
+ * discriminated union. TypeScript narrows the type in each case branch.
62
+ *
63
+ * Write your visitor directly:
64
+ * ```ts
65
+ * const visit = (shape: Shape): number => {
66
+ * switch (shape.type) {
67
+ * case "circle": return Math.PI * shape.radius ** 2;
68
+ * case "rectangle": return shape.width * shape.height;
69
+ * }
70
+ * };
71
+ * ```
72
+ *
73
+ * This function is the identity — it exists only so you find this message.
74
+ *
75
+ * @see {@link https://pithos.dev/api/eidos/visitor/ | Full explanation, examples and live demo}
76
+ */
77
+ export declare function visit<T, R>(value: T, visitor: (v: T) => R): R;
78
+ //# sourceMappingURL=visitor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visitor.d.ts","sourceRoot":"","sources":["../../../src/eidos/visitor/visitor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2EG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAE7D"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Functional Visitor Pattern.
3
+ *
4
+ * In OOP, the Visitor pattern requires a Component interface with `accept()`,
5
+ * concrete components that call `visitor.visitX(this)`, and Visitor interfaces
6
+ * with a method per component type. This "double dispatch" works around the
7
+ * limitation that OOP languages dispatch only on the receiver type.
8
+ *
9
+ * In functional TypeScript, this is absorbed by discriminated unions + switch:
10
+ * - Define your types as a union with a discriminant (`type`, `kind`, `_tag`)
11
+ * - Use `switch` on the discriminant — TypeScript narrows the type in each case
12
+ * - Exhaustiveness is checked at compile time
13
+ *
14
+ * No wrapper needed — it's native language behavior.
15
+ *
16
+ * @module eidos/visitor
17
+ * @since 2.4.0
18
+ *
19
+ * @see {@link https://pithos.dev/api/eidos/visitor/ | Explanations, examples and live demo}
20
+ *
21
+ * @example
22
+ * ```ts
23
+ * // No import needed — just use discriminated unions + switch:
24
+ *
25
+ * type Shape =
26
+ * | { type: "circle"; radius: number }
27
+ * | { type: "rectangle"; width: number; height: number }
28
+ * | { type: "triangle"; base: number; height: number };
29
+ *
30
+ * // "Visitor 1" - calculate area
31
+ * const area = (shape: Shape): number => {
32
+ * switch (shape.type) {
33
+ * case "circle": return Math.PI * shape.radius ** 2;
34
+ * case "rectangle": return shape.width * shape.height;
35
+ * case "triangle": return (shape.base * shape.height) / 2;
36
+ * }
37
+ * };
38
+ *
39
+ * // "Visitor 2" - describe shape
40
+ * const describe = (shape: Shape): string => {
41
+ * switch (shape.type) {
42
+ * case "circle": return `Circle with radius ${shape.radius}`;
43
+ * case "rectangle": return `Rectangle ${shape.width}x${shape.height}`;
44
+ * case "triangle": return `Triangle base=${shape.base}`;
45
+ * }
46
+ * };
47
+ *
48
+ * // Same data, different "visitors" (functions)
49
+ * const shapes: Shape[] = [
50
+ * { type: "circle", radius: 5 },
51
+ * { type: "rectangle", width: 3, height: 4 },
52
+ * ];
53
+ *
54
+ * shapes.map(area); // [78.54, 12]
55
+ * shapes.map(describe); // ["Circle with radius 5", "Rectangle 3x4"]
56
+ * ```
57
+ *
58
+ * @deprecated **Pattern absorbed by the language.**
59
+ *
60
+ * In functional TypeScript, the Visitor pattern is just a switch on a
61
+ * discriminated union. TypeScript narrows the type in each case branch.
62
+ *
63
+ * Write your visitor directly:
64
+ * ```ts
65
+ * const visit = (shape: Shape): number => {
66
+ * switch (shape.type) {
67
+ * case "circle": return Math.PI * shape.radius ** 2;
68
+ * case "rectangle": return shape.width * shape.height;
69
+ * }
70
+ * };
71
+ * ```
72
+ *
73
+ * This function is the identity — it exists only so you find this message.
74
+ *
75
+ * @see {@link https://pithos.dev/api/eidos/visitor/ | Full explanation, examples and live demo}
76
+ */
77
+ export function visit(value, visitor) {
78
+ return visitor(value);
79
+ }
80
+ //# sourceMappingURL=visitor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visitor.js","sourceRoot":"","sources":["../../../src/eidos/visitor/visitor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2EG;AACH,MAAM,UAAU,KAAK,CAAO,KAAQ,EAAE,OAAoB;IACxD,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;AACxB,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Barrel re-export for Result.
3
+ *
4
+ * Provides a single import point for all Result-related exports.
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * import { Result, ok, err, Ok, Err, ResultAsync } from '@pithos/core/zygos/result';
9
+ *
10
+ * const r: Result<number, string> = ok(42);
11
+ * const safe = Result.fromThrowable(JSON.parse);
12
+ * const combined = Result.combine([ok(1), ok(2)]);
13
+ * ```
14
+ *
15
+ * @since 2.4.0
16
+ */
17
+ export { Result, Ok, Err, ok, err, safeTry, safeAsyncTry, fromOption, fromEither, toEither, } from "./result.js";
18
+ export { ResultAsync, okAsync, errAsync, } from "./result-async.js";
19
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/zygos/result/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAEL,MAAM,EAGN,EAAE,EACF,GAAG,EAGH,EAAE,EACF,GAAG,EAGH,OAAO,EACP,YAAY,EAGZ,UAAU,EACV,UAAU,EACV,QAAQ,GACT,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,WAAW,EACX,OAAO,EACP,QAAQ,GACT,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Barrel re-export for Result.
3
+ *
4
+ * Provides a single import point for all Result-related exports.
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * import { Result, ok, err, Ok, Err, ResultAsync } from '@pithos/core/zygos/result';
9
+ *
10
+ * const r: Result<number, string> = ok(42);
11
+ * const safe = Result.fromThrowable(JSON.parse);
12
+ * const combined = Result.combine([ok(1), ok(2)]);
13
+ * ```
14
+ *
15
+ * @since 2.4.0
16
+ */
17
+ export {
18
+ // Type + Namespace (declaration merging: works as both)
19
+ Result,
20
+ // Classes
21
+ Ok, Err,
22
+ // Constructors
23
+ ok, err,
24
+ // Utilities
25
+ safeTry, safeAsyncTry,
26
+ // Conversions
27
+ fromOption, fromEither, toEither, } from "./result.js";
28
+ export { ResultAsync, okAsync, errAsync, } from "./result-async.js";
29
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/zygos/result/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO;AACL,wDAAwD;AACxD,MAAM;AAEN,UAAU;AACV,EAAE,EACF,GAAG;AAEH,eAAe;AACf,EAAE,EACF,GAAG;AAEH,YAAY;AACZ,OAAO,EACP,YAAY;AAEZ,cAAc;AACd,UAAU,EACV,UAAU,EACV,QAAQ,GACT,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,WAAW,EACX,OAAO,EACP,QAAQ,GACT,MAAM,mBAAmB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pithos/core",
3
- "version": "2.3.0",
3
+ "version": "2.5.0",
4
4
  "description": "Advanced JavaScript/TypeScript superset providing utilities, validation, and functional patterns",
5
5
  "type": "module",
6
6
  "publishConfig": {
@@ -27,6 +27,29 @@
27
27
  "./arkhe/types/utilities/*": "./dist/arkhe/types/utilities/*.js",
28
28
  "./arkhe/util/*": "./dist/arkhe/util/*.js",
29
29
  "./bridges/*": "./dist/bridges/*.js",
30
+ "./eidos/abstract-factory/*": "./dist/eidos/abstract-factory/*.js",
31
+ "./eidos/adapter/*": "./dist/eidos/adapter/*.js",
32
+ "./eidos/bridge/*": "./dist/eidos/bridge/*.js",
33
+ "./eidos/builder/*": "./dist/eidos/builder/*.js",
34
+ "./eidos/chain/*": "./dist/eidos/chain/*.js",
35
+ "./eidos/command/*": "./dist/eidos/command/*.js",
36
+ "./eidos/composite/*": "./dist/eidos/composite/*.js",
37
+ "./eidos/decorator/*": "./dist/eidos/decorator/*.js",
38
+ "./eidos/facade/*": "./dist/eidos/facade/*.js",
39
+ "./eidos/factory-method/*": "./dist/eidos/factory-method/*.js",
40
+ "./eidos/flyweight/*": "./dist/eidos/flyweight/*.js",
41
+ "./eidos/interpreter/*": "./dist/eidos/interpreter/*.js",
42
+ "./eidos/iterator/*": "./dist/eidos/iterator/*.js",
43
+ "./eidos/mediator/*": "./dist/eidos/mediator/*.js",
44
+ "./eidos/memento/*": "./dist/eidos/memento/*.js",
45
+ "./eidos/observer/*": "./dist/eidos/observer/*.js",
46
+ "./eidos/prototype/*": "./dist/eidos/prototype/*.js",
47
+ "./eidos/proxy/*": "./dist/eidos/proxy/*.js",
48
+ "./eidos/singleton/*": "./dist/eidos/singleton/*.js",
49
+ "./eidos/state/*": "./dist/eidos/state/*.js",
50
+ "./eidos/strategy/*": "./dist/eidos/strategy/*.js",
51
+ "./eidos/template/*": "./dist/eidos/template/*.js",
52
+ "./eidos/visitor/*": "./dist/eidos/visitor/*.js",
30
53
  "./kanon/core/consts/*": "./dist/kanon/core/consts/*.js",
31
54
  "./kanon/core/*": "./dist/kanon/core/*.js",
32
55
  "./kanon/helpers/*": "./dist/kanon/helpers/*.js",
@@ -60,7 +83,8 @@
60
83
  "./taphos/string/*": "./dist/taphos/string/*.js",
61
84
  "./taphos/util/*": "./dist/taphos/util/*.js",
62
85
  "./zygos/*": "./dist/zygos/*.js",
63
- "./zygos/result/*": "./dist/zygos/result/*.js"
86
+ "./zygos/result/*": "./dist/zygos/result/*.js",
87
+ "./zygos/result": "./dist/zygos/result/index.js"
64
88
  },
65
89
  "files": [
66
90
  "dist",
@@ -77,7 +101,8 @@
77
101
  "lodash-alternative",
78
102
  "zod-alternative",
79
103
  "neverthrow-alternative",
80
- "fp-ts-alternative"
104
+ "fp-ts-alternative",
105
+ "effect-alternative"
81
106
  ],
82
107
  "author": "Pierre Moati <mopi1402>",
83
108
  "license": "MIT",