@adaptic/backend-legacy 0.0.70 → 0.0.72

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 (70) hide show
  1. package/client.cjs +1 -1
  2. package/config/jwtConfig.cjs +52 -0
  3. package/config/jwtConfig.d.ts +16 -0
  4. package/config/jwtConfig.d.ts.map +1 -0
  5. package/config/jwtConfig.js.map +1 -0
  6. package/config/metrics.cjs +261 -0
  7. package/config/metrics.d.ts +88 -0
  8. package/config/metrics.d.ts.map +1 -0
  9. package/config/metrics.js.map +1 -0
  10. package/config/persisted-queries.cjs +122 -0
  11. package/config/persisted-queries.d.ts +40 -0
  12. package/config/persisted-queries.d.ts.map +1 -0
  13. package/config/persisted-queries.js.map +1 -0
  14. package/config/tracing.cjs +128 -0
  15. package/config/tracing.d.ts +24 -0
  16. package/config/tracing.d.ts.map +1 -0
  17. package/config/tracing.js.map +1 -0
  18. package/middleware/audit-logger.cjs +223 -0
  19. package/middleware/audit-logger.d.ts +85 -0
  20. package/middleware/audit-logger.d.ts.map +1 -0
  21. package/middleware/audit-logger.js.map +1 -0
  22. package/middleware/auth.cjs +44 -0
  23. package/middleware/auth.d.ts +6 -0
  24. package/middleware/auth.d.ts.map +1 -0
  25. package/middleware/auth.js.map +1 -0
  26. package/middleware/graphql-validation-plugin.cjs +164 -0
  27. package/middleware/graphql-validation-plugin.d.ts +37 -0
  28. package/middleware/graphql-validation-plugin.d.ts.map +1 -0
  29. package/middleware/graphql-validation-plugin.js.map +1 -0
  30. package/middleware/index.cjs +46 -0
  31. package/middleware/index.d.ts +13 -0
  32. package/middleware/index.d.ts.map +1 -0
  33. package/middleware/index.js.map +1 -0
  34. package/middleware/input-validator.cjs +220 -0
  35. package/middleware/input-validator.d.ts +63 -0
  36. package/middleware/input-validator.d.ts.map +1 -0
  37. package/middleware/input-validator.js.map +1 -0
  38. package/middleware/query-complexity.cjs +182 -0
  39. package/middleware/query-complexity.d.ts +56 -0
  40. package/middleware/query-complexity.d.ts.map +1 -0
  41. package/middleware/query-complexity.js.map +1 -0
  42. package/middleware/rate-limiter.cjs +112 -0
  43. package/middleware/rate-limiter.d.ts +16 -0
  44. package/middleware/rate-limiter.d.ts.map +1 -0
  45. package/middleware/rate-limiter.js.map +1 -0
  46. package/middleware/soft-delete.cjs +175 -0
  47. package/middleware/soft-delete.d.ts +146 -0
  48. package/middleware/soft-delete.d.ts.map +1 -0
  49. package/middleware/soft-delete.js.map +1 -0
  50. package/middleware/types.cjs +17 -0
  51. package/middleware/types.d.ts +87 -0
  52. package/middleware/types.d.ts.map +1 -0
  53. package/middleware/types.js.map +1 -0
  54. package/middleware/validation-examples.cjs +403 -0
  55. package/middleware/validation-examples.d.ts +76 -0
  56. package/middleware/validation-examples.d.ts.map +1 -0
  57. package/middleware/validation-examples.js.map +1 -0
  58. package/package.json +5 -1
  59. package/utils/index.cjs +75 -0
  60. package/utils/index.d.ts +20 -0
  61. package/utils/index.d.ts.map +1 -0
  62. package/utils/index.js.map +1 -0
  63. package/utils/logger.cjs +31 -0
  64. package/utils/logger.d.ts +9 -0
  65. package/utils/logger.d.ts.map +1 -0
  66. package/utils/logger.js.map +1 -0
  67. package/validators/allocation-validator.cjs +85 -0
  68. package/validators/allocation-validator.d.ts +32 -0
  69. package/validators/allocation-validator.d.ts.map +1 -0
  70. package/validators/allocation-validator.js.map +1 -0
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Example usage of validation functions in custom resolvers
3
+ *
4
+ * This file demonstrates how to use the validation utilities
5
+ * in custom resolver implementations.
6
+ */
7
+ /**
8
+ * Example: Portfolio allocation input with validation
9
+ */
10
+ declare class PortfolioAllocationInput {
11
+ equitiesPct: number;
12
+ optionsPct: number;
13
+ cryptoPct: number;
14
+ portfolioName: string;
15
+ }
16
+ /**
17
+ * Example: Trade configuration input with validation
18
+ */
19
+ declare class TradeConfigurationInput {
20
+ tradeAllocationPct: number;
21
+ minPercentageChange: number;
22
+ volumeThreshold: number;
23
+ quantity: number;
24
+ }
25
+ /**
26
+ * Example resolver demonstrating manual validation in custom resolvers
27
+ *
28
+ * Note: With the validation plugin enabled, these validations happen
29
+ * automatically. This example shows how to add ADDITIONAL custom validation
30
+ * logic beyond the automatic pattern-based validation.
31
+ */
32
+ export declare class ValidationExamplesResolver {
33
+ /**
34
+ * Example 1: Basic field validation in a mutation
35
+ */
36
+ updatePortfolioAllocation(input: PortfolioAllocationInput): Promise<boolean>;
37
+ /**
38
+ * Example 2: Batch validation using validateFields
39
+ */
40
+ updateTradeConfiguration(input: TradeConfigurationInput): Promise<boolean>;
41
+ /**
42
+ * Example 3: Conditional validation based on business logic
43
+ */
44
+ createTrade(quantity: number, isPremiumUser: boolean): Promise<boolean>;
45
+ /**
46
+ * Example 4: Validating related fields together
47
+ */
48
+ setTradingThresholds(minPrice: number, maxPrice: number, targetPrice: number): Promise<boolean>;
49
+ /**
50
+ * Example 5: Using manual validation for non-standard field names
51
+ */
52
+ updateCustomSettings(customAllocation: number, customQuantity: number): Promise<boolean>;
53
+ /**
54
+ * Example 6: Accumulating multiple validation errors
55
+ */
56
+ bulkUpdateAllocations(allocations: PortfolioAllocationInput[]): Promise<boolean>;
57
+ }
58
+ /**
59
+ * Example: Reusable validation functions for complex business rules
60
+ */
61
+ export declare class CustomValidators {
62
+ /**
63
+ * Validates that portfolio allocations sum to 100%
64
+ */
65
+ static validatePortfolioAllocationSum(equities: number, options: number, crypto: number): void;
66
+ /**
67
+ * Validates that a price is within acceptable market bounds
68
+ */
69
+ static validateMarketPrice(price: number, fieldName: string): void;
70
+ /**
71
+ * Validates Greeks values are within expected ranges
72
+ */
73
+ static validateGreeks(delta: number, gamma: number, theta: number, vega: number): void;
74
+ }
75
+ export {};
76
+ //# sourceMappingURL=validation-examples.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation-examples.d.ts","sourceRoot":"","sources":["../../src/middleware/validation-examples.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAWH;;GAEG;AACH,cACM,wBAAwB;IAE5B,WAAW,EAAG,MAAM,CAAC;IAGrB,UAAU,EAAG,MAAM,CAAC;IAGpB,SAAS,EAAG,MAAM,CAAC;IAGnB,aAAa,EAAG,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,cACM,uBAAuB;IAE3B,kBAAkB,EAAG,MAAM,CAAC;IAG5B,mBAAmB,EAAG,MAAM,CAAC;IAG7B,eAAe,EAAG,MAAM,CAAC;IAGzB,QAAQ,EAAG,MAAM,CAAC;CACnB;AAED;;;;;;GAMG;AACH,qBACa,0BAA0B;IACrC;;OAEG;IAEG,yBAAyB,CACH,KAAK,EAAE,wBAAwB,GACxD,OAAO,CAAC,OAAO,CAAC;IA0BnB;;OAEG;IAEG,wBAAwB,CACF,KAAK,EAAE,uBAAuB,GACvD,OAAO,CAAC,OAAO,CAAC;IA6BnB;;OAEG;IAEG,WAAW,CACc,QAAQ,EAAE,MAAM,EACX,aAAa,EAAE,OAAO,GACvD,OAAO,CAAC,OAAO,CAAC;IAmBnB;;OAEG;IAEG,oBAAoB,CACK,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,GAClD,OAAO,CAAC,OAAO,CAAC;IA8BnB;;OAEG;IAEG,oBAAoB,CACa,gBAAgB,EAAE,MAAM,EAC1B,cAAc,EAAE,MAAM,GACxD,OAAO,CAAC,OAAO,CAAC;IAUnB;;OAEG;IAEG,qBAAqB,CAEzB,WAAW,EAAE,wBAAwB,EAAE,GACtC,OAAO,CAAC,OAAO,CAAC;CA+BpB;AAED;;GAEG;AACH,qBAAa,gBAAgB;IAC3B;;OAEG;IACH,MAAM,CAAC,8BAA8B,CACnC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACb,IAAI;IAeP;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAgBlE;;OAEG;IACH,MAAM,CAAC,cAAc,CACnB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,GACX,IAAI;CAoDR"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation-examples.js","sourceRoot":"","sources":["../../src/middleware/validation-examples.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adaptic/backend-legacy",
3
- "version": "0.0.70",
3
+ "version": "0.0.72",
4
4
  "description": "Backend executable CRUD functions with dynamic variables construction, and type definitions for the Adaptic AI platform.",
