foon-sdk 1.0.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 (219) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +574 -0
  3. package/dist/cache/LRUCache.d.ts +36 -0
  4. package/dist/cache/LRUCache.d.ts.map +1 -0
  5. package/dist/cache/LRUCache.js +54 -0
  6. package/dist/cache/LRUCache.js.map +1 -0
  7. package/dist/cache/cache-key-generator.d.ts +9 -0
  8. package/dist/cache/cache-key-generator.d.ts.map +1 -0
  9. package/dist/cache/cache-key-generator.js +50 -0
  10. package/dist/cache/cache-key-generator.js.map +1 -0
  11. package/dist/cache/index.d.ts +3 -0
  12. package/dist/cache/index.d.ts.map +1 -0
  13. package/dist/cache/index.js +21 -0
  14. package/dist/cache/index.js.map +1 -0
  15. package/dist/engine/MappingEngine.d.ts +29 -0
  16. package/dist/engine/MappingEngine.d.ts.map +1 -0
  17. package/dist/engine/MappingEngine.js +196 -0
  18. package/dist/engine/MappingEngine.js.map +1 -0
  19. package/dist/engine/executor.d.ts +15 -0
  20. package/dist/engine/executor.d.ts.map +1 -0
  21. package/dist/engine/executor.js +137 -0
  22. package/dist/engine/executor.js.map +1 -0
  23. package/dist/engine/index.d.ts +5 -0
  24. package/dist/engine/index.d.ts.map +1 -0
  25. package/dist/engine/index.js +23 -0
  26. package/dist/engine/index.js.map +1 -0
  27. package/dist/engine/jsonpath.d.ts +17 -0
  28. package/dist/engine/jsonpath.d.ts.map +1 -0
  29. package/dist/engine/jsonpath.js +73 -0
  30. package/dist/engine/jsonpath.js.map +1 -0
  31. package/dist/engine/type-converter.d.ts +12 -0
  32. package/dist/engine/type-converter.d.ts.map +1 -0
  33. package/dist/engine/type-converter.js +106 -0
  34. package/dist/engine/type-converter.js.map +1 -0
  35. package/dist/errors/error-factory.d.ts +30 -0
  36. package/dist/errors/error-factory.d.ts.map +1 -0
  37. package/dist/errors/error-factory.js +53 -0
  38. package/dist/errors/error-factory.js.map +1 -0
  39. package/dist/errors/index.d.ts +3 -0
  40. package/dist/errors/index.d.ts.map +1 -0
  41. package/dist/errors/index.js +22 -0
  42. package/dist/errors/index.js.map +1 -0
  43. package/dist/express/FonRouter.d.ts +56 -0
  44. package/dist/express/FonRouter.d.ts.map +1 -0
  45. package/dist/express/FonRouter.js +151 -0
  46. package/dist/express/FonRouter.js.map +1 -0
  47. package/dist/express/error-handler.d.ts +10 -0
  48. package/dist/express/error-handler.d.ts.map +1 -0
  49. package/dist/express/error-handler.js +55 -0
  50. package/dist/express/error-handler.js.map +1 -0
  51. package/dist/express/index.d.ts +33 -0
  52. package/dist/express/index.d.ts.map +1 -0
  53. package/dist/express/index.js +41 -0
  54. package/dist/express/index.js.map +1 -0
  55. package/dist/express/route-registry.d.ts +33 -0
  56. package/dist/express/route-registry.d.ts.map +1 -0
  57. package/dist/express/route-registry.js +52 -0
  58. package/dist/express/route-registry.js.map +1 -0
  59. package/dist/express/transform-middleware.d.ts +21 -0
  60. package/dist/express/transform-middleware.d.ts.map +1 -0
  61. package/dist/express/transform-middleware.js +62 -0
  62. package/dist/express/transform-middleware.js.map +1 -0
  63. package/dist/express/types.d.ts +73 -0
  64. package/dist/express/types.d.ts.map +1 -0
  65. package/dist/express/types.js +3 -0
  66. package/dist/express/types.js.map +1 -0
  67. package/dist/index.d.ts +11 -0
  68. package/dist/index.d.ts.map +1 -0
  69. package/dist/index.js +29 -0
  70. package/dist/index.js.map +1 -0
  71. package/dist/providers/base/Provider.d.ts +17 -0
  72. package/dist/providers/base/Provider.d.ts.map +1 -0
  73. package/dist/providers/base/Provider.js +43 -0
  74. package/dist/providers/base/Provider.js.map +1 -0
  75. package/dist/providers/base/index.d.ts +3 -0
  76. package/dist/providers/base/index.d.ts.map +1 -0
  77. package/dist/providers/base/index.js +21 -0
  78. package/dist/providers/base/index.js.map +1 -0
  79. package/dist/providers/base/prompt-builder.d.ts +22 -0
  80. package/dist/providers/base/prompt-builder.d.ts.map +1 -0
  81. package/dist/providers/base/prompt-builder.js +105 -0
  82. package/dist/providers/base/prompt-builder.js.map +1 -0
  83. package/dist/providers/gemini/GeminiProvider.d.ts +16 -0
  84. package/dist/providers/gemini/GeminiProvider.d.ts.map +1 -0
  85. package/dist/providers/gemini/GeminiProvider.js +48 -0
  86. package/dist/providers/gemini/GeminiProvider.js.map +1 -0
  87. package/dist/providers/gemini/gemini-client.d.ts +16 -0
  88. package/dist/providers/gemini/gemini-client.d.ts.map +1 -0
  89. package/dist/providers/gemini/gemini-client.js +83 -0
  90. package/dist/providers/gemini/gemini-client.js.map +1 -0
  91. package/dist/providers/gemini/index.d.ts +3 -0
  92. package/dist/providers/gemini/index.d.ts.map +1 -0
  93. package/dist/providers/gemini/index.js +8 -0
  94. package/dist/providers/gemini/index.js.map +1 -0
  95. package/dist/providers/index.d.ts +6 -0
  96. package/dist/providers/index.d.ts.map +1 -0
  97. package/dist/providers/index.js +27 -0
  98. package/dist/providers/index.js.map +1 -0
  99. package/dist/providers/ollama/OllamaProvider.d.ts +17 -0
  100. package/dist/providers/ollama/OllamaProvider.d.ts.map +1 -0
  101. package/dist/providers/ollama/OllamaProvider.js +47 -0
  102. package/dist/providers/ollama/OllamaProvider.js.map +1 -0
  103. package/dist/providers/ollama/index.d.ts +3 -0
  104. package/dist/providers/ollama/index.d.ts.map +1 -0
  105. package/dist/providers/ollama/index.js +8 -0
  106. package/dist/providers/ollama/index.js.map +1 -0
  107. package/dist/providers/ollama/ollama-client.d.ts +17 -0
  108. package/dist/providers/ollama/ollama-client.d.ts.map +1 -0
  109. package/dist/providers/ollama/ollama-client.js +83 -0
  110. package/dist/providers/ollama/ollama-client.js.map +1 -0
  111. package/dist/providers/openai/OpenAIProvider.d.ts +16 -0
  112. package/dist/providers/openai/OpenAIProvider.d.ts.map +1 -0
  113. package/dist/providers/openai/OpenAIProvider.js +48 -0
  114. package/dist/providers/openai/OpenAIProvider.js.map +1 -0
  115. package/dist/providers/openai/index.d.ts +3 -0
  116. package/dist/providers/openai/index.d.ts.map +1 -0
  117. package/dist/providers/openai/index.js +8 -0
  118. package/dist/providers/openai/index.js.map +1 -0
  119. package/dist/providers/openai/openai-client.d.ts +16 -0
  120. package/dist/providers/openai/openai-client.d.ts.map +1 -0
  121. package/dist/providers/openai/openai-client.js +85 -0
  122. package/dist/providers/openai/openai-client.js.map +1 -0
  123. package/dist/schema/SchemaAdapter.d.ts +34 -0
  124. package/dist/schema/SchemaAdapter.d.ts.map +1 -0
  125. package/dist/schema/SchemaAdapter.js +59 -0
  126. package/dist/schema/SchemaAdapter.js.map +1 -0
  127. package/dist/schema/field-extractor.d.ts +10 -0
  128. package/dist/schema/field-extractor.d.ts.map +1 -0
  129. package/dist/schema/field-extractor.js +58 -0
  130. package/dist/schema/field-extractor.js.map +1 -0
  131. package/dist/schema/index.d.ts +5 -0
  132. package/dist/schema/index.d.ts.map +1 -0
  133. package/dist/schema/index.js +13 -0
  134. package/dist/schema/index.js.map +1 -0
  135. package/dist/schema/normalizer.d.ts +6 -0
  136. package/dist/schema/normalizer.d.ts.map +1 -0
  137. package/dist/schema/normalizer.js +17 -0
  138. package/dist/schema/normalizer.js.map +1 -0
  139. package/dist/schema/validator.d.ts +17 -0
  140. package/dist/schema/validator.d.ts.map +1 -0
  141. package/dist/schema/validator.js +50 -0
  142. package/dist/schema/validator.js.map +1 -0
  143. package/dist/security/index.d.ts +5 -0
  144. package/dist/security/index.d.ts.map +1 -0
  145. package/dist/security/index.js +21 -0
  146. package/dist/security/index.js.map +1 -0
  147. package/dist/security/input-validator.d.ts +6 -0
  148. package/dist/security/input-validator.d.ts.map +1 -0
  149. package/dist/security/input-validator.js +76 -0
  150. package/dist/security/input-validator.js.map +1 -0
  151. package/dist/security/prompt-sanitizer.d.ts +12 -0
  152. package/dist/security/prompt-sanitizer.d.ts.map +1 -0
  153. package/dist/security/prompt-sanitizer.js +66 -0
  154. package/dist/security/prompt-sanitizer.js.map +1 -0
  155. package/dist/security/redactor.d.ts +5 -0
  156. package/dist/security/redactor.d.ts.map +1 -0
  157. package/dist/security/redactor.js +37 -0
  158. package/dist/security/redactor.js.map +1 -0
  159. package/dist/security/security-config.d.ts +10 -0
  160. package/dist/security/security-config.d.ts.map +1 -0
  161. package/dist/security/security-config.js +26 -0
  162. package/dist/security/security-config.js.map +1 -0
  163. package/dist/trace/TraceBuilder.d.ts +58 -0
  164. package/dist/trace/TraceBuilder.d.ts.map +1 -0
  165. package/dist/trace/TraceBuilder.js +117 -0
  166. package/dist/trace/TraceBuilder.js.map +1 -0
  167. package/dist/trace/confidence-analyzer.d.ts +6 -0
  168. package/dist/trace/confidence-analyzer.d.ts.map +1 -0
  169. package/dist/trace/confidence-analyzer.js +30 -0
  170. package/dist/trace/confidence-analyzer.js.map +1 -0
  171. package/dist/trace/index.d.ts +4 -0
  172. package/dist/trace/index.d.ts.map +1 -0
  173. package/dist/trace/index.js +22 -0
  174. package/dist/trace/index.js.map +1 -0
  175. package/dist/trace/trace-utils.d.ts +20 -0
  176. package/dist/trace/trace-utils.d.ts.map +1 -0
  177. package/dist/trace/trace-utils.js +33 -0
  178. package/dist/trace/trace-utils.js.map +1 -0
  179. package/dist/transform.d.ts +30 -0
  180. package/dist/transform.d.ts.map +1 -0
  181. package/dist/transform.js +62 -0
  182. package/dist/transform.js.map +1 -0
  183. package/dist/types/cache.types.d.ts +41 -0
  184. package/dist/types/cache.types.d.ts.map +1 -0
  185. package/dist/types/cache.types.js +3 -0
  186. package/dist/types/cache.types.js.map +1 -0
  187. package/dist/types/errors.types.d.ts +22 -0
  188. package/dist/types/errors.types.d.ts.map +1 -0
  189. package/dist/types/errors.types.js +31 -0
  190. package/dist/types/errors.types.js.map +1 -0
  191. package/dist/types/index.d.ts +9 -0
  192. package/dist/types/index.d.ts.map +1 -0
  193. package/dist/types/index.js +8 -0
  194. package/dist/types/index.js.map +1 -0
  195. package/dist/types/mapping.types.d.ts +48 -0
  196. package/dist/types/mapping.types.d.ts.map +1 -0
  197. package/dist/types/mapping.types.js +3 -0
  198. package/dist/types/mapping.types.js.map +1 -0
  199. package/dist/types/provider.types.d.ts +62 -0
  200. package/dist/types/provider.types.d.ts.map +1 -0
  201. package/dist/types/provider.types.js +3 -0
  202. package/dist/types/provider.types.js.map +1 -0
  203. package/dist/types/schema.types.d.ts +68 -0
  204. package/dist/types/schema.types.d.ts.map +1 -0
  205. package/dist/types/schema.types.js +3 -0
  206. package/dist/types/schema.types.js.map +1 -0
  207. package/dist/types/security.types.d.ts +32 -0
  208. package/dist/types/security.types.d.ts.map +1 -0
  209. package/dist/types/security.types.js +3 -0
  210. package/dist/types/security.types.js.map +1 -0
  211. package/dist/types/trace.types.d.ts +129 -0
  212. package/dist/types/trace.types.d.ts.map +1 -0
  213. package/dist/types/trace.types.js +3 -0
  214. package/dist/types/trace.types.js.map +1 -0
  215. package/dist/types/transform.types.d.ts +56 -0
  216. package/dist/types/transform.types.d.ts.map +1 -0
  217. package/dist/types/transform.types.js +3 -0
  218. package/dist/types/transform.types.js.map +1 -0
  219. package/package.json +107 -0
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Type conversion utilities for safe transformations
3
+ */
4
+ /**
5
+ * Convert value to target type if possible
6
+ */
7
+ export declare function convertType(value: any, targetType: string | string[]): any;
8
+ /**
9
+ * Check if conversion is safe (no data loss)
10
+ */
11
+ export declare function isSafeConversion(value: any, targetType: string | string[]): boolean;
12
+ //# sourceMappingURL=type-converter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-converter.d.ts","sourceRoot":"","sources":["../../src/engine/type-converter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,GAAG,CAmD1E;AAkBD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAkCnF"}
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ /**
3
+ * Type conversion utilities for safe transformations
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.convertType = convertType;
7
+ exports.isSafeConversion = isSafeConversion;
8
+ /**
9
+ * Convert value to target type if possible
10
+ */
11
+ function convertType(value, targetType) {
12
+ const types = Array.isArray(targetType) ? targetType : [targetType];
13
+ // If value already matches one of the target types, return as-is
14
+ const valueType = getType(value);
15
+ if (types.includes(valueType)) {
16
+ return value;
17
+ }
18
+ // Try conversions
19
+ for (const type of types) {
20
+ try {
21
+ switch (type) {
22
+ case 'string':
23
+ return String(value);
24
+ case 'number':
25
+ if (typeof value === 'string') {
26
+ const num = Number(value);
27
+ if (!isNaN(num)) {
28
+ return num;
29
+ }
30
+ }
31
+ break;
32
+ case 'boolean':
33
+ if (typeof value === 'string') {
34
+ if (value.toLowerCase() === 'true')
35
+ return true;
36
+ if (value.toLowerCase() === 'false')
37
+ return false;
38
+ }
39
+ if (typeof value === 'number') {
40
+ return value !== 0;
41
+ }
42
+ break;
43
+ case 'integer':
44
+ if (typeof value === 'string' || typeof value === 'number') {
45
+ const num = Number(value);
46
+ if (!isNaN(num) && Number.isInteger(num)) {
47
+ return num;
48
+ }
49
+ }
50
+ break;
51
+ }
52
+ }
53
+ catch {
54
+ // Continue trying other types
55
+ }
56
+ }
57
+ // No conversion found, return original value
58
+ return value;
59
+ }
60
+ /**
61
+ * Get JSON Schema type of value
62
+ */
63
+ function getType(value) {
64
+ if (value === null)
65
+ return 'null';
66
+ if (Array.isArray(value))
67
+ return 'array';
68
+ const type = typeof value;
69
+ if (type === 'number') {
70
+ return Number.isInteger(value) ? 'integer' : 'number';
71
+ }
72
+ return type;
73
+ }
74
+ /**
75
+ * Check if conversion is safe (no data loss)
76
+ */
77
+ function isSafeConversion(value, targetType) {
78
+ const types = Array.isArray(targetType) ? targetType : [targetType];
79
+ const valueType = getType(value);
80
+ // Already correct type
81
+ if (types.includes(valueType)) {
82
+ return true;
83
+ }
84
+ // Safe conversions
85
+ if (types.includes('string')) {
86
+ return true; // Any value can be safely converted to string
87
+ }
88
+ if (types.includes('number') && typeof value === 'string') {
89
+ const num = Number(value);
90
+ return !isNaN(num);
91
+ }
92
+ if (types.includes('boolean') && typeof value === 'string') {
93
+ return value.toLowerCase() === 'true' || value.toLowerCase() === 'false';
94
+ }
95
+ if (types.includes('integer')) {
96
+ if (typeof value === 'string') {
97
+ const num = Number(value);
98
+ return !isNaN(num) && Number.isInteger(num);
99
+ }
100
+ if (typeof value === 'number') {
101
+ return Number.isInteger(value);
102
+ }
103
+ }
104
+ return false;
105
+ }
106
+ //# sourceMappingURL=type-converter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-converter.js","sourceRoot":"","sources":["../../src/engine/type-converter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import { FONError } from '../types/errors.types';
2
+ /**
3
+ * Create a schema load error
4
+ */
5
+ export declare function createSchemaLoadError(message: string, details?: object, traceId?: string): FONError;
6
+ /**
7
+ * Create a provider error
8
+ */
9
+ export declare function createProviderError(message: string, details?: object, traceId?: string): FONError;
10
+ /**
11
+ * Create a mapping plan parse error
12
+ */
13
+ export declare function createMappingPlanParseError(message: string, details?: object, traceId?: string): FONError;
14
+ /**
15
+ * Create a confidence too low error
16
+ */
17
+ export declare function createConfidenceTooLowError(message: string, details?: object, traceId?: string): FONError;
18
+ /**
19
+ * Create an execution error
20
+ */
21
+ export declare function createExecutionError(message: string, details?: object, traceId?: string): FONError;
22
+ /**
23
+ * Create a validation error
24
+ */
25
+ export declare function createValidationError(message: string, details?: object, traceId?: string): FONError;
26
+ /**
27
+ * Create a security limit exceeded error
28
+ */
29
+ export declare function createSecurityLimitError(message: string, details?: object, traceId?: string): FONError;
30
+ //# sourceMappingURL=error-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-factory.d.ts","sourceRoot":"","sources":["../../src/errors/error-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEhE;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,QAAQ,CAEnG;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,QAAQ,CAEjG;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,GACf,QAAQ,CAEV;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,GACf,QAAQ,CAEV;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,QAAQ,CAElG;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,QAAQ,CAEnG;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,GACf,QAAQ,CAEV"}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createSchemaLoadError = createSchemaLoadError;
4
+ exports.createProviderError = createProviderError;
5
+ exports.createMappingPlanParseError = createMappingPlanParseError;
6
+ exports.createConfidenceTooLowError = createConfidenceTooLowError;
7
+ exports.createExecutionError = createExecutionError;
8
+ exports.createValidationError = createValidationError;
9
+ exports.createSecurityLimitError = createSecurityLimitError;
10
+ const errors_types_1 = require("../types/errors.types");
11
+ /**
12
+ * Create a schema load error
13
+ */
14
+ function createSchemaLoadError(message, details, traceId) {
15
+ return new errors_types_1.FONError(errors_types_1.ErrorCategory.SCHEMA_LOAD_ERROR, message, details, traceId);
16
+ }
17
+ /**
18
+ * Create a provider error
19
+ */
20
+ function createProviderError(message, details, traceId) {
21
+ return new errors_types_1.FONError(errors_types_1.ErrorCategory.PROVIDER_ERROR, message, details, traceId);
22
+ }
23
+ /**
24
+ * Create a mapping plan parse error
25
+ */
26
+ function createMappingPlanParseError(message, details, traceId) {
27
+ return new errors_types_1.FONError(errors_types_1.ErrorCategory.MAPPING_PLAN_PARSE_ERROR, message, details, traceId);
28
+ }
29
+ /**
30
+ * Create a confidence too low error
31
+ */
32
+ function createConfidenceTooLowError(message, details, traceId) {
33
+ return new errors_types_1.FONError(errors_types_1.ErrorCategory.CONFIDENCE_TOO_LOW, message, details, traceId);
34
+ }
35
+ /**
36
+ * Create an execution error
37
+ */
38
+ function createExecutionError(message, details, traceId) {
39
+ return new errors_types_1.FONError(errors_types_1.ErrorCategory.EXECUTION_ERROR, message, details, traceId);
40
+ }
41
+ /**
42
+ * Create a validation error
43
+ */
44
+ function createValidationError(message, details, traceId) {
45
+ return new errors_types_1.FONError(errors_types_1.ErrorCategory.VALIDATION_ERROR, message, details, traceId);
46
+ }
47
+ /**
48
+ * Create a security limit exceeded error
49
+ */
50
+ function createSecurityLimitError(message, details, traceId) {
51
+ return new errors_types_1.FONError(errors_types_1.ErrorCategory.SECURITY_LIMIT_EXCEEDED, message, details, traceId);
52
+ }
53
+ //# sourceMappingURL=error-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-factory.js","sourceRoot":"","sources":["../../src/errors/error-factory.ts"],"names":[],"mappings":";;AAKA,sDAEC;AAKD,kDAEC;AAKD,kEAMC;AAKD,kEAMC;AAKD,oDAEC;AAKD,sDAEC;AAKD,4DAMC;AA7DD,wDAAgE;AAEhE;;GAEG;AACH,SAAgB,qBAAqB,CAAC,OAAe,EAAE,OAAgB,EAAE,OAAgB;IACvF,OAAO,IAAI,uBAAQ,CAAC,4BAAa,CAAC,iBAAiB,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAClF,CAAC;AAED;;GAEG;AACH,SAAgB,mBAAmB,CAAC,OAAe,EAAE,OAAgB,EAAE,OAAgB;IACrF,OAAO,IAAI,uBAAQ,CAAC,4BAAa,CAAC,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAC/E,CAAC;AAED;;GAEG;AACH,SAAgB,2BAA2B,CACzC,OAAe,EACf,OAAgB,EAChB,OAAgB;IAEhB,OAAO,IAAI,uBAAQ,CAAC,4BAAa,CAAC,wBAAwB,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACzF,CAAC;AAED;;GAEG;AACH,SAAgB,2BAA2B,CACzC,OAAe,EACf,OAAgB,EAChB,OAAgB;IAEhB,OAAO,IAAI,uBAAQ,CAAC,4BAAa,CAAC,kBAAkB,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACnF,CAAC;AAED;;GAEG;AACH,SAAgB,oBAAoB,CAAC,OAAe,EAAE,OAAgB,EAAE,OAAgB;IACtF,OAAO,IAAI,uBAAQ,CAAC,4BAAa,CAAC,eAAe,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAChF,CAAC;AAED;;GAEG;AACH,SAAgB,qBAAqB,CAAC,OAAe,EAAE,OAAgB,EAAE,OAAgB;IACvF,OAAO,IAAI,uBAAQ,CAAC,4BAAa,CAAC,gBAAgB,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACjF,CAAC;AAED;;GAEG;AACH,SAAgB,wBAAwB,CACtC,OAAe,EACf,OAAgB,EAChB,OAAgB;IAEhB,OAAO,IAAI,uBAAQ,CAAC,4BAAa,CAAC,uBAAuB,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACxF,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { FONError, ErrorCategory } from '../types/errors.types';
2
+ export * from './error-factory';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAChE,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.ErrorCategory = exports.FONError = void 0;
18
+ var errors_types_1 = require("../types/errors.types");
19
+ Object.defineProperty(exports, "FONError", { enumerable: true, get: function () { return errors_types_1.FONError; } });
20
+ Object.defineProperty(exports, "ErrorCategory", { enumerable: true, get: function () { return errors_types_1.ErrorCategory; } });
21
+ __exportStar(require("./error-factory"), exports);
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,sDAAgE;AAAvD,wGAAA,QAAQ,OAAA;AAAE,6GAAA,aAAa,OAAA;AAChC,kDAAgC"}
@@ -0,0 +1,56 @@
1
+ import { Router } from 'express';
2
+ import { FonRouterConfig, RouteConfig } from './types';
3
+ /**
4
+ * FOON Router - Express router wrapper that creates FOON-enabled routes
5
+ */
6
+ export declare class FonRouter {
7
+ private router;
8
+ private registry;
9
+ private config;
10
+ private errorHandler;
11
+ constructor(config: FonRouterConfig);
12
+ /**
13
+ * Register a POST route
14
+ */
15
+ post(path: string, config: RouteConfig): this;
16
+ /**
17
+ * Register a PUT route
18
+ */
19
+ put(path: string, config: RouteConfig): this;
20
+ /**
21
+ * Register a PATCH route
22
+ */
23
+ patch(path: string, config: RouteConfig): this;
24
+ /**
25
+ * Register a DELETE route
26
+ */
27
+ delete(path: string, config: RouteConfig): this;
28
+ /**
29
+ * Internal method to register a route
30
+ */
31
+ private registerRoute;
32
+ /**
33
+ * Check if original route should be created
34
+ */
35
+ private shouldCreateOriginal;
36
+ /**
37
+ * Create original route (without FOON transformation)
38
+ */
39
+ private createOriginalRoute;
40
+ /**
41
+ * Create FOON route (with transformation)
42
+ */
43
+ private createFonRoute;
44
+ /**
45
+ * Get the underlying Express router
46
+ * This allows the FonRouter to be used with app.use()
47
+ */
48
+ getRouter(): Router;
49
+ }
50
+ /**
51
+ * Create a new FOON Router
52
+ * Returns a FonRouter instance with custom methods
53
+ * Use .getRouter() to get Express Router for app.use()
54
+ */
55
+ export declare function createFonRouter(config: FonRouterConfig): FonRouter;
56
+ //# sourceMappingURL=FonRouter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FonRouter.d.ts","sourceRoot":"","sources":["../../src/express/FonRouter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAkB,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,WAAW,EAA0B,MAAM,SAAS,CAAC;AAK/E;;GAEG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,MAAM,CAC+B;IAC7C,OAAO,CAAC,YAAY,CAAwC;gBAEhD,MAAM,EAAE,eAAe;IAoBnC;;OAEG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI;IAK7C;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI;IAK5C;;OAEG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI;IAK9C;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI;IAK/C;;OAEG;IACH,OAAO,CAAC,aAAa;IAgCrB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAS5B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAc3B;;OAEG;IACH,OAAO,CAAC,cAAc;IAyBtB;;;OAGG;IACH,SAAS,IAAI,MAAM;CAGpB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,CAElE"}
@@ -0,0 +1,151 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FonRouter = void 0;
4
+ exports.createFonRouter = createFonRouter;
5
+ const express_1 = require("express");
6
+ const route_registry_1 = require("./route-registry");
7
+ const transform_middleware_1 = require("./transform-middleware");
8
+ const error_handler_1 = require("./error-handler");
9
+ /**
10
+ * FOON Router - Express router wrapper that creates FOON-enabled routes
11
+ */
12
+ class FonRouter {
13
+ constructor(config) {
14
+ this.router = (0, express_1.Router)();
15
+ this.registry = new route_registry_1.RouteRegistry();
16
+ this.errorHandler = (0, error_handler_1.createErrorHandler)(config.onError);
17
+ // Set defaults
18
+ this.config = {
19
+ provider: config.provider,
20
+ prefix: config.prefix || '/foon',
21
+ methods: config.methods || ['POST', 'PUT', 'PATCH'],
22
+ confidenceThreshold: config.confidenceThreshold || 0.85,
23
+ cache: config.cache,
24
+ security: config.security || {},
25
+ traceHeader: config.traceHeader || 'X-FON-Trace-Id',
26
+ onError: config.onError,
27
+ createOriginalRoutes: config.createOriginalRoutes !== false, // Default true
28
+ verbose: config.verbose || false,
29
+ };
30
+ }
31
+ /**
32
+ * Register a POST route
33
+ */
34
+ post(path, config) {
35
+ this.registerRoute('POST', path, config);
36
+ return this;
37
+ }
38
+ /**
39
+ * Register a PUT route
40
+ */
41
+ put(path, config) {
42
+ this.registerRoute('PUT', path, config);
43
+ return this;
44
+ }
45
+ /**
46
+ * Register a PATCH route
47
+ */
48
+ patch(path, config) {
49
+ this.registerRoute('PATCH', path, config);
50
+ return this;
51
+ }
52
+ /**
53
+ * Register a DELETE route
54
+ */
55
+ delete(path, config) {
56
+ this.registerRoute('DELETE', path, config);
57
+ return this;
58
+ }
59
+ /**
60
+ * Internal method to register a route
61
+ */
62
+ registerRoute(method, path, config) {
63
+ // Check if method is supported
64
+ if (!this.config.methods.includes(method)) {
65
+ console.warn(`Method ${method} is not in configured methods list. Skipping FOON route creation.`);
66
+ // Still create original route if requested
67
+ if (this.shouldCreateOriginal(config)) {
68
+ this.createOriginalRoute(method, path, config.handler);
69
+ }
70
+ return;
71
+ }
72
+ // Register in registry
73
+ this.registry.register({
74
+ method,
75
+ path,
76
+ schema: config.schema,
77
+ handler: config.handler,
78
+ config,
79
+ });
80
+ // Create original route (if enabled)
81
+ if (this.shouldCreateOriginal(config)) {
82
+ this.createOriginalRoute(method, path, config.handler);
83
+ }
84
+ // Create FOON route (prefixed)
85
+ this.createFonRoute(method, path, config);
86
+ }
87
+ /**
88
+ * Check if original route should be created
89
+ */
90
+ shouldCreateOriginal(config) {
91
+ // Route-specific override takes precedence
92
+ if (config.createOriginal !== undefined) {
93
+ return config.createOriginal;
94
+ }
95
+ // Fall back to global config
96
+ return this.config.createOriginalRoutes;
97
+ }
98
+ /**
99
+ * Create original route (without FOON transformation)
100
+ */
101
+ createOriginalRoute(method, path, handler) {
102
+ const methodLower = method.toLowerCase();
103
+ if (Array.isArray(handler)) {
104
+ this.router[methodLower](path, ...handler);
105
+ }
106
+ else {
107
+ this.router[methodLower](path, handler);
108
+ }
109
+ }
110
+ /**
111
+ * Create FOON route (with transformation)
112
+ */
113
+ createFonRoute(method, path, config) {
114
+ const methodLower = method.toLowerCase();
115
+ const fonPath = this.config.prefix + path;
116
+ // Create transform middleware
117
+ const transformMiddleware = (0, transform_middleware_1.createTransformMiddleware)({
118
+ schema: config.schema,
119
+ provider: this.config.provider,
120
+ confidenceThreshold: config.confidenceThreshold || this.config.confidenceThreshold,
121
+ cache: this.config.cache,
122
+ security: this.config.security,
123
+ traceHeader: this.config.traceHeader,
124
+ errorHandler: this.errorHandler,
125
+ verbose: this.config.verbose,
126
+ });
127
+ // Register FOON route with transform middleware
128
+ const handlers = Array.isArray(config.handler) ? config.handler : [config.handler];
129
+ this.router[methodLower](fonPath, transformMiddleware, ...handlers);
130
+ if (this.config.verbose) {
131
+ console.log(`[FOON] Created route: ${method} ${fonPath} -> ${path}`);
132
+ }
133
+ }
134
+ /**
135
+ * Get the underlying Express router
136
+ * This allows the FonRouter to be used with app.use()
137
+ */
138
+ getRouter() {
139
+ return this.router;
140
+ }
141
+ }
142
+ exports.FonRouter = FonRouter;
143
+ /**
144
+ * Create a new FOON Router
145
+ * Returns a FonRouter instance with custom methods
146
+ * Use .getRouter() to get Express Router for app.use()
147
+ */
148
+ function createFonRouter(config) {
149
+ return new FonRouter(config);
150
+ }
151
+ //# sourceMappingURL=FonRouter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FonRouter.js","sourceRoot":"","sources":["../../src/express/FonRouter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { ErrorHandler } from './types';
2
+ /**
3
+ * Default error handler for FOON transformation errors
4
+ */
5
+ export declare const defaultErrorHandler: ErrorHandler;
6
+ /**
7
+ * Create a custom error handler
8
+ */
9
+ export declare function createErrorHandler(customHandler?: ErrorHandler): ErrorHandler;
10
+ //# sourceMappingURL=error-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-handler.d.ts","sourceRoot":"","sources":["../../src/express/error-handler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,YAmBjC,CAAC;AAiCF;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,aAAa,CAAC,EAAE,YAAY,GAAG,YAAY,CAK7E"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defaultErrorHandler = void 0;
4
+ exports.createErrorHandler = createErrorHandler;
5
+ const errors_1 = require("../errors");
6
+ /**
7
+ * Default error handler for FOON transformation errors
8
+ */
9
+ const defaultErrorHandler = (error, req, res, next) => {
10
+ // Determine HTTP status code based on error category
11
+ const statusCode = getStatusCode(error.category);
12
+ // Build error response
13
+ const errorResponse = {
14
+ error: error.category,
15
+ message: error.message,
16
+ traceId: error.traceId,
17
+ details: error.details,
18
+ };
19
+ // Send error response
20
+ res.status(statusCode).json(errorResponse);
21
+ };
22
+ exports.defaultErrorHandler = defaultErrorHandler;
23
+ /**
24
+ * Map error category to HTTP status code
25
+ */
26
+ function getStatusCode(category) {
27
+ switch (category) {
28
+ case errors_1.ErrorCategory.SCHEMA_LOAD_ERROR:
29
+ return 500; // Internal server error (configuration issue)
30
+ case errors_1.ErrorCategory.PROVIDER_ERROR:
31
+ return 502; // Bad gateway (LLM API error)
32
+ case errors_1.ErrorCategory.MAPPING_PLAN_PARSE_ERROR:
33
+ return 502; // Bad gateway (LLM returned invalid response)
34
+ case errors_1.ErrorCategory.CONFIDENCE_TOO_LOW:
35
+ return 400; // Bad request (input couldn't be mapped with confidence)
36
+ case errors_1.ErrorCategory.EXECUTION_ERROR:
37
+ return 500; // Internal server error
38
+ case errors_1.ErrorCategory.VALIDATION_ERROR:
39
+ return 400; // Bad request (output doesn't match schema)
40
+ case errors_1.ErrorCategory.SECURITY_LIMIT_EXCEEDED:
41
+ return 413; // Payload too large
42
+ default:
43
+ return 500; // Internal server error
44
+ }
45
+ }
46
+ /**
47
+ * Create a custom error handler
48
+ */
49
+ function createErrorHandler(customHandler) {
50
+ if (customHandler) {
51
+ return customHandler;
52
+ }
53
+ return exports.defaultErrorHandler;
54
+ }
55
+ //# sourceMappingURL=error-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-handler.js","sourceRoot":"","sources":["../../src/express/error-handler.ts"],"names":[],"mappings":";;;AA8DA,gDAKC;AAlED,sCAAoD;AAGpD;;GAEG;AACI,MAAM,mBAAmB,GAAiB,CAC/C,KAAe,EACf,GAAY,EACZ,GAAa,EACb,IAAkB,EAClB,EAAE;IACF,qDAAqD;IACrD,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAEjD,uBAAuB;IACvB,MAAM,aAAa,GAAG;QACpB,KAAK,EAAE,KAAK,CAAC,QAAQ;QACrB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAC;IAEF,sBAAsB;IACtB,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAC7C,CAAC,CAAC;AAnBW,QAAA,mBAAmB,uBAmB9B;AAEF;;GAEG;AACH,SAAS,aAAa,CAAC,QAAuB;IAC5C,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,sBAAa,CAAC,iBAAiB;YAClC,OAAO,GAAG,CAAC,CAAC,8CAA8C;QAE5D,KAAK,sBAAa,CAAC,cAAc;YAC/B,OAAO,GAAG,CAAC,CAAC,8BAA8B;QAE5C,KAAK,sBAAa,CAAC,wBAAwB;YACzC,OAAO,GAAG,CAAC,CAAC,8CAA8C;QAE5D,KAAK,sBAAa,CAAC,kBAAkB;YACnC,OAAO,GAAG,CAAC,CAAC,yDAAyD;QAEvE,KAAK,sBAAa,CAAC,eAAe;YAChC,OAAO,GAAG,CAAC,CAAC,wBAAwB;QAEtC,KAAK,sBAAa,CAAC,gBAAgB;YACjC,OAAO,GAAG,CAAC,CAAC,4CAA4C;QAE1D,KAAK,sBAAa,CAAC,uBAAuB;YACxC,OAAO,GAAG,CAAC,CAAC,oBAAoB;QAElC;YACE,OAAO,GAAG,CAAC,CAAC,wBAAwB;IACxC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,kBAAkB,CAAC,aAA4B;IAC7D,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,aAAa,CAAC;IACvB,CAAC;IACD,OAAO,2BAAmB,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * FOON SDK Express Middleware
3
+ *
4
+ * @example
5
+ * ```typescript
6
+ * import express from 'express';
7
+ * import { createFonRouter } from 'foon-sdk/express';
8
+ * import { GeminiProvider } from 'foon-sdk';
9
+ *
10
+ * const app = express();
11
+ * app.use(express.json());
12
+ *
13
+ * const fonRouter = createFonRouter({
14
+ * provider: new GeminiProvider({ apiKey: process.env.GEMINI_API_KEY }),
15
+ * prefix: '/foon',
16
+ * confidenceThreshold: 0.85
17
+ * });
18
+ *
19
+ * fonRouter.post('/users', {
20
+ * schema: userSchema,
21
+ * handler: createUserHandler
22
+ * });
23
+ *
24
+ * app.use(fonRouter);
25
+ * app.listen(3000);
26
+ * ```
27
+ */
28
+ export { createFonRouter, FonRouter } from './FonRouter';
29
+ export { RouteRegistry } from './route-registry';
30
+ export { createTransformMiddleware } from './transform-middleware';
31
+ export { createErrorHandler, defaultErrorHandler } from './error-handler';
32
+ export type { FonRouterConfig, RouteConfig, HttpMethod, ErrorHandler, RouteEntry, IFonRouter, } from './types';
33
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/express/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAE1E,YAAY,EACV,eAAe,EACf,WAAW,EACX,UAAU,EACV,YAAY,EACZ,UAAU,EACV,UAAU,GACX,MAAM,SAAS,CAAC"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ /**
3
+ * FOON SDK Express Middleware
4
+ *
5
+ * @example
6
+ * ```typescript
7
+ * import express from 'express';
8
+ * import { createFonRouter } from 'foon-sdk/express';
9
+ * import { GeminiProvider } from 'foon-sdk';
10
+ *
11
+ * const app = express();
12
+ * app.use(express.json());
13
+ *
14
+ * const fonRouter = createFonRouter({
15
+ * provider: new GeminiProvider({ apiKey: process.env.GEMINI_API_KEY }),
16
+ * prefix: '/foon',
17
+ * confidenceThreshold: 0.85
18
+ * });
19
+ *
20
+ * fonRouter.post('/users', {
21
+ * schema: userSchema,
22
+ * handler: createUserHandler
23
+ * });
24
+ *
25
+ * app.use(fonRouter);
26
+ * app.listen(3000);
27
+ * ```
28
+ */
29
+ Object.defineProperty(exports, "__esModule", { value: true });
30
+ exports.defaultErrorHandler = exports.createErrorHandler = exports.createTransformMiddleware = exports.RouteRegistry = exports.FonRouter = exports.createFonRouter = void 0;
31
+ var FonRouter_1 = require("./FonRouter");
32
+ Object.defineProperty(exports, "createFonRouter", { enumerable: true, get: function () { return FonRouter_1.createFonRouter; } });
33
+ Object.defineProperty(exports, "FonRouter", { enumerable: true, get: function () { return FonRouter_1.FonRouter; } });
34
+ var route_registry_1 = require("./route-registry");
35
+ Object.defineProperty(exports, "RouteRegistry", { enumerable: true, get: function () { return route_registry_1.RouteRegistry; } });
36
+ var transform_middleware_1 = require("./transform-middleware");
37
+ Object.defineProperty(exports, "createTransformMiddleware", { enumerable: true, get: function () { return transform_middleware_1.createTransformMiddleware; } });
38
+ var error_handler_1 = require("./error-handler");
39
+ Object.defineProperty(exports, "createErrorHandler", { enumerable: true, get: function () { return error_handler_1.createErrorHandler; } });
40
+ Object.defineProperty(exports, "defaultErrorHandler", { enumerable: true, get: function () { return error_handler_1.defaultErrorHandler; } });
41
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/express/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;;;AAEH,yCAAyD;AAAhD,4GAAA,eAAe,OAAA;AAAE,sGAAA,SAAS,OAAA;AACnC,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AACtB,+DAAmE;AAA1D,iIAAA,yBAAyB,OAAA;AAClC,iDAA0E;AAAjE,mHAAA,kBAAkB,OAAA;AAAE,oHAAA,mBAAmB,OAAA"}