meridianjs 0.2.4 → 0.2.7

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 (120) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/README.md +155 -530
  3. package/dist/analytics/collector.d.ts +16 -0
  4. package/dist/analytics/collector.d.ts.map +1 -1
  5. package/dist/analytics/collector.js +20 -0
  6. package/dist/analytics/collector.js.map +1 -1
  7. package/dist/capabilities/registry.d.ts.map +1 -1
  8. package/dist/capabilities/registry.js +7 -0
  9. package/dist/capabilities/registry.js.map +1 -1
  10. package/dist/core/pipeline.d.ts.map +1 -1
  11. package/dist/core/pipeline.js +18 -1
  12. package/dist/core/pipeline.js.map +1 -1
  13. package/dist/core/types.d.ts +9 -4
  14. package/dist/core/types.d.ts.map +1 -1
  15. package/dist/core/types.js +1 -1
  16. package/dist/core/types.js.map +1 -1
  17. package/dist/generator/index.d.ts +2 -0
  18. package/dist/generator/index.d.ts.map +1 -1
  19. package/dist/generator/index.js +2 -1
  20. package/dist/generator/index.js.map +1 -1
  21. package/dist/generator/openapi-export.d.ts +51 -0
  22. package/dist/generator/openapi-export.d.ts.map +1 -0
  23. package/dist/generator/openapi-export.js +95 -0
  24. package/dist/generator/openapi-export.js.map +1 -0
  25. package/dist/generator/templates.d.ts.map +1 -1
  26. package/dist/generator/templates.js +89 -18
  27. package/dist/generator/templates.js.map +1 -1
  28. package/dist/index.d.ts +7 -0
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +15 -0
  31. package/dist/index.js.map +1 -1
  32. package/dist/policies/builtin.d.ts +16 -0
  33. package/dist/policies/builtin.d.ts.map +1 -1
  34. package/dist/policies/builtin.js +92 -0
  35. package/dist/policies/builtin.js.map +1 -1
  36. package/dist/policies/index.d.ts +1 -1
  37. package/dist/policies/index.d.ts.map +1 -1
  38. package/dist/policies/index.js +1 -1
  39. package/dist/policies/index.js.map +1 -1
  40. package/dist/providers/billdesk/adapter.d.ts +36 -0
  41. package/dist/providers/billdesk/adapter.d.ts.map +1 -0
  42. package/dist/providers/billdesk/adapter.js +212 -0
  43. package/dist/providers/billdesk/adapter.js.map +1 -0
  44. package/dist/providers/billdesk/index.d.ts +3 -0
  45. package/dist/providers/billdesk/index.d.ts.map +1 -0
  46. package/dist/providers/billdesk/index.js +3 -0
  47. package/dist/providers/billdesk/index.js.map +1 -0
  48. package/dist/providers/billdesk/pagination.d.ts +15 -0
  49. package/dist/providers/billdesk/pagination.d.ts.map +1 -0
  50. package/dist/providers/billdesk/pagination.js +51 -0
  51. package/dist/providers/billdesk/pagination.js.map +1 -0
  52. package/dist/providers/ccavenue/adapter.d.ts +38 -0
  53. package/dist/providers/ccavenue/adapter.d.ts.map +1 -0
  54. package/dist/providers/ccavenue/adapter.js +181 -0
  55. package/dist/providers/ccavenue/adapter.js.map +1 -0
  56. package/dist/providers/ccavenue/index.d.ts +3 -0
  57. package/dist/providers/ccavenue/index.d.ts.map +1 -0
  58. package/dist/providers/ccavenue/index.js +3 -0
  59. package/dist/providers/ccavenue/index.js.map +1 -0
  60. package/dist/providers/ccavenue/pagination.d.ts +16 -0
  61. package/dist/providers/ccavenue/pagination.d.ts.map +1 -0
  62. package/dist/providers/ccavenue/pagination.js +20 -0
  63. package/dist/providers/ccavenue/pagination.js.map +1 -0
  64. package/dist/providers/datadog/adapter.d.ts +30 -0
  65. package/dist/providers/datadog/adapter.d.ts.map +1 -0
  66. package/dist/providers/datadog/adapter.js +163 -0
  67. package/dist/providers/datadog/adapter.js.map +1 -0
  68. package/dist/providers/datadog/index.d.ts +3 -0
  69. package/dist/providers/datadog/index.d.ts.map +1 -0
  70. package/dist/providers/datadog/index.js +3 -0
  71. package/dist/providers/datadog/index.js.map +1 -0
  72. package/dist/providers/datadog/pagination.d.ts +16 -0
  73. package/dist/providers/datadog/pagination.d.ts.map +1 -0
  74. package/dist/providers/datadog/pagination.js +41 -0
  75. package/dist/providers/datadog/pagination.js.map +1 -0
  76. package/dist/providers/s3/adapter.d.ts +37 -0
  77. package/dist/providers/s3/adapter.d.ts.map +1 -0
  78. package/dist/providers/s3/adapter.js +206 -0
  79. package/dist/providers/s3/adapter.js.map +1 -0
  80. package/dist/providers/s3/index.d.ts +4 -0
  81. package/dist/providers/s3/index.d.ts.map +1 -0
  82. package/dist/providers/s3/index.js +4 -0
  83. package/dist/providers/s3/index.js.map +1 -0
  84. package/dist/providers/s3/pagination.d.ts +18 -0
  85. package/dist/providers/s3/pagination.d.ts.map +1 -0
  86. package/dist/providers/s3/pagination.js +58 -0
  87. package/dist/providers/s3/pagination.js.map +1 -0
  88. package/dist/providers/s3/sigv4.d.ts +29 -0
  89. package/dist/providers/s3/sigv4.d.ts.map +1 -0
  90. package/dist/providers/s3/sigv4.js +101 -0
  91. package/dist/providers/s3/sigv4.js.map +1 -0
  92. package/dist/providers/sentry/adapter.d.ts +29 -0
  93. package/dist/providers/sentry/adapter.d.ts.map +1 -0
  94. package/dist/providers/sentry/adapter.js +154 -0
  95. package/dist/providers/sentry/adapter.js.map +1 -0
  96. package/dist/providers/sentry/index.d.ts +3 -0
  97. package/dist/providers/sentry/index.d.ts.map +1 -0
  98. package/dist/providers/sentry/index.js +3 -0
  99. package/dist/providers/sentry/index.js.map +1 -0
  100. package/dist/providers/sentry/pagination.d.ts +17 -0
  101. package/dist/providers/sentry/pagination.d.ts.map +1 -0
  102. package/dist/providers/sentry/pagination.js +54 -0
  103. package/dist/providers/sentry/pagination.js.map +1 -0
  104. package/dist/public.d.ts +14 -2
  105. package/dist/public.d.ts.map +1 -1
  106. package/dist/public.js +10 -2
  107. package/dist/public.js.map +1 -1
  108. package/dist/schema/monitor.d.ts +14 -1
  109. package/dist/schema/monitor.d.ts.map +1 -1
  110. package/dist/schema/monitor.js +24 -0
  111. package/dist/schema/monitor.js.map +1 -1
  112. package/dist/services/service-client.d.ts +8 -1
  113. package/dist/services/service-client.d.ts.map +1 -1
  114. package/dist/services/service-client.js +87 -0
  115. package/dist/services/service-client.js.map +1 -1
  116. package/dist/upi/index.d.ts +43 -0
  117. package/dist/upi/index.d.ts.map +1 -0
  118. package/dist/upi/index.js +57 -0
  119. package/dist/upi/index.js.map +1 -0
  120. package/package.json +9 -2