5
5
  "type": "module",
6
6
  "types": "index.d.ts",
@@ -20,6 +20,10 @@
20
20
  "esm/",
21
21
  "server/",
22
22
  "resolvers/",
23
+ "utils/",
24
+ "validators/",
25
+ "config/",
26
+ "middleware/",
23
27
  "*.d.ts",
24
28
  "*.js",
25
29
  "*.cjs",
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ /**
3
+ * Utils module index
4
+ * Re-exports utility functions for CRUD operations
5
+ *
6
+ * This file provides a utils/index.mjs export path for ESM imports
7
+ * from generated CRUD files that import from './utils/index.mjs'
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.removeUndefinedProps = removeUndefinedProps;
11
+ /**
12
+ * Recursively removes undefined and null properties from an object or array.
13
+ *
14
+ * This utility is called by generated CRUD functions to clean GraphQL variables
15
+ * before passing them to Apollo Client. The input objects contain Prisma-typed
16
+ * fields (Date, Decimal, bigint, JsonValue, nested relations, etc.) which cannot
17
+ * be enumerated exhaustively. The return value is used as Apollo OperationVariables.
18
+ *
19
+ * We use Record<string, unknown> for the parameter to accept all generated Prisma
20
+ * input shapes without needing to enumerate every possible field type.
21
+ */
22
+ function removeUndefinedProps(obj) {
23
+ if (Array.isArray(obj)) {
24
+ return obj
25
+ .map((item) => removeUndefinedProps(item))
26
+ .filter((item) => item !== undefined &&
27
+ item !== null &&
28
+ (typeof item !== 'object' ||
29
+ Object.keys(item).length > 0));
30
+ }
31
+ else if (typeof obj === 'object' &&
32
+ obj !== null &&
33
+ !(obj instanceof Date)) {
34
+ const record = obj;
35
+ return Object.keys(record).reduce((acc, key) => {
36
+ const value = record[key];
37
+ if (value !== undefined && value !== null) {
38
+ let cleanedValue;
39
+ if (key === 'where' &&
40
+ typeof value === 'object' &&
41
+ value !== null &&
42
+ !(value instanceof Date)) {
43
+ const whereObj = value;
44
+ if (Object.prototype.hasOwnProperty.call(whereObj, 'id') &&
45
+ whereObj.id !== undefined) {
46
+ // Retain only the 'id' field within 'where'
47
+ cleanedValue = {
48
+ id: removeUndefinedProps(whereObj.id),
49
+ };
50
+ }
51
+ else {
52
+ // Process 'where' object normally if 'id' is undefined or doesn't exist
53
+ cleanedValue = removeUndefinedProps(value);
54
+ }
55
+ }
56
+ else {
57
+ // Process other keys normally
58
+ cleanedValue = removeUndefinedProps(value);
59
+ }
60
+ if (cleanedValue !== undefined &&
61
+ cleanedValue !== null &&
62
+ (typeof cleanedValue !== 'object' ||
63
+ cleanedValue instanceof Date ||
64
+ Object.keys(cleanedValue).length > 0)) {
65
+ acc[key] = cleanedValue;
66
+ }
67
+ }
68
+ return acc;
69
+ }, {});
70
+ }
71
+ return obj !== undefined && obj !== null
72
+ ? obj
73
+ : undefined;
74
+ }
75
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Utils module index
3
+ * Re-exports utility functions for CRUD operations
4
+ *
5
+ * This file provides a utils/index.mjs export path for ESM imports
6
+ * from generated CRUD files that import from './utils/index.mjs'
7
+ */
8
+ /**
9
+ * Recursively removes undefined and null properties from an object or array.
10
+ *
11
+ * This utility is called by generated CRUD functions to clean GraphQL variables
12
+ * before passing them to Apollo Client. The input objects contain Prisma-typed
13
+ * fields (Date, Decimal, bigint, JsonValue, nested relations, etc.) which cannot
14
+ * be enumerated exhaustively. The return value is used as Apollo OperationVariables.
15
+ *
16
+ * We use Record<string, unknown> for the parameter to accept all generated Prisma
17
+ * input shapes without needing to enumerate every possible field type.
18
+ */
19
+ export declare function removeUndefinedProps(obj: Record<string, unknown> | Record<string, unknown>[] | unknown): Record<string, unknown> | undefined;
20
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,OAAO,GACjE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAmErC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AAaH,oDAqEC;AAhFD;;;;;;;;;;GAUG;AACH,SAAgB,oBAAoB,CAClC,GAAkE;IAElE,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,GAAG;aACP,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;aACzC,MAAM,CACL,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,KAAK,SAAS;YAClB,IAAI,KAAK,IAAI;YACb,CAAC,OAAO,IAAI,KAAK,QAAQ;gBACvB,MAAM,CAAC,IAAI,CAAC,IAA+B,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CACvB,CAAC;IAC5C,CAAC;SAAM,IACL,OAAO,GAAG,KAAK,QAAQ;QACvB,GAAG,KAAK,IAAI;QACZ,CAAC,CAAC,GAAG,YAAY,IAAI,CAAC,EACtB,CAAC;QACD,MAAM,MAAM,GAAG,GAA8B,CAAC;QAC9C,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAA4B,EAAE,GAAG,EAAE,EAAE;YACtE,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAE1B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBAC1C,IAAI,YAAqB,CAAC;gBAE1B,IACE,GAAG,KAAK,OAAO;oBACf,OAAO,KAAK,KAAK,QAAQ;oBACzB,KAAK,KAAK,IAAI;oBACd,CAAC,CAAC,KAAK,YAAY,IAAI,CAAC,EACxB,CAAC;oBACD,MAAM,QAAQ,GAAG,KAAgC,CAAC;oBAClD,IACE,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC;wBACpD,QAAQ,CAAC,EAAE,KAAK,SAAS,EACzB,CAAC;wBACD,4CAA4C;wBAC5C,YAAY,GAAG;4BACb,EAAE,EAAE,oBAAoB,CAAC,QAAQ,CAAC,EAA6B,CAAC;yBACjE,CAAC;oBACJ,CAAC;yBAAM,CAAC;wBACN,wEAAwE;wBACxE,YAAY,GAAG,oBAAoB,CACjC,KAAgC,CACjC,CAAC;oBACJ,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,8BAA8B;oBAC9B,YAAY,GAAG,oBAAoB,CAAC,KAAgC,CAAC,CAAC;gBACxE,CAAC;gBAED,IACE,YAAY,KAAK,SAAS;oBAC1B,YAAY,KAAK,IAAI;oBACrB,CAAC,OAAO,YAAY,KAAK,QAAQ;wBAC/B,YAAY,YAAY,IAAI;wBAC5B,MAAM,CAAC,IAAI,CAAC,YAAuC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,EAClE,CAAC;oBACD,GAAG,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC;gBAC1B,CAAC;YACH,CAAC;YAED,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAAE,CAAC,CAAC;IACT,CAAC;IAED,OAAO,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI;QACtC,CAAC,CAAE,GAA+B;QAClC,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.logger = void 0;
4
+ function formatLogEntry(level, service, message, meta) {
5
+ const entry = {
6
+ level,
7
+ message,
8
+ timestamp: new Date().toISOString(),
9
+ service,
10
+ ...meta,
11
+ };
12
+ return JSON.stringify(entry);
13
+ }
14
+ function createLogger(service) {
15
+ return {
16
+ info: (message, meta) => {
17
+ process.stdout.write(formatLogEntry('info', service, message, meta) + '\n');
18
+ },
19
+ warn: (message, meta) => {
20
+ process.stdout.write(formatLogEntry('warn', service, message, meta) + '\n');
21
+ },
22
+ error: (message, meta) => {
23
+ process.stderr.write(formatLogEntry('error', service, message, meta) + '\n');
24
+ },
25
+ debug: (message, meta) => {
26
+ process.stdout.write(formatLogEntry('debug', service, message, meta) + '\n');
27
+ },
28
+ };
29
+ }
30
+ exports.logger = createLogger('backend-legacy');
31
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1,9 @@
1
+ interface Logger {
2
+ info: (message: string, meta?: Record<string, unknown>) => void;
3
+ warn: (message: string, meta?: Record<string, unknown>) => void;
4
+ error: (message: string, meta?: Record<string, unknown>) => void;
5
+ debug: (message: string, meta?: Record<string, unknown>) => void;
6
+ }
7
+ export declare const logger: Logger;
8
+ export {};
9
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAUA,UAAU,MAAM;IACd,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAChE,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAChE,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACjE,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CAClE;AA2CD,eAAO,MAAM,MAAM,QAAiC,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":";;;AAiBA,SAAS,cAAc,CACrB,KAAe,EACf,OAAe,EACf,OAAe,EACf,IAA8B;IAE9B,MAAM,KAAK,GAAa;QACtB,KAAK;QACL,OAAO;QACP,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,OAAO;QACP,GAAG,IAAI;KACR,CAAC;IACF,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,YAAY,CAAC,OAAe;IACnC,OAAO;QACL,IAAI,EAAE,CAAC,OAAe,EAAE,IAA8B,EAAQ,EAAE;YAC9D,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,IAAI,CACtD,CAAC;QACJ,CAAC;QACD,IAAI,EAAE,CAAC,OAAe,EAAE,IAA8B,EAAQ,EAAE;YAC9D,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,IAAI,CACtD,CAAC;QACJ,CAAC;QACD,KAAK,EAAE,CAAC,OAAe,EAAE,IAA8B,EAAQ,EAAE;YAC/D,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,IAAI,CACvD,CAAC;QACJ,CAAC;QACD,KAAK,EAAE,CAAC,OAAe,EAAE,IAA8B,EAAQ,EAAE;YAC/D,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,IAAI,CACvD,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAEY,QAAA,MAAM,GAAG,YAAY,CAAC,gBAAgB,CAAC,CAAC"}
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ /**
3
+ * Validation utilities for Allocation model
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.validateAllocationPercentages = validateAllocationPercentages;
7
+ exports.assertValidAllocation = assertValidAllocation;
8
+ /**
9
+ * Validates allocation percentages ensuring they sum to 100% and meet other constraints
10
+ * @param values - Allocation values to validate
11
+ * @returns Validation result with errors if any
12
+ */
13
+ function validateAllocationPercentages(values) {
14
+ var _a, _b, _c, _d, _e, _f;
15
+ const errors = [];
16
+ // Default values matching schema defaults
17
+ const equities = (_a = values.equities) !== null && _a !== void 0 ? _a : 70;
18
+ const optionsContracts = (_b = values.optionsContracts) !== null && _b !== void 0 ? _b : 5;
19
+ const futures = (_c = values.futures) !== null && _c !== void 0 ? _c : 0;
20
+ const etfs = (_d = values.etfs) !== null && _d !== void 0 ? _d : 10;
21
+ const forex = (_e = values.forex) !== null && _e !== void 0 ? _e : 0;
22
+ const crypto = (_f = values.crypto) !== null && _f !== void 0 ? _f : 15;
23
+ // Validate all values are numbers
24
+ const fields = [
25
+ { name: 'equities', value: equities },
26
+ { name: 'optionsContracts', value: optionsContracts },
27
+ { name: 'futures', value: futures },
28
+ { name: 'etfs', value: etfs },
29
+ { name: 'forex', value: forex },
30
+ { name: 'crypto', value: crypto },
31
+ ];
32
+ for (const field of fields) {
33
+ if (typeof field.value !== 'number' || isNaN(field.value)) {
34
+ errors.push({
35
+ field: field.name,
36
+ message: `${field.name} must be a valid number`,
37
+ });
38
+ }
39
+ }
40
+ // If any field is not a number, return early
41
+ if (errors.length > 0) {
42
+ return { isValid: false, errors };
43
+ }
44
+ // Validate no negative values
45
+ for (const field of fields) {
46
+ if (field.value < 0) {
47
+ errors.push({
48
+ field: field.name,
49
+ message: `${field.name} cannot be negative`,
50
+ });
51
+ }
52
+ }
53
+ // Calculate total sum
54
+ const sum = equities + optionsContracts + futures + etfs + forex + crypto;
55
+ // Validate sum is 100% with tolerance for floating point precision
56
+ const MIN_SUM = 99.99;
57
+ const MAX_SUM = 100.01;
58
+ if (sum < MIN_SUM || sum > MAX_SUM) {
59
+ errors.push({
60
+ field: 'allocation',
61
+ message: `Total allocation must sum to 100% (current: ${sum.toFixed(2)}%). ` +
62
+ `Please adjust: equities (${equities}%) + optionsContracts (${optionsContracts}%) + ` +
63
+ `futures (${futures}%) + etfs (${etfs}%) + forex (${forex}%) + crypto (${crypto}%)`,
64
+ });
65
+ }
66
+ return {
67
+ isValid: errors.length === 0,
68
+ errors,
69
+ };
70
+ }
71
+ /**
72
+ * Throws an error if allocation validation fails
73
+ * @param values - Allocation values to validate
74
+ * @throws Error with detailed validation message
75
+ */
76
+ function assertValidAllocation(values) {
77
+ const result = validateAllocationPercentages(values);
78
+ if (!result.isValid) {
79
+ const errorMessages = result.errors
80
+ .map((error) => `${error.field}: ${error.message}`)
81
+ .join('; ');
82
+ throw new Error(`Allocation validation failed: ${errorMessages}`);
83
+ }
84
+ }
85
+ //# sourceMappingURL=allocation-validator.js.map
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Validation utilities for Allocation model
3
+ */
4
+ export interface AllocationValidationError {
5
+ field: string;
6
+ message: string;
7
+ }
8
+ export interface AllocationValidationResult {
9
+ isValid: boolean;
10
+ errors: AllocationValidationError[];
11
+ }
12
+ export interface AllocationValues {
13
+ equities?: number;
14
+ optionsContracts?: number;
15
+ futures?: number;
16
+ etfs?: number;
17
+ forex?: number;
18
+ crypto?: number;
19
+ }
20
+ /**
21
+ * Validates allocation percentages ensuring they sum to 100% and meet other constraints
22
+ * @param values - Allocation values to validate
23
+ * @returns Validation result with errors if any
24
+ */
25
+ export declare function validateAllocationPercentages(values: AllocationValues): AllocationValidationResult;
26
+ /**
27
+ * Throws an error if allocation validation fails
28
+ * @param values - Allocation values to validate
29
+ * @throws Error with detailed validation message
30
+ */
31
+ export declare function assertValidAllocation(values: AllocationValues): void;
32
+ //# sourceMappingURL=allocation-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"allocation-validator.d.ts","sourceRoot":"","sources":["../../src/validators/allocation-validator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,yBAAyB,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,gBAAgB,GACvB,0BAA0B,CAkE5B;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAUpE"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"allocation-validator.js","sourceRoot":"","sources":["../../src/validators/allocation-validator.ts"],"names":[],"mappings":"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"}