@mojaloop/sdk-scheme-adapter 24.12.0 → 24.14.0-snapshot.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.
- package/.grype.yaml +5 -2
- package/.yarn/cache/{@apidevtools-json-schema-ref-parser-npm-11.9.1-affeb92b0d-d8ebea686e.zip → @apidevtools-json-schema-ref-parser-npm-11.9.3-539c6e355d-3d3618dbb6.zip} +0 -0
- package/.yarn/cache/{@babel-compat-data-npm-7.28.0-04d8eecea9-1a56a5e48c.zip → @babel-compat-data-npm-7.28.4-fdb823dde5-95b7864e6b.zip} +0 -0
- package/.yarn/cache/{@babel-helper-wrap-function-npm-7.27.1-7c7bc9ac83-effa5ba173.zip → @babel-helper-wrap-function-npm-7.28.3-abf7c7bf1f-a5ed5fe7b8.zip} +0 -0
- package/.yarn/cache/{@babel-plugin-syntax-jsx-npm-7.25.9-3df022f433-bb609d1ffb.zip → @babel-plugin-syntax-jsx-npm-7.27.1-2f6039b8f0-c6d1324cff.zip} +0 -0
- package/.yarn/cache/{@babel-plugin-syntax-typescript-npm-7.25.9-5201e4ba77-0e9821e8ba.zip → @babel-plugin-syntax-typescript-npm-7.27.1-5d60015570-87836f7e32.zip} +0 -0
- package/.yarn/cache/{@babel-plugin-transform-block-scoping-npm-7.28.0-a08eef2c22-eefa0d0b3c.zip → @babel-plugin-transform-block-scoping-npm-7.28.4-f325d4f6d4-0848c681b0.zip} +0 -0
- package/.yarn/cache/{@babel-plugin-transform-classes-npm-7.28.3-22fe11bcef-0aefcabe68.zip → @babel-plugin-transform-classes-npm-7.28.4-f261201c4b-1f8423d0ba.zip} +0 -0
- package/.yarn/cache/{@babel-plugin-transform-object-rest-spread-npm-7.28.0-7aa5a9958a-55d37dbc0d.zip → @babel-plugin-transform-object-rest-spread-npm-7.28.4-bc45781f0c-aebe464e36.zip} +0 -0
- package/.yarn/cache/@babel-plugin-transform-regenerator-npm-7.28.4-13f2152eb3-24da51a659.zip +0 -0
- package/.yarn/cache/{@dabh-diagnostics-npm-2.0.3-0f2cd64f24-14e449a7f4.zip → @dabh-diagnostics-npm-2.0.8-15e79eab9c-ac2267a4ee.zip} +0 -0
- package/.yarn/cache/@eslint-community-eslint-utils-npm-4.9.0-fe45a08548-89b1eb3137.zip +0 -0
- package/.yarn/cache/@eslint-compat-npm-1.4.0-2352faedcd-204f80bfde.zip +0 -0
- package/.yarn/cache/@eslint-core-npm-0.13.0-53447b33b9-737fd1c237.zip +0 -0
- package/.yarn/cache/@eslint-core-npm-0.16.0-ceefcac859-3cea45971b.zip +0 -0
- package/.yarn/cache/{@eslint-eslintrc-npm-3.3.0-72b2f21ce8-f17d232fc4.zip → @eslint-eslintrc-npm-3.3.1-c3967fc0c3-cc240addba.zip} +0 -0
- package/.yarn/cache/{@eslint-plugin-kit-npm-0.2.7-c313bcf919-e932da4ff9.zip → @eslint-plugin-kit-npm-0.2.8-b9d7e2ad65-2e7fe7a88e.zip} +0 -0
- package/.yarn/cache/@grpc-grpc-js-npm-1.14.0-23f158f5eb-e1f7d15dde.zip +0 -0
- package/.yarn/cache/@hapi-teamwork-npm-6.0.1-fd291504d2-1f83fe93c7.zip +0 -0
- package/.yarn/cache/@hapi-tlds-npm-1.1.3-cc5bc7f0cc-4e1a3fcec7.zip +0 -0
- package/.yarn/cache/{@humanfs-node-npm-0.16.6-6ee2cad587-6d43c67274.zip → @humanfs-node-npm-0.16.7-fa16bdb590-b3633d3dce.zip} +0 -0
- package/.yarn/cache/@humanwhocodes-retry-npm-0.4.3-a8d7ca1663-0b32cfd362.zip +0 -0
- package/.yarn/cache/{@ioredis-commands-npm-1.2.0-47541de88b-a8253c9539.zip → @ioredis-commands-npm-1.4.0-3a627ac2f0-ea299f2205.zip} +0 -0
- package/.yarn/cache/{@jest-diff-sequences-npm-30.0.0-a54cd58e53-aed609b228.zip → @jest-diff-sequences-npm-30.0.1-73f863a027-0ddb7c7ba9.zip} +0 -0
- package/.yarn/cache/{@jest-expect-utils-npm-30.0.0-bddc827ac5-442b926f88.zip → @jest-expect-utils-npm-30.2.0-d624ff36ec-f2442f1bce.zip} +0 -0
- package/.yarn/cache/@jest-get-type-npm-30.1.0-1ad604ab7f-e2a95fbb49.zip +0 -0
- package/.yarn/cache/@jest-transform-npm-30.2.0-e241ad53a4-c75d72d524.zip +0 -0
- package/.yarn/cache/@jest-types-npm-30.2.0-5ae4869189-f50fcaea56.zip +0 -0
- package/.yarn/cache/{@jridgewell-gen-mapping-npm-0.3.12-540cb6029b-1516675315.zip → @jridgewell-gen-mapping-npm-0.3.13-9bd96ac800-902f8261dc.zip} +0 -0
- package/.yarn/cache/{@jridgewell-sourcemap-codec-npm-1.5.4-0708d1c59d-f677787f52.zip → @jridgewell-sourcemap-codec-npm-1.5.5-5189d9fc79-5d9d207b46.zip} +0 -0
- package/.yarn/cache/@jridgewell-trace-mapping-npm-0.3.31-1ae81d75ac-da0283270e.zip +0 -0
- package/.yarn/cache/{@mojaloop-central-services-error-handling-npm-13.1.2-680b8f106e-1357eefd24.zip → @mojaloop-central-services-error-handling-npm-13.1.3-d798c7ad31-4eae5147c7.zip} +0 -0
- package/.yarn/cache/{@mojaloop-central-services-metrics-npm-12.7.1-a82eece473-0aa6374c0e.zip → @mojaloop-central-services-metrics-npm-12.8.0-e245e8b50d-627dc16865.zip} +0 -0
- package/.yarn/cache/{@mojaloop-central-services-shared-npm-18.33.3-676ab2f4ed-bed53621b8.zip → @mojaloop-central-services-shared-npm-18.34.1-fc3be8e73c-f7ad2f9394.zip} +0 -0
- package/.yarn/cache/{@mojaloop-event-sdk-npm-14.7.0-dfe9fa1933-59adbf133d.zip → @mojaloop-event-sdk-npm-14.8.0-c3e8d5a581-bc2be19e16.zip} +0 -0
- package/.yarn/cache/@mojaloop-inter-scheme-proxy-cache-lib-npm-2.9.0-cb33cd6786-fd3f20e6a7.zip +0 -0
- package/.yarn/cache/@mojaloop-ml-number-npm-11.4.0-14b3424a94-f6e9fde53e.zip +0 -0
- package/.yarn/cache/@mojaloop-platform-shared-lib-nodejs-kafka-client-lib-npm-0.5.20-dc351718a9-e944d3f943.zip +0 -0
- package/.yarn/cache/{@mojaloop-sdk-standard-components-npm-19.17.0-0519957b97-95fef19fc4.zip → @mojaloop-sdk-standard-components-npm-19.18.0-c3cfe8de77-62ddc3ea84.zip} +0 -0
- package/.yarn/cache/{@redis-bloom-npm-5.8.2-1972c61f30-99ec4f127b.zip → @redis-bloom-npm-5.8.3-892faaab15-031bfb7d85.zip} +0 -0
- package/.yarn/cache/{@redis-client-npm-5.8.2-68c2d31768-653ba2d0ef.zip → @redis-client-npm-5.8.3-acc7573cc3-402e5f4520.zip} +0 -0
- package/.yarn/cache/{@redis-json-npm-5.8.2-99129c657f-2877cd93b7.zip → @redis-json-npm-5.8.3-bbddd9239e-fc81b7e638.zip} +0 -0
- package/.yarn/cache/{@redis-search-npm-5.8.2-c7014522ef-6cc0499a11.zip → @redis-search-npm-5.8.3-07f03dcedf-74c4ef9d3f.zip} +0 -0
- package/.yarn/cache/{@redis-time-series-npm-5.8.2-94d4c69124-a775817380.zip → @redis-time-series-npm-5.8.3-a029734baa-20ab29dfe1.zip} +0 -0
- package/.yarn/cache/{@redocly-ajv-npm-8.11.2-edb76e81a5-75d6d8bcc2.zip → @redocly-ajv-npm-8.11.3-90d671b655-da5946f032.zip} +0 -0
- package/.yarn/cache/{@sinclair-typebox-npm-0.34.35-4698edbad1-4b50006c80.zip → @sinclair-typebox-npm-0.34.41-602ecca817-5c04a7f421.zip} +0 -0
- package/.yarn/cache/@so-ric-colorspace-npm-1.1.6-4fa5d728ca-fc3285e5cb.zip +0 -0
- package/.yarn/cache/{@types-babel__generator-npm-7.6.8-61be1197d9-b53c215e90.zip → @types-babel__generator-npm-7.27.0-a5af33547a-f572e67a9a.zip} +0 -0
- package/.yarn/cache/@types-babel__traverse-npm-7.28.0-44a48c1b20-371c5e1b40.zip +0 -0
- package/.yarn/cache/@types-body-parser-npm-1.19.6-363c879d4f-33041e88ea.zip +0 -0
- package/.yarn/cache/@types-content-disposition-npm-0.5.9-0a4389ae4e-d895703c00.zip +0 -0
- package/.yarn/cache/@types-cookies-npm-0.9.1-d956f351a3-512635d55e.zip +0 -0
- package/.yarn/cache/@types-estree-npm-1.0.8-2195bac6d6-25a4c16a67.zip +0 -0
- package/.yarn/cache/@types-express-serve-static-core-npm-5.0.7-4a816a369e-74c69797f8.zip +0 -0
- package/.yarn/cache/@types-http-errors-npm-2.0.5-fc57abf6db-a88da66936.zip +0 -0
- package/.yarn/cache/@types-koa-npm-3.0.0-8807854f00-db461810b7.zip +0 -0
- package/.yarn/cache/{@types-lodash-npm-4.17.15-0a7d38c4ec-27b348b597.zip → @types-lodash-npm-4.17.20-d7ed6ac7af-8cd8ad3bd7.zip} +0 -0
- package/.yarn/cache/{@types-node-npm-24.5.2-7697d08520-a497aea88a.zip → @types-node-npm-24.6.2-22876fbd21-8d1e64b37a.zip} +0 -0
- package/.yarn/cache/@types-node-npm-24.7.0-fa253cad8d-db0b77e9b1.zip +0 -0
- package/.yarn/cache/@types-qs-npm-6.14.0-e27d9ca044-1909205514.zip +0 -0
- package/.yarn/cache/@types-semver-npm-7.7.1-1a46d6e2dd-8f09e7e6ca.zip +0 -0
- package/.yarn/cache/{@types-send-npm-0.17.4-9d7c55577f-28320a2aa1.zip → @types-send-npm-0.17.5-5278cc54b0-b68ae8f9ba.zip} +0 -0
- package/.yarn/cache/{@types-serve-static-npm-1.15.7-d4eef0bd1a-c5a7171d56.zip → @types-serve-static-npm-1.15.8-1f955e73b5-c031f870df.zip} +0 -0
- package/.yarn/cache/{@typescript-eslint-eslint-plugin-npm-8.44.0-3a3d745bcf-38d0491d96.zip → @typescript-eslint-eslint-plugin-npm-8.45.0-92bb8b7596-6d31dbd335.zip} +0 -0
- package/.yarn/cache/@typescript-eslint-eslint-plugin-npm-8.46.0-e6114965b4-415afd894a.zip +0 -0
- package/.yarn/cache/@typescript-eslint-parser-npm-8.45.0-9132cc3400-4f8b7c73ae.zip +0 -0
- package/.yarn/cache/@typescript-eslint-parser-npm-8.46.0-c44629050a-6838fde776.zip +0 -0
- package/.yarn/cache/@typescript-eslint-project-service-npm-8.45.0-a8f5eebf6e-919c8260da.zip +0 -0
- package/.yarn/cache/@typescript-eslint-project-service-npm-8.46.0-85a4b9bb9c-de11af23ae.zip +0 -0
- package/.yarn/cache/@typescript-eslint-scope-manager-npm-8.45.0-ee984aba27-e45d63a010.zip +0 -0
- package/.yarn/cache/@typescript-eslint-scope-manager-npm-8.46.0-fd8edaba78-ed85abd08c.zip +0 -0
- package/.yarn/cache/@typescript-eslint-tsconfig-utils-npm-8.45.0-c8d2a74220-91696bbc34.zip +0 -0
- package/.yarn/cache/@typescript-eslint-tsconfig-utils-npm-8.46.0-8919c1f746-e78a66a854.zip +0 -0
- package/.yarn/cache/{@typescript-eslint-type-utils-npm-8.44.0-4b4c61deae-513c6d3719.zip → @typescript-eslint-type-utils-npm-8.45.0-7a1226a6e4-81017b3f47.zip} +0 -0
- package/.yarn/cache/@typescript-eslint-type-utils-npm-8.46.0-dbfff922bb-5405b71b91.zip +0 -0
- package/.yarn/cache/@typescript-eslint-types-npm-8.45.0-48b82801f4-889ded2b9b.zip +0 -0
- package/.yarn/cache/@typescript-eslint-types-npm-8.46.0-b013400d3e-0118b0dd59.zip +0 -0
- package/.yarn/cache/@typescript-eslint-typescript-estree-npm-8.45.0-e7f29f17ac-2fb4e63ad6.zip +0 -0
- package/.yarn/cache/@typescript-eslint-typescript-estree-npm-8.46.0-0b10d4388a-61053bd0c3.zip +0 -0
- package/.yarn/cache/@typescript-eslint-utils-npm-8.45.0-ae9cdb989e-9e675a0da4.zip +0 -0
- package/.yarn/cache/@typescript-eslint-utils-npm-8.46.0-a7d3832f43-4e0da60de3.zip +0 -0
- package/.yarn/cache/{@typescript-eslint-visitor-keys-npm-8.38.0-533dcf6a78-a95a535146.zip → @typescript-eslint-visitor-keys-npm-8.45.0-2626ce19ce-8ae7e19c69.zip} +0 -0
- package/.yarn/cache/{@typescript-eslint-visitor-keys-npm-8.44.0-131d4d0e8f-09b008b14f.zip → @typescript-eslint-visitor-keys-npm-8.46.0-7d793afea5-37e6145b6a.zip} +0 -0
- package/.yarn/cache/abbrev-npm-3.0.1-a34d600e50-ebd2c149dd.zip +0 -0
- package/.yarn/cache/acorn-npm-8.15.0-0764cf600e-77f2de5051.zip +0 -0
- package/.yarn/cache/agent-base-npm-7.1.4-cb8b4604d5-79bef16724.zip +0 -0
- package/.yarn/cache/ansi-regex-npm-6.2.2-f2d6691eb1-9b17ce2c6d.zip +0 -0
- package/.yarn/cache/ansi-styles-npm-6.2.3-6fc7ca2bf5-c49dad7639.zip +0 -0
- package/.yarn/cache/{aproba-npm-2.0.0-8716bcfde6-c2b9a63129.zip → aproba-npm-2.1.0-6cb03e605b-cb0e335ac3.zip} +0 -0
- package/.yarn/cache/async-generator-function-npm-1.0.0-14cf981d13-3d49e7acbe.zip +0 -0
- package/.yarn/cache/babel-jest-npm-30.2.0-c2df62d909-4c7351a366.zip +0 -0
- package/.yarn/cache/babel-plugin-istanbul-npm-7.0.1-4d31ae2722-fe9f865f97.zip +0 -0
- package/.yarn/cache/babel-plugin-jest-hoist-npm-30.2.0-6573d8bab9-360e87a9aa.zip +0 -0
- package/.yarn/cache/{babel-preset-current-node-syntax-npm-1.1.0-a3b84fe89f-46331111ae.zip → babel-preset-current-node-syntax-npm-1.2.0-a954a29b2b-3608fa671c.zip} +0 -0
- package/.yarn/cache/babel-preset-jest-npm-30.2.0-5a82b08b87-f75e155a8c.zip +0 -0
- package/.yarn/cache/baseline-browser-mapping-npm-2.8.11-ec62cbaabe-2325115f1c.zip +0 -0
- package/.yarn/cache/browserslist-npm-4.26.3-a3d5d315b1-49add06fd7.zip +0 -0
- package/.yarn/cache/caniuse-lite-npm-1.0.30001747-f845e7e6c5-b101dc4b13.zip +0 -0
- package/.yarn/cache/{chalk-npm-5.4.1-2f3fe4660a-29df3ffcdf.zip → chalk-npm-5.6.2-ecbd482482-1b2f48f6fb.zip} +0 -0
- package/.yarn/cache/cheerio-npm-1.1.2-b0fb353132-6b654bf5a3.zip +0 -0
- package/.yarn/cache/ci-info-npm-4.3.0-2894137978-01e359032a.zip +0 -0
- package/.yarn/cache/color-convert-npm-3.1.2-eca60588e1-6731d4d4e1.zip +0 -0
- package/.yarn/cache/color-name-npm-2.0.2-7e9a2237f7-58e5fa3853.zip +0 -0
- package/.yarn/cache/color-npm-5.0.2-3558f1a2be-2574e20a8a.zip +0 -0
- package/.yarn/cache/color-string-npm-2.1.2-7ceaab0b60-9f2fdf5a29.zip +0 -0
- package/.yarn/cache/compression-npm-1.8.1-e34a5db404-e7552bfbd7.zip +0 -0
- package/.yarn/cache/core-js-compat-npm-3.45.1-3c70e031ab-a6eb757ccf.zip +0 -0
- package/.yarn/cache/css-select-npm-5.2.2-6385fe3687-ebb6a88446.zip +0 -0
- package/.yarn/cache/{css-what-npm-6.1.0-57f751efbb-c67a3a2d0d.zip → css-what-npm-6.2.2-c497de3935-3c5a53be94.zip} +0 -0
- package/.yarn/cache/{debug-npm-4.4.1-6eab84b9f7-8e2709b214.zip → debug-npm-4.4.3-0105c6123a-9ada3434ea.zip} +0 -0
- package/.yarn/cache/dedent-npm-1.7.0-ec8ff53a59-c902f3e7e8.zip +0 -0
- package/.yarn/cache/dotenv-npm-17.2.3-2f9ab93ea1-f8b78626eb.zip +0 -0
- package/.yarn/cache/{electron-to-chromium-npm-1.5.191-037fcdd360-d5a5ca41bb.zip → electron-to-chromium-npm-1.5.230-2836cdf03c-af1c5b6b7b.zip} +0 -0
- package/.yarn/cache/encoding-sniffer-npm-0.2.1-55db9e1e21-7d74723823.zip +0 -0
- package/.yarn/cache/end-of-stream-npm-1.4.5-8e646acd73-1e0cfa6e7f.zip +0 -0
- package/.yarn/cache/entities-npm-6.0.1-84692dab43-62af130720.zip +0 -0
- package/.yarn/cache/error-ex-npm-1.3.4-c7248e4040-ae3939fd4a.zip +0 -0
- package/.yarn/cache/eslint-scope-npm-8.4.0-8ed12feb40-e8e611701f.zip +0 -0
- package/.yarn/cache/espree-npm-10.4.0-9633b00e55-9b355b32db.zip +0 -0
- package/.yarn/cache/expect-npm-30.2.0-cebe750b6e-cf98ab45ab.zip +0 -0
- package/.yarn/cache/fast-uri-npm-3.1.0-57fa0b3f3c-818b2c96dc.zip +0 -0
- package/.yarn/cache/{fastq-npm-1.19.0-5e2713df98-20457acfb1.zip → fastq-npm-1.19.1-ca0a13ec3f-75679dc226.zip} +0 -0
- package/.yarn/cache/fdir-npm-6.5.0-8814a0dec7-14ca1c9f0a.zip +0 -0
- package/.yarn/cache/{follow-redirects-npm-1.15.9-539785d34c-e3ab42d109.zip → follow-redirects-npm-1.15.11-ae7b2db266-07372fd74b.zip} +0 -0
- package/.yarn/cache/{fs-extra-npm-11.3.0-a6b1b4d5ad-c9fe7b23dd.zip → fs-extra-npm-11.3.2-490a8d09c5-d559545c73.zip} +0 -0
- package/.yarn/cache/generator-function-npm-2.0.1-aed34a724a-eb7e7eb896.zip +0 -0
- package/.yarn/cache/get-intrinsic-npm-1.3.1-2f734f40ec-bb579dda84.zip +0 -0
- package/.yarn/cache/htmlparser2-npm-10.0.0-2301362da5-768870f0e0.zip +0 -0
- package/.yarn/cache/http-cache-semantics-npm-4.2.0-fadacfb3ad-4efd2dfcfe.zip +0 -0
- package/.yarn/cache/ignore-npm-7.0.5-dea34ee430-f134b96a4d.zip +0 -0
- package/.yarn/cache/index-to-position-npm-1.2.0-76254be6df-fb6421c87a.zip +0 -0
- package/.yarn/cache/ip-address-npm-10.0.1-862be6199a-09731acda3.zip +0 -0
- package/.yarn/cache/is-generator-function-npm-1.1.2-d0a84b1a72-cc50fa0103.zip +0 -0
- package/.yarn/cache/is-npm-npm-6.1.0-3dd1685f37-54779c5541.zip +0 -0
- package/.yarn/cache/istanbul-reports-npm-3.2.0-b755b56d78-6773a1d5c7.zip +0 -0
- package/.yarn/cache/{jake-npm-10.9.2-3bf2173aed-3be324708f.zip → jake-npm-10.9.4-970487a1c4-97e48f73f5.zip} +0 -0
- package/.yarn/cache/jest-diff-npm-30.2.0-a9ffaeaf61-1fb9e4fb7d.zip +0 -0
- package/.yarn/cache/{jest-haste-map-npm-30.1.0-8189548adb-bd39053fe1.zip → jest-haste-map-npm-30.2.0-3a29f4d94a-a88be6b0b6.zip} +0 -0
- package/.yarn/cache/jest-matcher-utils-npm-30.2.0-4a694dfac2-f3f1ecf68c.zip +0 -0
- package/.yarn/cache/jest-message-util-npm-30.2.0-65acf2d429-e29ec76e8c.zip +0 -0
- package/.yarn/cache/{jest-mock-npm-30.0.0-1cab834040-4896ba2504.zip → jest-mock-npm-30.2.0-9e4a2da4cb-cde9b56805.zip} +0 -0
- package/.yarn/cache/{jest-util-npm-30.0.5-8940b46e20-44207c4b8c.zip → jest-util-npm-30.2.0-8ebfa9b786-cf2f2fb834.zip} +0 -0
- package/.yarn/cache/{jest-worker-npm-30.1.0-b4a01545e6-cc09d2ce86.zip → jest-worker-npm-30.2.0-4d4aaec97d-9354b0c71c.zip} +0 -0
- package/.yarn/cache/jsonfile-npm-6.2.0-aefb9ffd45-513aac94a6.zip +0 -0
- package/.yarn/cache/jwa-npm-1.4.2-9b996c4b2d-a46c9ddbcc.zip +0 -0
- package/.yarn/cache/jwa-npm-2.0.1-9ebe28a626-b04312a1de.zip +0 -0
- package/.yarn/cache/{long-npm-5.3.1-c44e0933f0-7713e10b4f.zip → long-npm-5.3.2-f80d0f7d39-b6b55ddae5.zip} +0 -0
- package/.yarn/cache/{minipass-fetch-npm-4.0.0-d4e49e0194-4b0772dbee.zip → minipass-fetch-npm-4.0.1-ce1d15e957-7ddfebdbb8.zip} +0 -0
- package/.yarn/cache/minizlib-npm-3.1.0-6680befdba-f47365cc2c.zip +0 -0
- package/.yarn/cache/mock-json-schema-npm-1.1.2-d0bf8a8e0c-d02d8aa908.zip +0 -0
- package/.yarn/cache/{nan-npm-2.22.1-09e9287ac1-3459e7e0b0.zip → nan-npm-2.23.0-b3b2a3ae9b-9822b38418.zip} +0 -0
- package/.yarn/cache/nanoid-npm-3.3.11-f98c1f9ef6-73b5afe597.zip +0 -0
- package/.yarn/cache/node-gyp-npm-11.4.2-75a7da9a3c-de0fdd1a23.zip +0 -0
- package/.yarn/cache/node-rdkafka-npm-3.4.1-cbfb65c8a6-ab51a61428.zip +0 -0
- package/.yarn/cache/node-releases-npm-2.0.21-93f7457975-5344d634b3.zip +0 -0
- package/.yarn/cache/normalize-url-npm-8.1.0-9b4f4e558b-59b765bfe7.zip +0 -0
- package/.yarn/cache/object.entries-npm-1.1.9-32f1b371e0-24163ab1e1.zip +0 -0
- package/.yarn/cache/parse5-npm-7.3.0-b0410074a3-b0e48be20b.zip +0 -0
- package/.yarn/cache/{picomatch-npm-4.0.2-e93516ddf2-ce617b8da3.zip → picomatch-npm-4.0.3-0a647b87cc-57b99055f4.zip} +0 -0
- package/.yarn/cache/portfinder-npm-1.0.38-d6e0c97a97-369155c3e7.zip +0 -0
- package/.yarn/cache/{postcss-npm-8.5.3-37174aa03d-6d7e21a772.zip → postcss-npm-8.5.6-e7f126c6f3-9e4fbe9757.zip} +0 -0
- package/.yarn/cache/pretty-format-npm-30.2.0-2787008ea2-725890d648.zip +0 -0
- package/.yarn/cache/{pump-npm-3.0.2-a8afc6734f-e0c4216874.zip → pump-npm-3.0.3-e7d0c1fbab-52843fc933.zip} +0 -0
- package/.yarn/cache/pupa-npm-3.3.0-00ad2ffe24-05c84c2c76.zip +0 -0
- package/.yarn/cache/{redis-npm-5.8.2-9c493c0c47-a7635cedf2.zip → redis-npm-5.8.3-3369ceaea3-3843f0ad95.zip} +0 -0
- package/.yarn/cache/regenerate-unicode-properties-npm-10.2.2-7d116b2ed9-5041ee3118.zip +0 -0
- package/.yarn/cache/regexpu-core-npm-6.4.0-8966e0bc82-bf5f85a502.zip +0 -0
- package/.yarn/cache/regjsparser-npm-0.13.0-c24f3ebde6-eeaabd3454.zip +0 -0
- package/.yarn/cache/{socks-npm-2.8.4-8194b86bd0-ab3af97aeb.zip → socks-npm-2.8.7-d1d20aae19-d19366c959.zip} +0 -0
- package/.yarn/cache/spdx-license-ids-npm-3.0.22-2b47dea449-a2f214aaf7.zip +0 -0
- package/.yarn/cache/statuses-npm-2.0.2-2d84c63b8c-6927feb50c.zip +0 -0
- package/.yarn/cache/strip-ansi-npm-7.1.2-aa4fadccd9-db0e3f9654.zip +0 -0
- package/.yarn/cache/{strip-json-comments-npm-5.0.1-4a8f1cb37e-b314af70c6.zip → strip-json-comments-npm-5.0.3-5042d1b870-3ccbf26f27.zip} +0 -0
- package/.yarn/cache/strnum-npm-1.1.2-67427480d6-ccd6297a1f.zip +0 -0
- package/.yarn/cache/{supports-color-npm-10.0.0-6cd1bb42a6-0475bf167d.zip → supports-color-npm-10.2.2-e43ac15f9f-bd132705fc.zip} +0 -0
- package/.yarn/cache/{swagger-ui-dist-npm-5.19.0-1a4737b567-d7433e00e5.zip → swagger-ui-dist-npm-5.29.3-403a6cab72-f896364781.zip} +0 -0
- package/.yarn/cache/tar-npm-7.5.1-7b414f7fec-4848cd2fa2.zip +0 -0
- package/.yarn/cache/tinyglobby-npm-0.2.15-0e783aadbd-d72bd826a8.zip +0 -0
- package/.yarn/cache/tmp-npm-0.2.5-e146296d91-dd4b78b323.zip +0 -0
- package/.yarn/cache/{typescript-patch-bcfe2ebaf8-bd810ab13e.zip → typescript-npm-5.9.3-48715be868-c089d9d3da.zip} +0 -0
- package/.yarn/cache/{typescript-npm-5.9.2-d00cd8b149-cc2fe6c822.zip → typescript-patch-6fda4d02cf-696e1b017b.zip} +0 -0
- package/.yarn/cache/undici-npm-7.16.0-f6b1c9157f-2bb71672b2.zip +0 -0
- package/.yarn/cache/{undici-types-npm-7.12.0-af0c725921-4a0f927c98.zip → undici-types-npm-7.13.0-df78d4ea2d-1088ad68dd.zip} +0 -0
- package/.yarn/cache/undici-types-npm-7.14.0-d9eb643e6a-0f8709b214.zip +0 -0
- package/.yarn/cache/unicode-match-property-value-ecmascript-npm-2.2.1-0b3c4504a2-a42bebebab.zip +0 -0
- package/.yarn/cache/unicode-property-aliases-ecmascript-npm-2.2.0-55d7728914-0dd0f6e701.zip +0 -0
- package/.yarn/cache/validator-npm-13.15.15-143146ad19-a43d9271c8.zip +0 -0
- package/.yarn/cache/zod-npm-3.25.76-7de26333f8-f0c963ec40.zip +0 -0
- package/.yarn/install-state.gz +0 -0
- package/.yarn/releases/{yarn-4.10.1.cjs → yarn-4.10.3.cjs} +126 -126
- package/.yarnrc.yml +1 -1
- package/CHANGELOG.md +12 -0
- package/CLAUDE.md +186 -0
- package/_cc/learn-project.md +74 -0
- package/_cc/specs/story-CSI-1864.md +45 -0
- package/docker-compose.yml +2 -2
- package/modules/api-svc/.env.example +2 -2
- package/modules/api-svc/package.json +10 -10
- package/modules/api-svc/src/ControlAgent/index.js +45 -12
- package/modules/api-svc/src/FSPIOPEventHandler/handlers/bulk-quotes-requested.js +1 -1
- package/modules/api-svc/src/FSPIOPEventHandler/handlers/bulk-transfers-requested.js +1 -1
- package/modules/api-svc/src/FSPIOPEventHandler/handlers/party-info-requested.js +1 -1
- package/modules/api-svc/src/FSPIOPEventHandler/index.js +3 -3
- package/modules/api-svc/src/InboundServer/handlers.js +3 -3
- package/modules/api-svc/src/InboundServer/index.js +6 -6
- package/modules/api-svc/src/InboundServer/middlewares.js +6 -2
- package/modules/api-svc/src/OutboundServer/handlers.js +13 -13
- package/modules/api-svc/src/OutboundServer/index.js +5 -5
- package/modules/api-svc/src/config.js +5 -4
- package/modules/api-svc/src/index.js +251 -196
- package/modules/api-svc/src/lib/cache.js +15 -12
- package/modules/api-svc/src/lib/model/AccountsModel.js +1 -1
- package/modules/api-svc/src/lib/model/Async2SyncModel.js +1 -1
- package/modules/api-svc/src/lib/model/InboundPingModel.js +1 -1
- package/modules/api-svc/src/lib/model/InboundTransfersModel.js +1 -1
- package/modules/api-svc/src/lib/model/OutboundBulkQuotesModel.js +1 -1
- package/modules/api-svc/src/lib/model/OutboundBulkTransfersModel.js +1 -1
- package/modules/api-svc/src/lib/model/OutboundRequestToPayModel.js +1 -1
- package/modules/api-svc/src/lib/model/OutboundRequestToPayTransferModel.js +1 -1
- package/modules/api-svc/src/lib/model/OutboundTransfersModel.js +1 -1
- package/modules/api-svc/src/lib/model/ProxyModel/index.js +2 -2
- package/modules/api-svc/src/lib/utils.js +6 -6
- package/modules/api-svc/test/__mocks__/@mojaloop/sdk-standard-components.js +2 -2
- package/modules/api-svc/test/config/integration-pm4ml.env +2 -2
- package/modules/api-svc/test/config/integration.env +2 -2
- package/modules/api-svc/test/integration-pm4ml/mockServers/managementService/initConfig.js +1 -1
- package/modules/api-svc/test/unit/api/utils.js +7 -7
- package/modules/api-svc/test/unit/config.test.js +3 -3
- package/modules/api-svc/test/unit/data/defaultConfig.json +1 -1
- package/modules/api-svc/test/unit/index.configPolling.test.js +229 -0
- package/modules/api-svc/test/unit/lib/model/InboundPingModel.test.js +4 -4
- package/modules/api-svc/test/unit/lib/model/OutboundTransfersISO20022.test.js +1 -1
- package/modules/api-svc/test/unit/lib/model/data/defaultConfig.json +1 -1
- package/modules/api-svc/test/unit/outboundApi/handlers.test.js +15 -15
- package/modules/outbound-command-event-handler/package.json +9 -9
- package/modules/outbound-domain-event-handler/package.json +7 -7
- package/modules/private-shared-lib/package.json +9 -9
- package/package.json +7 -6
- package/{sbom-v24.11.0.csv → sbom-v24.13.0.csv} +236 -247
- package/.yarn/cache/@ampproject-remapping-npm-2.3.0-559c14eee4-f345152537.zip +0 -0
- package/.yarn/cache/@babel-code-frame-npm-7.26.2-4902b56813-db2c2122af.zip +0 -0
- package/.yarn/cache/@babel-compat-data-npm-7.26.8-fb802c4940-bdddf577f6.zip +0 -0
- package/.yarn/cache/@babel-compat-data-npm-7.27.2-22fa0c7782-eaa9f8aaeb.zip +0 -0
- package/.yarn/cache/@babel-core-npm-7.26.9-12b18cb40d-ceed199dbe.zip +0 -0
- package/.yarn/cache/@babel-core-npm-7.27.4-801e5891a4-28c01186d5.zip +0 -0
- package/.yarn/cache/@babel-generator-npm-7.26.9-3260f562f4-95075dd615.zip +0 -0
- package/.yarn/cache/@babel-generator-npm-7.27.1-12737d533a-6101825922.zip +0 -0
- package/.yarn/cache/@babel-generator-npm-7.27.3-9f345034e6-3b8477ae0c.zip +0 -0
- package/.yarn/cache/@babel-generator-npm-7.28.0-41b4249958-064c5ba4c0.zip +0 -0
- package/.yarn/cache/@babel-helper-annotate-as-pure-npm-7.25.9-a0f89e14a0-41edda10df.zip +0 -0
- package/.yarn/cache/@babel-helper-annotate-as-pure-npm-7.27.1-5d7897ae67-3f8e4d5914.zip +0 -0
- package/.yarn/cache/@babel-helper-compilation-targets-npm-7.26.5-e3b4215b3c-f3b5f0bfcd.zip +0 -0
- package/.yarn/cache/@babel-helper-create-class-features-plugin-npm-7.27.1-65d3087eb1-701579b490.zip +0 -0
- package/.yarn/cache/@babel-helper-create-regexp-features-plugin-npm-7.26.3-834c0b262a-4c44122ea1.zip +0 -0
- package/.yarn/cache/@babel-helper-module-imports-npm-7.25.9-b86e31bde9-e090be5dee.zip +0 -0
- package/.yarn/cache/@babel-helper-module-transforms-npm-7.26.0-7557a3558f-9841d2a62f.zip +0 -0
- package/.yarn/cache/@babel-helper-module-transforms-npm-7.27.1-d289bdccc6-415509a585.zip +0 -0
- package/.yarn/cache/@babel-helper-module-transforms-npm-7.27.3-90dc30d3d9-47abc90ceb.zip +0 -0
- package/.yarn/cache/@babel-helper-plugin-utils-npm-7.26.5-f9c17c9880-1cc0fd8514.zip +0 -0
- package/.yarn/cache/@babel-helper-string-parser-npm-7.25.9-eade578078-c28656c52b.zip +0 -0
- package/.yarn/cache/@babel-helper-validator-identifier-npm-7.25.9-2634b947a4-3f9b649be0.zip +0 -0
- package/.yarn/cache/@babel-helper-validator-option-npm-7.25.9-6450027d5d-9491b27559.zip +0 -0
- package/.yarn/cache/@babel-helpers-npm-7.26.10-4eb1d94ec4-6641462579.zip +0 -0
- package/.yarn/cache/@babel-helpers-npm-7.27.4-ba8f87a40e-a697280575.zip +0 -0
- package/.yarn/cache/@babel-parser-npm-7.26.9-5be13f2551-cb84fe3ba5.zip +0 -0
- package/.yarn/cache/@babel-parser-npm-7.27.2-70cd61f3e6-133b4ccfbc.zip +0 -0
- package/.yarn/cache/@babel-parser-npm-7.27.3-3085b3fa96-ea5a0cd55e.zip +0 -0
- package/.yarn/cache/@babel-parser-npm-7.27.4-c8d264780c-5ff6db87fd.zip +0 -0
- package/.yarn/cache/@babel-parser-npm-7.28.0-d5c2974608-2c14a0d260.zip +0 -0
- package/.yarn/cache/@babel-parser-npm-7.28.3-8acaa30019-9fa08282e3.zip +0 -0
- package/.yarn/cache/@babel-plugin-syntax-import-attributes-npm-7.26.0-7a281ed168-c122aa5771.zip +0 -0
- package/.yarn/cache/@babel-plugin-transform-regenerator-npm-7.28.3-36bb1b5a59-f95e929d41.zip +0 -0
- package/.yarn/cache/@babel-template-npm-7.26.9-6339558068-240288ceba.zip +0 -0
- package/.yarn/cache/@babel-traverse-npm-7.26.9-5dc40fea71-c16a79522e.zip +0 -0
- package/.yarn/cache/@babel-traverse-npm-7.27.1-cdef168378-9977271aa4.zip +0 -0
- package/.yarn/cache/@babel-traverse-npm-7.27.3-340ab882dc-caccdb8335.zip +0 -0
- package/.yarn/cache/@babel-traverse-npm-7.27.4-fe457ebf1b-4debb80b90.zip +0 -0
- package/.yarn/cache/@babel-traverse-npm-7.28.0-66b3390b4e-c1c24b12b6.zip +0 -0
- package/.yarn/cache/@babel-traverse-npm-7.28.3-7786c501c7-fe521591b7.zip +0 -0
- package/.yarn/cache/@babel-types-npm-7.26.9-ef3f43c2d5-11b62ea7ed.zip +0 -0
- package/.yarn/cache/@babel-types-npm-7.27.1-2a01e9d02f-81f8ada28c.zip +0 -0
- package/.yarn/cache/@babel-types-npm-7.27.3-7b6a22808d-a24e6accd8.zip +0 -0
- package/.yarn/cache/@babel-types-npm-7.28.2-9db4224804-a8de404a2e.zip +0 -0
- package/.yarn/cache/@eslint-community-eslint-utils-npm-4.4.1-c83a271e90-ae92a11412.zip +0 -0
- package/.yarn/cache/@eslint-community-eslint-utils-npm-4.7.0-47503bfa2a-43ed5d3915.zip +0 -0
- package/.yarn/cache/@eslint-compat-npm-1.3.2-b403da4a15-e710ec5ed8.zip +0 -0
- package/.yarn/cache/@eslint-core-npm-0.12.0-38bccca4dd-ee8a2c65ee.zip +0 -0
- package/.yarn/cache/@grpc-grpc-js-npm-1.13.4-4aa5cd2dfd-f1eb910ff7.zip +0 -0
- package/.yarn/cache/@grpc-proto-loader-npm-0.7.13-be5b6af1c1-7e2d842c20.zip +0 -0
- package/.yarn/cache/@hapi-teamwork-npm-6.0.0-0f3d56734c-e79c8e590e.zip +0 -0
- package/.yarn/cache/@hapi-tlds-npm-1.1.2-80b5f7031d-339761cd1a.zip +0 -0
- package/.yarn/cache/@humanwhocodes-retry-npm-0.3.1-9d87bf92c6-eb457f6995.zip +0 -0
- package/.yarn/cache/@humanwhocodes-retry-npm-0.4.2-78a05c1b69-8910c4cdf8.zip +0 -0
- package/.yarn/cache/@ioredis-commands-npm-1.3.0-c1ff038fb4-203029f09d.zip +0 -0
- package/.yarn/cache/@jest-get-type-npm-30.0.0-db16e5ad7d-6dc432caac.zip +0 -0
- package/.yarn/cache/@jest-pattern-npm-30.0.0-8f812d915e-4c21a48b1d.zip +0 -0
- package/.yarn/cache/@jest-schemas-npm-30.0.0-7943bf35b9-b97944e582.zip +0 -0
- package/.yarn/cache/@jest-transform-npm-30.1.2-14cfbd16d5-aec6c6a46f.zip +0 -0
- package/.yarn/cache/@jest-types-npm-30.0.0-ee47462915-647481170c.zip +0 -0
- package/.yarn/cache/@jest-types-npm-30.0.5-0475c9b283-6bf18f4e89.zip +0 -0
- package/.yarn/cache/@jridgewell-gen-mapping-npm-0.3.8-647be6e286-9d3a56ab36.zip +0 -0
- package/.yarn/cache/@jridgewell-set-array-npm-1.2.1-2312928209-832e513a85.zip +0 -0
- package/.yarn/cache/@jridgewell-sourcemap-codec-npm-1.5.0-dfd9126d71-4ed6123217.zip +0 -0
- package/.yarn/cache/@jridgewell-trace-mapping-npm-0.3.25-c076fd2279-dced32160a.zip +0 -0
- package/.yarn/cache/@jridgewell-trace-mapping-npm-0.3.29-6702d36c67-64e1ce0dc3.zip +0 -0
- package/.yarn/cache/@mojaloop-logging-bc-public-types-lib-npm-0.5.4-03ab70ac75-0d35363d3c.zip +0 -0
- package/.yarn/cache/@mojaloop-ml-number-npm-11.3.0-9858cadff5-8435794709.zip +0 -0
- package/.yarn/cache/@redocly-config-npm-0.20.3-701daa5910-dd9501c96d.zip +0 -0
- package/.yarn/cache/@redocly-openapi-core-npm-1.31.1-fb4096a34f-771e68ef15.zip +0 -0
- package/.yarn/cache/@redocly-openapi-core-npm-1.34.3-10568e0790-b70a92135e.zip +0 -0
- package/.yarn/cache/@types-babel__traverse-npm-7.20.6-fac4243243-63d13a3789.zip +0 -0
- package/.yarn/cache/@types-body-parser-npm-1.19.5-97fb106976-1e251118c4.zip +0 -0
- package/.yarn/cache/@types-content-disposition-npm-0.5.8-0074adf6a1-eeea868fb5.zip +0 -0
- package/.yarn/cache/@types-cookies-npm-0.9.0-a3671b5a75-88d2106834.zip +0 -0
- package/.yarn/cache/@types-estree-npm-1.0.6-b5e23f2ea2-9d35d47509.zip +0 -0
- package/.yarn/cache/@types-express-npm-5.0.0-a645691cd5-45b199ab66.zip +0 -0
- package/.yarn/cache/@types-express-serve-static-core-npm-5.0.6-e41caf262c-9dc51bdee7.zip +0 -0
- package/.yarn/cache/@types-http-errors-npm-2.0.4-8b39ca5d7c-1f3d7c3b32.zip +0 -0
- package/.yarn/cache/@types-node-npm-22.13.5-4c5912eee2-a69ec8dba3.zip +0 -0
- package/.yarn/cache/@types-qs-npm-6.9.18-125db28c30-152fab96ef.zip +0 -0
- package/.yarn/cache/@types-semver-npm-7.5.8-26073743d7-3496808818.zip +0 -0
- package/.yarn/cache/@typescript-eslint-parser-npm-8.44.0-9be86aa2f8-8c7ddabf46.zip +0 -0
- package/.yarn/cache/@typescript-eslint-project-service-npm-8.38.0-b50ac59922-fe21604603.zip +0 -0
- package/.yarn/cache/@typescript-eslint-project-service-npm-8.44.0-3208cc873e-400b4981e6.zip +0 -0
- package/.yarn/cache/@typescript-eslint-scope-manager-npm-8.38.0-64859efac1-0809a4135a.zip +0 -0
- package/.yarn/cache/@typescript-eslint-scope-manager-npm-8.44.0-02a051c9d1-5dae4a8386.zip +0 -0
- package/.yarn/cache/@typescript-eslint-tsconfig-utils-npm-8.38.0-79457d6001-e1c80d2a4b.zip +0 -0
- package/.yarn/cache/@typescript-eslint-tsconfig-utils-npm-8.44.0-de2d92d917-c8535d481d.zip +0 -0
- package/.yarn/cache/@typescript-eslint-types-npm-8.38.0-1cd62840a5-87ac2d199e.zip +0 -0
- package/.yarn/cache/@typescript-eslint-types-npm-8.44.0-89c4325651-9e28c95feb.zip +0 -0
- package/.yarn/cache/@typescript-eslint-typescript-estree-npm-8.38.0-b39ddf47a4-4ff14184a9.zip +0 -0
- package/.yarn/cache/@typescript-eslint-typescript-estree-npm-8.44.0-122f9245db-e2e579b15c.zip +0 -0
- package/.yarn/cache/@typescript-eslint-utils-npm-8.38.0-4fe3006f47-5be4936796.zip +0 -0
- package/.yarn/cache/@typescript-eslint-utils-npm-8.44.0-fc612e2915-436e21e3d0.zip +0 -0
- package/.yarn/cache/abbrev-npm-3.0.0-946682a7b1-2ceee14efd.zip +0 -0
- package/.yarn/cache/acorn-npm-8.14.0-dc46f61424-6df29c3555.zip +0 -0
- package/.yarn/cache/agent-base-npm-7.1.3-b2c16e72fb-3db6d8d465.zip +0 -0
- package/.yarn/cache/ansi-regex-npm-6.1.0-abe011aae4-495834a53b.zip +0 -0
- package/.yarn/cache/ansi-styles-npm-6.2.1-d43647018c-70fdf883b7.zip +0 -0
- package/.yarn/cache/async-npm-2.6.4-3155e80151-df8e52817d.zip +0 -0
- package/.yarn/cache/babel-jest-npm-30.1.2-2d68b3440b-9697119fe4.zip +0 -0
- package/.yarn/cache/babel-plugin-istanbul-npm-7.0.0-924905ff8c-4df567f291.zip +0 -0
- package/.yarn/cache/babel-plugin-jest-hoist-npm-30.0.1-be1f25b566-4d8d0eb372.zip +0 -0
- package/.yarn/cache/babel-preset-jest-npm-30.0.1-0b8ffd2c88-fa37b0fa11.zip +0 -0
- package/.yarn/cache/browserslist-npm-4.24.4-2fdeb5face-11fda105e8.zip +0 -0
- package/.yarn/cache/browserslist-npm-4.25.1-7df10d33cd-bfb5511b42.zip +0 -0
- package/.yarn/cache/call-bound-npm-1.0.3-f4cbf26326-c39a8245f6.zip +0 -0
- package/.yarn/cache/caniuse-lite-npm-1.0.30001700-af88646d2b-9203ed502f.zip +0 -0
- package/.yarn/cache/caniuse-lite-npm-1.0.30001727-5eb19a192b-6155a41413.zip +0 -0
- package/.yarn/cache/cheerio-npm-1.0.0-837785b57b-b535070add.zip +0 -0
- package/.yarn/cache/ci-info-npm-4.2.0-5451b2fa90-928d8457f3.zip +0 -0
- package/.yarn/cache/color-npm-3.2.1-568cf1014f-bf70438e01.zip +0 -0
- package/.yarn/cache/color-string-npm-1.9.1-dc020e56be-72aa0b81ee.zip +0 -0
- package/.yarn/cache/colorspace-npm-1.1.4-f01655548a-bb3934ef3c.zip +0 -0
- package/.yarn/cache/compression-npm-1.8.0-5088616544-ca213b9bd0.zip +0 -0
- package/.yarn/cache/core-js-compat-npm-3.44.0-840288badd-41885423aa.zip +0 -0
- package/.yarn/cache/css-select-npm-5.1.0-9365a79de5-d486b1e7eb.zip +0 -0
- package/.yarn/cache/debug-npm-4.4.0-f6efe76023-1847944c2e.zip +0 -0
- package/.yarn/cache/dedent-npm-1.5.3-123726df15-e5277f6268.zip +0 -0
- package/.yarn/cache/electron-to-chromium-npm-1.5.104-d9177e3237-ad580610ec.zip +0 -0
- package/.yarn/cache/encoding-sniffer-npm-0.2.0-7e717bfa93-fe61a759db.zip +0 -0
- package/.yarn/cache/end-of-stream-npm-1.4.4-497fc6dee1-530a5a5a1e.zip +0 -0
- package/.yarn/cache/error-ex-npm-1.3.2-5654f80c0f-d547740aa2.zip +0 -0
- package/.yarn/cache/es-abstract-npm-1.23.9-65d488dcce-31a321966d.zip +0 -0
- package/.yarn/cache/eslint-scope-npm-8.2.0-d74e314c9e-cd9ab60d5a.zip +0 -0
- package/.yarn/cache/eslint-visitor-keys-npm-4.2.0-a591434af3-9651b3356b.zip +0 -0
- package/.yarn/cache/espree-npm-10.3.0-e5b10052f5-3412d44d42.zip +0 -0
- package/.yarn/cache/expect-npm-30.0.0-c4f29cc906-2ad7d2a3cd.zip +0 -0
- package/.yarn/cache/fast-uri-npm-3.0.6-140ab22003-43c87cd039.zip +0 -0
- package/.yarn/cache/get-intrinsic-npm-1.3.0-35558f27b6-6e9dd920ff.zip +0 -0
- package/.yarn/cache/globals-npm-11.12.0-1fa7f41a6c-9f054fa38f.zip +0 -0
- package/.yarn/cache/htmlparser2-npm-9.1.0-5ef8394060-6352fa2a54.zip +0 -0
- package/.yarn/cache/http-cache-semantics-npm-4.1.1-1120131375-362d5ed66b.zip +0 -0
- package/.yarn/cache/ignore-npm-7.0.4-e6d7361b35-01ee59df2f.zip +0 -0
- package/.yarn/cache/index-to-position-npm-1.1.0-3704651970-16703893c7.zip +0 -0
- package/.yarn/cache/ip-address-npm-9.0.5-9fa024d42a-1ed81e0672.zip +0 -0
- package/.yarn/cache/is-arrayish-npm-0.3.2-f856180f79-81a78d518e.zip +0 -0
- package/.yarn/cache/is-generator-function-npm-1.1.0-e96e2ba973-5906ff51a8.zip +0 -0
- package/.yarn/cache/is-npm-npm-6.0.0-d8d9039032-fafe1ddc77.zip +0 -0
- package/.yarn/cache/istanbul-reports-npm-3.1.7-356486c0f4-f1faaa4684.zip +0 -0
- package/.yarn/cache/jest-diff-npm-30.0.0-3d7984567d-e17d8b5e66.zip +0 -0
- package/.yarn/cache/jest-matcher-utils-npm-30.0.0-df3cb56c58-3aa46a7d38.zip +0 -0
- package/.yarn/cache/jest-message-util-npm-30.0.0-3d72ccf669-d2585d8712.zip +0 -0
- package/.yarn/cache/jest-regex-util-npm-30.0.0-b67c1fc2bc-aa4449a029.zip +0 -0
- package/.yarn/cache/jest-util-npm-30.0.0-de14658072-55171f9010.zip +0 -0
- package/.yarn/cache/jsbn-npm-1.1.0-1da0181838-bebe7ae829.zip +0 -0
- package/.yarn/cache/jsesc-npm-3.0.2-3b3b74ec0d-8e5a7de6b7.zip +0 -0
- package/.yarn/cache/jsonfile-npm-6.1.0-20a4796cee-03014769e7.zip +0 -0
- package/.yarn/cache/jwa-npm-1.4.1-4f19d6572c-0bc002b71d.zip +0 -0
- package/.yarn/cache/jwa-npm-2.0.0-52a7c3f1ca-ab983f6685.zip +0 -0
- package/.yarn/cache/mime-db-npm-1.53.0-14fcdba2be-82409c568a.zip +0 -0
- package/.yarn/cache/minizlib-npm-3.0.1-4bdabd978f-622cb85f51.zip +0 -0
- package/.yarn/cache/mkdirp-npm-0.5.6-dcd5a6b97b-0c91b721bb.zip +0 -0
- package/.yarn/cache/mkdirp-npm-3.0.1-f94bfa769e-16fd79c286.zip +0 -0
- package/.yarn/cache/mock-json-schema-npm-1.1.1-0c1db4d1d1-3a45b85acd.zip +0 -0
- package/.yarn/cache/nanoid-npm-3.3.8-d22226208b-2d1766606c.zip +0 -0
- package/.yarn/cache/node-gyp-npm-11.1.0-bd7044e197-3314ebfeb9.zip +0 -0
- package/.yarn/cache/node-releases-npm-2.0.19-b123ed6240-c2b33b4f0c.zip +0 -0
- package/.yarn/cache/normalize-url-npm-8.0.1-c87adbf3f1-ae39203758.zip +0 -0
- package/.yarn/cache/object.entries-npm-1.1.8-386f7451b8-2301918fbd.zip +0 -0
- package/.yarn/cache/openapi-typescript-npm-7.8.0-7faf1e0691-9f0b55a91f.zip +0 -0
- package/.yarn/cache/parse5-npm-7.2.1-c48f333f28-fd1a8ad154.zip +0 -0
- package/.yarn/cache/pirates-npm-4.0.6-a8ec571a43-d02dda76f4.zip +0 -0
- package/.yarn/cache/portfinder-npm-1.0.32-20cc84ebcf-842058052f.zip +0 -0
- package/.yarn/cache/pretty-format-npm-30.0.0-d8f817d24c-3a02da797b.zip +0 -0
- package/.yarn/cache/protobufjs-npm-7.4.0-12c56a3adc-4084235066.zip +0 -0
- package/.yarn/cache/pupa-npm-3.1.0-8d0c9815fb-32784254b7.zip +0 -0
- package/.yarn/cache/regenerate-unicode-properties-npm-10.2.0-3d662e6e17-9150eae6fe.zip +0 -0
- package/.yarn/cache/regexpu-core-npm-6.2.0-56e98c3a61-4d054ffcd9.zip +0 -0
- package/.yarn/cache/regjsparser-npm-0.12.0-9d000fca30-c2d6506b33.zip +0 -0
- package/.yarn/cache/rimraf-npm-5.0.10-d0c6647697-f3b8ce81ee.zip +0 -0
- package/.yarn/cache/semver-npm-7.7.1-4572475307-4cfa1eb91e.zip +0 -0
- package/.yarn/cache/simple-swizzle-npm-0.2.2-8dee37fad1-c6dffff17a.zip +0 -0
- package/.yarn/cache/spdx-license-ids-npm-3.0.21-12f9261e85-17a033b4c3.zip +0 -0
- package/.yarn/cache/sprintf-js-npm-1.1.3-b99efd75b2-e7587128c4.zip +0 -0
- package/.yarn/cache/strip-ansi-npm-7.1.0-7453b80b79-475f53e9c4.zip +0 -0
- package/.yarn/cache/strnum-npm-1.1.1-67836fb7cf-5542ef16fd.zip +0 -0
- package/.yarn/cache/supports-color-npm-10.1.0-48517f80a7-28d191c4ad.zip +0 -0
- package/.yarn/cache/tar-npm-7.4.3-1dbbd1ffc3-12a2a4fc6d.zip +0 -0
- package/.yarn/cache/tmp-npm-0.2.3-ac2a701365-7b13696787.zip +0 -0
- package/.yarn/cache/type-fest-npm-4.40.0-18c72d1d94-dbca20979d.zip +0 -0
- package/.yarn/cache/undici-npm-6.21.3-28d9334837-b6b8f4a90e.zip +0 -0
- package/.yarn/cache/undici-types-npm-6.20.0-bd21e669af-583ac7bbf4.zip +0 -0
- package/.yarn/cache/unicode-match-property-value-ecmascript-npm-2.2.0-011b10a684-9fd53c657a.zip +0 -0
- package/.yarn/cache/unicode-property-aliases-ecmascript-npm-2.1.0-46779595f4-2435244318.zip +0 -0
- package/.yarn/cache/update-browserslist-db-npm-1.1.2-59b122fef6-e7bf8221df.zip +0 -0
- package/.yarn/cache/validator-npm-13.15.0-b048a51909-cc4435e37a.zip +0 -0
- package/.yarn/cache/which-typed-array-npm-1.1.18-23d1112113-11eed801b2.zip +0 -0
- package/.yarn/cache/yaml-npm-2.7.0-bb348b356b-c8c314c62f.zip +0 -0
- package/.yarn/cache/zod-npm-3.24.2-ab80dc0969-604c62a8cf.zip +0 -0
|
@@ -100,7 +100,7 @@ class OutboundTransfersModel {
|
|
|
100
100
|
jwsSign: config.jwsSign,
|
|
101
101
|
jwsSignPutParties: config.jwsSignPutParties,
|
|
102
102
|
jwsSigningKey: config.jwsSigningKey,
|
|
103
|
-
|
|
103
|
+
oidc: config.oidc,
|
|
104
104
|
resourceVersions: config.resourceVersions,
|
|
105
105
|
apiType: config.apiType,
|
|
106
106
|
};
|
|
@@ -46,7 +46,7 @@ class ProxyModel {
|
|
|
46
46
|
* @param config.peerEndpoint {string}
|
|
47
47
|
* @param config.dfspId {string}
|
|
48
48
|
* @param config.tls {Object}
|
|
49
|
-
* @param config.
|
|
49
|
+
* @param config.oidc {Object}
|
|
50
50
|
*/
|
|
51
51
|
constructor(config) {
|
|
52
52
|
this._logger = config.logger;
|
|
@@ -60,7 +60,7 @@ class ProxyModel {
|
|
|
60
60
|
},
|
|
61
61
|
jwsSign: config.jwsSign,
|
|
62
62
|
jwsSigningKey: config.jwsSigningKey,
|
|
63
|
-
|
|
63
|
+
oidc: config.oidc
|
|
64
64
|
});
|
|
65
65
|
|
|
66
66
|
this._validateConfig(config.proxyConfig);
|
|
@@ -26,20 +26,20 @@
|
|
|
26
26
|
******/
|
|
27
27
|
|
|
28
28
|
const { randomBytes } = require('node:crypto');
|
|
29
|
-
const {
|
|
29
|
+
const { OIDCAuth } = require('@mojaloop/sdk-standard-components');
|
|
30
30
|
|
|
31
31
|
const createAuthClient = (conf, logger) => {
|
|
32
|
-
const {
|
|
32
|
+
const { oidc, outbound } = conf;
|
|
33
33
|
|
|
34
|
-
const auth = new
|
|
35
|
-
...
|
|
34
|
+
const auth = new OIDCAuth({
|
|
35
|
+
...oidc.auth,
|
|
36
36
|
logger,
|
|
37
|
-
tlsCreds:
|
|
37
|
+
tlsCreds: oidc.mTlsEnabled && outbound.tls.creds,
|
|
38
38
|
});
|
|
39
39
|
|
|
40
40
|
return Object.freeze({
|
|
41
41
|
auth,
|
|
42
|
-
|
|
42
|
+
retryOidcAuthFailureTimes: oidc.requestAuthFailureRetryTimes,
|
|
43
43
|
});
|
|
44
44
|
};
|
|
45
45
|
|
|
@@ -31,7 +31,7 @@ const assert = require('assert').strict;
|
|
|
31
31
|
const util = require('util');
|
|
32
32
|
const {
|
|
33
33
|
axios,
|
|
34
|
-
MojaloopRequests, Errors,
|
|
34
|
+
MojaloopRequests, Errors, OIDCAuth, Jws, Logger, common,
|
|
35
35
|
httpRequester,
|
|
36
36
|
requests: { PingRequests },
|
|
37
37
|
Ilp: { ILP_VERSIONS }
|
|
@@ -208,7 +208,7 @@ module.exports = {
|
|
|
208
208
|
signer: MockJwsSigner
|
|
209
209
|
},
|
|
210
210
|
Errors,
|
|
211
|
-
|
|
211
|
+
OIDCAuth,
|
|
212
212
|
Logger,
|
|
213
213
|
common,
|
|
214
214
|
};
|
|
@@ -113,7 +113,7 @@ CHECK_ILP=true
|
|
|
113
113
|
# set to true to enable test features such as request cacheing and retrieval endpoints
|
|
114
114
|
ENABLE_TEST_FEATURES=false
|
|
115
115
|
|
|
116
|
-
# set to true to mock
|
|
116
|
+
# set to true to mock OIDC oauth2 token endpoint
|
|
117
117
|
ENABLE_OAUTH_TOKEN_ENDPOINT=false
|
|
118
118
|
OAUTH_TOKEN_ENDPOINT_CLIENT_KEY=test-client-key
|
|
119
119
|
OAUTH_TOKEN_ENDPOINT_CLIENT_SECRET=test-client-secret
|
|
@@ -122,7 +122,7 @@ OAUTH_TOKEN_ENDPOINT_LISTEN_PORT=6000
|
|
|
122
122
|
# WSO2 Bearer Token specific to golden-fsp instance and environment
|
|
123
123
|
WSO2_BEARER_TOKEN=7718fa9b-be13-3fe7-87f0-a12cf1628168
|
|
124
124
|
|
|
125
|
-
# OAuth2 data used to obtain
|
|
125
|
+
# OAuth2 data used to obtain OIDC bearer token
|
|
126
126
|
OAUTH_TOKEN_ENDPOINT=
|
|
127
127
|
OAUTH_CLIENT_KEY=
|
|
128
128
|
OAUTH_CLIENT_SECRET=
|
|
@@ -117,7 +117,7 @@ CHECK_ILP=true
|
|
|
117
117
|
# set to true to enable test features such as request cacheing and retrieval endpoints
|
|
118
118
|
ENABLE_TEST_FEATURES=false
|
|
119
119
|
|
|
120
|
-
# set to true to mock
|
|
120
|
+
# set to true to mock OIDC oauth2 token endpoint
|
|
121
121
|
ENABLE_OAUTH_TOKEN_ENDPOINT=false
|
|
122
122
|
OAUTH_TOKEN_ENDPOINT_CLIENT_KEY=test-client-key
|
|
123
123
|
OAUTH_TOKEN_ENDPOINT_CLIENT_SECRET=test-client-secret
|
|
@@ -128,7 +128,7 @@ KYC_INFORMATION=TODO
|
|
|
128
128
|
# WSO2 Bearer Token specific to golden-fsp instance and environment
|
|
129
129
|
WSO2_BEARER_TOKEN=7718fa9b-be13-3fe7-87f0-a12cf1628168
|
|
130
130
|
|
|
131
|
-
# OAuth2 data used to obtain
|
|
131
|
+
# OAuth2 data used to obtain OIDC bearer token
|
|
132
132
|
OAUTH_TOKEN_ENDPOINT=
|
|
133
133
|
OAUTH_CLIENT_KEY=
|
|
134
134
|
OAUTH_CLIENT_SECRET=
|
|
@@ -17,7 +17,7 @@ const config = {
|
|
|
17
17
|
},
|
|
18
18
|
},
|
|
19
19
|
jwsSigningKey: "-----BEGIN RSA PRIVATE KEY-----\r\nMIIEpAIBAAKCAQEAxHDGxfi47sLeC2+FKulAKZpBGsQp/cL6d0wTake0QZv21OTGGpXz6cC5\r\nyRJliQCqsVLYAGD5WYuKxeN3nGzbGDPR1TwNLM78Z4cKTa0h2oOm4E8tb5xdrNjsXaK8ALYa\r\n+aWDcIHqg7UWzt74Vzphmx4eB6uAWYjFx2L5Fa+buiFdV4I//z6w7Od9bkbQ3XZblJC23V+O\r\nCh278s+eij9AgqttIlpcw/x8El/PMzOVC/lsdtepJAvqv28D/52regs5dBrpvaKWPB0YNkQG\r\nVaDhXEiTcNjjpnfc2ET5uIz6UDqepi0BcD8+hkJwv6g8gdfKnlNq/ZmJ8N81FSV4M99hhwID\r\nAQABAoIBAQCg50NZy5YnNATO1yT79hyxNwGW3BENI5Um/HB2wI78orS2w0Ela6hj0pIbCe+T\r\nHbGzF4mIHeaAm1UrLFvADEYV9/QrNkoQZubGIg2lfGfbZbTdzN0Jq8nrF6/cLrzR1FgaHqGg\r\nGTovcbhh8K74PADRHwU4ARlbvTVLUV13juT+un6EqcblcjOULFJ0yOaam9VNisXIEQ0VwK85\r\nEHWZyZxyW8IVSPEmiW8liytqZ3f3O489k1CY5de6+QNF6cOzA+ey1L1XaBdHTsKkR8CGneOY\r\n7HYJgzsUBzL8JbdSimqBT36oEW52NsSiVuOono/DYop252UVXHxiYZQWjdWvF29hAoGBAPaR\r\njnG/T+f3uqrVmbQWo7+den/ZYtrsVhYpModlTf1xamRZKbpRwj0ORb60agMbncPkADYoK9YY\r\nYcUd7GjyqaxY+x71pg3Mh5EYyE03w5kpZUHXmx77pzczh2q/OtWbTuWf7PRkkHX5QacPzeqb\r\nidK7n1ZgJv3jdk85RynEVBoRAoGBAMv0W3SPSrD8xIYFfddR3O8x+kvQRhjnqdFz8kdyi8Jj\r\nUj98MOUPlGxMBTDrz19AZZ+OELVrKRqiNmeqa6jRe3i6ykGOFvzULenzYG56BYpIUbWwTDXg\r\nDwFaUrCPZSDSRMhIQZzVtjzpaGWx2FzjMGMwUXMvCO0pkgNh7+vvJmoXAoGAD5se3Owy7oer\r\ndOyYEeHs80/QVQ85Ron22Og6nn829HedOES8c2KBXMPufieFHjU9QwzHRqY8QAzDA2rlb68M\r\nNjBblJYPsIflfLWI1/pTkvofwo8W7lsXNlM4mvUHkEWINNhucvl6ez0PfrdtXRADJSdi6mCj\r\nlyYycsk5S9d1S0ECgYEAt0/xw1nnMByAJlVZPeZ+RR8OcIXJ+yh9IZys7jquExFiI11kNP1D\r\n0fKh186anGos7LOroOOoFiAl9hbenOVrrJ92mmUzlBrBCb2Ntr5FrHxDtKG4XdP8qKKeH8NC\r\nibVzzO/kySnsmeLPyleGuDYaj4wmKPjldQQgEJo+IjjYthECgYBWN72LH59cDySsLdwxygj8\r\neqcRAcrRTrNuyNgJQYLkZolxnSkA9M+zOsqr4mQQ2DbsE+v3fNwwlATkvJwhi1lqqT0n4M9x\r\nqxKEimfJcnKIY6vC+WUem7/GUdmR4MsLHOMJqHWsrn+5+AusVrFo1RHegfF8A90Av/8pt/4C\r\nDz4CGQ==\r\n-----END RSA PRIVATE KEY-----\r\n",
|
|
20
|
-
|
|
20
|
+
oidc: {
|
|
21
21
|
auth: {
|
|
22
22
|
staticToken: "7718fa9b-be13-3fe7-87f0-a12cf1628168",
|
|
23
23
|
tokenEndpoint: "https://localhost:443/token",
|
|
@@ -4,7 +4,7 @@ const http = require('http');
|
|
|
4
4
|
const https = require('https');
|
|
5
5
|
const yaml = require('js-yaml');
|
|
6
6
|
const supertest = require('supertest');
|
|
7
|
-
const {
|
|
7
|
+
const { OIDCAuth } = require('@mojaloop/sdk-standard-components');
|
|
8
8
|
|
|
9
9
|
const { logger } = require('~/lib/logger');
|
|
10
10
|
const { MetricsClient } = require('~/lib/metrics');
|
|
@@ -77,21 +77,21 @@ const createTestServers = async (config) => {
|
|
|
77
77
|
defConfig.requestProcessingTimeoutSeconds = 2;
|
|
78
78
|
const metricsClient = new MetricsClient();
|
|
79
79
|
metricsClient._prometheusRegister.clear();
|
|
80
|
-
const
|
|
81
|
-
auth: new
|
|
82
|
-
...defConfig.
|
|
80
|
+
const oidc = {
|
|
81
|
+
auth: new OIDCAuth({
|
|
82
|
+
...defConfig.oidc.auth,
|
|
83
83
|
logger,
|
|
84
84
|
tlsCreds: defConfig.outbound.tls.mutualTLS.enabled && defConfig.outbound.tls.creds,
|
|
85
85
|
}),
|
|
86
|
-
|
|
86
|
+
retryOidcAuthFailureTimes: defConfig.oidc.requestAuthFailureRetryTimes,
|
|
87
87
|
};
|
|
88
88
|
const mockSharedAgents = createMockSharedAgents();
|
|
89
89
|
|
|
90
|
-
const serverOutbound = new OutboundServer(defConfig, logger, cache, metricsClient,
|
|
90
|
+
const serverOutbound = new OutboundServer(defConfig, logger, cache, metricsClient, oidc, mockSharedAgents);
|
|
91
91
|
await serverOutbound.start();
|
|
92
92
|
const reqOutbound = supertest(serverOutbound._server);
|
|
93
93
|
|
|
94
|
-
const serverInbound = new InboundServer(defConfig, logger, cache,
|
|
94
|
+
const serverInbound = new InboundServer(defConfig, logger, cache, oidc, mockSharedAgents);
|
|
95
95
|
await serverInbound.start();
|
|
96
96
|
const reqInbound = supertest(serverInbound._server);
|
|
97
97
|
|
|
@@ -38,7 +38,7 @@ jest.mock('dotenv', () => ({
|
|
|
38
38
|
}));
|
|
39
39
|
|
|
40
40
|
jest.mock('@mojaloop/sdk-standard-components', () => ({
|
|
41
|
-
|
|
41
|
+
OIDCAuth: jest.fn(),
|
|
42
42
|
Logger: jest.requireActual('@mojaloop/sdk-standard-components').Logger,
|
|
43
43
|
}));
|
|
44
44
|
|
|
@@ -150,11 +150,11 @@ describe('config', () => {
|
|
|
150
150
|
});
|
|
151
151
|
});
|
|
152
152
|
|
|
153
|
-
it('should pass outbound tlsCreds as false to
|
|
153
|
+
it('should pass outbound tlsCreds as false to OIDCAuth ctor, if OUT_USE_CERT_FILES_FOR_AUTH is false', () => {
|
|
154
154
|
process.env.OAUTH_MUTUAL_TLS_ENABLED = 'false';
|
|
155
155
|
const config = require('~/config');
|
|
156
156
|
createAuthClient(config, {});
|
|
157
|
-
const { tlsCreds } = sdkSC.
|
|
157
|
+
const { tlsCreds } = sdkSC.OIDCAuth.mock.calls[0][0];
|
|
158
158
|
expect(tlsCreds).toBe(false);
|
|
159
159
|
});
|
|
160
160
|
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
/*****
|
|
2
|
+
License
|
|
3
|
+
--------------
|
|
4
|
+
Copyright © 2020-2025 Mojaloop Foundation
|
|
5
|
+
The Mojaloop files are made available by the Mojaloop Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
|
|
6
|
+
|
|
7
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
|
|
9
|
+
Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
|
|
10
|
+
|
|
11
|
+
Contributors
|
|
12
|
+
--------------
|
|
13
|
+
This is the official list of the Mojaloop project contributors for this file.
|
|
14
|
+
Names of the original copyright holders (individuals or organizations)
|
|
15
|
+
should be listed with a '*' in the first column. People who have
|
|
16
|
+
contributed from an organization can be listed under the organization
|
|
17
|
+
that actually holds the copyright for their contributions (see the
|
|
18
|
+
Mojaloop Foundation for an example). Those individuals should have
|
|
19
|
+
their names indented and be marked with a '-'. Email address can be added
|
|
20
|
+
optionally within square brackets <email>.
|
|
21
|
+
|
|
22
|
+
* Mojaloop Foundation
|
|
23
|
+
* Eugen Klymniuk <eugen.klymniuk@infitx.com>
|
|
24
|
+
|
|
25
|
+
--------------
|
|
26
|
+
******/
|
|
27
|
+
|
|
28
|
+
process.env.PEER_ENDPOINT = 'localhost:4000';
|
|
29
|
+
process.env.BACKEND_ENDPOINT = 'localhost:4000';
|
|
30
|
+
process.env.CACHE_URL = 'redis://localhost:6379';
|
|
31
|
+
process.env.MGMT_API_WS_URL = 'localhost';
|
|
32
|
+
process.env.SUPPORTED_CURRENCIES = 'XXX';
|
|
33
|
+
|
|
34
|
+
jest.mock('~/lib/cache');
|
|
35
|
+
jest.mock('~/ControlAgent');
|
|
36
|
+
|
|
37
|
+
const promClient = require('prom-client');
|
|
38
|
+
const ControlAgent = require('~/ControlAgent');
|
|
39
|
+
const { Server } = require('~/index');
|
|
40
|
+
const { logger } = require('~/lib/logger');
|
|
41
|
+
const testConfig = require('./data/defaultConfig.json');
|
|
42
|
+
|
|
43
|
+
const POLL_INTERVAL_MS = 60_000;
|
|
44
|
+
|
|
45
|
+
describe('Config Polling Tests -->', () => {
|
|
46
|
+
let server;
|
|
47
|
+
let mockConfig;
|
|
48
|
+
let mockControlAgent;
|
|
49
|
+
|
|
50
|
+
beforeEach(() => {
|
|
51
|
+
jest.clearAllMocks();
|
|
52
|
+
jest.useFakeTimers();
|
|
53
|
+
promClient.register.clear(); // to prevent "metric already been registered" error
|
|
54
|
+
|
|
55
|
+
mockConfig = {
|
|
56
|
+
...testConfig,
|
|
57
|
+
pm4mlEnabled: true,
|
|
58
|
+
control: {
|
|
59
|
+
mgmtAPIWsUrl: 'localhost',
|
|
60
|
+
mgmtAPIWsPort: 4005,
|
|
61
|
+
mgmtAPILatencyAssumption: 2000,
|
|
62
|
+
mgmtAPIPollIntervalMs: POLL_INTERVAL_MS,
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
// Mock WebSocket client
|
|
67
|
+
mockControlAgent = {
|
|
68
|
+
getUpdatedConfig: jest.fn().mockResolvedValue({}),
|
|
69
|
+
readyState: 1, // OPEN
|
|
70
|
+
on: jest.fn(),
|
|
71
|
+
once: jest.fn(),
|
|
72
|
+
send: jest.fn(),
|
|
73
|
+
receive: jest.fn(),
|
|
74
|
+
stop: jest.fn().mockResolvedValue(true),
|
|
75
|
+
removeAllListeners: jest.fn(),
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
ControlAgent.createConnectedControlAgentWs = jest.fn().mockResolvedValue(mockControlAgent);
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
afterEach(async () => {
|
|
82
|
+
await server?.stop();
|
|
83
|
+
jest.useRealTimers();
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
it('should not start polling when MANAGEMENT_API_POLL_INTERVAL_MS is not configured', async () => {
|
|
87
|
+
const config = {
|
|
88
|
+
...mockConfig,
|
|
89
|
+
control: {
|
|
90
|
+
...mockConfig.control,
|
|
91
|
+
mgmtAPIPollIntervalMs: undefined,
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
server = new Server(config, logger);
|
|
96
|
+
await server.start();
|
|
97
|
+
|
|
98
|
+
await jest.advanceTimersByTimeAsync(POLL_INTERVAL_MS * 2);
|
|
99
|
+
expect(mockControlAgent.getUpdatedConfig).not.toHaveBeenCalled();
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
it('should not start polling when PM4ML is disabled', async () => {
|
|
103
|
+
const config = {
|
|
104
|
+
...mockConfig,
|
|
105
|
+
pm4mlEnabled: false,
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
server = new Server(config, logger);
|
|
109
|
+
await server.start();
|
|
110
|
+
|
|
111
|
+
await jest.advanceTimersByTimeAsync(POLL_INTERVAL_MS * 2);
|
|
112
|
+
expect(ControlAgent.Client.Create).not.toHaveBeenCalled();
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
it('should poll at configured interval', async () => {
|
|
116
|
+
server = new Server(mockConfig, logger);
|
|
117
|
+
await server.start();
|
|
118
|
+
expect(mockControlAgent.getUpdatedConfig).toHaveBeenCalledTimes(0);
|
|
119
|
+
|
|
120
|
+
await jest.advanceTimersByTimeAsync(POLL_INTERVAL_MS);
|
|
121
|
+
expect(mockControlAgent.getUpdatedConfig).toHaveBeenCalledTimes(1); // First poll
|
|
122
|
+
|
|
123
|
+
await jest.advanceTimersByTimeAsync(POLL_INTERVAL_MS);
|
|
124
|
+
expect(mockControlAgent.getUpdatedConfig).toHaveBeenCalledTimes(2); // Second poll
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
it('should call restart with merged config from polling', async () => {
|
|
128
|
+
const newJwsKey = 'new-jws-signing-key';
|
|
129
|
+
mockControlAgent.getUpdatedConfig.mockResolvedValue({
|
|
130
|
+
jwsSigningKey: newJwsKey
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
server = new Server(mockConfig, logger);
|
|
134
|
+
const restartSpy = jest.spyOn(server, 'restart');
|
|
135
|
+
|
|
136
|
+
await server.start();
|
|
137
|
+
restartSpy.mockClear();
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
await jest.advanceTimersByTimeAsync(POLL_INTERVAL_MS);
|
|
141
|
+
|
|
142
|
+
expect(restartSpy).toHaveBeenCalledWith(
|
|
143
|
+
expect.objectContaining({
|
|
144
|
+
jwsSigningKey: newJwsKey
|
|
145
|
+
}),
|
|
146
|
+
{ source: 'polling' }
|
|
147
|
+
);
|
|
148
|
+
});
|
|
149
|
+
|
|
150
|
+
it('should handle unchanged config efficiently (no-op)', async () => {
|
|
151
|
+
mockControlAgent.getUpdatedConfig.mockResolvedValue({});
|
|
152
|
+
|
|
153
|
+
server = new Server(mockConfig, logger);
|
|
154
|
+
const restartSpy = jest.spyOn(server, 'restart');
|
|
155
|
+
await server.start();
|
|
156
|
+
|
|
157
|
+
await jest.advanceTimersByTimeAsync(POLL_INTERVAL_MS - 10);
|
|
158
|
+
expect(restartSpy).toHaveBeenCalledTimes(1); // ping timeout
|
|
159
|
+
|
|
160
|
+
await jest.advanceTimersByTimeAsync(10);
|
|
161
|
+
|
|
162
|
+
expect(restartSpy).toHaveBeenCalledTimes(2);
|
|
163
|
+
});
|
|
164
|
+
|
|
165
|
+
it('should prevent race condition when update already in progress', async () => {
|
|
166
|
+
mockControlAgent.getUpdatedConfig.mockResolvedValue({ jwsSigningKey: 'new-key' });
|
|
167
|
+
|
|
168
|
+
server = new Server(mockConfig, logger);
|
|
169
|
+
await server.start();
|
|
170
|
+
// Simulate restart in progress
|
|
171
|
+
server._configUpdateInProgress = true;
|
|
172
|
+
|
|
173
|
+
await jest.advanceTimersByTimeAsync(POLL_INTERVAL_MS * 2);
|
|
174
|
+
|
|
175
|
+
expect(mockControlAgent.getUpdatedConfig).not.toHaveBeenCalled();
|
|
176
|
+
});
|
|
177
|
+
|
|
178
|
+
it('should skip polling when WebSocket not OPEN', async () => {
|
|
179
|
+
server = new Server(mockConfig, logger);
|
|
180
|
+
await server.start();
|
|
181
|
+
|
|
182
|
+
mockControlAgent.getUpdatedConfig.mockClear();
|
|
183
|
+
mockControlAgent.readyState = 0; // CONNECTING
|
|
184
|
+
await jest.advanceTimersByTimeAsync(POLL_INTERVAL_MS);
|
|
185
|
+
|
|
186
|
+
expect(mockControlAgent.getUpdatedConfig).not.toHaveBeenCalled();
|
|
187
|
+
});
|
|
188
|
+
|
|
189
|
+
describe('Error handling Tests -->', () => {
|
|
190
|
+
it('should handle network errors gracefully during polling', async () => {
|
|
191
|
+
mockControlAgent.getUpdatedConfig.mockRejectedValue(new Error('Connection refused'));
|
|
192
|
+
|
|
193
|
+
server = new Server(mockConfig, logger);
|
|
194
|
+
await server.start();
|
|
195
|
+
await jest.advanceTimersByTimeAsync(POLL_INTERVAL_MS);
|
|
196
|
+
|
|
197
|
+
// Error logged but polling continues - next poll should work
|
|
198
|
+
mockControlAgent.getUpdatedConfig.mockResolvedValue({});
|
|
199
|
+
await jest.advanceTimersByTimeAsync(POLL_INTERVAL_MS);
|
|
200
|
+
|
|
201
|
+
expect(mockControlAgent.getUpdatedConfig).toHaveBeenCalledTimes(2); // failed + success calls
|
|
202
|
+
});
|
|
203
|
+
|
|
204
|
+
it('should handle missing config response', async () => {
|
|
205
|
+
mockControlAgent.getUpdatedConfig.mockResolvedValue(null);
|
|
206
|
+
|
|
207
|
+
server = new Server(mockConfig, logger);
|
|
208
|
+
await server.start();
|
|
209
|
+
await jest.advanceTimersByTimeAsync(POLL_INTERVAL_MS);
|
|
210
|
+
|
|
211
|
+
// Should not crash, just log warning
|
|
212
|
+
expect(server).toBeDefined();
|
|
213
|
+
});
|
|
214
|
+
});
|
|
215
|
+
|
|
216
|
+
it('should stop polling when server stops', async () => {
|
|
217
|
+
server = new Server(mockConfig, logger);
|
|
218
|
+
await server.start();
|
|
219
|
+
|
|
220
|
+
expect(server._configPollInterval).toBeDefined();
|
|
221
|
+
await server.stop();
|
|
222
|
+
expect(server._configPollInterval).toBeNull();
|
|
223
|
+
|
|
224
|
+
mockControlAgent.getUpdatedConfig.mockClear();
|
|
225
|
+
await jest.advanceTimersByTimeAsync(POLL_INTERVAL_MS * 2);
|
|
226
|
+
|
|
227
|
+
expect(mockControlAgent.getUpdatedConfig).not.toHaveBeenCalled();
|
|
228
|
+
});
|
|
229
|
+
});
|
|
@@ -37,13 +37,13 @@ const createInboundPingModel = (conf = configDto()) => new InboundPingModel(conf
|
|
|
37
37
|
const configDto = ({
|
|
38
38
|
dfspId = 'mojaloop-sdk',
|
|
39
39
|
jwsSign = false,
|
|
40
|
-
|
|
40
|
+
oidc = { auth: null }
|
|
41
41
|
} = {}) => ({
|
|
42
42
|
...defaultConfig,
|
|
43
43
|
logger,
|
|
44
44
|
dfspId,
|
|
45
45
|
jwsSign,
|
|
46
|
-
|
|
46
|
+
oidc
|
|
47
47
|
});
|
|
48
48
|
|
|
49
49
|
const postPingParamsDto = ({
|
|
@@ -69,7 +69,7 @@ const pingHeadersDto = ({
|
|
|
69
69
|
...(signature && { [Headers.FSPIOP.SIGNATURE]: signature })
|
|
70
70
|
});
|
|
71
71
|
|
|
72
|
-
describe
|
|
72
|
+
describe('InboundPingModel Tests -->', () => {
|
|
73
73
|
beforeEach(() => {
|
|
74
74
|
mockAxios.reset();
|
|
75
75
|
});
|
|
@@ -86,7 +86,7 @@ describe.skip('InboundPingModel Tests -->', () => {
|
|
|
86
86
|
const sourceFspId = 'fromDfsp';
|
|
87
87
|
const dfspId = 'theSDK';
|
|
88
88
|
mockAxios.onPut().reply((reqConfig) => {
|
|
89
|
-
expect(reqConfig.url).toBe(`/ping/${requestId}
|
|
89
|
+
expect(reqConfig.url).toBe(`/ping/${requestId}`);
|
|
90
90
|
expect(reqConfig.headers[Headers.FSPIOP.SOURCE]).toBe(dfspId);
|
|
91
91
|
expect(reqConfig.headers[Headers.FSPIOP.DESTINATION]).toBe(sourceFspId);
|
|
92
92
|
return [200];
|