@@ -1 +1 @@
1
- {"version":3,"file":"public.js","sourceRoot":"","sources":["../src/public.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"public.js","sourceRoot":"","sources":["../src/public.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc;AACd,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAetC,+BAA+B;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAwBhD,kCAAkC;AAClC,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAK5D,4BAA4B;AAC5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGnD,wBAAwB;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAa/C,6BAA6B;AAC7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AACpG,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAGpD,iCAAiC;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAGxD,gCAAgC;AAChC,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAG9F,uBAAuB;AACvB,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,oBAAoB;AACpB,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAG3D,UAAU;AACV,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD,wEAAwE;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,qBAAqB;AACrB,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,+BAA+B;AAC/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAGhE,iBAAiB;AACjB,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGjD,uBAAuB;AACvB,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAIlD,uCAAuC;AACvC,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAWrE,OAAO,EACL,QAAQ,EACR,gBAAgB,EAChB,gBAAgB,EAChB,QAAQ,EACR,YAAY,EACZ,MAAM,EACN,aAAa,EACb,aAAa,GACd,MAAM,qBAAqB,CAAC;AAE7B,8BAA8B;AAC9B,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAG3E,mBAAmB;AACnB,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC"}
@@ -1,4 +1,14 @@
1
- import type { SchemaDrift, SchemaMetadata, SchemaStorage } from "../core/types.js";
1
+ import type { Schema, SchemaDrift, SchemaMetadata, SchemaStorage } from "../core/types.js";
2
+ export interface SchemaReport {
3
+ provider: string;
4
+ endpoints: Array<{
5
+ endpoint: string;
6
+ version: string;
7
+ fieldCount: number;
8
+ schema: Schema;
9
+ }>;
10
+ generatedAt: string;
11
+ }
2
12
  export declare class SchemaMonitor {
3
13
  private storage;
4
14
  private detector;
@@ -6,5 +16,8 @@ export declare class SchemaMonitor {
6
16
  snapshot(provider: string, endpoint: string, data: unknown): Promise<void>;
7
17
  check(provider: string, endpoint: string, data: unknown): Promise<SchemaDrift[]>;
8
18
  list(provider: string): Promise<SchemaMetadata[]>;
19
+ diff(provider: string, endpoint: string, data: unknown): Promise<SchemaDrift[]>;
20
+ report(provider: string): Promise<SchemaReport>;
21
+ alert(provider: string, endpoint: string, data: unknown, callback: (drifts: SchemaDrift[], provider: string, endpoint: string) => void): Promise<SchemaDrift[]>;
9
22
  }
10
23
  //# sourceMappingURL=monitor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"monitor.d.ts","sourceRoot":"","sources":["../../src/schema/monitor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAU,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAqB3F,qBAAa,aAAa;IAGZ,OAAO,CAAC,OAAO;IAF3B,OAAO,CAAC,QAAQ,CAAuB;gBAEnB,OAAO,EAAE,aAAa;IAEpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAM1E,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAYhF,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;CAGxD"}
1
+ {"version":3,"file":"monitor.d.ts","sourceRoot":"","sources":["../../src/schema/monitor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAG3F,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,KAAK,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;IACH,WAAW,EAAE,MAAM,CAAC;CACrB;AAoBD,qBAAa,aAAa;IAGZ,OAAO,CAAC,OAAO;IAF3B,OAAO,CAAC,QAAQ,CAAuB;gBAEnB,OAAO,EAAE,aAAa;IAEpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAM1E,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAYhF,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAIjD,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAI/E,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAkB/C,KAAK,CACT,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,OAAO,EACb,QAAQ,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,GAC5E,OAAO,CAAC,WAAW,EAAE,CAAC;CAO1B"}
@@ -42,5 +42,29 @@ export class SchemaMonitor {
42
42
  async list(provider) {
43
43
  return this.storage.list(provider);
44
44
  }
45
+ async diff(provider, endpoint, data) {
46
+ return this.check(provider, endpoint, data);
47
+ }
48
+ async report(provider) {
49
+ const metadata = await this.storage.list(provider);
50
+ const endpoints = await Promise.all(metadata.map(async (m) => {
51
+ const schema = await this.storage.load(provider, m.endpoint);
52
+ const fieldCount = schema?.type === "object" ? Object.keys(schema.properties ?? {}).length : 1;
53
+ return {
54
+ endpoint: m.endpoint,
55
+ version: m.version,
56
+ fieldCount,
57
+ schema: schema ?? { type: "unknown" },
58
+ };
59
+ }));
60
+ return { provider, endpoints, generatedAt: new Date().toISOString() };
61
+ }
62
+ async alert(provider, endpoint, data, callback) {
63
+ const drifts = await this.check(provider, endpoint, data);
64
+ if (drifts.length > 0) {
65
+ callback(drifts, provider, endpoint);
66
+ }
67
+ return drifts;
68
+ }
45
69
  }
46
70
  //# sourceMappingURL=monitor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"monitor.js","sourceRoot":"","sources":["../../src/schema/monitor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAEhE,SAAS,WAAW,CAAC,KAAc;IACjC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC;IAClG,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,MAAM,KAAK,GAA2B,EAAE,CAAC;QACzC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,EAAE,CAAC;YACtE,KAAK,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC;QAC9C,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IACzD,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IACzD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IACzD,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC1B,CAAC;AAED,MAAM,OAAO,aAAa;IAGJ;IAFZ,QAAQ,GAAG,IAAI,aAAa,EAAE,CAAC;IAEvC,YAAoB,OAAsB;QAAtB,YAAO,GAAP,OAAO,CAAe;IAAG,CAAC;IAE9C,KAAK,CAAC,QAAQ,CAAC,QAAgB,EAAE,QAAgB,EAAE,IAAa;QAC9D,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACzC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/D,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,QAAgB,EAAE,QAAgB,EAAE,IAAa;QAC3D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC7D,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QAElC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;YAC/E,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,QAAgB;QACzB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;CACF"}
1
+ {"version":3,"file":"monitor.js","sourceRoot":"","sources":["../../src/schema/monitor.ts"],"names":[],"mappings":"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"}
@@ -11,8 +11,11 @@ export declare class ServiceClient {
11
11
  private roundRobinIndex;
12
12
  private latencyMs;
13
13
  private costs;
14
+ private weights;
15
+ private regions;
16
+ private defaultRegion;
14
17
  private getStats;
15
- constructor(providerNames: string[], providers: ProviderClient[], config: Pick<ServiceConfig, "strategy" | "failoverOn" | "costs">, getStats?: () => Record<string, {
18
+ constructor(providerNames: string[], providers: ProviderClient[], config: Pick<ServiceConfig, "strategy" | "failoverOn" | "costs" | "weights" | "regions" | "defaultRegion">, getStats?: () => Record<string, {
16
19
  successRate: string;
17
20
  }>);
18
21
  get<T = unknown>(endpoint: string, options?: RequestOptions): Promise<NormalizedResponse<T>>;
@@ -29,6 +32,10 @@ export declare class ServiceClient {
29
32
  private cheapestIndex;
30
33
  private highestSuccessRateIndex;
31
34
  private route;
35
+ private weightedIndex;
36
+ private weightedFailoverOrder;
37
+ private geoIndex;
38
+ private geoFailoverOrder;
32
39
  private updateLatency;
33
40
  }
34
41
  //# sourceMappingURL=service-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"service-client.d.ts","sourceRoot":"","sources":["../../src/services/service-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EACV,YAAY,EAEZ,kBAAkB,EAClB,cAAc,EACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAIlD,qBAAa,aAAa;IACxB,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,aAAa,CAAW;IAChC,OAAO,CAAC,QAAQ,CAAyC;IACzD,OAAO,CAAC,UAAU,CAA6B;IAC/C,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,SAAS,CAAW;IAC5B,OAAO,CAAC,KAAK,CAAyB;IACtC,OAAO,CAAC,QAAQ,CAA8D;gBAG5E,aAAa,EAAE,MAAM,EAAE,EACvB,SAAS,EAAE,cAAc,EAAE,EAC3B,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,GAAG,YAAY,GAAG,OAAO,CAAC,EAChE,QAAQ,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IAc1D,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAI5F,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAI7F,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAI5F,KAAK,CAAC,CAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAI9F,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAIxF,QAAQ,CAAC,CAAC,GAAG,OAAO,EACzB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,cAAc,GACvB,cAAc,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAKjC,MAAM,CAAC,CAAC,GAAG,OAAO,EACvB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,cAAc,GACvB,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAK3B,KAAK,CAAC,CAAC,GAAG,OAAO,EACrB,QAAQ,EAAE,YAAY,EAAE,EACxB,gBAAgB,SAAK,GACpB,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC;IAKxD,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,aAAa;IA0BrB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,aAAa;IAarB,OAAO,CAAC,uBAAuB;YAcjB,KAAK;IAyCnB,OAAO,CAAC,aAAa;CAKtB"}
1
+ {"version":3,"file":"service-client.d.ts","sourceRoot":"","sources":["../../src/services/service-client.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,9 @@ export class ServiceClient {
7
7
  roundRobinIndex = 0;
8
8
  latencyMs;
9
9
  costs;
10
+ weights;
11
+ regions;
12
+ defaultRegion;
10
13
  getStats;
11
14
  constructor(providerNames, providers, config, getStats) {
12
15
  if (providers.length === 0) {
@@ -18,6 +21,10 @@ export class ServiceClient {
18
21
  this.failoverOn = new Set(config.failoverOn ?? ["rate_limit", "network", "provider"]);
19
22
  this.latencyMs = new Array(providers.length).fill(0);
20
23
  this.costs = config.costs ?? {};
24
+ this.weights = config.weights ?? {};
25
+ this.regions = config.regions ?? {};
26
+ if (config.defaultRegion !== undefined)
27
+ this.defaultRegion = config.defaultRegion;
21
28
  this.getStats = getStats;
22
29
  }
23
30
  get(endpoint, options) {
@@ -59,6 +66,10 @@ export class ServiceClient {
59
66
  return this.cheapestIndex();
60
67
  if (this.strategy === "highest-success-rate")
61
68
  return this.highestSuccessRateIndex();
69
+ if (this.strategy === "weighted")
70
+ return this.weightedIndex();
71
+ if (this.strategy === "geo")
72
+ return this.geoIndex();
62
73
  return 0;
63
74
  }
64
75
  failoverOrder() {
@@ -84,6 +95,12 @@ export class ServiceClient {
84
95
  .sort((a, b) => b.rate - a.rate)
85
96
  .map(({ idx }) => idx);
86
97
  }
98
+ if (this.strategy === "weighted") {
99
+ return this.weightedFailoverOrder();
100
+ }
101
+ if (this.strategy === "geo") {
102
+ return this.geoFailoverOrder();
103
+ }
87
104
  return this.providers.map((_, i) => i);
88
105
  }
89
106
  fastestIndex() {
@@ -127,6 +144,37 @@ export class ServiceClient {
127
144
  this.updateLatency(idx, result.meta.trace?.latency);
128
145
  return result;
129
146
  }
147
+ // weighted/geo: select primary probabilistically/by-region, failover through rest
148
+ if (this.strategy === "weighted" || this.strategy === "geo") {
149
+ const primaryIdx = this.selectIndex();
150
+ try {
151
+ const result = await this.providers[primaryIdx][method](endpoint, options);
152
+ this.updateLatency(primaryIdx, result.meta.trace?.latency);
153
+ return result;
154
+ }
155
+ catch (err) {
156
+ if (!(err instanceof MeridianError) || !this.failoverOn.has(err.category))
157
+ throw err;
158
+ }
159
+ const fallbacks = this.failoverOrder().filter((i) => i !== primaryIdx);
160
+ let lastError = null;
161
+ for (const idx of fallbacks) {
162
+ try {
163
+ const result = await this.providers[idx][method](endpoint, options);
164
+ this.updateLatency(idx, result.meta.trace?.latency);
165
+ return result;
166
+ }
167
+ catch (err) {
168
+ if (err instanceof MeridianError && this.failoverOn.has(err.category)) {
169
+ lastError = err;
170
+ continue;
171
+ }
172
+ throw err;
173
+ }
174
+ }
175
+ throw (lastError ??
176
+ new MeridianError(`All providers failed: ${this.providerNames.join(", ")}`, "provider", this.providerNames[0] ?? "service", false));
177
+ }
130
178
  const order = this.failoverOrder();
131
179
  let lastError = null;
132
180
  for (const idx of order) {
@@ -146,6 +194,45 @@ export class ServiceClient {
146
194
  throw (lastError ??
147
195
  new MeridianError(`All providers failed: ${this.providerNames.join(", ")}`, "provider", this.providerNames[0] ?? "service", false));
148
196
  }
197
+ weightedIndex() {
198
+ const totalWeight = this.providerNames.reduce((sum, name) => sum + (this.weights[name] ?? 1), 0);
199
+ let rand = Math.random() * totalWeight;
200
+ for (let i = 0; i < this.providerNames.length; i++) {
201
+ rand -= this.weights[this.providerNames[i]] ?? 1;
202
+ if (rand <= 0)
203
+ return i;
204
+ }
205
+ return this.providerNames.length - 1;
206
+ }
207
+ weightedFailoverOrder() {
208
+ return this.providerNames
209
+ .map((name, idx) => ({ idx, weight: this.weights[name] ?? 1 }))
210
+ .sort((a, b) => b.weight - a.weight)
211
+ .map(({ idx }) => idx);
212
+ }
213
+ geoIndex() {
214
+ const region = process.env.MERIDIAN_REGION ?? this.defaultRegion;
215
+ if (region) {
216
+ const preferred = this.regions[region];
217
+ if (preferred && preferred.length > 0) {
218
+ const idx = this.providerNames.indexOf(preferred[0]);
219
+ if (idx !== -1)
220
+ return idx;
221
+ }
222
+ }
223
+ return 0;
224
+ }
225
+ geoFailoverOrder() {
226
+ const region = process.env.MERIDIAN_REGION ?? this.defaultRegion;
227
+ if (region) {
228
+ const preferred = (this.regions[region] ?? [])
229
+ .map((name) => this.providerNames.indexOf(name))
230
+ .filter((i) => i !== -1);
231
+ const rest = this.providerNames.map((_, i) => i).filter((i) => !preferred.includes(i));
232
+ return [...preferred, ...rest];
233
+ }
234
+ return this.providers.map((_, i) => i);
235
+ }
149
236
  updateLatency(idx, latency) {
150
237
  if (latency === undefined)
151
238
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"service-client.js","sourceRoot":"","sources":["../../src/services/service-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service-client.js","sourceRoot":"","sources":["../../src/services/service-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * High-level helpers for UPI (Unified Payments Interface) — a uniquely Indian
3
+ * payment primitive layered on top of raw provider adapters (Setu, Decentro,
4
+ * BillDesk, CCAvenue, ...). These helpers operate purely on the UPI URI/VPA
5
+ * formats defined by NPCI; they don't call any provider API.
6
+ *
7
+ * Reference: NPCI UPI Linking Specification (`upi://pay?...` deep links) and
8
+ * the VPA format `<handle>@<psp-handle>`.
9
+ */
10
+ /**
11
+ * Validates a UPI Virtual Payment Address against NPCI's `handle@pspHandle`
12
+ * format. This is a syntactic check — it does not confirm the VPA is
13
+ * registered or resolvable; that requires a live lookup through a provider
14
+ * such as Setu or Decentro.
15
+ */
16
+ export declare function validateVpa(vpa: string): boolean;
17
+ export interface UpiDeepLinkOptions {
18
+ /** Payee VPA, e.g. "merchant@oksbi" (mapped to the `pa` parameter). */
19
+ vpa: string;
20
+ /** Payee display name (`pn`). */
21
+ payeeName?: string;
22
+ /** Amount in major currency units, e.g. 1000 for ₹1000 (`am`). */
23
+ amount?: number;
24
+ /** ISO 4217 currency code; defaults to "INR" (`cu`). */
25
+ currency?: string;
26
+ /** Transaction note / description shown to the payer (`tn`). */
27
+ note?: string;
28
+ /** Merchant-generated transaction reference (`tr`). */
29
+ transactionRef?: string;
30
+ /** Transaction ID, typically issued by the PSP (`tid`). */
31
+ transactionId?: string;
32
+ /** Merchant category code (`mc`). */
33
+ merchantCode?: string;
34
+ }
35
+ /**
36
+ * Builds a `upi://pay` deep link per NPCI's UPI Linking Specification, suitable
37
+ * for opening a UPI app's payment screen pre-filled with the given details.
38
+ *
39
+ * Throws if `vpa` fails {@link validateVpa} or `amount` is not a positive,
40
+ * finite number — both would produce a deep link that UPI apps reject.
41
+ */
42
+ export declare function createUpiDeepLink(options: UpiDeepLinkOptions): string;
43
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/upi/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAGhD;AAED,MAAM,WAAW,kBAAkB;IACjC,uEAAuE;IACvE,GAAG,EAAE,MAAM,CAAC;IACZ,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kEAAkE;IAClE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,2DAA2D;IAC3D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qCAAqC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,CAyBrE"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * High-level helpers for UPI (Unified Payments Interface) — a uniquely Indian
3
+ * payment primitive layered on top of raw provider adapters (Setu, Decentro,
4
+ * BillDesk, CCAvenue, ...). These helpers operate purely on the UPI URI/VPA
5
+ * formats defined by NPCI; they don't call any provider API.
6
+ *
7
+ * Reference: NPCI UPI Linking Specification (`upi://pay?...` deep links) and
8
+ * the VPA format `<handle>@<psp-handle>`.
9
+ */
10
+ // `<handle>@<psp-handle>`: handle allows letters, digits, and . _ - ;
11
+ // the PSP handle must start with a letter and may contain letters, digits, . -
12
+ const VPA_REGEX = /^[a-zA-Z0-9.\-_]{2,256}@[a-zA-Z][a-zA-Z0-9.\-]{1,64}$/;
13
+ /**
14
+ * Validates a UPI Virtual Payment Address against NPCI's `handle@pspHandle`
15
+ * format. This is a syntactic check — it does not confirm the VPA is
16
+ * registered or resolvable; that requires a live lookup through a provider
17
+ * such as Setu or Decentro.
18
+ */
19
+ export function validateVpa(vpa) {
20
+ if (typeof vpa !== "string")
21
+ return false;
22
+ return VPA_REGEX.test(vpa.trim());
23
+ }
24
+ /**
25
+ * Builds a `upi://pay` deep link per NPCI's UPI Linking Specification, suitable
26
+ * for opening a UPI app's payment screen pre-filled with the given details.
27
+ *
28
+ * Throws if `vpa` fails {@link validateVpa} or `amount` is not a positive,
29
+ * finite number — both would produce a deep link that UPI apps reject.
30
+ */
31
+ export function createUpiDeepLink(options) {
32
+ if (!validateVpa(options.vpa)) {
33
+ throw new Error(`createUpiDeepLink: "${options.vpa}" is not a valid UPI VPA (expected handle@bank format)`);
34
+ }
35
+ if (options.amount !== undefined && (!Number.isFinite(options.amount) || options.amount <= 0)) {
36
+ throw new Error(`createUpiDeepLink: amount must be a positive finite number, received ${options.amount}`);
37
+ }
38
+ const params = [
39
+ ["pa", options.vpa.trim()],
40
+ ["cu", options.currency ?? "INR"],
41
+ ];
42
+ if (options.payeeName)
43
+ params.push(["pn", options.payeeName]);
44
+ if (options.amount !== undefined)
45
+ params.push(["am", options.amount.toFixed(2)]);
46
+ if (options.note)
47
+ params.push(["tn", options.note]);
48
+ if (options.transactionRef)
49
+ params.push(["tr", options.transactionRef]);
50
+ if (options.transactionId)
51
+ params.push(["tid", options.transactionId]);
52
+ if (options.merchantCode)
53
+ params.push(["mc", options.merchantCode]);
54
+ const query = params.map(([key, value]) => `${key}=${encodeURIComponent(value)}`).join("&");
55
+ return `upi://pay?${query}`;
56
+ }
57
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/upi/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,sEAAsE;AACtE,+EAA+E;AAC/E,MAAM,SAAS,GAAG,uDAAuD,CAAC;AAE1E;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC1C,OAAO,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;AACpC,CAAC;AAqBD;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAA2B;IAC3D,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CACb,uBAAuB,OAAO,CAAC,GAAG,wDAAwD,CAC3F,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC;QAC9F,MAAM,IAAI,KAAK,CACb,wEAAwE,OAAO,CAAC,MAAM,EAAE,CACzF,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAA4B;QACtC,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAC1B,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAC;KAClC,CAAC;IACF,IAAI,OAAO,CAAC,SAAS;QAAE,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IAC9D,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;QAAE,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjF,IAAI,OAAO,CAAC,IAAI;QAAE,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACpD,IAAI,OAAO,CAAC,cAAc;QAAE,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;IACxE,IAAI,OAAO,CAAC,aAAa;QAAE,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;IACvE,IAAI,OAAO,CAAC,YAAY;QAAE,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;IAEpE,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5F,OAAO,aAAa,KAAK,EAAE,CAAC;AAC9B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "meridianjs",
3
- "version": "0.2.4",
3
+ "version": "0.2.7",
4
4
  "description": "Meridian - A TypeScript-first SDK that enforces a single stable contract across all third-party API providers",
5
5
  "main": "dist/public.js",
6
6
  "types": "dist/public.d.ts",
@@ -13,6 +13,10 @@
13
13
  "./contract": {
14
14
  "types": "./dist/testing/contract.d.ts",
15
15
  "import": "./dist/testing/contract.js"
16
+ },
17
+ "./upi": {
18
+ "types": "./dist/upi/index.d.ts",
19
+ "import": "./dist/upi/index.js"
16
20
  }
17
21
  },
18
22
  "files": ["dist", "README.md", "CHANGELOG.md", "LICENSE.md"],
@@ -28,7 +32,10 @@
28
32
  "proxy": "node dist/proxy/cli.js",
29
33
  "proxy:build": "npm run build && npm run proxy",
30
34
  "example:swap": "vite-node examples/provider-swap/index.ts",
31
- "test:contracts": "node scripts/test-contracts.mjs"
35
+ "test:contracts": "node scripts/test-contracts.mjs",
36
+ "test:contracts:all": "node scripts/test-contracts.mjs",
37
+ "benchmark": "npx tsx benchmarks/pipeline-overhead.ts",
38
+ "pkg:check": "npx publint && npx @arethetypeswrong/cli . --pack"
32
39
  },
33
40
  "bin": {
34
41
  "boundary-proxy": "dist/proxy/cli.js",