{"_id":"@cap-js-community/sap-afc-sdk","_rev":"22-ff12dc28ee915bf6178f64a80bb73239","name":"@cap-js-community/sap-afc-sdk","dist-tags":{"latest":"1.1.0"},"versions":{"0.1.0":{"name":"@cap-js-community/sap-afc-sdk","version":"0.1.0","keywords":["AFC","CAP","CDS"],"author":{"name":"Oliver Klemenz","email":"oklemenz@gmail.com"},"license":"Apache-2.0","_id":"@cap-js-community/sap-afc-sdk@0.1.0","maintainers":[{"name":"rlindner81sap","email":"richard.lindner@sap.com"},{"name":"smax","email":"maximilian.gruenfelder@sap.com"},{"name":"oklemenz2","email":"oliver.klemenz@sap.com"}],"homepage":"https://cap.cloud.sap/","bugs":{"url":"https://github.com/cap-js-community/sap-afc-sdk/issues"},"bin":{"afc":"bin/afc.js"},"cds":{"server":{"index":true},"requires":{"afc":{"kind":"odata-v4","model":"srv/external/afc","[production]":{"credentials":{"destination":"SAP_AFC"}}},"auth":{"kind":"mocked-auth","users":{"zeus":{"roles":["internal-user","system-user"],"tenant":"t1"}}},"sap-afc-sdk":{"ui":{"link":true,"path":"","swagger":true,"launchpad":true,"scheduling.monitoring.job":true},"api":{"csp":true,"cors":true},"model":"@cap-js-community/sap-afc-sdk","[mock]":{"mockProcessing":{"max":30,"min":0,"status":{"failed":0.1,"completed":0.5,"completedWithError":0.2,"completedWithWarning":0.2},"default":"completed"}},"[test]":{"mockProcessing":false},"broker":false,"endpoints":{"server":null,"approuter":null},"[production]":{"broker":true},"mockProcessing":false},"SchedulingWebsocketService":{"outbox":{"kind":"persistent-outbox","maxAttempts":5,"transactionMode":"alwaysRollback","checkForNextChunk":true,"parallelEventProcessing":5}},"SchedulingProcessingService":{"outbox":{"kind":"persistent-outbox","maxAttempts":5,"checkForNextChunk":true,"parallelEventProcessing":5}}},"websocket":{"kind":"ws","[production]":{"adapter":{"impl":"redis","local":true}}},"eventQueue":{"periodicEvents":{"SchedulingJob/Sync":{"cron":"*/1 * * * *","impl":"./node_modules/@cap-js-community/sap-afc-sdk/srv/scheduling/periodic/SchedulingJobSync.js"}},"useAsCAPOutbox":true},"featureToggles":{"config":{"eventQueue/active":{"type":"boolean","fallbackValue":true},"eventQueue/instanceLoadLimit":{"type":"number","fallbackValue":100}}}},"dist":{"shasum":"5c4bc19abd564d03af8e60b9f4c4b296c3636119","tarball":"https://registry.npmjs.org/@cap-js-community/sap-afc-sdk/-/sap-afc-sdk-0.1.0.tgz","fileCount":85,"integrity":"sha512-17eJhTxYwIV7aIK9Fu2I2QQVYdgkFDjjcNN0A0Q2rCr+zckHj1fTCAMDdlqCEdT0l58/sI4DhENzH6WATYYGBA==","signatures":[{"sig":"MEQCIEWGw/+lmZ3gBXqYFsZGjR6wVmeEKYxKcg6HoScQOpPlAiBt/Fikp4IgtYChkrJnhxUgLpkG9hedm99rB8kf8J0ohw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":675451},"main":"index.js","sapux":["app/scheduling.monitoring.job"],"types":"index.d.ts","engines":{"node":">=22"},"gitHead":"27b7598c49e53d023d47ab1ca9920871b19008e4","scripts":{"lint":"npm run eslint && npm run prettier && npm run prettier:cds","test":"jest --silent","audit":"npm audit --only=prod","start":"cds-serve","watch":"cds watch","eslint":"eslint --fix .","lint:ci":"npm run eslint:ci && npm run prettier:ci","openapi":"npm run openapi:sspi && npm run lint","prettier":"prettier \"**/*.{js,json,md,yml,yaml}\" --write --log-level error","eslint:ci":"eslint .","prettier:ci":"prettier \"**/*.{js,json,md,yml,yaml}\" --check","test:update":"npm test -- -u","openapi:sspi":"cds compile srv/scheduling/provider-service --service SchedulingProviderService --to openapi -o openapi && node scripts/openapi","prettier:cds":"format-cds app db srv -f","upgrade-lock":"rm -rf package-lock.json node_modules && npm i","prepareRelease":"npm prune --production"},"_npmUser":{"name":"oklemenz2","email":"oliver.klemenz@sap.com"},"repository":{"url":"git+https://github.com/cap-js-community/sap-afc-sdk.git","type":"git"},"_npmVersion":"10.9.2","description":"SAP Advanced Financial Closing SDK for CDS","directories":{},"_nodeVersion":"22.14.0","dependencies":{"cors":"^2.8.5","helmet":"^8.0.0","verror":"^1.10.1","express":"^4.21.2","openurl":"^1.1.1","@sap/sbf":"^6.8.2","commander":"^13.1.0","prompt-sync":"^4.2.0","http-status-codes":"^2.3.0","swagger-ui-express":"^5.0.1","@cap-js-community/websocket":"^1.6.0","@cap-js-community/event-queue":"^1.9.0","@cap-js-community/feature-toggle-library":"^1.2.5"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.1","jest":"^29.7.0","eslint":"^9.20.1","globals":"^16.0.0","shelljs":"^0.8.5","@sap/cds":"^8.7.1","prettier":"^3.5.0","@sap/cds-dk":"^8.7.0","@sap/cds-lsp":"^8.5.1","@cap-js/sqlite":"^1.8.0","eslint-plugin-n":"^17.15.1","eslint-plugin-jest":"^28.11.0","eslint-config-prettier":"^10.0.2","@cap-js-community/sap-afc-sdk":"./"},"_npmOperationalInternal":{"tmp":"tmp/sap-afc-sdk_0.1.0_1740673257375_0.8631490360309972","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@cap-js-community/sap-afc-sdk","version":"0.2.0","keywords":["AFC","CAP","CDS"],"author":{"name":"Oliver Klemenz","email":"oliver.klemenz@sap.com"},"license":"Apache-2.0","_id":"@cap-js-community/sap-afc-sdk@0.2.0","maintainers":[{"name":"rlindner81sap","email":"richard.lindner@sap.com"},{"name":"smax","email":"maximilian.gruenfelder@sap.com"},{"name":"oklemenz2","email":"oliver.klemenz@sap.com"}],"homepage":"https://cap.cloud.sap/","bugs":{"url":"https://github.com/cap-js-community/sap-afc-sdk/issues"},"bin":{"afc":"bin/afc.js"},"cds":{"i18n":{"folders":["i18n","_i18n","/node_modules/@cap-js-community/sap-afc-sdk/srv/i18n","/node_modules/@cap-js-community/sap-afc-sdk/srv/scheduling/i18n"]},"server":{"cors":false,"index":true},"requires":{"afc":{"kind":"odata-v4","model":"srv/external/afc","[production]":{"credentials":{"destination":"SAP_AFC"}}},"auth":{"kind":"mocked-auth","users":{"zeus":{"roles":["internal-user","system-user"],"tenant":"t1"}}},"sap-afc-sdk":{"ui":{"link":true,"path":"","swagger":true,"launchpad":true,"scheduling.monitoring.job":true},"api":{"csp":true,"cors":{"origin":true}},"model":"@cap-js-community/sap-afc-sdk","[mock]":{"mockProcessing":{"max":10,"min":0,"status":{"failed":0.1,"completed":0.5,"completedWithError":0.2,"completedWithWarning":0.2},"default":"completed"}},"[test]":{"mockProcessing":false},"broker":false,"endpoints":{"server":null,"approuter":null},"[production]":{"broker":true},"mockProcessing":false},"SchedulingWebsocketService":{"outbox":{"kind":"persistent-outbox","events":{"jobStatusChanged":{"[test]":{"timeBucket":false},"timeBucket":"*/5 * * * * *"}},"maxAttempts":5,"transactionMode":"alwaysRollback","checkForNextChunk":true,"parallelEventProcessing":5}},"SchedulingProcessingService":{"outbox":{"kind":"persistent-outbox","events":{"syncJob":{"cron":"*/1 * * * *"}},"maxAttempts":5,"checkForNextChunk":true,"parallelEventProcessing":5}}},"websocket":{"kind":"ws","[production]":{"adapter":{"impl":"redis","local":true}}},"eventQueue":{"useAsCAPOutbox":true},"featureToggles":{"config":{"eventQueue/active":{"type":"boolean","fallbackValue":true},"eventQueue/instanceLoadLimit":{"type":"number","fallbackValue":100}}}},"dist":{"shasum":"3affeb3f4c8166a72306763cfaf4adcf4495884a","tarball":"https://registry.npmjs.org/@cap-js-community/sap-afc-sdk/-/sap-afc-sdk-0.2.0.tgz","fileCount":474,"integrity":"sha512-33LUmMPlBCZCL0GSRoGdRg6sgmz9Gs/4CYzQnixvtxdxr28jkGAX7gpTZg9Su9qxbIiRty0KjSx5KQjPSVAxxw==","signatures":[{"sig":"MEQCIFr0Ihk0oDHCUjAuHKCk+IWc/jcg4VVJ54FyIJFTopntAiAxIjmf81v8o+8M3PQJ+ogS9Shgx8QwXjbkAbbpaAKs1g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1062460},"main":"index.js","sapux":["app/scheduling.monitoring.job"],"types":"index.d.ts","engines":{"node":">=22"},"gitHead":"d24df94288d31fff16ac5d7951562b367a443c2e","scripts":{"lint":"npm run eslint && npm run prettier && npm run prettier:cds","test":"jest --silent","audit":"npm audit --only=prod","start":"cds-serve","watch":"cds watch","eslint":"eslint --fix .","lint:ci":"npm run eslint:ci && npm run prettier:ci","openapi":"npm run openapi:update && npm run lint","prettier":"prettier \"**/*.{js,json,md,yml,yaml}\" --write --log-level error","test:bin":"cd bin && jest --silent","eslint:ci":"eslint .","prettier:ci":"prettier \"**/*.{js,json,md,yml,yaml}\" --check","test:update":"npm test -- -u","prettier:cds":"format-cds app db srv -f","upgrade-lock":"rm -rf package-lock.json node_modules && npm i","openapi:check":"node scripts/openapi -c","openapi:update":"node scripts/openapi","prepareRelease":"npm prune --production","test:bin:update":"npm run test:bin -- -u"},"_npmUser":{"name":"oklemenz2","email":"oliver.klemenz@sap.com"},"repository":{"url":"git+https://github.com/cap-js-community/sap-afc-sdk.git","type":"git"},"_npmVersion":"10.9.2","description":"SAP Advanced Financial Closing SDK for CDS","directories":{},"_nodeVersion":"22.14.0","dependencies":{"cors":"^2.8.5","yaml":"^2.7.1","helmet":"^8.1.0","verror":"^1.10.1","express":"^4.21.2","openurl":"^1.1.1","@sap/sbf":"^6.9.2","commander":"^13.1.0","prompt-sync":"^4.2.0","http-status-codes":"^2.3.0","swagger-ui-express":"^5.0.1","@sap/cds-common-content":"^2.1.0","@cap-js-community/websocket":"^1.6.3","@cap-js-community/event-queue":"^1.10.0","@cap-js-community/feature-toggle-library":"^1.2.5"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.1","jest":"^29.7.0","eslint":"^9.24.0","globals":"^16.0.0","shelljs":"^0.9.2","@sap/cds":"^8.9.1","prettier":"^3.5.3","@sap/cds-dk":"^8.9.1","@sap/cds-lsp":"^8.9.1","@cap-js/sqlite":"^1.10.0","eslint-plugin-n":"^17.17.0","@cap-js/cds-test":"^0.3.0","eslint-plugin-jest":"^28.11.0","eslint-config-prettier":"^10.1.2","@cap-js-community/sap-afc-sdk":"./"},"_npmOperationalInternal":{"tmp":"tmp/sap-afc-sdk_0.2.0_1744288134868_0.5212623364292628","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@cap-js-community/sap-afc-sdk","version":"0.2.1","keywords":["AFC","CAP","CDS"],"author":{"name":"Oliver Klemenz","email":"oliver.klemenz@sap.com"},"license":"Apache-2.0","_id":"@cap-js-community/sap-afc-sdk@0.2.1","maintainers":[{"name":"rlindner81sap","email":"richard.lindner@sap.com"},{"name":"smax","email":"maximilian.gruenfelder@sap.com"},{"name":"oklemenz2","email":"oliver.klemenz@sap.com"}],"homepage":"https://cap.cloud.sap/","bugs":{"url":"https://github.com/cap-js-community/sap-afc-sdk/issues"},"bin":{"afc":"bin/afc.js"},"cds":{"i18n":{"folders":["i18n","_i18n","/node_modules/@cap-js-community/sap-afc-sdk/srv/i18n","/node_modules/@cap-js-community/sap-afc-sdk/srv/scheduling/i18n"]},"server":{"cors":false,"index":true},"requires":{"afc":{"kind":"odata-v4","model":"srv/external/afc","[production]":{"credentials":{"destination":"SAP_AFC"}}},"auth":{"kind":"mocked-auth","users":{"zeus":{"roles":["internal-user","system-user"],"tenant":"t1"}}},"sap-afc-sdk":{"ui":{"link":true,"path":"","swagger":true,"launchpad":true,"scheduling.monitoring.job":true},"api":{"csp":true,"cors":{"origin":true}},"model":"@cap-js-community/sap-afc-sdk","[mock]":{"mockProcessing":{"max":10,"min":0,"status":{"failed":0.1,"completed":0.5,"completedWithError":0.2,"completedWithWarning":0.2},"default":"completed"}},"[test]":{"mockProcessing":false},"broker":false,"endpoints":{"server":null,"approuter":null},"[production]":{"broker":true},"mockProcessing":false},"SchedulingWebsocketService":{"outbox":{"kind":"persistent-outbox","events":{"jobStatusChanged":{"[test]":{"timeBucket":false},"timeBucket":"*/5 * * * * *"}},"maxAttempts":5,"transactionMode":"alwaysRollback","checkForNextChunk":true,"parallelEventProcessing":5}},"SchedulingProcessingService":{"outbox":{"kind":"persistent-outbox","events":{"syncJob":{"cron":"*/1 * * * *"}},"maxAttempts":5,"checkForNextChunk":true,"parallelEventProcessing":5}}},"websocket":{"kind":"ws","[production]":{"adapter":{"impl":"redis","local":true}}},"eventQueue":{"useAsCAPOutbox":true},"featureToggles":{"config":{"eventQueue/active":{"type":"boolean","fallbackValue":true},"eventQueue/instanceLoadLimit":{"type":"number","fallbackValue":100}}}},"dist":{"shasum":"7e70baa3a0f19cdc26cb1b696a8f90cee93a369c","tarball":"https://registry.npmjs.org/@cap-js-community/sap-afc-sdk/-/sap-afc-sdk-0.2.1.tgz","fileCount":474,"integrity":"sha512-jruUkfyaewu39yTwDSbk81+iQ1px1mVIPaZwLG2VmQT6AtZd2EDsR3yjhYB1YyrVDT6yV7o+j6oSp+ig+UstXw==","signatures":[{"sig":"MEYCIQCzZJnb1Ylb1DweQ2X7NSaHg7hZfvw5RH532hvQw40smAIhALG2PBBjz0RdGmOZS1/kptzT8iUvZBdXIoiGt25xxv3B","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1062760},"main":"index.js","sapux":["app/scheduling.monitoring.job"],"types":"index.d.ts","engines":{"node":">=22"},"gitHead":"642f975a1a38539e7d5c3710cd13aa0854a5317e","scripts":{"lint":"npm run eslint && npm run prettier && npm run prettier:cds","test":"jest --silent","audit":"npm audit --only=prod","start":"cds-serve","watch":"cds watch","eslint":"eslint --fix .","lint:ci":"npm run eslint:ci && npm run prettier:ci","openapi":"npm run openapi:update && npm run lint","prettier":"prettier \"**/*.{js,json,md,yml,yaml}\" --write --log-level error","test:bin":"cd bin && jest --silent","eslint:ci":"eslint .","prettier:ci":"prettier \"**/*.{js,json,md,yml,yaml}\" --check","test:update":"npm test -- -u","prettier:cds":"format-cds app db srv -f","upgrade-lock":"rm -rf package-lock.json node_modules && npm i","openapi:check":"node scripts/openapi -c","openapi:update":"node scripts/openapi","prepareRelease":"npm prune --production","test:bin:update":"npm run test:bin -- -u"},"_npmUser":{"name":"oklemenz2","email":"oliver.klemenz@sap.com"},"repository":{"url":"git+https://github.com/cap-js-community/sap-afc-sdk.git","type":"git"},"_npmVersion":"10.9.2","description":"SAP Advanced Financial Closing SDK for CDS","directories":{},"_nodeVersion":"22.14.0","dependencies":{"cors":"^2.8.5","yaml":"^2.7.1","helmet":"^8.1.0","verror":"^1.10.1","express":"^4.21.2","openurl":"^1.1.1","@sap/sbf":"^6.9.2","commander":"^13.1.0","prompt-sync":"^4.2.0","http-status-codes":"^2.3.0","swagger-ui-express":"^5.0.1","@sap/cds-common-content":"^2.1.0","@cap-js-community/websocket":"^1.6.3","@cap-js-community/event-queue":"^1.10.0","@cap-js-community/feature-toggle-library":"^1.2.5"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.1","jest":"^29.7.0","eslint":"^9.24.0","globals":"^16.0.0","shelljs":"^0.9.2","@sap/cds":"^8.9.1","prettier":"^3.5.3","@sap/cds-dk":"^8.9.1","@sap/cds-lsp":"^8.9.1","@cap-js/sqlite":"^1.10.0","eslint-plugin-n":"^17.17.0","@cap-js/cds-test":"^0.3.0","eslint-plugin-jest":"^28.11.0","eslint-config-prettier":"^10.1.2","@cap-js-community/sap-afc-sdk":"./"},"_npmOperationalInternal":{"tmp":"tmp/sap-afc-sdk_0.2.1_1744300116618_0.5573278555494243","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@cap-js-community/sap-afc-sdk","version":"0.2.2","keywords":["AFC","CAP","CDS"],"author":{"name":"Oliver Klemenz","email":"oliver.klemenz@sap.com"},"license":"Apache-2.0","_id":"@cap-js-community/sap-afc-sdk@0.2.2","maintainers":[{"name":"rlindner81sap","email":"richard.lindner@sap.com"},{"name":"smax","email":"maximilian.gruenfelder@sap.com"},{"name":"oklemenz2","email":"oliver.klemenz@sap.com"}],"homepage":"https://cap.cloud.sap/","bugs":{"url":"https://github.com/cap-js-community/sap-afc-sdk/issues"},"bin":{"afc":"bin/afc.js"},"cds":{"i18n":{"folders":["i18n","_i18n","/node_modules/@cap-js-community/sap-afc-sdk/srv/i18n","/node_modules/@cap-js-community/sap-afc-sdk/srv/scheduling/i18n"]},"server":{"cors":false,"index":true},"requires":{"afc":{"kind":"odata-v4","model":"srv/external/afc","[production]":{"credentials":{"destination":"SAP_AFC"}}},"auth":{"kind":"mocked-auth","users":{"zeus":{"roles":["internal-user","system-user"],"tenant":"t1"}}},"sap-afc-sdk":{"ui":{"link":true,"path":"","swagger":true,"launchpad":true,"scheduling.monitoring.job":true},"api":{"csp":true,"cors":{"origin":true}},"model":"@cap-js-community/sap-afc-sdk","[mock]":{"mockProcessing":{"max":10,"min":0,"status":{"failed":0.1,"completed":0.5,"completedWithError":0.2,"completedWithWarning":0.2},"default":"completed"}},"[test]":{"mockProcessing":false},"broker":false,"endpoints":{"server":null,"approuter":null},"[production]":{"broker":true},"mockProcessing":false},"SchedulingWebsocketService":{"outbox":{"kind":"persistent-outbox","events":{"jobStatusChanged":{"[test]":{"timeBucket":false},"timeBucket":"*/5 * * * * *"}},"maxAttempts":5,"transactionMode":"alwaysRollback","checkForNextChunk":true,"parallelEventProcessing":5}},"SchedulingProcessingService":{"outbox":{"kind":"persistent-outbox","events":{"syncJob":{"cron":"*/1 * * * *"}},"maxAttempts":5,"checkForNextChunk":true,"parallelEventProcessing":5}}},"websocket":{"kind":"ws","[production]":{"adapter":{"impl":"redis","local":true}}},"eventQueue":{"useAsCAPOutbox":true},"featureToggles":{"config":{"eventQueue/active":{"type":"boolean","fallbackValue":true},"eventQueue/instanceLoadLimit":{"type":"number","fallbackValue":100}}}},"dist":{"shasum":"b4daeb835c64cbf28e1df8c527cb9837c6198586","tarball":"https://registry.npmjs.org/@cap-js-community/sap-afc-sdk/-/sap-afc-sdk-0.2.2.tgz","fileCount":474,"integrity":"sha512-h9lDXS6I6wSkjClKPFxZok+z53pQlCLva1gZDhTDqcde0gIejVSdAhj3DOAKSDKqzdgOV7TNCJZwI3sN68vHoA==","signatures":[{"sig":"MEUCIQC/D+hEcn+/AtBmlbKUPW+FIhMinlLNbKlnKmxZ+S+W0gIgBgKe6Csjt37XGGhBUtGXzQ3+SXX8vSOVxl52eBfS+oc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1062813},"main":"index.js","sapux":["app/scheduling.monitoring.job"],"types":"index.d.ts","engines":{"node":">=22"},"gitHead":"71d7585f557cc8b3fc1a35360ad7f43322883050","scripts":{"lint":"npm run eslint && npm run prettier && npm run prettier:cds","test":"jest --silent","audit":"npm audit --only=prod","start":"cds-serve","watch":"cds watch","eslint":"eslint --fix .","lint:ci":"npm run eslint:ci && npm run prettier:ci","openapi":"npm run openapi:update && npm run lint","prettier":"prettier \"**/*.{js,json,md,yml,yaml}\" --write --log-level error","test:bin":"cd bin && jest --silent","eslint:ci":"eslint .","prettier:ci":"prettier \"**/*.{js,json,md,yml,yaml}\" --check","test:update":"npm test -- -u","prettier:cds":"format-cds app db srv -f","upgrade-lock":"rm -rf package-lock.json node_modules && npm i","openapi:check":"node scripts/openapi -c","openapi:update":"node scripts/openapi","prepareRelease":"npm prune --production","test:bin:update":"npm run test:bin -- -u"},"_npmUser":{"name":"oklemenz2","email":"oliver.klemenz@sap.com"},"repository":{"url":"git+https://github.com/cap-js-community/sap-afc-sdk.git","type":"git"},"_npmVersion":"10.9.2","description":"SAP Advanced Financial Closing SDK for CDS","directories":{},"_nodeVersion":"22.14.0","dependencies":{"cors":"^2.8.5","yaml":"^2.7.1","helmet":"^8.1.0","verror":"^1.10.1","express":"^4.21.2","openurl":"^1.1.1","shelljs":"^0.9.2","@sap/sbf":"^6.9.2","commander":"^13.1.0","prompt-sync":"^4.2.0","http-status-codes":"^2.3.0","swagger-ui-express":"^5.0.1","@sap/cds-common-content":"^2.1.0","@cap-js-community/websocket":"^1.6.3","@cap-js-community/event-queue":"^1.10.0","@cap-js-community/feature-toggle-library":"^1.2.5"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.1","jest":"^29.7.0","eslint":"^9.24.0","globals":"^16.0.0","@sap/cds":"^8.9.1","prettier":"^3.5.3","@sap/cds-dk":"^8.9.1","@sap/cds-lsp":"^8.9.1","@cap-js/sqlite":"^1.10.0","eslint-plugin-n":"^17.17.0","@cap-js/cds-test":"^0.3.0","eslint-plugin-jest":"^28.11.0","eslint-config-prettier":"^10.1.2","@cap-js-community/sap-afc-sdk":"./"},"_npmOperationalInternal":{"tmp":"tmp/sap-afc-sdk_0.2.2_1744301024143_0.17401917588093396","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@cap-js-community/sap-afc-sdk","version":"0.2.3","keywords":["AFC","CAP","CDS"],"author":{"name":"Oliver Klemenz","email":"oliver.klemenz@sap.com"},"license":"Apache-2.0","_id":"@cap-js-community/sap-afc-sdk@0.2.3","maintainers":[{"name":"rlindner81sap","email":"richard.lindner@sap.com"},{"name":"smax","email":"maximilian.gruenfelder@sap.com"},{"name":"oklemenz2","email":"oliver.klemenz@sap.com"}],"homepage":"https://cap.cloud.sap/","bugs":{"url":"https://github.com/cap-js-community/sap-afc-sdk/issues"},"bin":{"afc":"bin/afc.js"},"cds":{"i18n":{"folders":["i18n","_i18n","/node_modules/@cap-js-community/sap-afc-sdk/srv/i18n","/node_modules/@cap-js-community/sap-afc-sdk/srv/scheduling/i18n"]},"server":{"cors":false,"index":true},"requires":{"afc":{"kind":"odata-v4","model":"srv/external/afc","[production]":{"credentials":{"destination":"SAP_AFC"}}},"auth":{"kind":"mocked-auth","users":{"zeus":{"roles":["internal-user","system-user"],"tenant":"t1"}}},"sap-afc-sdk":{"ui":{"link":true,"path":"","swagger":true,"launchpad":true,"scheduling.monitoring.job":true},"api":{"csp":true,"cors":{"origin":true}},"model":"@cap-js-community/sap-afc-sdk","[mock]":{"mockProcessing":{"max":10,"min":0,"status":{"failed":0.1,"completed":0.5,"completedWithError":0.2,"completedWithWarning":0.2},"default":"completed"}},"[test]":{"mockProcessing":false},"broker":false,"endpoints":{"server":null,"approuter":null},"[production]":{"broker":true},"mockProcessing":false},"SchedulingWebsocketService":{"outbox":{"kind":"persistent-outbox","events":{"jobStatusChanged":{"[test]":{"timeBucket":false},"timeBucket":"*/5 * * * * *"}},"maxAttempts":5,"transactionMode":"alwaysRollback","checkForNextChunk":true,"parallelEventProcessing":5}},"SchedulingProcessingService":{"outbox":{"kind":"persistent-outbox","events":{"syncJob":{"cron":"*/1 * * * *"}},"maxAttempts":5,"checkForNextChunk":true,"parallelEventProcessing":5}}},"websocket":{"kind":"ws","[production]":{"adapter":{"impl":"redis","local":true}}},"eventQueue":{"useAsCAPOutbox":true},"featureToggles":{"config":{"eventQueue/active":{"type":"boolean","fallbackValue":true},"eventQueue/instanceLoadLimit":{"type":"number","fallbackValue":100}}}},"dist":{"shasum":"9fa509dcbc8c7c86ce63951567f17ceb4254495c","tarball":"https://registry.npmjs.org/@cap-js-community/sap-afc-sdk/-/sap-afc-sdk-0.2.3.tgz","fileCount":474,"integrity":"sha512-JF+7FtOwOEtyiNNTDTUfr5u6odWZI0dzTYaSlvdh0wd6BzQaz/EnOCqg1hR+3qZ2i2wIW84CoiJyKmiF0y11PA==","signatures":[{"sig":"MEQCICLghbef25xV1ulfn2Lrk7P8LYupFBh8TcI6f78FQF4KAiBwsrbY5h13tW193HRcMGtIFQCxB28QBF2iT9xgJ6oDKA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1062992},"main":"index.js","sapux":["app/scheduling.monitoring.job"],"types":"index.d.ts","engines":{"node":">=22"},"gitHead":"af347ca8d03375cc5562019f1da3d8511602832f","scripts":{"lint":"npm run eslint && npm run prettier && npm run prettier:cds","test":"jest --silent","audit":"npm audit --only=prod","start":"cds-serve","watch":"cds watch","eslint":"eslint --fix .","lint:ci":"npm run eslint:ci && npm run prettier:ci","openapi":"npm run openapi:update && npm run lint","prettier":"prettier \"**/*.{js,json,md,yml,yaml}\" --write --log-level error","test:bin":"cd bin && jest --silent","eslint:ci":"eslint .","prettier:ci":"prettier \"**/*.{js,json,md,yml,yaml}\" --check","test:update":"npm test -- -u","prettier:cds":"format-cds app db srv -f","upgrade-lock":"rm -rf package-lock.json node_modules && npm i","openapi:check":"node scripts/openapi -c","openapi:update":"node scripts/openapi","prepareRelease":"npm prune --production","test:bin:update":"npm run test:bin -- -u"},"_npmUser":{"name":"oklemenz2","email":"oliver.klemenz@sap.com"},"repository":{"url":"git+https://github.com/cap-js-community/sap-afc-sdk.git","type":"git"},"_npmVersion":"10.9.2","description":"SAP Advanced Financial Closing SDK for CDS","directories":{},"_nodeVersion":"22.14.0","dependencies":{"cors":"^2.8.5","yaml":"^2.7.1","helmet":"^8.1.0","verror":"^1.10.1","express":"^4.21.2","openurl":"^1.1.1","shelljs":"^0.9.2","@sap/sbf":"^6.9.2","commander":"^13.1.0","prompt-sync":"^4.2.0","http-status-codes":"^2.3.0","swagger-ui-express":"^5.0.1","@sap/cds-common-content":"^2.1.0","@cap-js-community/websocket":"^1.6.3","@cap-js-community/event-queue":"^1.10.0","@cap-js-community/feature-toggle-library":"^1.2.5"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.1","jest":"^29.7.0","eslint":"^9.24.0","globals":"^16.0.0","@sap/cds":"^8.9.1","prettier":"^3.5.3","@sap/cds-dk":"^8.9.1","@sap/cds-lsp":"^8.9.1","@cap-js/sqlite":"^1.10.0","eslint-plugin-n":"^17.17.0","@cap-js/cds-test":"^0.3.0","eslint-plugin-jest":"^28.11.0","eslint-config-prettier":"^10.1.2","@cap-js-community/sap-afc-sdk":"./"},"_npmOperationalInternal":{"tmp":"tmp/sap-afc-sdk_0.2.3_1744630972864_0.808175448063776","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"@cap-js-community/sap-afc-sdk","version":"0.2.4","keywords":["AFC","CAP","CDS"],"author":{"name":"Oliver Klemenz","email":"oliver.klemenz@sap.com"},"license":"Apache-2.0","_id":"@cap-js-community/sap-afc-sdk@0.2.4","maintainers":[{"name":"rlindner81sap","email":"richard.lindner@sap.com"},{"name":"smax","email":"maximilian.gruenfelder@sap.com"},{"name":"oklemenz2","email":"oliver.klemenz@sap.com"}],"homepage":"https://cap.cloud.sap/","bugs":{"url":"https://github.com/cap-js-community/sap-afc-sdk/issues"},"bin":{"afc":"bin/afc.js"},"cds":{"i18n":{"folders":["i18n","_i18n","/node_modules/@cap-js-community/sap-afc-sdk/srv/i18n","/node_modules/@cap-js-community/sap-afc-sdk/srv/scheduling/i18n"]},"server":{"cors":false,"index":true},"requires":{"afc":{"kind":"odata-v4","model":"srv/external/afc","[production]":{"credentials":{"destination":"SAP_AFC"}}},"auth":{"kind":"mocked-auth","users":{"zeus":{"roles":["internal-user","system-user"],"tenant":"t1"}}},"sap-afc-sdk":{"ui":{"link":true,"path":"","swagger":true,"launchpad":true,"scheduling.monitoring.job":true},"api":{"csp":true,"cors":{"origin":true}},"model":"@cap-js-community/sap-afc-sdk","[mock]":{"mockProcessing":{"max":10,"min":0,"status":{"failed":0.1,"completed":0.5,"completedWithError":0.2,"completedWithWarning":0.2},"default":"completed"}},"[test]":{"mockProcessing":false},"broker":false,"endpoints":{"server":null,"approuter":null},"[production]":{"broker":true},"mockProcessing":false},"SchedulingWebsocketService":{"outbox":{"kind":"persistent-outbox","events":{"jobStatusChanged":{"[test]":{"timeBucket":false},"timeBucket":"*/5 * * * * *"}},"maxAttempts":5,"transactionMode":"alwaysRollback","checkForNextChunk":true,"parallelEventProcessing":5}},"SchedulingProcessingService":{"outbox":{"kind":"persistent-outbox","events":{"syncJob":{"cron":"*/1 * * * *"}},"maxAttempts":5,"checkForNextChunk":true,"parallelEventProcessing":5}}},"websocket":{"kind":"ws","[production]":{"adapter":{"impl":"redis","local":true}}},"eventQueue":{"useAsCAPOutbox":true},"featureToggles":{"config":{"eventQueue/active":{"type":"boolean","fallbackValue":true},"eventQueue/instanceLoadLimit":{"type":"number","fallbackValue":100}}}},"dist":{"shasum":"f4205e25c3840323c2d10202ba129951184ad32a","tarball":"https://registry.npmjs.org/@cap-js-community/sap-afc-sdk/-/sap-afc-sdk-0.2.4.tgz","fileCount":474,"integrity":"sha512-o9GPHooX/f8eTZxVwWGr0zHcyhVH6kNUTfNGkdFuczXHKvqVZb28VPWzXbokwJ6OAQm41p+aoTGZg6NWa/D5OA==","signatures":[{"sig":"MEUCIHo4dTrnY/E23AWmkkw8wiWLLGCh9fCUTkQfA8UegKLrAiEAll3vY2uhjlt3gVDW4pvjKI9lfMIsCqXd4qbgoWof/U4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1062615},"main":"index.js","sapux":["app/scheduling.monitoring.job"],"types":"index.d.ts","engines":{"node":">=22"},"gitHead":"06784b3edf3fe5db5bb7912d56423c74093895e8","scripts":{"lint":"npm run eslint && npm run prettier && npm run prettier:cds","test":"jest --silent","audit":"npm audit --only=prod","start":"cds-serve","watch":"cds watch","eslint":"eslint --fix .","lint:ci":"npm run eslint:ci && npm run prettier:ci","openapi":"npm run openapi:update && npm run lint","prettier":"prettier \"**/*.{js,json,md,yml,yaml}\" --write --log-level error","test:bin":"cd bin && jest --silent","eslint:ci":"eslint .","prettier:ci":"prettier \"**/*.{js,json,md,yml,yaml}\" --check","test:update":"npm test -- -u","prettier:cds":"format-cds app db srv -f","upgrade-lock":"rm -rf package-lock.json node_modules && npm i","openapi:check":"node scripts/openapi -c","openapi:update":"node scripts/openapi","prepareRelease":"npm prune --production","test:bin:update":"npm run test:bin -- -u"},"_npmUser":{"name":"oklemenz2","email":"oliver.klemenz@sap.com"},"repository":{"url":"git+https://github.com/cap-js-community/sap-afc-sdk.git","type":"git"},"_npmVersion":"10.9.2","description":"SAP Advanced Financial Closing SDK for CDS","directories":{},"_nodeVersion":"22.14.0","dependencies":{"cors":"^2.8.5","yaml":"^2.7.1","helmet":"^8.1.0","verror":"^1.10.1","express":"^4.21.2","openurl":"^1.1.1","shelljs":"^0.9.2","@sap/sbf":"^6.9.2","commander":"^13.1.0","prompt-sync":"^4.2.0","http-status-codes":"^2.3.0","swagger-ui-express":"^5.0.1","@sap/cds-common-content":"^2.1.0","@cap-js-community/websocket":"^1.6.3","@cap-js-community/event-queue":"^1.10.0","@cap-js-community/feature-toggle-library":"^1.2.5"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.1","jest":"^29.7.0","eslint":"^9.24.0","globals":"^16.0.0","@sap/cds":"^8.9.2","prettier":"^3.5.3","@sap/cds-dk":"^8.9.1","@sap/cds-lsp":"^8.9.1","@cap-js/sqlite":"^1.10.0","eslint-plugin-n":"^17.17.0","@cap-js/cds-test":"^0.3.0","eslint-plugin-jest":"^28.11.0","eslint-config-prettier":"^10.1.2","@cap-js-community/sap-afc-sdk":"./"},"_npmOperationalInternal":{"tmp":"tmp/sap-afc-sdk_0.2.4_1744717854230_0.13963761143953102","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"@cap-js-community/sap-afc-sdk","version":"0.2.5","keywords":["AFC","CAP","CDS"],"author":{"name":"Oliver Klemenz","email":"oliver.klemenz@sap.com"},"license":"Apache-2.0","_id":"@cap-js-community/sap-afc-sdk@0.2.5","maintainers":[{"name":"rlindner81sap","email":"richard.lindner@sap.com"},{"name":"smax","email":"maximilian.gruenfelder@sap.com"},{"name":"oklemenz2","email":"oliver.klemenz@sap.com"}],"homepage":"https://cap.cloud.sap/","bugs":{"url":"https://github.com/cap-js-community/sap-afc-sdk/issues"},"bin":{"afc":"bin/afc.js"},"cds":{"i18n":{"folders":["i18n","_i18n","/node_modules/@cap-js-community/sap-afc-sdk/srv/i18n","/node_modules/@cap-js-community/sap-afc-sdk/srv/scheduling/i18n"]},"server":{"cors":false,"index":true},"requires":{"afc":{"kind":"odata-v4","model":"srv/external/afc","[production]":{"credentials":{"destination":"SAP_AFC"}}},"auth":{"kind":"mocked-auth","users":{"zeus":{"roles":["internal-user","system-user"],"tenant":"t1"}}},"sap-afc-sdk":{"ui":{"link":true,"path":"","swagger":true,"launchpad":true,"scheduling.monitoring.job":true},"api":{"csp":true,"cors":{"origin":true}},"model":"@cap-js-community/sap-afc-sdk","[mock]":{"mockProcessing":{"max":10,"min":0,"status":{"failed":0.1,"completed":0.5,"completedWithError":0.2,"completedWithWarning":0.2},"default":"completed"}},"[test]":{"mockProcessing":false},"broker":false,"endpoints":{"server":null,"approuter":null},"[production]":{"broker":true},"mockProcessing":false},"SchedulingWebsocketService":{"outbox":{"kind":"persistent-outbox","events":{"jobStatusChanged":{"[test]":{"timeBucket":false},"timeBucket":"*/5 * * * * *"}},"maxAttempts":5,"transactionMode":"alwaysRollback","checkForNextChunk":true,"parallelEventProcessing":5}},"SchedulingProcessingService":{"outbox":{"kind":"persistent-outbox","events":{"syncJob":{"cron":"*/1 * * * *"}},"maxAttempts":5,"checkForNextChunk":true,"parallelEventProcessing":5}}},"websocket":{"kind":"ws","[production]":{"adapter":{"impl":"redis","local":true}}},"eventQueue":{"useAsCAPOutbox":true},"featureToggles":{"config":{"eventQueue/active":{"type":"boolean","fallbackValue":true},"eventQueue/instanceLoadLimit":{"type":"number","fallbackValue":100}}}},"dist":{"shasum":"1de3cbc8761ab675e81d165edb2eb4917c444eb6","tarball":"https://registry.npmjs.org/@cap-js-community/sap-afc-sdk/-/sap-afc-sdk-0.2.5.tgz","fileCount":474,"integrity":"sha512-/qOqjg4cLPLLtWz0hOD8wFlq47FGs4UjasLdjSmZc07kLuVhl6j8ObaiVLFvQPj1eHnS+BIQir8ocKXVghUodw==","signatures":[{"sig":"MEYCIQDnNgNoaj/JkgsnLLhPdJ1Z8tpor1FM+6NQDh3wrorX5QIhAI5p79v3v8lrxCRYpYNi4K5YhGZESZJfhnzZYsdTg8rL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1062683},"main":"index.js","sapux":["app/scheduling.monitoring.job"],"types":"index.d.ts","engines":{"node":">=22"},"gitHead":"6db1d62e5ab999de92ff7b85958618f41f7a3219","scripts":{"lint":"npm run eslint && npm run prettier && npm run prettier:cds","test":"jest --silent","audit":"npm audit --only=prod","start":"cds-serve","watch":"cds watch","eslint":"eslint --fix .","lint:ci":"npm run eslint:ci && npm run prettier:ci","openapi":"npm run openapi:update && npm run lint","prettier":"prettier \"**/*.{js,json,md,yml,yaml}\" --write --log-level error","test:bin":"cd bin && jest --silent","eslint:ci":"eslint .","prettier:ci":"prettier \"**/*.{js,json,md,yml,yaml}\" --check","test:update":"npm test -- -u","prettier:cds":"format-cds app db srv -f","upgrade-lock":"rm -rf package-lock.json node_modules && npm i","openapi:check":"node scripts/openapi -c","openapi:update":"node scripts/openapi","prepareRelease":"npm prune --production","test:bin:update":"npm run test:bin -- -u"},"_npmUser":{"name":"oklemenz2","email":"oliver.klemenz@sap.com"},"repository":{"url":"git+https://github.com/cap-js-community/sap-afc-sdk.git","type":"git"},"_npmVersion":"10.9.2","description":"SAP Advanced Financial Closing SDK for CDS","directories":{},"_nodeVersion":"22.14.0","dependencies":{"cors":"^2.8.5","yaml":"^2.7.1","helmet":"^8.1.0","verror":"^1.10.1","express":"^4.21.2","openurl":"^1.1.1","shelljs":"^0.9.2","@sap/sbf":"^6.9.2","commander":"^13.1.0","prompt-sync":"^4.2.0","http-status-codes":"^2.3.0","swagger-ui-express":"^5.0.1","@sap/cds-common-content":"^2.1.0","@cap-js-community/websocket":"^1.6.3","@cap-js-community/event-queue":"^1.10.0","@cap-js-community/feature-toggle-library":"^1.2.5"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.1","jest":"^29.7.0","eslint":"^9.24.0","globals":"^16.0.0","@sap/cds":"^8.9.2","prettier":"^3.5.3","@sap/cds-dk":"^8.9.1","@sap/cds-lsp":"^8.9.1","@cap-js/sqlite":"^1.10.0","eslint-plugin-n":"^17.17.0","@cap-js/cds-test":"^0.3.0","eslint-plugin-jest":"^28.11.0","eslint-config-prettier":"^10.1.2","@cap-js-community/sap-afc-sdk":"./"},"_npmOperationalInternal":{"tmp":"tmp/sap-afc-sdk_0.2.5_1744726027730_0.7492708690740819","host":"s3://npm-registry-packages-npm-production"}},"0.2.6":{"name":"@cap-js-community/sap-afc-sdk","version":"0.2.6","keywords":["AFC","CAP","CDS"],"author":{"name":"Oliver Klemenz","email":"oliver.klemenz@sap.com"},"license":"Apache-2.0","_id":"@cap-js-community/sap-afc-sdk@0.2.6","maintainers":[{"name":"rlindner81sap","email":"richard.lindner@sap.com"},{"name":"smax","email":"maximilian.gruenfelder@sap.com"},{"name":"oklemenz2","email":"oliver.klemenz@sap.com"}],"homepage":"https://cap.cloud.sap/","bugs":{"url":"https://github.com/cap-js-community/sap-afc-sdk/issues"},"bin":{"afc":"bin/afc.js"},"cds":{"i18n":{"folders":["i18n","_i18n","/node_modules/@cap-js-community/sap-afc-sdk/srv/i18n","/node_modules/@cap-js-community/sap-afc-sdk/srv/scheduling/i18n"]},"server":{"cors":false,"index":true},"requires":{"afc":{"kind":"odata-v4","model":"srv/external/afc","[production]":{"credentials":{"destination":"SAP_AFC"}}},"auth":{"kind":"mocked-auth","users":{"zeus":{"roles":["internal-user","system-user"],"tenant":"t1"}}},"sap-afc-sdk":{"ui":{"link":true,"path":"","swagger":true,"launchpad":true,"scheduling.monitoring.job":true},"api":{"csp":true,"cors":{"origin":true}},"model":"@cap-js-community/sap-afc-sdk","[mock]":{"mockProcessing":{"max":10,"min":0,"status":{"failed":0.1,"completed":0.5,"completedWithError":0.2,"completedWithWarning":0.2},"default":"completed"}},"[test]":{"mockProcessing":false},"broker":false,"endpoints":{"server":null,"approuter":null},"[production]":{"broker":true},"mockProcessing":false},"SchedulingWebsocketService":{"outbox":{"kind":"persistent-outbox","events":{"jobStatusChanged":{"[test]":{"timeBucket":false},"timeBucket":"*/5 * * * * *"}},"maxAttempts":5,"transactionMode":"alwaysRollback","checkForNextChunk":true,"parallelEventProcessing":5}},"SchedulingProcessingService":{"outbox":{"kind":"persistent-outbox","events":{"syncJob":{"cron":"*/1 * * * *"}},"maxAttempts":5,"checkForNextChunk":true,"parallelEventProcessing":5}}},"websocket":{"kind":"ws","[production]":{"adapter":{"impl":"redis","local":true}}},"eventQueue":{"useAsCAPOutbox":true},"featureToggles":{"config":{"eventQueue/active":{"type":"boolean","fallbackValue":true},"eventQueue/instanceLoadLimit":{"type":"number","fallbackValue":100}}}},"dist":{"shasum":"f4a2bec4c99de291b84e6691334cd8416b1d2dc9","tarball":"https://registry.npmjs.org/@cap-js-community/sap-afc-sdk/-/sap-afc-sdk-0.2.6.tgz","fileCount":510,"integrity":"sha512-MNsOg0nPB+5Qmlvm8Rwtb7+N3Zl3CreltRl8C7g+BU7+sbCaNEuuIZtFtPhbs+EL6BoJZL/wLlHXCY4V370VBg==","signatures":[{"sig":"MEQCIFGB8qbSr/ON7emRnUr5Zho8IXZjybd+FXzZwqOLm2+GAiBaxBMg3v2O811SLLCelcMZaEIEKh3h+7CsHb51CUKw0Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1077482},"main":"index.js","sapux":["app/scheduling.monitoring.job"],"types":"index.d.ts","engines":{"node":">=22"},"gitHead":"da3a726df318b80d97c6294d89e8fce8b6d2d7bf","scripts":{"lint":"npm run eslint && npm run prettier && npm run prettier:cds","test":"jest --silent","audit":"npm audit --only=prod","start":"cds-serve","watch":"cds watch","eslint":"eslint --fix .","lint:ci":"npm run eslint:ci && npm run prettier:ci","openapi":"npm run openapi:update && npm run lint","prettier":"prettier \"**/*.{js,json,md,yml,yaml}\" --write --log-level error","test:bin":"cd bin && jest --silent","eslint:ci":"eslint .","i18n:pull":"cd scripts && ./i18n-pull.sh","i18n:push":"cd scripts && ./i18n-push.sh","prettier:ci":"prettier \"**/*.{js,json,md,yml,yaml}\" --check","test:update":"npm test -- -u","prettier:cds":"format-cds app db srv -f","upgrade-lock":"rm -rf package-lock.json node_modules && npm i","openapi:check":"node scripts/openapi -c","openapi:update":"node scripts/openapi","prepareRelease":"npm prune --production","test:bin:update":"npm run test:bin -- -u"},"_npmUser":{"name":"oklemenz2","email":"oliver.klemenz@sap.com"},"repository":{"url":"git+https://github.com/cap-js-community/sap-afc-sdk.git","type":"git"},"_npmVersion":"10.9.2","description":"SAP Advanced Financial Closing SDK for CDS","directories":{},"_nodeVersion":"22.15.0","dependencies":{"cors":"^2.8.5","yaml":"^2.7.1","helmet":"^8.1.0","verror":"^1.10.1","express":"^4.21.2","openurl":"^1.1.1","shelljs":"^0.9.2","@sap/sbf":"^6.9.2","commander":"^13.1.0","prompt-sync":"^4.2.0","http-status-codes":"^2.3.0","swagger-ui-express":"^5.0.1","@sap/cds-common-content":"^2.1.0","@cap-js-community/websocket":"^1.6.4","@cap-js-community/event-queue":"^1.10.3","@cap-js-community/feature-toggle-library":"^1.2.5"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.2","jest":"^29.7.0","eslint":"^9.26.0","globals":"^16.0.0","@sap/cds":"^8.9.2","prettier":"^3.5.3","@sap/cds-dk":"^8.9.3","@sap/cds-lsp":"^8.9.1","@cap-js/sqlite":"^1.11.0","eslint-plugin-n":"^17.17.0","@cap-js/cds-test":"^0.3.0","eslint-plugin-jest":"^28.11.0","eslint-config-prettier":"^10.1.2","@cap-js-community/sap-afc-sdk":"./"},"_npmOperationalInternal":{"tmp":"tmp/sap-afc-sdk_0.2.6_1746449895057_0.9822258656797689","host":"s3://npm-registry-packages-npm-production"}},"0.2.7":{"name":"@cap-js-community/sap-afc-sdk","version":"0.2.7","keywords":["AFC","CAP","CDS"],"author":{"name":"Oliver Klemenz","email":"oliver.klemenz@sap.com"},"license":"Apache-2.0","_id":"@cap-js-community/sap-afc-sdk@0.2.7","maintainers":[{"name":"rlindner81sap","email":"richard.lindner@sap.com"},{"name":"smax","email":"maximilian.gruenfelder@sap.com"},{"name":"oklemenz2","email":"oliver.klemenz@sap.com"}],"homepage":"https://cap.cloud.sap/","bugs":{"url":"https://github.com/cap-js-community/sap-afc-sdk/issues"},"bin":{"afc":"bin/afc.js"},"cds":{"i18n":{"folders":["i18n","_i18n","/node_modules/@cap-js-community/sap-afc-sdk/srv/i18n","/node_modules/@cap-js-community/sap-afc-sdk/srv/scheduling/i18n"]},"server":{"cors":false,"index":true},"requires":{"afc":{"kind":"odata-v4","model":"srv/external/afc","[production]":{"credentials":{"destination":"SAP_AFC"}}},"auth":{"kind":"mocked-auth","users":{"zeus":{"roles":["internal-user","system-user"],"tenant":"t1"}}},"sap-afc-sdk":{"ui":{"link":true,"path":"","swagger":true,"launchpad":true,"scheduling.monitoring.job":true},"api":{"csp":true,"cors":{"origin":true}},"model":"@cap-js-community/sap-afc-sdk","[mock]":{"mockProcessing":{"max":10,"min":0,"status":{"failed":0.1,"completed":0.5,"completedWithError":0.2,"completedWithWarning":0.2},"default":"completed"}},"[test]":{"mockProcessing":false},"broker":false,"endpoints":{"server":null,"approuter":null},"[production]":{"broker":true},"mockProcessing":false},"SchedulingWebsocketService":{"outbox":{"kind":"persistent-outbox","events":{"jobStatusChanged":{"[test]":{"timeBucket":false},"timeBucket":"*/5 * * * * *"}},"maxAttempts":5,"transactionMode":"alwaysRollback","checkForNextChunk":true,"parallelEventProcessing":5}},"SchedulingProcessingService":{"outbox":{"kind":"persistent-outbox","events":{"syncJob":{"cron":"*/1 * * * *"}},"maxAttempts":5,"checkForNextChunk":true,"parallelEventProcessing":5}}},"websocket":{"kind":"ws","[production]":{"adapter":{"impl":"redis","local":true}}},"eventQueue":{"useAsCAPOutbox":true},"featureToggles":{"config":{"eventQueue/active":{"type":"boolean","fallbackValue":true},"eventQueue/instanceLoadLimit":{"type":"number","fallbackValue":100}}}},"dist":{"shasum":"06078a071149ee8a64bea98d8eb6d13003d5bcd0","tarball":"https://registry.npmjs.org/@cap-js-community/sap-afc-sdk/-/sap-afc-sdk-0.2.7.tgz","fileCount":522,"integrity":"sha512-T36q+8e+vcL3R6bXo0YyjX1RkZGIhtB52o/G6s/82MyckBcfA+5/ufQec4fQkN2b15sALB8VwY0/N5Ow1fj1hw==","signatures":[{"sig":"MEYCIQDzp37caaa+XeALPS0xWe2PRzOGnrOOcTAX98CYO8pXAgIhAMMDSFHWsbHyg86hDQxCK19zxy/iDj8h6k60EHk/NZrg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1088102},"main":"index.js","sapux":["app/scheduling.monitoring.job"],"types":"index.d.ts","engines":{"node":">=22"},"gitHead":"3392c28f0f3769b8104ae8388cac90499b3e7d48","scripts":{"lint":"npm run eslint && npm run prettier && npm run prettier:cds","test":"jest --silent","audit":"npm audit --only=prod","start":"cds-serve","watch":"cds watch","eslint":"eslint --fix .","lint:ci":"npm run eslint:ci && npm run prettier:ci","openapi":"npm run openapi:update && npm run lint","prettier":"prettier \"**/*.{js,json,md,yml,yaml}\" --write --log-level error","test:bin":"cd bin && jest --silent","eslint:ci":"eslint .","i18n:pull":"cd scripts && ./i18n-pull.sh","i18n:push":"cd scripts && ./i18n-push.sh","prettier:ci":"prettier \"**/*.{js,json,md,yml,yaml}\" --check","test:update":"npm test -- -u","prettier:cds":"format-cds app db srv -f","upgrade-lock":"rm -rf package-lock.json node_modules && npm i","openapi:check":"node scripts/openapi -c","openapi:update":"node scripts/openapi","prepareRelease":"npm prune --production","test:bin:update":"npm run test:bin -- -u"},"_npmUser":{"name":"oklemenz2","email":"oliver.klemenz@sap.com"},"repository":{"url":"git+https://github.com/cap-js-community/sap-afc-sdk.git","type":"git"},"_npmVersion":"10.9.2","description":"SAP Advanced Financial Closing SDK for CDS","directories":{},"_nodeVersion":"22.15.0","dependencies":{"cors":"^2.8.5","yaml":"^2.7.1","helmet":"^8.1.0","verror":"^1.10.1","express":"^4.21.2","openurl":"^1.1.1","shelljs":"^0.10.0","@sap/sbf":"^6.9.2","commander":"^13.1.0","prompt-sync":"^4.2.0","http-status-codes":"^2.3.0","swagger-ui-express":"^5.0.1","@sap/cds-common-content":"^2.1.0","@cap-js-community/websocket":"^1.6.4","@cap-js-community/event-queue":"^1.10.3","@cap-js-community/feature-toggle-library":"^1.2.5"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.2","jest":"^29.7.0","eslint":"^9.26.0","globals":"^16.1.0","@sap/cds":"^8.9.3","prettier":"^3.5.3","@sap/cds-dk":"^8.9.3","@sap/cds-lsp":"^8.9.1","@cap-js/sqlite":"^1.11.0","eslint-plugin-n":"^17.18.0","@cap-js/cds-test":"^0.3.0","eslint-plugin-jest":"^28.11.0","eslint-config-prettier":"^10.1.5","@cap-js-community/sap-afc-sdk":"./"},"_npmOperationalInternal":{"tmp":"tmp/sap-afc-sdk_0.2.7_1747144494213_0.4188072266145031","host":"s3://npm-registry-packages-npm-production"}},"0.2.8":{"name":"@cap-js-community/sap-afc-sdk","version":"0.2.8","keywords":["AFC","CAP","CDS"],"author":{"name":"Oliver Klemenz","email":"oliver.klemenz@sap.com"},"license":"Apache-2.0","_id":"@cap-js-community/sap-afc-sdk@0.2.8","maintainers":[{"name":"rlindner81sap","email":"richard.lindner@sap.com"},{"name":"smax","email":"maximilian.gruenfelder@sap.com"},{"name":"oklemenz2","email":"oliver.klemenz@sap.com"}],"homepage":"https://cap.cloud.sap/","bugs":{"url":"https://github.com/cap-js-community/sap-afc-sdk/issues"},"bin":{"afc":"bin/afc.js"},"cds":{"i18n":{"folders":["i18n","_i18n","/node_modules/@cap-js-community/sap-afc-sdk/srv/i18n","/node_modules/@cap-js-community/sap-afc-sdk/srv/scheduling/i18n"]},"server":{"cors":false,"index":true},"requires":{"afc":{"kind":"odata-v4","model":"srv/external/afc","[production]":{"credentials":{"destination":"SAP_AFC"}}},"auth":{"kind":"mocked-auth","users":{"zeus":{"roles":["internal-user","system-user"],"tenant":"t1"}}},"sap-afc-sdk":{"ui":{"link":true,"path":"","swagger":true,"launchpad":true,"scheduling.monitoring.job":true},"api":{"csp":true,"cors":{"origin":true}},"model":"@cap-js-community/sap-afc-sdk","[mock]":{"mockProcessing":{"max":10,"min":0,"status":{"failed":0.1,"completed":0.5,"completedWithError":0.2,"completedWithWarning":0.2},"default":"completed"}},"[test]":{"mockProcessing":false},"broker":false,"endpoints":{"server":null,"approuter":null},"[production]":{"broker":true},"mockProcessing":false},"SchedulingWebsocketService":{"outbox":{"kind":"persistent-outbox","events":{"jobStatusChanged":{"[test]":{"timeBucket":false},"timeBucket":"*/5 * * * * *"}},"maxAttempts":5,"transactionMode":"alwaysRollback","checkForNextChunk":true,"parallelEventProcessing":5}},"SchedulingProcessingService":{"outbox":{"kind":"persistent-outbox","events":{"syncJob":{"cron":"*/1 * * * *"}},"maxAttempts":5,"checkForNextChunk":true,"parallelEventProcessing":5}}},"websocket":{"kind":"ws","[production]":{"adapter":{"impl":"redis","local":true}}},"eventQueue":{"useAsCAPOutbox":true},"featureToggles":{"config":{"eventQueue/active":{"type":"boolean","fallbackValue":true},"eventQueue/instanceLoadLimit":{"type":"number","fallbackValue":100}}}},"dist":{"shasum":"05d60104e64589452e22a85d20f760723df74d60","tarball":"https://registry.npmjs.org/@cap-js-community/sap-afc-sdk/-/sap-afc-sdk-0.2.8.tgz","fileCount":522,"integrity":"sha512-pGLsm3j1Ja8J5lwq+CZJ3G+Sg0c1Tuhoh5fcdahzzWUFMCqUMJwgKqy3AYtdndc0WzM3FStzMWaWuha37sip8A==","signatures":[{"sig":"MEUCIQCcDdEaNAQ69gRNzTpFml5cxKvIlir10F2axxaS2Y8+tgIgcJ/AgV3p/aEX7putlVTfNLc8nDa49zdCho6EwdS4Olk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1088980},"main":"index.js","sapux":["app/scheduling.monitoring.job"],"types":"index.d.ts","engines":{"node":">=22"},"gitHead":"89e75a13f67c995fae76f48597786447487a6590","scripts":{"lint":"npm run eslint && npm run prettier && npm run prettier:cds","test":"jest --silent","audit":"npm audit --only=prod","start":"cds-serve","watch":"cds watch","eslint":"eslint --fix .","lint:ci":"npm run eslint:ci && npm run prettier:ci","openapi":"npm run openapi:update && npm run lint","prettier":"prettier \"**/*.{js,json,md,yml,yaml}\" --write --log-level error","test:bin":"cd bin && jest --silent","eslint:ci":"eslint .","i18n:pull":"cd scripts && ./i18n-pull.sh","i18n:push":"cd scripts && ./i18n-push.sh","prettier:ci":"prettier \"**/*.{js,json,md,yml,yaml}\" --check","test:update":"npm test -- -u","prettier:cds":"format-cds app db srv -f","upgrade-lock":"rm -rf package-lock.json node_modules && npm i","openapi:check":"node scripts/openapi -c","openapi:update":"node scripts/openapi","prepareRelease":"npm prune --production","test:bin:update":"npm run test:bin -- -u"},"_npmUser":{"name":"oklemenz2","email":"oliver.klemenz@sap.com"},"repository":{"url":"git+https://github.com/cap-js-community/sap-afc-sdk.git","type":"git"},"_npmVersion":"10.9.2","description":"SAP Advanced Financial Closing SDK for CDS","directories":{},"_nodeVersion":"22.15.0","dependencies":{"cors":"^2.8.5","yaml":"^2.7.1","helmet":"^8.1.0","verror":"^1.10.1","xml2js":"^0.6.2","express":"^4.21.2","openurl":"^1.1.1","shelljs":"^0.10.0","@sap/sbf":"^6.9.2","commander":"^14.0.0","prompt-sync":"^4.2.0","http-status-codes":"^2.3.0","swagger-ui-express":"^5.0.1","@sap/cds-common-content":"^2.1.0","@cap-js-community/websocket":"^1.6.4","@cap-js-community/event-queue":"^1.10.4","@cap-js-community/feature-toggle-library":"^1.2.5"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.2","jest":"^29.7.0","eslint":"^9.26.0","globals":"^16.1.0","@sap/cds":"^8.9.3","prettier":"^3.5.3","@sap/cds-dk":"^8.9.3","@sap/cds-lsp":"^8.9.1","@cap-js/sqlite":"^1.11.0","eslint-plugin-n":"^17.18.0","@cap-js/cds-test":"^0.3.0","eslint-plugin-jest":"^28.11.0","eslint-config-prettier":"^10.1.5","@cap-js-community/sap-afc-sdk":"./"},"_npmOperationalInternal":{"tmp":"tmp/sap-afc-sdk_0.2.8_1747813982784_0.611160355899766","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@cap-js-community/sap-afc-sdk","version":"0.3.0","keywords":["AFC","CAP","CDS"],"author":{"name":"Oliver Klemenz","email":"oliver.klemenz@sap.com"},"license":"Apache-2.0","_id":"@cap-js-community/sap-afc-sdk@0.3.0","maintainers":[{"name":"rlindner81sap","email":"richard.lindner@sap.com"},{"name":"smax","email":"maximilian.gruenfelder@sap.com"},{"name":"oklemenz2","email":"oliver.klemenz@sap.com"}],"homepage":"https://cap.cloud.sap/","bugs":{"url":"https://github.com/cap-js-community/sap-afc-sdk/issues"},"bin":{"afc":"bin/afc.js"},"cds":{"i18n":{"folders":["i18n","_i18n","/node_modules/@cap-js-community/sap-afc-sdk/srv/i18n","/node_modules/@cap-js-community/sap-afc-sdk/srv/scheduling/i18n"]},"server":{"cors":false,"index":true},"requires":{"afc":{"kind":"odata-v4","model":"srv/external/afc","[production]":{"credentials":{"destination":"SAP_AFC"}}},"auth":{"kind":"mocked-auth","users":{"zeus":{"roles":["internal-user","system-user"],"tenant":"t1"}}},"sap-afc-sdk":{"ui":{"link":true,"path":"","swagger":true,"launchpad":true,"scheduling.monitoring.job":true},"api":{"csp":false,"cors":{"origin":true}},"model":"@cap-js-community/sap-afc-sdk","[mock]":{"mockProcessing":{"max":10,"min":0,"status":{"failed":0.1,"completed":0.5,"completedWithError":0.2,"completedWithWarning":0.2},"default":"completed"}},"[test]":{"mockProcessing":false},"broker":false,"endpoints":{"server":null,"approuter":null},"[production]":{"broker":true},"mockProcessing":false},"SchedulingWebsocketService":{"outbox":{"kind":"persistent-outbox","events":{"jobStatusChanged":{"[test]":{"timeBucket":false},"timeBucket":"*/5 * * * * *"}},"maxAttempts":5,"transactionMode":"alwaysRollback","checkForNextChunk":true,"parallelEventProcessing":5}},"SchedulingProcessingService":{"outbox":{"kind":"persistent-outbox","events":{"syncJob":{"cron":"*/1 * * * *"}},"maxAttempts":5,"checkForNextChunk":true,"parallelEventProcessing":5}}},"websocket":{"kind":"ws","[production]":{"adapter":{"impl":"redis","local":true}}},"eventQueue":{"useAsCAPOutbox":true},"featureToggles":{"config":{"eventQueue/active":{"type":"boolean","fallbackValue":true},"eventQueue/instanceLoadLimit":{"type":"number","fallbackValue":100}}}},"dist":{"shasum":"95ed843ee5f4166597cfbb469c08582a94a34dec","tarball":"https://registry.npmjs.org/@cap-js-community/sap-afc-sdk/-/sap-afc-sdk-0.3.0.tgz","fileCount":528,"integrity":"sha512-hxqqPjaycivRHfp41DdgLm9SgQ4CJjGIcWMdM3lHnhyCPrPbXiGYY+ATdctDrd1ROzvubjcsBqqtxPwtFjAyXA==","signatures":[{"sig":"MEUCICSKR+ZxMUKt7l++TbhLTI5sWJD60jr9Pvgs3hIqTWnzAiEAn7wFQT39tcbSzZXnwcPbC88ftUo/2lhokRzmrExWB5c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1677316},"main":"index.js","sapux":["app/scheduling.monitoring.job"],"types":"index.d.ts","engines":{"node":">=22"},"gitHead":"43e339ae3f558b0fe0477d25527951168aecd67a","scripts":{"all":"npm run upgrade-lock && npm run i18n:pull && npm run lint && npm run openapi && npm test && npm run java:update && npm run test:java && npm run test:bin","lint":"npm run eslint && npm run prettier && npm run prettier:cds","test":"jest --silent","audit":"npm audit --only=prod","start":"cds-serve","watch":"cds watch","eslint":"eslint --fix .","lint:ci":"npm run eslint:ci && npm run prettier:ci","openapi":"npm run openapi:update && npm run lint","prettier":"prettier \"**/*.{js,json,java,md,yml,yaml}\" --write --log-level error","test:bin":"cd bin && jest --silent","eslint:ci":"eslint .","i18n:pull":"cd scripts && ./i18n-pull.sh","i18n:push":"cd scripts && ./i18n-push.sh","test:java":"cd java/project && npm test","java:check":"npm run test:java && node scripts/java-plugin -c","java:update":"npm run test:java && node scripts/java-plugin","prettier:ci":"prettier \"**/*.{js,json,java,md,yml,yaml}\" --check","test:update":"npm test -- -u","prettier:cds":"format-cds app db srv -f","upgrade-lock":"rm -rf package-lock.json node_modules && npm i","openapi:check":"node scripts/openapi -c","openapi:update":"node scripts/openapi","prepareRelease":"npm prune --production","test:bin:update":"npm run test:bin -- -u"},"_npmUser":{"name":"oklemenz2","email":"oliver.klemenz@sap.com"},"repository":{"url":"git+https://github.com/cap-js-community/sap-afc-sdk.git","type":"git"},"_npmVersion":"10.9.2","description":"SAP Advanced Financial Closing SDK for CDS","directories":{},"_nodeVersion":"22.15.0","dependencies":{"cors":"^2.8.5","yaml":"^2.8.0","helmet":"^8.1.0","verror":"^1.10.1","xml2js":"^0.6.2","express":"^4.21.2","openurl":"^1.1.1","shelljs":"^0.10.0","@sap/sbf":"^6.9.4","commander":"^14.0.0","node-fetch":"^2.7.0","prompt-sync":"^4.2.0","http-status-codes":"^2.3.0","swagger-ui-express":"^5.0.1","@sap/cds-common-content":"^3.0.1","@cap-js-community/websocket":"1.6.4","@cap-js-community/event-queue":"^1.10.6","@cap-js-community/feature-toggle-library":"^1.3.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.2","jest":"^29.7.0","eslint":"^9.28.0","globals":"^16.2.0","@sap/cds":"^8.9.4","prettier":"^3.5.3","@sap/cds-dk":"^8.9.5","@sap/cds-lsp":"^8.9.1","@cap-js/sqlite":"^1.11.1","eslint-plugin-n":"^17.19.0","@cap-js/cds-test":"^0.3.0","eslint-plugin-jest":"^28.12.0","prettier-plugin-java":"^2.6.7","eslint-config-prettier":"^10.1.5","@cap-js-community/sap-afc-sdk":"./"},"_npmOperationalInternal":{"tmp":"tmp/sap-afc-sdk_0.3.0_1749197407243_0.9314408793619531","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@cap-js-community/sap-afc-sdk","version":"0.4.0","keywords":["AFC","CAP","CDS"],"author":{"name":"Oliver Klemenz","email":"oliver.klemenz@sap.com"},"license":"Apache-2.0","_id":"@cap-js-community/sap-afc-sdk@0.4.0","maintainers":[{"name":"rlindner81sap","email":"richard.lindner@sap.com"},{"name":"smax","email":"maximilian.gruenfelder@sap.com"},{"name":"oklemenz2","email":"oliver.klemenz@sap.com"}],"homepage":"https://cap.cloud.sap/","bugs":{"url":"https://github.com/cap-js-community/sap-afc-sdk/issues"},"bin":{"afc":"bin/afc.js"},"cds":{"i18n":{"folders":["i18n","_i18n","/node_modules/@cap-js-community/sap-afc-sdk/srv/i18n","/node_modules/@cap-js-community/sap-afc-sdk/srv/scheduling/i18n"]},"server":{"cors":false},"requires":{"afc":{"kind":"odata-v4","model":"srv/external/afc","[production]":{"credentials":{"destination":"SAP_AFC"}}},"auth":{"kind":"mocked-auth","users":{"zeus":{"roles":["internal-user","system-user"],"tenant":"t1"}}},"sap-afc-sdk":{"ui":{"link":true,"path":"","swagger":true,"launchpad":true,"scheduling.monitoring.job":true},"api":{"csp":false,"cors":{"origin":true}},"model":"@cap-js-community/sap-afc-sdk","[mock]":{"mockProcessing":{"max":10,"min":0,"status":{"failed":0.1,"completed":0.5,"completedWithError":0.2,"completedWithWarning":0.2},"default":"completed"}},"[test]":{"mockProcessing":false},"broker":false,"endpoints":{"server":null,"approuter":null},"[production]":{"broker":true},"mockProcessing":false},"SchedulingWebsocketService":{"outbox":{"kind":"persistent-outbox","events":{"jobStatusChanged":{"[test]":{"timeBucket":false},"timeBucket":"*/5 * * * * *"}},"maxAttempts":5,"transactionMode":"alwaysRollback","checkForNextChunk":true,"parallelEventProcessing":5}},"SchedulingProcessingService":{"outbox":{"kind":"persistent-outbox","events":{"syncJob":{"cron":"*/1 * * * *"}},"maxAttempts":5,"checkForNextChunk":true,"parallelEventProcessing":5}}},"websocket":{"kind":"ws","[production]":{"adapter":{"impl":"redis","local":true}}},"eventQueue":{"useAsCAPOutbox":true},"featureToggles":{"config":{"eventQueue/active":{"type":"boolean","fallbackValue":true},"eventQueue/instanceLoadLimit":{"type":"number","fallbackValue":100}}}},"dist":{"shasum":"d0f1a9f93aa5ed38459a2d5934b3de2dbe1b1bd9","tarball":"https://registry.npmjs.org/@cap-js-community/sap-afc-sdk/-/sap-afc-sdk-0.4.0.tgz","fileCount":529,"integrity":"sha512-0UY0DNDziep5K55knT4dYCIw6n5UGYXrGwgGMRq3qq5pCFkzQ2wh2+66S8OdGMoaUns1qfqEGFzUJesTREP38A==","signatures":[{"sig":"MEUCIEVKy7q3uTYo+/yFvbKKhZuWMOiL+SVpKzKTOoAmRszkAiEAz9WwBnhXUpTDM8nG53wv8xmuUDLMTZ2leEkEpX7UXig=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1689720},"main":"index.js","sapux":["app/scheduling.monitoring.job"],"types":"index.d.ts","engines":{"node":">=22"},"gitHead":"c907fcd93966b982510739c48ceb872b8600c7b4","scripts":{"all":"npm run upgrade-lock && npm run i18n:pull && npm run lint && npm run openapi && npm test && npm run test:java && npm run java:update && npm run test:bin","lint":"npm run eslint && npm run prettier && npm run prettier:cds","test":"jest --silent","audit":"npm audit --only=prod","start":"cds-serve","watch":"cds watch","eslint":"eslint --fix .","lint:ci":"npm run eslint:ci && npm run prettier:ci","openapi":"npm run openapi:update && npm run lint","prettier":"prettier \"**/*.{js,json,java,md,yml,yaml}\" --write --log-level error","test:bin":"cd bin && jest --silent","eslint:ci":"eslint .","i18n:pull":"cd scripts && ./i18n-pull.sh","i18n:push":"cd scripts && ./i18n-push.sh","test:java":"cd java/project && npm test","java:check":"npm run test:java && node scripts/java-plugin -c","java:update":"npm run test:java && node scripts/java-plugin","prettier:ci":"prettier \"**/*.{js,json,java,md,yml,yaml}\" --check","test:update":"npm test -- -u","prettier:cds":"format-cds app db srv -f","upgrade-lock":"rm -rf package-lock.json node_modules && npm i","openapi:check":"node scripts/openapi -c","openapi:update":"node scripts/openapi","prepareRelease":"npm prune --production","test:bin:update":"npm run test:bin -- -u"},"_npmUser":{"name":"oklemenz2","actor":{"name":"oklemenz2","type":"user","email":"oliver.klemenz@sap.com"},"email":"oliver.klemenz@sap.com"},"repository":{"url":"git+https://github.com/cap-js-community/sap-afc-sdk.git","type":"git"},"_npmVersion":"10.9.2","description":"SAP Advanced Financial Closing SDK for CDS","directories":{},"_nodeVersion":"22.16.0","dependencies":{"cors":"^2.8.5","yaml":"^2.8.0","helmet":"^8.1.0","verror":"^1.10.1","xml2js":"^0.6.2","express":"^4.21.2","openurl":"^1.1.1","shelljs":"^0.10.0","@sap/sbf":"^6.9.5","commander":"^14.0.0","node-fetch":"^2.7.0","prompt-sync":"^4.2.0","http-status-codes":"^2.3.0","swagger-ui-express":"^5.0.1","@sap/cds-common-content":"^3.0.1","@cap-js-community/websocket":"1.7.1","@cap-js-community/event-queue":"^1.10.8","@cap-js-community/feature-toggle-library":"^1.3.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.3","jest":"^30.0.4","eslint":"^9.29.1","globals":"^16.3.0","@sap/cds":"^9.1.0","prettier":"^3.6.2","@sap/cds-dk":"^9.1.0","@sap/cds-lsp":"^9.1.0","@cap-js/sqlite":"^2.0.2","eslint-plugin-n":"^17.20.0","@cap-js/cds-test":"^0.4.0","eslint-plugin-jest":"^29.0.1","prettier-plugin-java":"^2.7.1","eslint-config-prettier":"^10.1.5","@cap-js-community/sap-afc-sdk":"./"},"_npmOperationalInternal":{"tmp":"tmp/sap-afc-sdk_0.4.0_1751557143410_0.7631678253080796","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@cap-js-community/sap-afc-sdk","version":"0.5.0","keywords":["AFC","CAP","CDS"],"author":{"name":"Oliver Klemenz","email":"oliver.klemenz@sap.com"},"license":"Apache-2.0","_id":"@cap-js-community/sap-afc-sdk@0.5.0","maintainers":[{"name":"rlindner81sap","email":"richard.lindner@sap.com"},{"name":"smax","email":"maximilian.gruenfelder@sap.com"},{"name":"oklemenz2","email":"oliver.klemenz@sap.com"}],"homepage":"https://cap.cloud.sap/","bugs":{"url":"https://github.com/cap-js-community/sap-afc-sdk/issues"},"bin":{"afc":"bin/afc.js"},"cds":{"i18n":{"folders":["i18n","_i18n","/node_modules/@cap-js-community/sap-afc-sdk/srv/i18n","/node_modules/@cap-js-community/sap-afc-sdk/srv/scheduling/i18n"]},"server":{"cors":false},"requires":{"afc":{"kind":"odata-v4","model":"srv/external/afc","[production]":{"credentials":{"destination":"SAP_AFC"}}},"auth":{"kind":"mocked-auth","users":{"zeus":{"roles":["internal-user","system-user"],"tenant":"t1"}}},"sap-afc-sdk":{"ui":{"link":true,"path":"","swagger":true,"launchpad":true,"scheduling.monitoring.job":true},"api":{"csp":false,"cors":{"origin":true}},"model":"@cap-js-community/sap-afc-sdk","[mock]":{"mockProcessing":{"max":10,"min":0,"status":{"failed":0.1,"completed":0.5,"completedWithError":0.2,"completedWithWarning":0.2},"default":"completed"}},"[test]":{"mockProcessing":false},"broker":false,"endpoints":{"server":null,"approuter":null},"[production]":{"broker":true},"mockProcessing":false},"SchedulingWebsocketService":{"outbox":{"kind":"persistent-outbox","events":{"jobStatusChanged":{"[test]":{"timeBucket":false},"timeBucket":"*/5 * * * * *"}},"maxAttempts":5,"transactionMode":"alwaysRollback","checkForNextChunk":true,"parallelEventProcessing":5}},"SchedulingProcessingService":{"outbox":{"kind":"persistent-outbox","events":{"syncJob":{"cron":"*/1 * * * *"}},"maxAttempts":5,"checkForNextChunk":true,"parallelEventProcessing":5}}},"websocket":{"kind":"ws","[production]":{"adapter":{"impl":"redis","local":true}}},"eventQueue":{"useAsCAPOutbox":true},"featureToggles":{"config":{"eventQueue/active":{"type":"boolean","fallbackValue":true},"eventQueue/instanceLoadLimit":{"type":"number","fallbackValue":100}}}},"dist":{"shasum":"63fa4d153de00a04089c7062659265ca71573b01","tarball":"https://registry.npmjs.org/@cap-js-community/sap-afc-sdk/-/sap-afc-sdk-0.5.0.tgz","fileCount":529,"integrity":"sha512-BUBqBk+2XrTzo+Tnw2e2VgLIKIkmv8exD7N1nO2mdZeyfhlQ3MNbyx//zEbfC2klz7E1xnUSAos72Pa2hq362A==","signatures":[{"sig":"MEQCIF16OItZpxcyIchNLWEHaTJr866SKbys7o/zSy1p+foWAiBZDtgpd2kWtXP1YlzR2uXohSjyombYdC/BgySjAe0F6A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1704933},"main":"index.js","sapux":["app/scheduling.monitoring.job"],"types":"index.d.ts","engines":{"node":">=22"},"gitHead":"8b7be5a9313ab4927fc1a2d680c1bcc03e151a23","scripts":{"lint":"npm run eslint && npm run prettier && npm run prettier:cds","sync":"npm run upgrade-lock && npm run i18n:pull && npm run openapi:update && npm run lint && npm run test:update && npm run java:update && npm run test:bin:update","test":"jest --silent","audit":"npm audit --only=prod","check":"npm run lint:ci && npm run openapi:check && npm test && npm run java:check && npm run test:bin","start":"cds-serve","watch":"cds watch","eslint":"eslint --fix .","update":"npm run java:update","lint:ci":"npm run eslint:ci && npm run prettier:ci","openapi":"npm run openapi:update && npm run lint","prettier":"prettier \"**/*.{js,json,java,md,yml,yaml}\" --write --log-level error","test:bin":"cd bin && jest --silent","eslint:ci":"eslint .","i18n:pull":"cd scripts && ./i18n-pull.sh","i18n:push":"cd scripts && ./i18n-push.sh","test:java":"cd java/project && npm test","java:check":"npm run test:java && node scripts/java-plugin -c","java:update":"npm run test:java && node scripts/java-plugin","prettier:ci":"prettier \"**/*.{js,json,java,md,yml,yaml}\" --check","test:update":"npm test -- -u","prettier:cds":"format-cds app db srv -f","upgrade-lock":"npm run upgrade-lock:main && npm run upgrade-lock:app && npm run upgrade-lock:java","openapi:check":"node scripts/openapi -c","openapi:update":"node scripts/openapi","prepareRelease":"npm prune --production","test:bin:update":"npm run test:bin -- -u","upgrade-lock:app":"cd app/scheduling.monitoring.job && rm -rf package-lock.json node_modules && npm i","upgrade-lock:java":"cd java/project && rm -rf package-lock.json node_modules && npm i","upgrade-lock:main":"rm -rf package-lock.json node_modules && npm i"},"_npmUser":{"name":"oklemenz2","email":"oliver.klemenz@sap.com"},"repository":{"url":"git+https://github.com/cap-js-community/sap-afc-sdk.git","type":"git"},"_npmVersion":"10.9.2","description":"SAP Advanced Financial Closing SDK for CDS","directories":{},"_nodeVersion":"22.17.1","dependencies":{"cors":"^2.8.5","yaml":"^2.8.0","helmet":"^8.1.0","verror":"^1.10.1","xml2js":"^0.6.2","express":"^4.21.2","openurl":"^1.1.1","shelljs":"^0.10.0","@sap/sbf":"^6.9.6","commander":"^14.0.0","node-fetch":"^2.7.0","prompt-sync":"^4.2.0","http-status-codes":"^2.3.0","swagger-ui-express":"^5.0.1","@sap/cds-common-content":"^3.0.1","@cap-js-community/websocket":"^1.7.2","@cap-js-community/event-queue":"^1.10.10","@cap-js-community/feature-toggle-library":"^1.3.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.3","jest":"^30.0.5","eslint":"^9.32.0","globals":"^16.3.0","@sap/cds":"^9.2.0","prettier":"^3.6.2","@sap/cds-dk":"9.1.3","@sap/cds-lsp":"^9.1.2","@cap-js/sqlite":"^2.0.2","eslint-plugin-n":"^17.21.3","@cap-js/cds-test":"^0.4.0","eslint-plugin-jest":"^29.0.1","prettier-plugin-java":"^2.7.3","eslint-config-prettier":"^10.1.8","@cap-js-community/sap-afc-sdk":"./"},"_npmOperationalInternal":{"tmp":"tmp/sap-afc-sdk_0.5.0_1754394003400_0.6068817426986108","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@cap-js-community/sap-afc-sdk","version":"0.6.0","keywords":["AFC","CAP","CDS"],"author":{"name":"Oliver Klemenz","email":"oliver.klemenz@sap.com"},"license":"Apache-2.0","_id":"@cap-js-community/sap-afc-sdk@0.6.0","maintainers":[{"name":"rlindner81sap","email":"richard.lindner@sap.com"},{"name":"smax","email":"maximilian.gruenfelder@sap.com"},{"name":"oklemenz2","email":"oliver.klemenz@sap.com"}],"homepage":"https://cap.cloud.sap/","bugs":{"url":"https://github.com/cap-js-community/sap-afc-sdk/issues"},"bin":{"afc":"bin/afc.js"},"cds":{"i18n":{"folders":["i18n","_i18n","/node_modules/@cap-js-community/sap-afc-sdk/srv/i18n","/node_modules/@cap-js-community/sap-afc-sdk/srv/scheduling/i18n"]},"server":{"cors":false},"requires":{"afc":{"kind":"odata-v4","model":"srv/external/afc","[production]":{"credentials":{"destination":"SAP_AFC"}}},"auth":{"kind":"mocked-auth","users":{"zeus":{"roles":["internal-user","system-user"],"tenant":"t1"}}},"sap-afc-sdk":{"ui":{"link":true,"path":"","swagger":true,"launchpad":true,"scheduling.monitoring.job":true},"api":{"csp":false,"cors":{"origin":true}},"model":"@cap-js-community/sap-afc-sdk","[mock]":{"mockProcessing":{"max":10,"min":0,"status":{"failed":0.1,"completed":0.5,"completedWithError":0.2,"completedWithWarning":0.2},"default":"completed"}},"[test]":{"mockProcessing":false},"broker":false,"endpoints":{"server":null,"approuter":null},"[production]":{"broker":true},"capabilities":{"supportsNotification":true},"mockProcessing":false},"SchedulingWebsocketService":{"outbox":{"kind":"persistent-outbox","events":{"jobStatusChanged":{"[test]":{"timeBucket":false},"timeBucket":"*/5 * * * * *"}},"maxAttempts":5,"transactionMode":"alwaysRollback","checkForNextChunk":true,"parallelEventProcessing":5}},"SchedulingProcessingService":{"outbox":{"kind":"persistent-outbox","events":{"syncJob":{"cron":"*/1 * * * *"}},"maxAttempts":5,"checkForNextChunk":true,"parallelEventProcessing":5}}},"websocket":{"kind":"ws","[production]":{"adapter":{"impl":"redis","local":true}}},"eventQueue":{"useAsCAPOutbox":true},"featureToggles":{"config":{"eventQueue/active":{"type":"boolean","fallbackValue":true},"eventQueue/instanceLoadLimit":{"type":"number","fallbackValue":100}}}},"dist":{"shasum":"8cd89eeae97568521e3bd097b5353a73343ec0e6","tarball":"https://registry.npmjs.org/@cap-js-community/sap-afc-sdk/-/sap-afc-sdk-0.6.0.tgz","fileCount":529,"integrity":"sha512-wfWaMP86CQSsuzrCm1XIdDEK/p0E7xJCdsMcThIVkbpM2CydYdTsOT2dCc9/gJIzgnd48TTRtULlfyGhUh47Zg==","signatures":[{"sig":"MEYCIQC1WfuTo7/qD2IQNQlcI2cVmr/OIXMlq0FW4FA8wVgiGAIhAI0lP4PPyTw6BiNm7UYveGX92mgFJ0OmTcyWsMpDVGjI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1751833},"main":"index.js","sapux":["app/scheduling.monitoring.job"],"types":"index.d.ts","engines":{"node":">=22"},"gitHead":"b30245822bc490c26b10db71360a5d7388b59667","scripts":{"lint":"npm run eslint && npm run prettier && npm run prettier:cds","sync":"npm run upgrade-lock && npm run i18n:pull && npm run openapi:update && npm run lint && npm run test:update && npm run java:update && npm run test:bin:update","test":"jest --silent","audit":"npm audit --only=prod","check":"npm run lint:ci && npm run openapi:check && npm test && npm run java:check && npm run test:bin","start":"cds-serve","watch":"cds watch","eslint":"eslint --fix .","update":"npm run java:update","lint:ci":"npm run eslint:ci && npm run prettier:ci","openapi":"npm run openapi:update && npm run lint","prettier":"prettier \"**/*.{js,json,java,md,yml,yaml}\" --write --log-level error","test:bin":"cd bin && jest --silent","eslint:ci":"eslint .","i18n:pull":"cd scripts && ./i18n-pull.sh","i18n:push":"cd scripts && ./i18n-push.sh","test:java":"cd java/project && npm test","java:check":"npm run test:java && node scripts/java-plugin -c","java:update":"npm run test:java && node scripts/java-plugin","prettier:ci":"prettier \"**/*.{js,json,java,md,yml,yaml}\" --check","test:update":"npm test -- -u","prettier:cds":"format-cds app db srv -f","upgrade-lock":"npm run upgrade-lock:main && npm run upgrade-lock:app && npm run upgrade-lock:java","openapi:check":"node scripts/openapi -c","openapi:update":"node scripts/openapi","prepareRelease":"npm prune --production","test:bin:update":"npm run test:bin -- -u","upgrade-lock:app":"cd app/scheduling.monitoring.job && rm -rf package-lock.json node_modules && npm i","upgrade-lock:java":"cd java/project && rm -rf package-lock.json node_modules && npm i","upgrade-lock:main":"rm -rf package-lock.json node_modules && npm i"},"_npmUser":{"name":"oklemenz2","email":"oliver.klemenz@sap.com"},"repository":{"url":"git+https://github.com/cap-js-community/sap-afc-sdk.git","type":"git"},"_npmVersion":"10.9.3","description":"SAP Advanced Financial Closing SDK for CDS","directories":{},"_nodeVersion":"22.19.0","dependencies":{"cors":"^2.8.5","yaml":"^2.8.1","helmet":"^8.1.0","verror":"^1.10.1","xml2js":"^0.6.2","express":"^4.21.2","openurl":"^1.1.1","shelljs":"^0.10.0","@sap/sbf":"^6.9.6","commander":"^14.0.1","node-fetch":"^2.7.0","prompt-sync":"^4.2.0","http-status-codes":"^2.3.0","swagger-ui-express":"^5.0.1","@sap/cds-common-content":"^3.0.1","@cap-js-community/websocket":"^1.7.2","@cap-js-community/event-queue":"^1.10.11","@cap-js-community/feature-toggle-library":"^1.3.1"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.3","jest":"^30.1.3","eslint":"^9.35.0","globals":"^16.4.0","@sap/cds":"^9.3.1","prettier":"^3.6.2","@sap/cds-dk":"9.3.1","@sap/cds-lsp":"^9.3.0","@cap-js/sqlite":"^2.0.2","eslint-plugin-n":"^17.23.0","@cap-js/cds-test":"^0.4.0","eslint-plugin-jest":"^29.0.1","prettier-plugin-java":"^2.7.5","eslint-config-prettier":"^10.1.8","@cap-js-community/sap-afc-sdk":"./"},"_npmOperationalInternal":{"tmp":"tmp/sap-afc-sdk_0.6.0_1758019266335_0.9514063463171647","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@cap-js-community/sap-afc-sdk","version":"0.7.0","keywords":["AFC","CAP","CDS"],"author":{"name":"Oliver Klemenz","email":"oliver.klemenz@sap.com"},"license":"Apache-2.0","_id":"@cap-js-community/sap-afc-sdk@0.7.0","maintainers":[{"name":"rlindner81sap","email":"richard.lindner@sap.com"},{"name":"smax","email":"maximilian.gruenfelder@sap.com"},{"name":"oklemenz2","email":"oliver.klemenz@sap.com"}],"homepage":"https://cap.cloud.sap/","bugs":{"url":"https://github.com/cap-js-community/sap-afc-sdk/issues"},"bin":{"afc":"bin/afc.js"},"cds":{"i18n":{"folders":["i18n","_i18n","/node_modules/@cap-js-community/sap-afc-sdk/srv/i18n","/node_modules/@cap-js-community/sap-afc-sdk/srv/scheduling/i18n"]},"server":{"cors":false},"requires":{"afc":{"kind":"odata-v4","model":"srv/external/afc","[production]":{"credentials":{"destination":"SAP_AFC"}}},"auth":{"kind":"mocked-auth","users":{"zeus":{"roles":["internal-user","system-user"],"tenant":"t1"}}},"sap-afc-sdk":{"ui":{"link":true,"path":"","swagger":true,"launchpad":true,"scheduling.monitoring.job":true},"api":{"csp":false,"cors":{"origin":true}},"model":"@cap-js-community/sap-afc-sdk","[mock]":{"mockProcessing":{"max":10,"min":0,"status":{"failed":0.1,"completed":0.5,"completedWithError":0.2,"completedWithWarning":0.2},"default":"completed"}},"[test]":{"mockProcessing":false},"broker":false,"endpoints":{"server":null,"approuter":null},"[production]":{"broker":true},"capabilities":{"supportsNotification":true},"mockProcessing":false},"SchedulingWebsocketService":{"outbox":{"kind":"persistent-outbox","events":{"jobStatusChanged":{"[test]":{"timeBucket":false},"timeBucket":"*/5 * * * * *"}},"maxAttempts":5,"transactionMode":"alwaysRollback","checkForNextChunk":true,"parallelEventProcessing":5}},"SchedulingProcessingService":{"outbox":{"kind":"persistent-outbox","events":{"syncJob":{"cron":"*/1 * * * *"}},"maxAttempts":5,"checkForNextChunk":true,"parallelEventProcessing":5}}},"websocket":{"kind":"ws","[production]":{"adapter":{"impl":"redis","local":true}}},"eventQueue":{"useAsCAPOutbox":true},"featureToggles":{"config":{"eventQueue/active":{"type":"boolean","fallbackValue":true},"eventQueue/instanceLoadLimit":{"type":"number","fallbackValue":100}}}},"dist":{"shasum":"6e2d26f651a967532ca481c481d12c318c1c9f11","tarball":"https://registry.npmjs.org/@cap-js-community/sap-afc-sdk/-/sap-afc-sdk-0.7.0.tgz","fileCount":529,"integrity":"sha512-HZqkvSH4iF4KWwkDg+G3lb3ImGThssd34uYT3TnvB3TXSvwSjw7BO480FVMO8uI+T0rF5aFTd0/RaYqNPrVOWg==","signatures":[{"sig":"MEUCIQCDxyoj3XkzyRUCi+cX16z0dfCTI46EORXwS2kKh33dPQIgOXVUBi60nhtDHUOuD27HT6DHoFCvOP/Fhp3gpNrG4Tg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@cap-js-community%2fsap-afc-sdk@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1775390},"main":"index.js","sapux":["app/scheduling.monitoring.job"],"types":"index.d.ts","engines":{"node":">=22"},"gitHead":"e7811ef6d5b1d5a0b5b1fcb9de087c5964b4135d","scripts":{"lint":"npm run eslint && npm run prettier && npm run prettier:cds","sync":"npm run upgrade-lock && npm run i18n:pull && npm run openapi:update && npm run lint && npm run test:update && npm run java:update && npm run test:bin:update","test":"jest --silent","audit":"npm audit --only=prod","check":"npm run lint:ci && npm run openapi:check && npm test && npm run java:check && npm run test:bin","start":"cds-serve","watch":"cds watch","eslint":"eslint --fix .","update":"npm run java:update","lint:ci":"npm run eslint:ci && npm run prettier:ci","openapi":"npm run openapi:update && npm run lint","prettier":"prettier \"**/*.{js,json,java,md,yml,yaml}\" --write --log-level error","test:bin":"cd bin && jest --silent","eslint:ci":"eslint .","i18n:pull":"cd scripts && ./i18n-pull.sh","i18n:push":"cd scripts && ./i18n-push.sh","test:java":"cd java/project && npm test","java:check":"npm run test:java && node scripts/java-plugin -c","java:update":"npm run test:java && node scripts/java-plugin","prettier:ci":"prettier \"**/*.{js,json,java,md,yml,yaml}\" --check","test:update":"npm test -- -u","prettier:cds":"format-cds app db srv -f","upgrade-lock":"npm run upgrade-lock:main && npm run upgrade-lock:app && npm run upgrade-lock:java","openapi:check":"node scripts/openapi -c","openapi:update":"node scripts/openapi","prepareRelease":"npm prune --production","test:bin:update":"npm run test:bin -- -u","upgrade-lock:app":"cd app/scheduling.monitoring.job && rm -rf package-lock.json node_modules && npm i","upgrade-lock:java":"cd java/project && rm -rf package-lock.json node_modules && npm i","upgrade-lock:main":"rm -rf package-lock.json node_modules && npm i"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8d53ac66-66e7-4fe5-af05-d79af360d8dd"}},"repository":{"url":"git+https://github.com/cap-js-community/sap-afc-sdk.git","type":"git"},"_npmVersion":"11.6.2","description":"SAP Advanced Financial Closing SDK for CDS","directories":{},"_nodeVersion":"22.20.0","dependencies":{"cors":"^2.8.5","yaml":"^2.8.1","helmet":"^8.1.0","verror":"^1.10.1","xml2js":"^0.6.2","express":"^4.21.2","openurl":"^1.1.1","shelljs":"^0.10.0","@sap/sbf":"^6.9.7","commander":"^14.0.1","node-fetch":"^2.7.0","prompt-sync":"^4.2.0","http-status-codes":"^2.3.0","swagger-ui-express":"^5.0.1","@sap/cds-common-content":"^3.0.1","@cap-js-community/websocket":"^1.8.1","@cap-js-community/event-queue":"^1.10.11","@cap-js-community/feature-toggle-library":"^1.3.1"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.3","jest":"^30.2.0","eslint":"^9.37.0","globals":"^16.4.0","@sap/cds":"^9.4.3","prettier":"^3.6.2","@sap/cds-dk":"^9.4.1","@sap/cds-lsp":"^9.4.0","@cap-js/sqlite":"^2.0.3","eslint-plugin-n":"^17.23.1","@cap-js/cds-test":"^0.4.0","eslint-plugin-jest":"^29.0.1","prettier-plugin-java":"^2.7.5","eslint-config-prettier":"^10.1.8","@cap-js-community/sap-afc-sdk":"./"},"_npmOperationalInternal":{"tmp":"tmp/sap-afc-sdk_0.7.0_1760349960841_0.9538414381005331","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@cap-js-community/sap-afc-sdk","version":"0.8.0","keywords":["AFC","CAP","CDS"],"author":{"name":"Oliver Klemenz","email":"oliver.klemenz@sap.com"},"license":"Apache-2.0","_id":"@cap-js-community/sap-afc-sdk@0.8.0","maintainers":[{"name":"rlindner81sap","email":"richard.lindner@sap.com"},{"name":"smax","email":"maximilian.gruenfelder@sap.com"},{"name":"oklemenz2","email":"oliver.klemenz@sap.com"}],"homepage":"https://cap.cloud.sap/","bugs":{"url":"https://github.com/cap-js-community/sap-afc-sdk/issues"},"bin":{"afc":"bin/afc.js"},"cds":{"i18n":{"folders":["i18n","_i18n","/node_modules/@cap-js-community/sap-afc-sdk/srv/i18n","/node_modules/@cap-js-community/sap-afc-sdk/srv/scheduling/i18n"]},"server":{"cors":false},"requires":{"afc":{"kind":"odata-v4","model":"srv/external/afc","[production]":{"credentials":{"destination":"SAP_AFC"}}},"auth":{"kind":"mocked-auth","users":{"zeus":{"roles":["internal-user","system-user"],"tenant":"t1"}}},"sap-afc-sdk":{"ui":{"link":true,"path":"","swagger":true,"launchpad":true,"scheduling.monitoring.job":true},"api":{"csp":false,"cors":{"origin":true}},"model":"@cap-js-community/sap-afc-sdk","[mock]":{"mockProcessing":{"max":10,"min":0,"status":{"failed":0.1,"completed":0.5,"completedWithError":0.2,"completedWithWarning":0.2},"default":"completed"}},"[test]":{"mockProcessing":false},"broker":false,"endpoints":{"server":null,"approuter":null},"[production]":{"broker":true},"capabilities":{"supportsNotification":true},"mockProcessing":false},"SchedulingWebsocketService":{"outbox":{"kind":"persistent-outbox","events":{"jobStatusChanged":{"[test]":{"timeBucket":false},"timeBucket":"*/5 * * * * *"}},"maxAttempts":5,"transactionMode":"alwaysRollback","checkForNextChunk":true,"parallelEventProcessing":5}},"SchedulingProcessingService":{"outbox":{"kind":"persistent-outbox","events":{"syncJob":{"cron":"*/1 * * * *"}},"maxAttempts":5,"checkForNextChunk":true,"parallelEventProcessing":5}}},"websocket":{"kind":"ws","[production]":{"adapter":{"impl":"redis","local":true}}},"eventQueue":{"useAsCAPOutbox":true},"featureToggles":{"config":{"eventQueue/active":{"type":"boolean","fallbackValue":true},"eventQueue/instanceLoadLimit":{"type":"number","fallbackValue":100}}}},"dist":{"shasum":"44661191f9dcdc9360b69527d206959d0aa9df1c","tarball":"https://registry.npmjs.org/@cap-js-community/sap-afc-sdk/-/sap-afc-sdk-0.8.0.tgz","fileCount":531,"integrity":"sha512-EQKjQ4SUdXU1MTBt0/2VA+RWt5TBEzmFdww9Dn7uxk+zeSOzGNJ6XlWjTx1SobJP01Ag7u1HI0IjXPeKwxMP7Q==","signatures":[{"sig":"MEUCIGicsPtdYqmoiZOJbtjmJCMaiad/5fWKZJAcZu+s+6unAiEAhyCxwDeoiIVWDKZETQzOltGOQcpLY2JOovxMZl1E9DE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@cap-js-community%2fsap-afc-sdk@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1842149},"main":"index.js","sapux":["app/scheduling.monitoring.job"],"types":"index.d.ts","engines":{"node":">=22"},"gitHead":"129ef2b742b2016fd53469a2252ffc5fc8dbb155","scripts":{"lint":"npm run eslint && npm run prettier && npm run prettier:cds","sync":"npm run upgrade-lock && npm run i18n:pull && npm run openapi:update && npm run lint && npm run test:update && npm run java:update && npm run test:bin:update","test":"jest --silent","audit":"npm audit --only=prod","check":"npm run lint:ci && npm run openapi:check && npm test && npm run java:check && npm run test:bin","start":"cds-serve","watch":"cds watch","eslint":"eslint --fix .","update":"npm run java:update","lint:ci":"npm run eslint:ci && npm run prettier:ci","openapi":"npm run openapi:update && npm run lint","prettier":"prettier \"**/*.{js,json,java,md,yml,yaml}\" --write --log-level error","test:bin":"cd bin && jest --silent","eslint:ci":"eslint .","i18n:pull":"cd scripts && ./i18n-pull.sh","i18n:push":"cd scripts && ./i18n-push.sh","test:java":"cd java/project && npm test","java:check":"npm run test:java && node scripts/java-plugin -c","java:update":"npm run test:java && node scripts/java-plugin","prettier:ci":"prettier \"**/*.{js,json,java,md,yml,yaml}\" --check","test:update":"npm test -- -u","prettier:cds":"format-cds app db srv -f","upgrade-lock":"npm run upgrade-lock:main && npm run upgrade-lock:app && npm run upgrade-lock:java","openapi:check":"node scripts/openapi -c","openapi:update":"node scripts/openapi","prepareRelease":"npm prune --production","test:bin:update":"npm run test:bin -- -u","upgrade-lock:app":"cd app/scheduling.monitoring.job && rm -rf package-lock.json node_modules && npm i","upgrade-lock:java":"cd java/project && rm -rf package-lock.json node_modules && npm i","upgrade-lock:main":"rm -rf package-lock.json node_modules && npm i"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8d53ac66-66e7-4fe5-af05-d79af360d8dd"}},"repository":{"url":"git+https://github.com/cap-js-community/sap-afc-sdk.git","type":"git"},"_npmVersion":"11.6.2","description":"SAP Advanced Financial Closing SDK for CDS","directories":{},"_nodeVersion":"24.11.0","dependencies":{"cors":"^2.8.5","yaml":"^2.8.1","helmet":"^8.1.0","verror":"^1.10.1","xml2js":"^0.6.2","express":"^4.21.2","openurl":"^1.1.1","shelljs":"^0.10.0","@sap/sbf":"^6.9.9","commander":"^14.0.2","node-fetch":"^2.7.0","prompt-sync":"^4.2.0","http-status-codes":"^2.3.0","swagger-ui-express":"^5.0.1","@sap/cds-common-content":"^3.0.1","@cap-js-community/websocket":"^1.9.1","@cap-js-community/event-queue":"^1.11.0","@cap-js-community/feature-toggle-library":"^1.3.1"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.3","jest":"^30.2.0","eslint":"^9.39.0","globals":"^16.5.0","@sap/cds":"^9.4.4","prettier":"^3.6.2","@sap/cds-dk":"^9.4.3","@sap/cds-lsp":"^9.4.0","@cap-js/sqlite":"^2.0.4","eslint-plugin-n":"^17.23.1","@cap-js/cds-test":"^0.4.0","eslint-plugin-jest":"^29.0.1","prettier-plugin-java":"^2.7.7","eslint-config-prettier":"^10.1.8","@cap-js-community/sap-afc-sdk":"./"},"_npmOperationalInternal":{"tmp":"tmp/sap-afc-sdk_0.8.0_1762445596731_0.5091846201533197","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@cap-js-community/sap-afc-sdk","version":"0.9.0","keywords":["AFC","CAP","CDS"],"author":{"name":"Oliver Klemenz","email":"oliver.klemenz@sap.com"},"license":"Apache-2.0","_id":"@cap-js-community/sap-afc-sdk@0.9.0","maintainers":[{"name":"rlindner81sap","email":"richard.lindner@sap.com"},{"name":"smax","email":"maximilian.gruenfelder@sap.com"},{"name":"oklemenz2","email":"oliver.klemenz@sap.com"}],"homepage":"https://cap.cloud.sap/","bugs":{"url":"https://github.com/cap-js-community/sap-afc-sdk/issues"},"bin":{"afc":"bin/afc.js"},"cds":{"i18n":{"folders":["i18n","_i18n","/node_modules/@cap-js-community/sap-afc-sdk/srv/i18n","/node_modules/@cap-js-community/sap-afc-sdk/srv/scheduling/i18n"]},"server":{"cors":false},"requires":{"afc":{"kind":"odata-v4","model":"srv/external/afc","[production]":{"credentials":{"destination":"SAP_AFC"}}},"auth":{"kind":"mocked-auth","users":{"zeus":{"roles":["internal-user","system-user"],"tenant":"t1"}}},"sap-afc-sdk":{"ui":{"link":true,"path":"","swagger":true,"launchpad":true,"scheduling.monitoring.job":true},"api":{"csp":false,"cors":{"origin":true}},"model":"@cap-js-community/sap-afc-sdk","[mock]":{"mockProcessing":{"max":10,"min":0,"status":{"failed":0.1,"completed":0.5,"completedWithError":0.2,"completedWithWarning":0.2},"default":"completed"}},"[test]":{"mockProcessing":false},"broker":false,"endpoints":{"server":null,"approuter":null},"[production]":{"broker":true},"capabilities":{"supportsNotification":true},"mockProcessing":false},"sapafcsdk.scheduling.WebsocketService":{"queued":{"kind":"persistent-queue","events":{"jobStatusChanged":{"[test]":{"timeBucket":false},"timeBucket":"*/5 * * * * *"}},"maxAttempts":5,"transactionMode":"alwaysRollback","checkForNextChunk":true,"parallelEventProcessing":5}},"sapafcsdk.scheduling.ProcessingService":{"queued":{"kind":"persistent-queue","events":{"syncJob":{"cron":"*/1 * * * *"}},"maxAttempts":5,"checkForNextChunk":true,"parallelEventProcessing":5}}},"websocket":{"kind":"ws","[production]":{"adapter":{"impl":"redis","local":true}}},"eventQueue":{"useAsCAPQueue":true},"featureToggles":{"config":{"eventQueue/active":{"type":"boolean","fallbackValue":true},"eventQueue/instanceLoadLimit":{"type":"number","fallbackValue":100}}}},"dist":{"shasum":"07f0a3171df579c51b0924158e601debd6725e8e","tarball":"https://registry.npmjs.org/@cap-js-community/sap-afc-sdk/-/sap-afc-sdk-0.9.0.tgz","fileCount":532,"integrity":"sha512-Z8miy5E7dOGCyFEADEvS6+yueLgdE/Mbk/NYaStsPIgzQRgDvCzYXNf2oLAuGfaqEf9SC50FBTTXNmuVyMuXDQ==","signatures":[{"sig":"MEUCIDhjrL6DkOr+rKea4Dx/u3gAgM8fg5TtfzD4rLViUwLbAiEA5MuRwP9U3cTynKY5VyUcNygrDBt8O3pyiVf3rybHkdE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@cap-js-community%2fsap-afc-sdk@0.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1859101},"main":"index.js","sapux":["app/scheduling.monitoring.job"],"types":"index.d.ts","engines":{"node":">=22"},"gitHead":"3a4f3afdb05dfa27317ae53df89f8d60b780f346","scripts":{"lint":"npm run eslint && npm run prettier && npm run prettier:cds","sync":"npm run upgrade-lock && npm run openapi:update && npm run lint && npm run test:update && npm run java:update && npm run test:bin:update","test":"jest --silent","apply":"npm run i18n:push","audit":"npm audit --only=prod","check":"npm run lint:ci && npm run openapi:check && npm test && npm run java:check && npm run test:bin","start":"cds-serve","watch":"cds watch","eslint":"eslint --fix .","update":"npm run java:update","lint:ci":"npm run eslint:ci && npm run prettier:ci","openapi":"npm run openapi:update && npm run lint","prettier":"prettier \"**/*.{js,json,java,md,yml,yaml}\" --write --log-level error","test:bin":"cd bin && jest --silent","eslint:ci":"eslint .","i18n:pull":"cd scripts && ./i18n-pull.sh","i18n:push":"cd scripts && ./i18n-push.sh","test:java":"cd java/project && npm test","java:check":"npm run test:java && node scripts/java-plugin -c","java:update":"npm run test:java && node scripts/java-plugin","prettier:ci":"prettier \"**/*.{js,json,java,md,yml,yaml}\" --check","test:update":"npm test -- -u","prettier:cds":"format-cds app db srv -f","upgrade-lock":"npm run upgrade-lock:main && npm run upgrade-lock:app && npm run upgrade-lock:java","openapi:check":"node scripts/openapi -c","openapi:update":"node scripts/openapi","prepareRelease":"npm prune --production","test:bin:update":"npm run test:bin -- -u","upgrade-lock:app":"cd app/scheduling.monitoring.job && rm -rf package-lock.json node_modules && npm i","upgrade-lock:java":"cd java/project && rm -rf package-lock.json node_modules && npm i","upgrade-lock:main":"rm -rf package-lock.json node_modules && npm i"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8d53ac66-66e7-4fe5-af05-d79af360d8dd"}},"repository":{"url":"git+https://github.com/cap-js-community/sap-afc-sdk.git","type":"git"},"_npmVersion":"11.7.0","description":"SAP Advanced Financial Closing SDK for CDS","directories":{},"_nodeVersion":"24.12.0","dependencies":{"cors":"^2.8.5","yaml":"^2.8.2","helmet":"^8.1.0","verror":"^1.10.1","xml2js":"^0.6.2","express":"^4.22.0","openurl":"^1.1.1","shelljs":"^0.10.0","@sap/sbf":"^6.10.0","commander":"^14.0.2","node-fetch":"^2.7.0","prompt-sync":"^4.2.0","http-status-codes":"^2.3.0","swagger-ui-express":"^5.0.1","@sap/cds-common-content":"^3.1.0","@cap-js-community/websocket":"^1.9.2","@cap-js-community/event-queue":"^2.0.3","@cap-js-community/feature-toggle-library":"^1.3.1"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.3","jest":"^30.2.0","eslint":"^9.39.2","globals":"^16.5.0","@sap/cds":"^9.6.0","prettier":"^3.7.4","@sap/cds-dk":"^9.6.0","@sap/cds-lsp":"^9.5.1","@cap-js/sqlite":"^2.1.1","eslint-plugin-n":"^17.23.1","@cap-js/cds-test":"^0.4.1","eslint-plugin-jest":"^29.2.3","prettier-plugin-java":"^2.7.7","eslint-config-prettier":"^10.1.8","@cap-js-community/sap-afc-sdk":"./"},"_npmOperationalInternal":{"tmp":"tmp/sap-afc-sdk_0.9.0_1766040832195_0.7063037344476373","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"@cap-js-community/sap-afc-sdk","version":"0.9.1","keywords":["AFC","CAP","CDS"],"author":{"name":"Oliver Klemenz","email":"oliver.klemenz@sap.com"},"license":"Apache-2.0","_id":"@cap-js-community/sap-afc-sdk@0.9.1","maintainers":[{"name":"rlindner81sap","email":"richard.lindner@sap.com"},{"name":"smax","email":"maximilian.gruenfelder@sap.com"},{"name":"oklemenz2","email":"oliver.klemenz@sap.com"}],"homepage":"https://cap.cloud.sap/","bugs":{"url":"https://github.com/cap-js-community/sap-afc-sdk/issues"},"bin":{"afc":"bin/afc.js"},"cds":{"i18n":{"folders":["i18n","_i18n","/node_modules/@cap-js-community/sap-afc-sdk/srv/i18n","/node_modules/@cap-js-community/sap-afc-sdk/srv/scheduling/i18n"]},"server":{"cors":false},"requires":{"afc":{"kind":"odata-v4","model":"srv/external/afc","[production]":{"credentials":{"destination":"SAP_AFC"}}},"auth":{"kind":"mocked-auth","users":{"zeus":{"roles":["internal-user","system-user"],"tenant":"t1"}}},"sap-afc-sdk":{"ui":{"link":true,"path":"","swagger":true,"launchpad":true,"scheduling.monitoring.job":true},"api":{"csp":false,"cors":{"origin":true}},"model":"@cap-js-community/sap-afc-sdk","[mock]":{"mockProcessing":{"max":10,"min":0,"status":{"failed":0.1,"completed":0.5,"completedWithError":0.2,"completedWithWarning":0.2},"default":"completed"}},"[test]":{"mockProcessing":false},"broker":false,"endpoints":{"server":null,"approuter":null},"[production]":{"broker":true},"capabilities":{"supportsNotification":true},"mockProcessing":false},"sapafcsdk.scheduling.WebsocketService":{"queued":{"kind":"persistent-queue","events":{"jobStatusChanged":{"[test]":{"timeBucket":false},"timeBucket":"*/5 * * * * *"}},"maxAttempts":5,"transactionMode":"alwaysRollback","checkForNextChunk":true,"parallelEventProcessing":5}},"sapafcsdk.scheduling.ProcessingService":{"queued":{"kind":"persistent-queue","events":{"syncJob":{"cron":"*/1 * * * *"}},"maxAttempts":5,"checkForNextChunk":true,"parallelEventProcessing":5}}},"websocket":{"kind":"ws","[production]":{"adapter":{"impl":"redis","local":true}}},"eventQueue":{"useAsCAPQueue":true},"featureToggles":{"config":{"eventQueue/active":{"type":"boolean","fallbackValue":true},"eventQueue/instanceLoadLimit":{"type":"number","fallbackValue":100}}}},"dist":{"shasum":"0a480b6324f242bbefe850373961f72419b81d62","tarball":"https://registry.npmjs.org/@cap-js-community/sap-afc-sdk/-/sap-afc-sdk-0.9.1.tgz","fileCount":532,"integrity":"sha512-rovIphVRV0BzcWvFJsYWw759jcwZBLy6zHjnmhbHwlEw5dn/PZiBSN9tYwJV5a1ZrHTNeBp96JfeZxVRT6yqng==","signatures":[{"sig":"MEUCIQDKh3Fyrm6SvmSo170szaOv66W9iDIpTLU4Qv0vtIsQMAIgCxxpo8yqUNxT6bzW5EmlPnF1xcJSiFkyAo7VIV4WlKw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@cap-js-community%2fsap-afc-sdk@0.9.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1868322},"main":"index.js","sapux":["app/scheduling.monitoring.job"],"types":"index.d.ts","engines":{"node":">=22"},"gitHead":"5de09dd4149d045cab9599ce5bf7fd95d5e88b2a","scripts":{"lint":"npm run eslint && npm run prettier && npm run prettier:cds","sync":"npm run upgrade-lock && npm run openapi:update && npm run lint && npm run test:update && npm run java:update && npm run test:bin:update","test":"jest --silent","apply":"npm run i18n:push","audit":"npm audit --only=prod","check":"npm run lint:ci && npm run openapi:check && npm test && npm run java:check && npm run test:bin","start":"cds-serve","watch":"cds watch","eslint":"eslint --fix .","update":"npm run java:update","lint:ci":"npm run eslint:ci && npm run prettier:ci","openapi":"npm run openapi:update && npm run lint","prettier":"prettier \"**/*.{js,json,java,md,yml,yaml}\" --write --log-level error","test:bin":"cd bin && jest --silent","eslint:ci":"eslint .","i18n:pull":"cd scripts && ./i18n-pull.sh","i18n:push":"cd scripts && ./i18n-push.sh","test:java":"cd java/project && npm test","java:check":"npm run test:java && node scripts/java-plugin -c","java:update":"npm run test:java && node scripts/java-plugin","prettier:ci":"prettier \"**/*.{js,json,java,md,yml,yaml}\" --check","test:update":"npm test -- -u","prettier:cds":"format-cds app db srv -f","upgrade-lock":"npm run upgrade-lock:main && npm run upgrade-lock:app && npm run upgrade-lock:java","openapi:check":"node scripts/openapi -c","openapi:update":"node scripts/openapi","prepareRelease":"npm prune --production","test:bin:update":"npm run test:bin -- -u","upgrade-lock:app":"cd app/scheduling.monitoring.job && rm -rf package-lock.json node_modules && npm i","upgrade-lock:java":"cd java/project && rm -rf package-lock.json node_modules && npm i","upgrade-lock:main":"rm -rf package-lock.json node_modules && npm i"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8d53ac66-66e7-4fe5-af05-d79af360d8dd"}},"repository":{"url":"git+https://github.com/cap-js-community/sap-afc-sdk.git","type":"git"},"_npmVersion":"11.8.0","description":"SAP Advanced Financial Closing SDK for CDS","directories":{},"_nodeVersion":"24.13.0","dependencies":{"cors":"^2.8.6","yaml":"^2.8.2","helmet":"^8.1.0","verror":"^1.10.1","xml2js":"^0.6.2","express":"^4.22.1 || ^5.2.1","openurl":"^1.1.1","shelljs":"^0.10.0","@sap/sbf":"^6.10.3","commander":"^14.0.3","node-fetch":"^3.3.2","prompt-sync":"^4.2.0","http-status-codes":"^2.3.0","swagger-ui-express":"^5.0.1","@sap/cds-common-content":"^3.1.0","@cap-js-community/websocket":"^1.9.4","@cap-js-community/event-queue":"^2.0.4","@cap-js-community/feature-toggle-library":"^1.3.2"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","jest":"^30.2.0","eslint":"^9.39.2","globals":"^17.3.0","@sap/cds":"9.7","prettier":"^3.8.1","@sap/cds-dk":"^9.7.0","@sap/cds-lsp":"^9.7.0","@cap-js/sqlite":"^2.1.2","eslint-plugin-n":"^17.23.2","@cap-js/cds-test":"^0.4.1","eslint-plugin-jest":"^29.12.2","prettier-plugin-java":"^2.8.1","eslint-config-prettier":"^10.1.8","@cap-js-community/sap-afc-sdk":"./"},"_npmOperationalInternal":{"tmp":"tmp/sap-afc-sdk_0.9.1_1770131167520_0.822619454824659","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@cap-js-community/sap-afc-sdk","version":"1.0.0","keywords":["AFC","CAP","CDS"],"author":{"name":"Oliver Klemenz","email":"oliver.klemenz@sap.com"},"license":"Apache-2.0","_id":"@cap-js-community/sap-afc-sdk@1.0.0","maintainers":[{"name":"rlindner81sap","email":"richard.lindner@sap.com"},{"name":"smax","email":"maximilian.gruenfelder@sap.com"},{"name":"oklemenz2","email":"oliver.klemenz@sap.com"}],"homepage":"https://cap.cloud.sap/","bugs":{"url":"https://github.com/cap-js-community/sap-afc-sdk/issues"},"bin":{"afc":"bin/afc.js"},"cds":{"i18n":{"folders":["_i18n","i18n","/node_modules/@cap-js-community/sap-afc-sdk/srv/i18n","/node_modules/@cap-js-community/sap-afc-sdk/srv/scheduling/i18n"]},"server":{"cors":false},"requires":{"afc":{"kind":"odata-v4","model":"srv/external/afc","[production]":{"credentials":{"destination":"SAP_AFC"}}},"auth":{"kind":"mocked-auth","users":{"zeus":{"roles":["internal-user","system-user"],"tenant":"t1"}}},"sap-afc-sdk":{"ui":{"link":true,"path":"","swagger":true,"launchpad":true,"scheduling.monitoring.job":true},"api":{"csp":false,"cors":{"origin":true}},"model":"@cap-js-community/sap-afc-sdk","[mock]":{"mockProcessing":{"max":10,"min":0,"status":{"failed":0.1,"completed":0.5,"completedWithError":0.2,"completedWithWarning":0.2},"default":"completed"}},"[test]":{"mockProcessing":false},"broker":false,"endpoints":{"server":null,"approuter":null},"[production]":{"broker":true},"capabilities":{"supportsNotification":true},"mockProcessing":false},"sapafcsdk.scheduling.WebsocketService":{"queued":{"kind":"persistent-queue","events":{"jobStatusChanged":{"[test]":{"timeBucket":false},"timeBucket":"*/5 * * * * *"}},"maxAttempts":5,"transactionMode":"alwaysRollback","checkForNextChunk":true,"parallelEventProcessing":5}},"sapafcsdk.scheduling.ProcessingService":{"queued":{"kind":"persistent-queue","events":{"syncJob":{"cron":"*/1 * * * *"}},"maxAttempts":5,"checkForNextChunk":true,"parallelEventProcessing":5}}},"websocket":{"kind":"ws","[production]":{"adapter":{"impl":"redis","local":true}}},"eventQueue":{"useAsCAPQueue":true},"featureToggles":{"config":{"eventQueue/active":{"type":"boolean","fallbackValue":true},"eventQueue/instanceLoadLimit":{"type":"number","fallbackValue":100}}}},"dist":{"shasum":"06841f8facaf6da2cb0133b40bd70b01deea46f6","tarball":"https://registry.npmjs.org/@cap-js-community/sap-afc-sdk/-/sap-afc-sdk-1.0.0.tgz","fileCount":532,"integrity":"sha512-ZMPNnP0yNvjAhA/qEuopWcLzBT0SLJ+dw0/K9xq3ztYIuZXhVUnm1HoW6TcJdPsw53rAxoiMF4UTSZopImjzRg==","signatures":[{"sig":"MEUCIDRkpZdsbZ8Q/hgin7e8cyPYWbTyu1FPTdPPXfcuLgTmAiEAqzsGlsvwydAq/fj1hJ01kx7i11mIppicEar0HxmqjjM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@cap-js-community%2fsap-afc-sdk@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1879255},"main":"index.js","sapux":["app/scheduling.monitoring.job"],"types":"index.d.ts","engines":{"node":">=22"},"gitHead":"3dccd56ed372cf068a4b83232fcbfbfc48dbee53","scripts":{"lint":"npm run eslint && npm run prettier && npm run prettier:cds","sync":"npm run upgrade-lock && npm run openapi:update && npm run lint && npm run test:update && npm run java:update && npm run test:bin:update","test":"jest --silent","apply":"npm run i18n:push","audit":"npm audit --only=prod","check":"npm run lint:ci && npm run openapi:check && npm test && npm run java:check && npm run test:bin","start":"cds-serve","watch":"cds watch","eslint":"eslint --fix .","update":"npm run java:update","lint:ci":"npm run eslint:ci && npm run prettier:ci","openapi":"npm run openapi:update && npm run lint","prettier":"prettier \"**/*.{js,json,java,md,yml,yaml}\" --write --log-level error","test:bin":"cd bin && jest --silent","eslint:ci":"eslint .","i18n:pull":"cd scripts && ./i18n-pull.sh","i18n:push":"cd scripts && ./i18n-push.sh","test:java":"cd java/project && npm test","java:check":"npm run test:java && node scripts/java-plugin -c","java:update":"npm run test:java && node scripts/java-plugin","prettier:ci":"prettier \"**/*.{js,json,java,md,yml,yaml}\" --check","test:update":"npm test -- -u","prettier:cds":"format-cds app db srv -f","upgrade-lock":"npm run upgrade-lock:main && npm run upgrade-lock:app && npm run upgrade-lock:java","openapi:check":"node scripts/openapi -c","openapi:update":"node scripts/openapi","prepareRelease":"npm prune --production","test:bin:update":"npm run test:bin -- -u","upgrade-lock:app":"cd app/scheduling.monitoring.job && rm -rf package-lock.json node_modules && npm i","upgrade-lock:java":"cd java/project && rm -rf package-lock.json node_modules && npm i","upgrade-lock:main":"rm -rf package-lock.json node_modules && npm i"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8d53ac66-66e7-4fe5-af05-d79af360d8dd"}},"repository":{"url":"git+https://github.com/cap-js-community/sap-afc-sdk.git","type":"git"},"_npmVersion":"11.10.0","description":"SAP Advanced Financial Closing SDK for CDS","directories":{},"_nodeVersion":"24.13.0","dependencies":{"cors":"^2.8.6","yaml":"^2.8.2","helmet":"^8.1.0","verror":"^1.10.1","xml2js":"^0.6.2","express":"^4.22.1 || ^5.2.1","openurl":"^1.1.1","shelljs":"^0.10.0","@sap/sbf":"^6.11.0","commander":"^14.0.3","node-fetch":"^3.3.2","prompt-sync":"^4.2.0","http-status-codes":"^2.3.0","swagger-ui-express":"^5.0.1","@sap/cds-common-content":"^3.1.0","@cap-js-community/websocket":"^1.9.4","@cap-js-community/event-queue":"^2.0.4","@cap-js-community/feature-toggle-library":"^1.3.2"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","jest":"^30.2.0","eslint":"^10.0.0","globals":"^17.3.0","@sap/cds":"^9.7.1","prettier":"^3.8.1","@sap/cds-dk":"^9.7.2","@sap/cds-lsp":"^9.7.0","@cap-js/sqlite":"^2.1.3","eslint-plugin-n":"^17.24.0","@cap-js/cds-test":"^0.4.1","eslint-plugin-jest":"^29.15.0","prettier-plugin-java":"^2.8.1","eslint-config-prettier":"^10.1.8","@cap-js-community/sap-afc-sdk":"./"},"_npmOperationalInternal":{"tmp":"tmp/sap-afc-sdk_1.0.0_1771227099748_0.7916107146212323","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@cap-js-community/sap-afc-sdk","version":"1.0.1","keywords":["AFC","CAP","CDS"],"author":{"name":"Oliver Klemenz","email":"oliver.klemenz@sap.com"},"license":"Apache-2.0","_id":"@cap-js-community/sap-afc-sdk@1.0.1","maintainers":[{"name":"rlindner81sap","email":"richard.lindner@sap.com"},{"name":"smax","email":"maximilian.gruenfelder@sap.com"},{"name":"oklemenz2","email":"oliver.klemenz@sap.com"}],"homepage":"https://cap.cloud.sap/","bugs":{"url":"https://github.com/cap-js-community/sap-afc-sdk/issues"},"bin":{"afc":"bin/afc.js"},"cds":{"i18n":{"folders":["_i18n","i18n","/node_modules/@cap-js-community/sap-afc-sdk/srv/i18n","/node_modules/@cap-js-community/sap-afc-sdk/srv/scheduling/i18n"]},"server":{"cors":false},"requires":{"afc":{"kind":"rest","model":"srv/external/afc","queued":{"kind":"persistent-queue"},"service":"sap.afc.IntegrationService","[production]":{"credentials":{"path":"/api/integration/v1","destination":"SAP_AFC"},"destinationOptions":{"jwt":null,"selectionStrategy":"alwaysProvider"}}},"auth":{"kind":"mocked-auth","users":{"zeus":{"roles":["internal-user","system-user"],"tenant":"t1"}}},"sap-afc-sdk":{"ui":{"link":true,"path":"","swagger":true,"launchpad":true,"scheduling.monitoring.job":true},"api":{"csp":false,"cors":{"origin":true}},"model":"@cap-js-community/sap-afc-sdk","[mock]":{"mockProcessing":{"max":10,"min":0,"status":{"failed":0.1,"completed":0.5,"completedWithError":0.2,"completedWithWarning":0.2},"default":"completed"}},"[test]":{"mockProcessing":false},"broker":false,"endpoints":{"server":null,"approuter":null},"[production]":{"broker":true},"capabilities":{"supportsNotification":true},"mockProcessing":false},"sapafcsdk.scheduling.WebsocketService":{"queued":{"kind":"persistent-queue","events":{"jobStatusChanged":{"[test]":{"timeBucket":false},"timeBucket":"*/5 * * * * *"}},"maxAttempts":5,"transactionMode":"alwaysRollback","checkForNextChunk":true,"parallelEventProcessing":5}},"sapafcsdk.scheduling.ProcessingService":{"queued":{"kind":"persistent-queue","events":{"syncJob":{"cron":"*/1 * * * *"}},"maxAttempts":5,"checkForNextChunk":true,"parallelEventProcessing":5}}},"websocket":{"kind":"ws","[production]":{"adapter":{"impl":"redis","local":true}}},"eventQueue":{"useAsCAPQueue":true},"featureToggles":{"config":{"eventQueue/active":{"type":"boolean","fallbackValue":true},"eventQueue/instanceLoadLimit":{"type":"number","fallbackValue":100}}}},"dist":{"shasum":"194d1e1f321b350b66ba6706d7b963b1ae03234d","tarball":"https://registry.npmjs.org/@cap-js-community/sap-afc-sdk/-/sap-afc-sdk-1.0.1.tgz","fileCount":534,"integrity":"sha512-cfIMEJafBiJ6fVF4TYvrHws/n9Z7BpuflpUIu2A/Tu54itm1gOCGs1YllJ8q/vvSevIcPEQPAbVZRsjLdSiJuQ==","signatures":[{"sig":"MEUCICztKKoBgqf8XMwJzWncZmhKAyl0a+fU9Ix8ev+Us1tSAiEAptfd/d6+1qxvEWMJIEZeVe8Jq/gJIOh015cYicRcSQ4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@cap-js-community%2fsap-afc-sdk@1.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1899787},"main":"index.js","sapux":["app/scheduling.monitoring.job"],"types":"index.d.ts","engines":{"node":">=22"},"gitHead":"0bf2a4a180ace4480a001f9f723ca2301a548edc","scripts":{"lint":"npm run eslint && npm run prettier && npm run prettier:cds","sync":"npm run upgrade-lock && npm run openapi:update && npm run lint && npm run test:update && npm run java:update && npm run test:bin:update","test":"jest --silent","apply":"npm run i18n:push","audit":"npm audit --only=prod","check":"npm run lint:ci && npm run openapi:check && npm test && npm run java:check && npm run test:bin","start":"cds-serve","watch":"cds watch","eslint":"eslint --fix .","update":"npm run java:update","lint:ci":"npm run eslint:ci && npm run prettier:ci","openapi":"npm run openapi:update && npm run lint","prettier":"prettier \"**/*.{js,json,java,md,yml,yaml}\" --write --log-level error","test:bin":"cd bin && jest --silent","eslint:ci":"eslint .","i18n:pull":"cd scripts && ./i18n-pull.sh","i18n:push":"cd scripts && ./i18n-push.sh","test:java":"cd java/project && npm test","java:check":"npm run test:java && node scripts/java-plugin -c","java:update":"npm run test:java && node scripts/java-plugin","prettier:ci":"prettier \"**/*.{js,json,java,md,yml,yaml}\" --check","test:update":"npm test -- -u","prettier:cds":"format-cds app db srv -f","upgrade-lock":"npm run upgrade-lock:main && npm run upgrade-lock:app && npm run upgrade-lock:java","openapi:check":"node scripts/openapi -c","openapi:update":"node scripts/openapi","prepareRelease":"npm prune --production","test:bin:update":"npm run test:bin -- -u","upgrade-lock:app":"cd app/scheduling.monitoring.job && rm -rf package-lock.json node_modules && npm i","upgrade-lock:java":"cd java/project && rm -rf package-lock.json node_modules && npm i","upgrade-lock:main":"rm -rf package-lock.json node_modules && npm i"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8d53ac66-66e7-4fe5-af05-d79af360d8dd"}},"repository":{"url":"git+https://github.com/cap-js-community/sap-afc-sdk.git","type":"git"},"_npmVersion":"11.10.1","description":"SAP Advanced Financial Closing SDK for CDS","directories":{},"_nodeVersion":"24.13.0","dependencies":{"cors":"^2.8.6","yaml":"^2.8.2","helmet":"^8.1.0","verror":"^1.10.1","xml2js":"^0.6.2","express":"^4.22.1 || ^5.2.1","openurl":"^1.1.1","shelljs":"^0.10.0","@sap/sbf":"^6.11.1","commander":"^14.0.3","node-fetch":"^3.3.2","prompt-sync":"^4.2.0","http-status-codes":"^2.3.0","swagger-ui-express":"^5.0.1","@sap/cds-common-content":"^3.1.0","@sap-cloud-sdk/resilience":"^4.4.0","@sap-cloud-sdk/http-client":"^4.4.0","@cap-js-community/websocket":"^1.9.4","@sap-cloud-sdk/connectivity":"^4.4.0","@cap-js-community/event-queue":"^2.1.0-beta.3","@cap-js-community/feature-toggle-library":"^1.3.2"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","jest":"^30.2.0","eslint":"^10.0.2","globals":"^17.3.0","@sap/cds":"^9.7.1","prettier":"^3.8.1","@sap/cds-dk":"^9.7.2","@sap/cds-lsp":"^9.7.0","@cap-js/sqlite":"^2.1.3","eslint-plugin-n":"^17.24.0","@cap-js/cds-test":"^0.4.1","eslint-plugin-jest":"^29.15.0","prettier-plugin-java":"^2.8.1","eslint-config-prettier":"^10.1.8","@cap-js-community/sap-afc-sdk":"./"},"_npmOperationalInternal":{"tmp":"tmp/sap-afc-sdk_1.0.1_1772034884309_0.8342273319760853","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@cap-js-community/sap-afc-sdk","version":"1.1.0","description":"SAP Advanced Financial Closing SDK for CDS","homepage":"https://cap.cloud.sap/","engines":{"node":">=22"},"author":{"name":"Oliver Klemenz","email":"oliver.klemenz@sap.com"},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/cap-js-community/sap-afc-sdk.git"},"keywords":["AFC","CAP","CDS"],"main":"index.js","types":"index.d.ts","bin":{"afc":"bin/afc.js"},"scripts":{"start":"cds-serve","watch":"cds watch","test":"vitest run","test:update":"vitest run -u","test:bin":"cd bin && vitest run","test:bin:update":"cd bin && vitest run -u","test:java":"cd java/project && npm test","lint":"npm run eslint && npm run prettier && npm run prettier:cds","lint:ci":"npm run eslint:ci && npm run prettier:ci","eslint":"eslint --fix .","eslint:ci":"eslint .","prettier":"prettier \"**/*.{js,json,java,md,yml,yaml}\" --write --log-level error","prettier:ci":"prettier \"**/*.{js,json,java,md,yml,yaml}\" --check","prettier:cds":"format-cds app db srv -f","upgrade-lock":"npm run upgrade-lock:main && npm run upgrade-lock:app && npm run upgrade-lock:java","upgrade-lock:main":"rm -rf package-lock.json node_modules && npm i","upgrade-lock:app":"cd app/scheduling.monitoring.job && rm -rf package-lock.json node_modules && npm i","upgrade-lock:java":"cd java/project && rm -rf package-lock.json node_modules && npm i","prepareRelease":"npm prune --production","i18n:pull":"cd scripts && ./i18n-pull.sh","i18n:push":"cd scripts && ./i18n-push.sh","openapi":"npm run openapi:update && npm run lint","openapi:update":"node scripts/openapi","openapi:check":"node scripts/openapi -c","java:update":"npm run test:java && node scripts/java-plugin","java:check":"npm run test:java && node scripts/java-plugin -c","kyma:pods":"kubectl get pods -n afc-sdk-dev","kyma:ssh":"kubectl exec -it afcsdk-srv-xxx -n afc-sdk-dev -- /bin/sh","kyma:deployments":"kubectl get deployments -n afc-sdk-dev","kyma:debug":"KUBE_NAMESPACE=afc-sdk-dev cds debug afcsdk-srv --k8s --force","audit":"npm audit --only=prod","update":"npm run java:update","check":"npm run lint:ci && npm run openapi:check && npm test && npm run java:check && npm run test:bin","sync":"npm run upgrade-lock && npm run openapi:update && npm run lint && npm run test:update && npm run java:update && npm run test:bin:update","apply":"npm run i18n:push"},"dependencies":{"@cap-js-community/event-queue":"^2.3.0","@cap-js-community/feature-toggle-library":"^1.3.6","@cap-js-community/websocket":"^1.11.0","@sap-cloud-sdk/connectivity":"^4.8.0","@sap-cloud-sdk/http-client":"^4.8.0","@sap-cloud-sdk/resilience":"^4.8.0","@sap/cds-common-content":"^3.2.0","@sap/sbf":"^6.11.7","commander":"^15.0.0","cors":"^2.8.6","express":"^4.22.2 || ^5.2.1","helmet":"^8.3.0","http-status-codes":"^2.3.0","node-fetch":"^3.3.2","openurl":"^1.1.1","prompt-sync":"^4.2.0","shelljs":"^0.10.0","swagger-ui-express":"^5.0.1","verror":"^1.10.1","xml2js":"^0.6.2","yaml":"^2.9.0"},"devDependencies":{"@cap-js-community/sap-afc-sdk":"./","@cap-js/cds-test":"^1.0.1","@cap-js/sqlite":"^3.0.2","@sap/cds":"^10.0.4","@sap/cds-dk":"^10.0.5","@sap/cds-lsp":"^10.0.1","@vitest/coverage-v8":"^4.1.10","@vitest/eslint-plugin":"^1.6.23","eslint":"^10.7.0","eslint-config-prettier":"^10.1.8","eslint-plugin-n":"^18.2.2","globals":"^17.7.0","prettier":"^3.9.6","prettier-plugin-java":"^2.10.3","vitest":"^4.1.10","ws":"^8.21.1"},"cds":{"server":{"cors":false},"websocket":{"kind":"ws","[production]":{"adapter":{"local":true,"impl":"redis"}}},"eventQueue":{"useAsCAPQueue":true},"featureToggles":{"config":{"eventQueue/active":{"type":"boolean","fallbackValue":true},"eventQueue/instanceLoadLimit":{"type":"number","fallbackValue":100}}},"requires":{"sapafcsdk.scheduling.ProcessingService":{"queued":{"kind":"persistent-queue","maxAttempts":5,"checkForNextChunk":true,"events":{"syncJob":{"cron":"*/1 * * * *"}}}},"sapafcsdk.scheduling.WebsocketService":{"queued":{"kind":"persistent-queue","transactionMode":"alwaysRollback","maxAttempts":5,"checkForNextChunk":true,"events":{"jobStatusChanged":{"timeBucket":"*/5 * * * * *","[test]":{"timeBucket":false}}}}},"sap-afc-sdk":{"model":"@cap-js-community/sap-afc-sdk","capabilities":{"supportsNotification":true},"endpoints":{"approuter":null,"server":null},"api":{"cors":{"origin":true},"csp":false},"ui":{"path":"","link":true,"swagger":true,"launchpad":true,"scheduling.monitoring.job":true},"broker":false,"mockProcessing":false,"[test]":{"mockProcessing":false},"[mock]":{"mockProcessing":{"min":0,"max":10,"default":"completed","status":{"completed":0.5,"completedWithWarning":0.2,"completedWithError":0.2,"failed":0.1}}}},"auth":{"kind":"mocked-auth","users":{"zeus":{"tenant":"t1","roles":["internal-user","system-user"]}}},"afc":{"kind":"rest","model":"srv/external/afc","service":"sap.afc.IntegrationService","queued":{"kind":"persistent-queue"},"[production]":{"credentials":{"destination":"SAP_AFC","path":"/api/integration/v1"},"destinationOptions":{"selectionStrategy":"alwaysProvider","jwt":null}}}}},"sapux":["app/scheduling.monitoring.job"],"gitHead":"09d3fd0f169c2fcc6d7aefcc29d693eebb4fde18","_id":"@cap-js-community/sap-afc-sdk@1.1.0","bugs":{"url":"https://github.com/cap-js-community/sap-afc-sdk/issues"},"_nodeVersion":"24.18.0","_npmVersion":"12.0.1","dist":{"integrity":"sha512-wEi6xLXZGoPMuBNkAKFZyRpU5C7G8RgX9Vd3YZY/wMklzmAWPsFXusOQZpKl289K2/s57+3HRPdVegY80yEo1A==","shasum":"480359073d9c4cc136792636101475996f1d95f8","tarball":"https://registry.npmjs.org/@cap-js-community/sap-afc-sdk/-/sap-afc-sdk-1.1.0.tgz","fileCount":534,"unpackedSize":1617800,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@cap-js-community%2fsap-afc-sdk@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCtK3bT+JV9TMTaN8D4BnXA7lnb52EJkZP6/qMmlKNICQIgBydKxW2TClYQ4GaYDOliln5V310SIFvXkzd4WqHL5zU="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8d53ac66-66e7-4fe5-af05-d79af360d8dd"}},"directories":{},"maintainers":[{"name":"sap_extncrepos","email":"mob.extrepo.stores@sap.com"},{"name":"cap-npm","email":"cap@sap.com"},{"name":"sap-ospo-admin","email":"ospo@sap.com"},{"name":"rlindner81sap","email":"richard.lindner@sap.com"},{"name":"smax","email":"maximilian.gruenfelder@sap.com"},{"name":"oklemenz2","email":"oliver.klemenz@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sap-afc-sdk_1.1.0_1784822691841_0.07298197857466593"},"_hasShrinkwrap":false}},"time":{"created":"2025-02-27T16:20:57.303Z","modified":"2026-07-23T16:04:52.534Z","0.1.0":"2025-02-27T16:20:57.578Z","0.2.0":"2025-04-10T12:28:55.124Z","0.2.1":"2025-04-10T15:48:36.810Z","0.2.2":"2025-04-10T16:03:44.566Z","0.2.3":"2025-04-14T11:42:53.072Z","0.2.4":"2025-04-15T11:50:54.405Z","0.2.5":"2025-04-15T14:07:07.928Z","0.2.6":"2025-05-05T12:58:15.282Z","0.2.7":"2025-05-13T13:54:54.616Z","0.2.8":"2025-05-21T07:53:03.060Z","0.3.0":"2025-06-06T08:10:07.554Z","0.4.0":"2025-07-03T15:39:03.692Z","0.5.0":"2025-08-05T11:40:03.623Z","0.6.0":"2025-09-16T10:41:06.539Z","0.7.0":"2025-10-13T10:06:01.080Z","0.8.0":"2025-11-06T16:13:17.003Z","0.9.0":"2025-12-18T06:53:52.376Z","0.9.1":"2026-02-03T15:06:07.708Z","1.0.0":"2026-02-16T07:31:39.952Z","1.0.1":"2026-02-25T15:54:44.534Z","1.1.0":"2026-07-23T16:04:52.075Z"},"bugs":{"url":"https://github.com/cap-js-community/sap-afc-sdk/issues"},"author":{"name":"Oliver Klemenz","email":"oliver.klemenz@sap.com"},"license":"Apache-2.0","homepage":"https://cap.cloud.sap/","keywords":["AFC","CAP","CDS"],"repository":{"type":"git","url":"git+https://github.com/cap-js-community/sap-afc-sdk.git"},"description":"SAP Advanced Financial Closing SDK for CDS","maintainers":[{"name":"sap_extncrepos","email":"mob.extrepo.stores@sap.com"},{"name":"cap-npm","email":"cap@sap.com"},{"name":"sap-ospo-admin","email":"ospo@sap.com"},{"name":"rlindner81sap","email":"richard.lindner@sap.com"},{"name":"smax","email":"maximilian.gruenfelder@sap.com"},{"name":"oklemenz2","email":"oliver.klemenz@sap.com"}],"readme":"# SAP Advanced Financial Closing SDK for CDS\n\n[![npm version](https://img.shields.io/npm/v/@cap-js-community/sap-afc-sdk)](https://www.npmjs.com/package/@cap-js-community/sap-afc-sdk)\n[![monthly downloads](https://img.shields.io/npm/dm/@cap-js-community/sap-afc-sdk)](https://www.npmjs.com/package/@cap-js-community/sap-afc-sdk)\n[![REUSE status](https://api.reuse.software/badge/github.com/cap-js-community/sap-afc-sdk)](https://api.reuse.software/info/github.com/cap-js-community/sap-afc-sdk)\n[![Main CI](https://github.com/cap-js-community/sap-afc-sdk/actions/workflows/main-ci.yml/badge.svg)](https://github.com/cap-js-community/sap-afc-sdk/commits/main)\n\n## About this Project\n\n[SAP Advanced Financial Closing SDK for CDS](https://www.npmjs.com/package/@cap-js-community/sap-afc-sdk) provides an SDK for [SAP Advanced Financial Closing](https://help.sap.com/docs/advanced-financial-closing) to\nbe consumed with [SAP Cloud Application Programming Model](https://www.npmjs.com/package/@sap/cds).\n\n## Table of Contents\n\n- [Requirements and Setup](#requirements-and-setup)\n- [Getting Started](#getting-started)\n- [CAP Node.js](#cap-nodejs)\n  - [Usage](#usage)\n  - [Architecture](#architecture)\n  - [Options](#options)\n  - [Implement](#implement)\n    - [Job Processing](#job-processing)\n    - [Job Provider](#job-provider)\n    - [Periodic Job Sync](#periodic-job-sync)\n    - [Notification](#notification)\n  - [API](#api)\n  - [Additional Settings](#additional-settings)\n- [CAP Java](#cap-java)\n  - [Usage](#usage-1)\n  - [Architecture](#architecture-1)\n  - [Options](#options-1)\n  - [Implement](#implement-1)\n    - [Job Processing](#job-processing-1)\n    - [Job Provider](#job-provider-1)\n    - [Periodic Job Sync](#periodic-job-sync-1)\n    - [Notification](#notification-1)\n  - [API](#api-1)\n- [Deployment](#deployment)\n- [Service Broker](#service-broker)\n- [Miscellaneous](#miscellaneous)\n  - [Testing](#testing)\n  - [Authorization](#authorization)\n  - [Work Zone](#work-zone)\n  - [Multitenancy](#multitenancy)\n- [Support, Feedback, Contributing](#support-feedback-contributing)\n- [Code of Conduct](#code-of-conduct)\n- [Licensing](#licensing)\n\n## Requirements and Setup\n\n[SAP Advanced Financial Closing (AFC)](https://help.sap.com/docs/advanced-financial-closing) lets you define, automate,\nprocess, and monitor the entity close for your organization.\n\n- To develop and test applications built with this SDK, you need a [CAP Node.js](https://www.npmjs.com/package/@sap/cds) or [CAP Java](https://www.npmjs.com/package/@sap/cds) project\n- To integrate, you need access to an instance of [SAP Advanced Financial Closing](https://help.sap.com/docs/advanced-financial-closing)\n\n## Getting Started\n\nA new CDS project can be initialized using [SAP Build Code](https://help.sap.com/docs/build_code) tools on SAP Business Technology Platform (BTP)\nor `@sap/cds-dk` CLI command `cds init` can be used to bootstrap a new CAP application. [See capire](https://cap.cloud.sap/docs/tools/cds-cli#cds-init).\n\n### Bootstrap CDS\n\n**SAP Build Code**:\n\n- Open SAP Build Lobby\n- Press `Create`\n- Select objective `Application`\n- Choose category `Full-Stack`\n- Select type `Full-Stack Node.JS` or `Full-Stack Java`\n- Provide the project name and dev space\n- Press `Review`\n- Press `Create`\n- Open the project in SAP Business Application Studio\n\n**CDS Command-Line-Interface**:\n\n- Terminal: `npm install -g @sap/cds-dk`\n- Init a new CDS project:\n  - Terminal:\n    - CAP Node.js: `cds init <name> --nodejs`\n    - CAP Java: `cds init <name> --java`\n- Switch to the project folder:\n  - Terminal: `cd <name>`\n- Install\n  - Terminal: `npm install`\n\n### Adding SDK\n\n- Add AFC SDK\n  - Terminal `npm install @cap-js-community/sap-afc-sdk`\n- Use `afc` command\n  - Add globally:\n    - Terminal: `npm install -g @cap-js-community/sap-afc-sdk`\n  - Use locally:\n    - Terminal: `npx afc`\n- Init target environment\n  - Cloud Foundry (default):\n    - Terminal: `afc init cf`\n  - Kyma:\n    - Terminal: `afc init kyma`\n- Add SDK features\n  - Terminal: `afc add sample,broker,http`\n- Add stub implementation\n  - Terminal: `afc add stub`\n\n### Test Project\n\n- Terminal: `npm start`\n- Browser:\n  - CAP Node.js: http://localhost:4004\n  - CAP Java: http://localhost:8080\n\nAn introductory blog post is available on SAP Community: [SAP Advanced Financial Closing: Third-Party Integration](https://community.sap.com/t5/financial-management-blog-posts-by-sap/sap-advanced-financial-closing-third-party-integration/ba-p/14317791).\n\n## CAP Node.js\n\nThe SAP Advanced Financial Closing SDK for CDS provides a plugin for [SAP Cloud Application Programming Model (CAP) for Node.js](https://cap.cloud.sap/docs/node.js)\nto extend and integrate with SAP Advanced Financial Closing (AFC). Specifically, it provides an out-of-the-box\nimplementation of the [SAP Advanced Financial Closing Scheduling Service Provider Interface](https://hub.sap.com/api/SSPIV1)\nto expose a Scheduling Provider service to manage Job definitions and Jobs.\n\nFurthermore, it brings the following out-of-the-box features:\n\n- **API**: Exposes a RESTful API implementing the AFC Scheduling Provider Interface to manage Job definitions and Jobs\n- **Event-Queue**: Provides an Event Queue to process and synchronize Jobs (periodically) asynchronously and resiliently (circuit breaker, retry,\n  load-balancing, etc.)\n- **Websocket**: Provides websocket connection support to monitor Job processing live\n- **Feature-Toggle**: Provides a feature toggle library to control the execution of the Event Queue\n- **UI**: Provides a UI5 application to monitor and cancel Jobs\n- **Broker**: Implements a service broker to manage service key management to API\n\n### Usage\n\n- Run `npm add @cap-js-community/sap-afc-sdk` in `@sap/cds` CAP Node.js project\n- Execute `npm start` to start server\n  - Access the welcome page at http://localhost:4004\n  - Access Applications\n    - [/launchpad.html](http://localhost:4004/launchpad.html): Sandbox Launchpad\n    - [/scheduling.monitoring.job](http://localhost:4004/scheduling.monitoring.job): Standalone Scheduling Monitoring Job UI\n  - Access Service Endpoints\n    - Public API\n      - [/api/job-scheduling/v1](http://localhost:4004/api/job-scheduling/v1): Scheduling Provider API ([OpenAPI Swagger UI](http://localhost:4004/api-docs/api/job-scheduling/v1))\n    - OData API (UI)\n      - [/odata/v4/job-scheduling/monitoring](http://localhost:4004/odata/v4/job-scheduling/monitoring): Job Scheduling Monitoring ([$metadata](http://localhost:4004/odata/v4/job-scheduling/monitoring/$metadata))\n    - WebSocket API\n      - [/ws/job-scheduling](http://localhost:4004/ws/job-scheduling): Scheduling WebSocket endpoint\n    - REST API\n      - [/rest/feature](http://localhost:4004/rest/feature): Feature Toggle API\n    - CDS Internal API\n      - `sapafcsdk.scheduling.ProcessingService`: Scheduling Processing service\n        ```js\n        const schedulingProcessingService = await cds.connect.to(\"sapafcsdk.scheduling.ProcessingService\");\n        ```\n      - `sapafcsdk.scheduling.WebsocketService`: Scheduling Websocket service\n        ```js\n        const schedulingWebsocketService = await cds.connect.to(\"sapafcsdk.scheduling.WebsocketService\");\n        ```\n\n### Architecture\n\nThe SAP Advanced Financial Closing SDK for CDS is built on the following architecture open source\nbuilding blocks as depicted in the following diagram:\n\n![Architecture Concept](./docs/assets/architecture_concept_node.svg)\n\n- **WebSocket Adapter for CDS** (https://github.com/cap-js-community/websocket)\n  - Exposes a WebSocket protocol via WebSocket standard or Socket.IO for CDS services. Runs in the context of the SAP\n    Cloud Application Programming Model (CAP) using @sap/cds (CDS Node.js).\n- **Event Queue for CDS** (https://github.com/cap-js-community/event-queue)\n  - The Event-Queue is a framework built on top of CAP Node.js, designed specifically for efficient and streamlined\n    asynchronous event processing\n- **Feature Toggle Library for CDS** (https://github.com/cap-js-community/feature-toggle-library)\n  - SAP BTP feature toggle library enables Node.js applications using the SAP Cloud Application Programming Model to\n    maintain live-updatable feature toggles via Redis\n\nUsing the SAP Advanced Financial Closing SDK, a third-party scheduling provider can be built for SAP Advanced Financial Closing.\nThe architectural design of the SAP Advanced Financial Closing (AFC) SDK for implementing a Scheduling Provider is based\non the SAP Cloud Application Programming Model (CAP) and SAP Build Code. It leverages the [@cap-js-community](https://github.com/cap-js-community)\nopen-source components to enable scheduling services in AFC.\n\nThe following diagram illustrates the high-level architecture of the SAP Advanced Financial Closing SDK for CDS (Node.js):\n\n![Architecture Design](./docs/assets/architecture_design_node.svg)\n\n**Key components and processing flow**:\n\n- **SAP Advanced Financial Closing (AFC):**\n  - Sends scheduling requests via AFC Scheduling Service Provider Interface using REST\n    API ([OpenAPI](https://hub.sap.com/api/SSPIV1))\n- **Scheduling Provider Service:**\n  - Handles incoming scheduling requests\n  - Creates scheduling jobs synchronously and places asynchronous requests into the Event Queue\n- **Scheduling Processing Service:**\n  - Processes scheduled jobs asynchronously\n  - Retrieves job requests from the Event Queue and executes them.\n- **Scheduling WebSocket Service:**\n  - Listens for status updates of scheduled jobs\n  - Notifies the Monitoring Scheduling Job UI via WebSockets when job statuses change\n- **Scheduling Monitoring Service:**\n  - Monitoring Scheduling Job UI (SAP Fiori Elements V4 / SAP UI5 application)\n  - Reads scheduling job details from the database\n  - Supports monitoring via OData V4 API\n  - Displays scheduling job statuses and updates in real-time via WebSockets\n- **Event Queue & Feature Toggles:**\n  - Event Queue (instrumenting CDS Queue) facilitates asynchronous job execution\n  - Feature Toggles allow influencing Job and Event Queue processing dynamically\n- **Database & Redis Caching:**\n  - Stores job scheduling data in the database\n  - Redis is used for information distribution (e.g., Event Queue, WebSockets, Feature Toggles)\n\n### Options\n\nOptions can be passed to SDK via CDS environment in `cds.requires.sap-afc-sdk` section:\n\n- `capabilities: Object`: Capabilities configuration. Default is `{}`\n  - `capabilities.supportsNotification: Boolean`: Supports notification configuration. Default is `true`\n- `endpoints: Object`: Endpoint configuration. Default is `{}`\n  - `endpoints.approuter: String`: Url of approuter. Default is `null` (derived from conventions `<app>-srv`)\n  - `endpoints.server: String`: Url of server. Default is `null` (derived from environment, e.g. CF)\n- `api: Object`: API configuration on `/api` paths. Default see below\n  - `api.cors: Boolean | Object`: Cross-Origin Resource Sharing (CORS) configuration for [cors](https://github.com/expressjs/cors) module on `/api` paths. Default is `{ origin: true }`\n    - `api.cors.origin: Boolean | String | String[]`: Cross-Origin Resource Sharing (CORS) origin configuration. Default is `true` (allow approuter url)\n  - `api.csp: Object | Boolean`: Content Security Policy (CSP) directives for [helmet](https://github.com/helmetjs/helmet) module on `/api` paths. Default is `false`\n- `ui: Object | Boolean`: UI configuration. Use `false` to disable UI. Default is `{}`\n  - `ui.path: String`: Path to the served UI5 application. Default is `''`\n  - `ui.link: Boolean`: Fill link of jobs to served UI5 launchpad, if `null`. Default is `true`\n  - `ui.swagger: Boolean | Object`: Serve API docs via Swagger UI. Default is `true`\n    - `ui.swagger.\"sapafcsdk.scheduling.ProviderService\": Boolean`: Serve API docs of Scheduling Provider via Swagger UI. Default is `true`\n  - `ui.launchpad: Boolean`: Serve launchpad. Default is `true`\n  - `ui.scheduling.monitoring.job: Boolean`: Serve Scheduling Monitoring Job UI separately if no Launchpad is served. Default is `true`\n- `broker: Boolean | Object`: Broker configuration. Serve broker endpoint, if truthy. Default is `false` and `true` in `production`\n- `mockProcessing: Boolean | Object`: Activate mocked job processing. Default is `false`\n  - `mockProcessing.min: Number`: Minimum processing time in seconds. Default is `0`\n  - `mockProcessing.max: Number`: Maximum processing time in seconds. Default is `10`\n  - `mockProcessing.default: String`: Default processing status. Default is `completed`\n  - `mockProcessing.status: Object`: Status distribution values. Default is `{}`\n    - `mockProcessing.status.completed: Number`: Completed status distribution value. Default is `0`\n    - `mockProcessing.status.completedWithWarning: Number`: `Completed with Warning` status distribution value. Default is `0`\n    - `mockProcessing.status.completedWithError: Number`: `Completed with Error` status distribution value. Default is `0`\n    - `mockProcessing.status.failed: Number`: Failed status distribution value. Default is `0`\n- `config: Object`: Advanced SDK configuration. See [config.json](./config.json). Default is `{}`\n\n### Implement\n\nThe SDK provides a set of services to implement the job processing service and the scheduling provider service.\n\n#### Job Processing\n\nThe job processing service is responsible for processing the jobs.\n\n##### Mock Processing\n\nThe library includes a mocked processing for jump-start development, which is disabled by default via option.\n`cds.requires.sap-afc-sdk.mockProcessing: false`\n\nSetting option `cds.requires.sap-afc-sdk.mockProcessing: true` a basic mocked job processing completes\njobs based on a random time value between `0-10` seconds:\n\n```json\n{\n  \"cds\": {\n    \"requires\": {\n      \"sap-afc-sdk\": {\n        \"mockProcessing\": {\n          \"min\": 0,\n          \"max\": 10,\n          \"default\": \"completed\"\n        }\n      }\n    }\n  }\n}\n```\n\nThe project can be adjusted to use basic mock processing automatically via command:\n\n- Terminal: `afc add -b mock`\n\nMore advanced mocked Job processing can be configured by setting the\nfollowing [CDS env](https://cap.cloud.sap/docs/node.js/cds-env) options (as described in [options](#options)):\n\n```json\n{\n  \"cds\": {\n    \"requires\": {\n      \"sap-afc-sdk\": {\n        \"mockProcessing\": {\n          \"min\": 0,\n          \"max\": 10,\n          \"default\": \"completed\",\n          \"status\": {\n            \"completed\": 0.5,\n            \"completedWithWarning\": 0.2,\n            \"completedWithError\": 0.2,\n            \"failed\": 0.1\n          }\n        }\n      }\n    }\n  }\n}\n```\n\nThis default advanced mocked Job processing can be also configured by using CDS profile `mock` via `--profile mock` or\n`CDS_ENV=mock`.\n\nThe project can be adjusted to use advanced mock processing (without additional `mock` profile) automatically via command:\n\n- Terminal: `afc add -a mock`\n\nMock configuration can be adjusted in `package.json` afterward.\n\nTo disable mock processing remove CDS env `cds.requires.sap-afc-sdk.mockProcessing`, e.g., via command:\n\n- Terminal: `afc add -x mock`\n\nThe default implementation of the job processing is already provided by the SDK. Focus can be put on\ncustom processing logic and the processing status update handling.\n\n##### Custom Processing\n\nTo implement custom job processing, extend the job processing service definition as follows:\n\n**CDS file:** `/srv/scheduling-processing-service.cds`\n\n```cds\nusing sapafcsdk.scheduling.ProcessingService from '@cap-js-community/sap-afc-sdk';\n\nannotate ProcessingService with @impl: '/srv/scheduling-processing-service.js';\n```\n\n**Implementation file:** `/srv/scheduling-processing-service.js`\n\n```js\nimport sdk from \"@cap-js-community/sap-afc-sdk\";\n\nconst { SchedulingProcessingService, JobStatus } = sdk;\n\nexport default class CustomSchedulingProcessingService extends SchedulingProcessingService {\n  async init() {\n    const { processJob, updateJob, cancelJob, syncJob, notify } = this.operations;\n\n    this.on(processJob, async (req, next) => {\n      // Your logic goes here\n      await next();\n    });\n\n    this.on(updateJob, async (req, next) => {\n      // Your logic goes here\n      await next();\n    });\n\n    this.on(cancelJob, async (req, next) => {\n      // Your logic goes here\n      await next();\n    });\n\n    this.on(syncJob, async (req, next) => {\n      // Your logic goes here\n      await next();\n    });\n\n    this.on(notify, async (req, next) => {\n      // Your logic goes here\n      await next();\n    });\n\n    super.init();\n  }\n}\n```\n\nA stub implementation for a custom scheduling processing service can be generated via command:\n\n- Terminal: `afc add stub`\n\nAs part of the custom scheduling process service implementation, the following operations can be implemented:\n\n- `on(processJob)`:\n  - A new job instance was created and needs to be processed\n  - The job is due (start date time is reached), and the job is ready for processing\n  - Implement your custom logic, how the job should be processed\n  - Job ID is accessible via `req.data.ID` and job data can be accessed via `req.job`\n  - Test run can be identified via flag `req.data.testRun` (if job definition supports test mode)\n  - Call `await next()` to perform default implementation (set status to `running`)\n  - Job update can be performed via `this.processJobUpdate()` providing the new status and job results\n    - e.g. `await this.processJobUpdate(req, job, JobStatus.completed, results)`\n  - Result `data` object shall contain stream objects to prevent data materialization\n  - Throwing exceptions will automatically trigger the retry process in Event Queue\n  - Disable mocked job processing via `cds.requires.sap-afc-sdk.mockProcessing: false` (default).\n- `on(updateJob)`:\n  - A job status update is requested and the job results are stored\n  - Implement your custom logic, how the job status should be updated\n  - Job data can be retrieved via `req.job`\n  - Job status transition is validated via `async checkStatusTransition(req, job, statusBefore, statusAfter)`\n    - Valid status transitions are defined in `this.statusTransitions`\n    - Check function and status transitions can be customized\n    - Final statuses are `completed`, `completedWithWarning`, `completedWithError`, `failed`, and `canceled`, no further status transitions are then allowed\n  - Job results are checked and processed via `async checkJobResults(req, job, results)`\n    - Valid results are valid, according to job results signature constraints (see below)\n    - Returns the processed job results to be inserted\n  - Call `await next()` to perform default implementation (update status to requested status)\n- `on(cancelJob)`:\n  - A job cancellation is requested\n  - Implement your custom logic, how the job should be canceled\n  - Job data can be retrieved via `req.job`\n  - Call `await next()` to perform default implementation (update status to `canceled`)\n\nThe job results signature is defined as follows:\n\n```cds\ntype ResultTypeCode   : String enum {\n  link;\n  data;\n  message;\n};\n\ntype MessageSeverityCode : String enum {\n  success;\n  info;\n  warning;\n  error;\n};\n\ntype JobResult {\n  name     : String(255) not null;\n  type     : ResultTypeCode not null;\n  link     : String(5000);\n  mimeType : String(255);\n  filename : String(5000);\n  data     : LargeBinary;\n  messages : many JobResultMessage;\n};\n\ntype JobResultMessage {\n  code      : String(255) not null;\n  values    : array of String(5000);\n  text      : String(5000);\n  severity  : MessageSeverityCode not null;\n  createdAt : Timestamp;\n  texts     : many JobResultMessageText;\n};\n\ntype JobResultMessageText {\n  locale : Locale not null;\n  text   : String(5000);\n};\n```\n\nMultiple job results can be passed for job update.\nThe following constraints apply for each job result type:\n\n- `link`:\n  - Properties `name` and `link` need to be provided\n  - Other properties are not allowed\n- `data`:\n  - Properties `name`, `mimeType`, `filename` and `data` need to be provided\n  - Data needs to be provided as a base64 encoded string\n  - Other properties are not allowed\n- `message`:\n  - Properties `name` and `messages` need to be provided\n  - Messages need to be provided as an array of job result messages\n  - Other properties are not allowed\n\nJob processing is performed as part of the Event Queue processing. The Event Queue is a framework built on top of CAP\nNode.js, designed specifically for efficient and streamlined asynchronous event processing. In case of errors, the Event Queue\nprovides resilient processing (circuit breaker, retry, load-balancing, etc.).\n\nIn addition, to overwriting the default implementation via an `on` handler, also additional `before` and `after` handlers can be registered.\n\n##### Test Queue\n\nIn test environment the Event Queue processing is disabled per default to simplify testing. See https://cap-js-community.github.io/event-queue/unit-testing.\nIn order to manually process event queue events of `ProcessingService` in test environment, the following code can be used in tests:\n\n```js\nimport cds from \"@sap/cds\";\nimport eventQueue from \"@cap-js-community/event-queue\";\nawait eventQueue.processEventQueue(new cds.EventContext(), \"CAP_OUTBOX\", \"sapafcsdk.scheduling.ProcessingService\");\n```\n\n##### Error Codes\n\nThe following error codes are defined to be used in exceptions as part of the stable interface (`x-extensible-enum`):\n\n- `jobCannotBeCanceled`: Jobs cannot be canceled in current status\n- `statusTransitionNotAllowed`: Status transition is not allowed for the current job status\n- ...\n\nSee full list in `error` schema of [Scheduling Servcie Provider API](./openapi/SchedulingProviderV1Service.openapi3.json).\n\n#### Job Provider\n\nA job provider service is already provided per default by the SDK, implementing\nthe [SAP Advanced Financial Closing Scheduling Service Provider Interface](https://hub.sap.com/api/SSPIV1).\nTherefore, focus can be put on additional custom provider logic (e.g., streaming of data from a remote location).\n\nThe **SAP Advanced Financial Closing Scheduling Service Provider Interface** is published on SAP Business Accelerator Hub\nunder the package **SAP Advanced Financial Closing** at https://api.sap.com/api/SSPIV1.\n\nTo implement a custom job provider, extend the job provider service definition as follows:\n\n**CDS file:** `/srv/scheduling-provider-service.cds`\n\n```cds\nusing sapafcsdk.scheduling.ProviderService from '@cap-js-community/sap-afc-sdk';\n\nannotate ProviderService with @impl: '/srv/scheduling-provider-service.js';\n```\n\n**Implementation file:** `/srv/scheduling-provider-service.js`\n\n```js\nimport sdk from \"@cap-js-community/sap-afc-sdk\";\n\nconst { SchedulingProviderService } = sdk;\n\nexport default class CustomSchedulingProviderService extends SchedulingProviderService {\n  async init() {\n    const { Job, JobResult } = this.entities;\n\n    this.on(\"CREATE\", Job, async (req, next) => {\n      // Your logic goes here\n      await next();\n    });\n\n    this.on(Job.actions.cancel, Job, async (req, next) => {\n      // Your logic goes here\n      await next();\n    });\n\n    this.on(JobResult.actions.data, JobResult, async (req, next) => {\n      // Your logic goes here\n      await next();\n    });\n\n    super.init();\n  }\n}\n```\n\nA stub implementation for a custom scheduling provider service can be generated via command:\n\n- Terminal: `afc add stub`\n\nAs part of the custom scheduling provider service implementation, the following operations can be implemented:\n\n- `on(\"CREATE\", Job)`:\n  - Validates and creates a new job instance\n  - Call `await next()` to perform default implementation\n  - `after`: Calls scheduling processing service function `processJob`\n- `on(Job.actions.cancel, Job)`:\n  - Cancels a job\n  - Call `await next()` to perform default implementation\n  - `after`: Calls scheduling processing service function `cancelJob`\n- `on(JobResult.actions.data, JobResult)`:\n  - Call `await next()` to perform default implementation\n  - Streams data of a job result (type `data`) from DB to response\n\nIn addition, to overwriting the default implementation via an `on`-handler, also additional `before` and `after` handlers can be registered.\n\n#### Periodic Job Sync\n\nA periodic scheduling job synchronization event named `sapafcsdk.scheduling.ProcessingService.syncJob` is running per default every **1 minute**\nin the Event Queue, to perform job synchronization from an external source. The default implementation is a no-op.\n\nThe event `syncJob` is registered automatically with cron interval `*/1 * * * *` in the Event Queue configuration.\nTo change the cron interval, the Event Queue configuration can be adjusted in the CDS env:\n\n**CDS Env:**\n\n```json\n{\n  \"cds\": {\n    \"requires\": {\n      \"sapafcsdk.scheduling.ProcessingService\": {\n        \"queued\": {\n          \"events\": {\n            \"syncJob\": {\n              \"cron\": \"*/2 * * * *\"\n            }\n          }\n        }\n      }\n    }\n  }\n}\n```\n\nThe `cron` interval option defines the periodicity of the scheduling job synchronization.\n\n**CDS file:** `/srv/scheduling-processing-service.cds`\n\n```cds\nusing sapafcsdk.scheduling.ProcessingService from '@cap-js-community/sap-afc-sdk';\n\nannotate ProcessingService with @impl: '/srv/scheduling-processing-service.js';\n```\n\n**Implementation file:** `/srv/scheduling-processing-service.js`\n\n```js\nimport sdk from \"@cap-js-community/sap-afc-sdk\";\n\nconst { SchedulingProcessingService } = sdk;\n\nexport default class CustomSchedulingProcessingService extends SchedulingProcessingService {\n  async init() {\n    const { syncJob } = this.operations;\n\n    this.on(syncJob, async (req, next) => {\n      // Your logic goes here\n      await next();\n    });\n\n    super.init();\n  }\n}\n```\n\nA stub implementation for periodic job sync can be generated via command:\n\n- Terminal: `afc add stub`\n\nDetails on how to implement a periodic event via Event Queue can be found in\n[Event-Queue documentation on Periodic Events](https://cap-js-community.github.io/event-queue/configure-event/#periodic-events).\n\n#### Notification\n\nThe service provider can be notified with special scheduling notifications via operation `notify`.\nThe `notification` capability is active per default, can be disabled by setting environment option:\n\n**CDS Env:**\n\n```json\n{\n  \"cds\": {\n    \"requires\": {\n      \"sap-afc-sdk\": {\n        \"capabilities\": {\n          \"supportsNotification\": false\n        }\n      }\n    }\n  }\n}\n```\n\nThe `notify` operation of the Scheduling Service Provider Interface can send multiple notifications at once.\nThe signature of a single notification is defined as follows:\n\n```cds\ntype Notification {\n  name  : String(255) not null;\n  ID    : String(255);\n  code  : String(255);\n  value : String(5000);\n};\n```\n\nAvailable notifications are:\n\n- `taskListStatusChanged`: Notification to inform about changed task list status.\n  - `name`: Notification name `taskListStatusChanged`\n  - `ID`: Task list ID\n  - `code`: Task list code\n  - `value`: New task list status\n\n**CDS file:** `/srv/scheduling-processing-service.cds`\n\n```cds\nusing sapafcsdk.scheduling.ProcessingService from '@cap-js-community/sap-afc-sdk';\n\nannotate ProcessingService with @impl: '/srv/scheduling-processing-service.js';\n```\n\n**Implementation file:** `/srv/scheduling-processing-service.js`\n\n```js\nimport sdk from \"@cap-js-community/sap-afc-sdk\";\n\nconst { SchedulingProcessingService } = sdk;\n\nexport default class CustomSchedulingProcessingService extends SchedulingProcessingService {\n  async init() {\n    const { notify } = this.operations;\n\n    this.on(notify, async (req, next) => {\n      // Your logic goes here\n      await next();\n    });\n\n    super.init();\n  }\n}\n```\n\nA stub implementation for notification handling can be generated via command:\n\n- Terminal: `afc add stub`\n\n### API\n\nThe SDK-based application exposes the scheduling provider API. The out-of-the-box open service broker implementation\ncan be used to manage service keys and access tokens to the API.\nAfter [Deployment](#deployment) the [Service Broker](#service-broker) can be registered in Cloud Foundry.\n\nAfter adding the broker to project via `afc add broker`, the default configuration is located at:\n\n- `srv/broker.json`: Open service broker configuration\n- `srv/catalog.json`: Open service broker catalog configuration\n\nIn addition, the broker configuration can be provided via options\nas part of CDS environment in `cds.requires.sap-afc-sdk.broker` section.\n\nMore details on how to use the service broker can be found in the [Service Broker](#service-broker) section.\n\n### Additional Settings\n\n#### Redis\n\nThe application can be scaled by adding a Redis cache to distribute workload across application instances:\n\nFor CAP Node.js Redis support can be added via command:\n\n- Terminal: `cds add redis`\n\nFor Node.js runtime, Redis is used by `@cap-js-community/event-queue`, `@cap-js-community/websocket` and `@cap-js-community/feature-toggle-library`\nmodules to process events, distribute websocket messages and store and distribute feature toggles values.\n\n#### Feature Toggles\n\nThe Feature Toggle Library is used to control the execution of the Event Queue.\nIt exposes endpoints to manage feature toggles:\n\n- `GET /rest/feature/state()`: Read current feature toggle state\n- `POST /rest/feature/redisUpdate`: Update feature toggle state\n\nSee `.http` files in [/http/toggles](./http/toggles) to call feature toggle endpoints.\nAn internal OAuth token needs to be fetched via [/http/auth/uaa.internal.cloud.http](./http/auth/uaa.internal.cloud.http)\nproviding credentials from the XSUAA instance or via calling:\n\n- Terminal: `afc api key -i`\n\n## CAP Java\n\nThe SAP Advanced Financial Closing SDK for CDS provides a plugin\nfor [SAP Cloud Application Programming Model (CAP) for Java](https://cap.cloud.sap/docs/java)\nto extend and integrate with SAP Advanced Financial Closing (AFC). Specifically, it provides an out-of-the-box\nimplementation of the [SAP Advanced Financial Closing Scheduling Service Provider Interface](https://hub.sap.com/api/SSPIV1)\nto expose a Scheduling Provider service to manage Job definitions and Jobs. Furthermore, it brings the following out-of-the-box virtues:\n\n- **API**: Exposes a RESTful API implementing the AFC Scheduling Provider Interface to manage Job definitions and Jobs\n- **Queue**: Provides a Queue to process and synchronize Jobs (periodically) asynchronously and resiliently (circuit breaker, retry,\n  load-balancing, etc.)\n- **Websocket**: Provides websocket connection support to monitor Job processing live\n- **UI**: Provides a UI5 application to monitor and cancel Jobs\n- **Broker**: Implements a service broker to manage service key management to API\n\n### Usage\n\n- Run `npm add @cap-js-community/sap-afc-sdk` in `com.sap.cds` CAP Java project\n- Execute `npm start` to start server\n  - Access the welcome page at http://localhost:8080\n  - Access Applications\n    - [/launchpad.html](http://localhost:8080/launchpad.html): Sandbox Launchpad\n    - [/scheduling.monitoring.job](http://localhost:8080/scheduling.monitoring.job): Standalone Scheduling Monitoring Job UI\n  - Access Service Endpoints\n    - Public API\n      - [/api/job-scheduling/v1](http://localhost:4004/api/job-scheduling/v1): Scheduling Provider API ([OpenAPI Swagger UI](http://localhost:8080/api-docs/api/job-scheduling/v1))\n    - OData API (UI)\n      - [/odata/v4/job-scheduling/monitoring](http://localhost:4004/odata/v4/job-scheduling/monitoring): Job Scheduling Monitoring ([$metadata](http://localhost:8080/odata/v4/job-scheduling/monitoring/$metadata))\n    - WebSocket API\n      - [/ws/job-scheduling](http://localhost:8080/ws/job-scheduling): Scheduling WebSocket endpoint\n    - CDS Internal API\n    - `sapafcsdk.scheduling.processingservice.ProcessingService`: Scheduling Processing service\n\n      ```java\n      @Autowired\n      private ProcessingService processingService;\n      ```\n\n    - `sapafcsdk.scheduling.websocketservice.WebsocketService`: Scheduling Websocket service\n\n      ```java\n      @Autowired\n      private WebsocketService websocketService;\n      ```\n\n### Architecture\n\nThe SAP Advanced Financial Closing SDK for CDS is built on the following architecture open source\nbuilding blocks as depicted in the following diagram:\n\n![Architecture Concept](./docs/assets/architecture_concept_java.svg)\n\nUsing the SAP Advanced Financial Closing SDK, a third-party scheduling provider can be built for SAP Advanced Financial Closing.\nThe architectural design of the SAP Advanced Financial Closing (AFC) SDK for implementing a Scheduling Provider is based\non the SAP Cloud Application Programming Model (CAP) and SAP Build Code.\n\nThe following diagram illustrates the high-level architecture of the SAP Advanced Financial Closing SDK for CDS (Java):\n\n![Architecture Design](./docs/assets/architecture_design_java.svg)\n\n**Key components and processing flow**:\n\n- **SAP Advanced Financial Closing (AFC):**\n  - Sends scheduling requests via AFC Scheduling Service Provider Interface using REST\n    API ([OpenAPI](https://hub.sap.com/api/SSPIV1))\n- **Scheduling Provider Service:**\n  - Handles incoming scheduling requests\n  - Creates scheduling jobs synchronously and places asynchronous requests into the Event Queue\n- **Scheduling Processing Service:**\n  - Processes scheduled jobs asynchronously\n  - Retrieves job requests from the Event Queue and executes them.\n- **Scheduling WebSocket Service:**\n  - Listens for status updates of scheduled jobs\n  - Notifies the Monitoring Scheduling Job UI via WebSockets when job statuses change\n- **Scheduling Monitoring Service:**\n  - Monitoring Scheduling Job UI (SAP Fiori Elements V4 / SAP UI5 application)\n  - Reads scheduling job details from the database\n  - Supports monitoring via OData V4 API\n  - Displays scheduling job statuses and updates in real-time via WebSockets\n- **Transactional Queue:**\n  - CDS Transactional Queue facilitates asynchronous job execution\n- **Database:**\n  - Stores job scheduling data in the database\n\n### Options\n\nOptions can be passed to SDK via Spring Boot environment in `sap-afc-sdk` section:\n\n- `capabilities: Object`: Capabilities configuration. Default is `{}`\n  - `capabilities.supportsNotification: Boolean`: Supports notification configuration. Default is `true`\n- `endpoints: Object`: Endpoint configuration. Default is `{}`\n  - `endpoints.approuter: String`: Url of approuter. Default is `null` (derived from conventions `<app>-srv`)\n  - `endpoints.server: String`: Url of server. Default is `null` (derived from environment, e.g. CF)\n- `api: Object`: API configuration on `/api` paths. Default see below\n  - `api.cors: Object`: Cross-Origin Resource Sharing (CORS) configuration cors module on `/api` paths. Default is `{ origin: true }`\n    - `api.cors.origin: Boolean | String | String[]`: Cross-Origin Resource Sharing (CORS) origin configuration. Default is `true` (allow approuter url)\n    - `api.cors.methods: String | String[]`: Cross-Origin Resource Sharing (CORS) 'allow methods' configuration. Default is `[]`\n    - `api.cors.heqaders: String | String[]`: Cross-Origin Resource Sharing (CORS) 'allow headers' configuration. Default is `[]`\n    - `api.cors.credentials: Boolean`: Cross-Origin Resource Sharing (CORS) 'allow credentials' configuration. Default is `true`\n- `ui: Object`: UI configuration. Default is `{}`\n  - `ui.enabled: Boolean`: UI apps are served. Default is `false` and `true` in `cloud`\n  - `ui.link: Boolean`: Fill link of jobs to served UI5 launchpad, if `null`. Default is `true`\n- `broker: Object`: Service broker configuration. Default is `{}`\n  - `broker.name: String`: Name of the broker. Default is `<project name>`\n  - `broker.enabled: Boolean`: Is broker enabled. Default is `false`\n  - `broker.user: String`: Name of the broker user. Default is `broker-user`\n  - `broker.credentialsHash: String`: Credentials hash of the broker user. Default is generated\n  - `broker.endpoints: Object`: Endpoints of the broker. Default is `{ api: \"/api\", job-scheduling-v1: \"/api/job-scheduling/v1\" }`\n  - `broker.oauth2-configuration.credential-types: String[]`: Credential types of the broker oauth2 configuration. Default is `[\"binding-secret\", \"x509\"]`\n  - `broker.authorities: String[]`: Scope authorities. Default is `[]`\n- `mockProcessing: Object`: Activate mocked job processing. Default is `{}`\n  - `mockProcessing.min: Number`: Minimum processing time in seconds. Default is `0`\n  - `mockProcessing.max: Number`: Maximum processing time in seconds. Default is `10`\n  - `mockProcessing.default: String`: Default processing status. Default is `completed`\n  - `mockProcessing.status: Object`: Status distribution values. Default is `{}`\n    - `mockProcessing.status.completed: Number`: Completed status distribution value. Default is `0`\n    - `mockProcessing.status.completedWithWarning: Number`: `Completed with Warning` status distribution value. Default is `0`\n    - `mockProcessing.status.completedWithError: Number`: `Completed with Error` status distribution value. Default is `0`\n    - `mockProcessing.status.failed: Number`: Failed status distribution value. Default is `0`\n- `syncJob: Object`: Sync job configuration. Default see below\n  - `cron: String`: Sync job cron interval. Default is `0 */1 * * * *`\n- `tenantCache: Object`: Tenant cache configuration. Default see below\n  - `cron: String`: Tenant cache invalidation cron interval. Default is `0 */30 * * * *`\n\n### Implement\n\nThe SDK provides a set of services to implement the job processing service and the scheduling provider service.\n\n#### Job Processing\n\nThe job processing service is responsible for processing the jobs.\n\n##### Mock Processing\n\nThe library includes a mocked processing for jump-start development, which is disabled by default\n(no `sap-afc-sdk.mock-processing` config in `application.yml`).\n\nSetting option `sap-afc-sdk.mockProcessing` a basic mocked job processing completes\njobs based on a random time value between `0-10` seconds:\n\n```yaml\nsap-afc-sdk:\n  mock-processing:\n    min: 0\n    max: 10\n    default: completed\n```\n\nThe project can be adjusted to use basic mock processing automatically via command:\n\n- Terminal: `afc add -b mock`\n\nMore advanced mocked Job processing can be configured by setting the\nfollowing [CDS env](https://cap.cloud.sap/docs/node.js/cds-env) options (as described in [options](#options)):\n\n```yaml\nsap-afc-sdk:\n  mock-processing:\n    min: 0\n    max: 10\n    default: completed\n    status:\n      completed: 0.5\n      completedWithWarning: 0.2\n      completedWithError: 0.2\n      failed: 0.1\n```\n\nThe project can be adjusted to use advanced mock processing automatically via command:\n\n- Terminal: `afc add -a mock`\n\nMock configuration can be adjusted in `application.yaml` afterward.\n\nTo disable mock processing remove config `sap-afc-sdk.mockProcessing`, e.g. via command:\n\n- Terminal: `afc add -x mock`\n\nThe default implementation of the job processing is already provided by the SDK. Focus can be put on\ncustom processing logic and the processing status update handling.\n\n##### Custom Processing\n\nTo implement custom job processing, extend the job processing service definition as follows:\n\n**Implementation file:** `srv/src/main/java/customer/scheduling/CustomSchedulingProcessingHandler.java`\n\n```java\npackage customer.scheduling;\n\nimport com.github.capjscommunity.sapafcsdk.model.sapafcsdk.scheduling.processingservice.*;\nimport com.github.capjscommunity.sapafcsdk.scheduling.base.SchedulingProcessingBase;\nimport com.sap.cds.services.handler.annotations.HandlerOrder;\nimport com.sap.cds.services.handler.annotations.On;\nimport com.sap.cds.services.handler.annotations.ServiceName;\nimport org.springframework.stereotype.Component;\n\n@Component\n@ServiceName(ProcessingService_.CDS_NAME)\npublic class CustomSchedulingProcessingHandler extends SchedulingProcessingBase {\n\n  @On(event = ProcessJobContext.CDS_NAME)\n  @HandlerOrder(HandlerOrder.EARLY)\n  public void processJob(ProcessJobContext context) {\n    // Your logic goes here\n    context.proceed();\n  }\n\n  @On(event = UpdateJobContext.CDS_NAME)\n  @HandlerOrder(HandlerOrder.EARLY)\n  public void updateJob(UpdateJobContext context) {\n    // Your logic goes here\n    context.proceed();\n  }\n\n  @On(event = CancelJobContext.CDS_NAME)\n  @HandlerOrder(HandlerOrder.EARLY)\n  public void cancelJob(CancelJobContext context) {\n    // Your logic goes here\n    context.proceed();\n  }\n\n  @On(event = SyncJobContext.CDS_NAME)\n  @HandlerOrder(HandlerOrder.EARLY)\n  public void syncJob(SyncJobContext context) {\n    // Your logic goes here\n    context.proceed();\n  }\n\n  @On(event = NotifyContext.CDS_NAME)\n  @HandlerOrder(HandlerOrder.EARLY)\n  public void notify(NotifyContext context) {\n    // Your logic goes here\n    context.proceed();\n  }\n}\n```\n\nA stub implementation for a custom scheduling processing service can be generated via command:\n\n- Terminal: `afc add stub`\n\nAs part of the custom scheduling process service implementation, the following operations can be implemented:\n\n- `processJob`:\n  - A new job instance was created and needs to be processed\n  - The job is due (start date time is reached), and the job is ready for processing\n  - Implement your custom logic, how the job should be processed\n  - Job ID is accessible via `context.get(\"ID\")`\n  - Test run can be identified via flag `context.get(\"testRun\")` (if job definition supports test mode)\n  - Call `context.proceed()` to perform default implementation (set status to `running`)\n  - Job update can be performed via `this.processJobUpdate()` providing the new status and job results\n    - e.g. `this.processJobUpdate(context, job, JobStatusCode.completed, results)`\n  - Throwing exceptions will automatically trigger the retry process in queue\n  - Disable mocked job processing by deleting `sap-afc-sdk.mockProcessing` (default).\n- `updateJob`:\n  - A job status update is requested and the job results are stored\n  - Implement your custom logic, how the job status should be updated\n  - Job ID is accessible via `context.get(\"ID\")`\n  - Job status transition is validated via `this.checkStatusTransition(context, job, statusBefore, statusAfter)`\n    - Valid status transitions are defined in `this.statusTransitions`\n    - Check function and status transitions can be customized\n    - Final statuses are `completed`, `completedWithWarning`, `completedWithError`, `failed`, and `canceled`, no further status transitions are then allowed\n  - Job results are checked and processed via `checkJobResults(context, job, results)`\n    - Valid results are valid, according to job results signature constraints (see below)\n    - Returns the processed job results to be inserted\n  - Call `context.proceed()` to perform default implementation (update status to requested status)\n- `cancelJob`:\n  - A job cancellation is requested\n  - Implement your custom logic, how the job should be canceled\n  - Job ID is accessible via `context.get(\"ID\")`\n  - Call `context.proceed()` to perform default implementation (update status to `canceled`)\n\nThe job results signature is defined as follows:\n\n```cds\ntype ResultTypeCode   : String enum {\n  link;\n  data;\n  message;\n};\n\ntype MessageSeverityCode : String enum {\n  success;\n  info;\n  warning;\n  error;\n};\n\ntype JobResult {\n  name     : String(255) not null;\n  type     : ResultTypeCode not null;\n  link     : String(5000);\n  mimeType : String(255);\n  filename : String(5000);\n  data     : LargeBinary;\n  messages : many JobResultMessage;\n};\n\ntype JobResultMessage {\n  code      : String(255) not null;\n  values    : array of String(5000);\n  text      : String(5000);\n  severity  : MessageSeverityCode not null;\n  createdAt : Timestamp;\n  texts     : many JobResultMessageText;\n};\n\ntype JobResultMessageText {\n  locale : Locale not null;\n  text   : String(5000);\n};\n```\n\nMultiple job results can be passed for job update.\nThe following constraints apply for each job result type:\n\n- `link`:\n  - Properties `name` and `link` need to be provided\n  - Other properties are not allowed\n- `data`:\n  - Properties `name`, `mimeType`, `filename` and `data` need to be provided\n  - Data needs to be provided as a base64 encoded string\n  - Other properties are not allowed\n- `message`:\n  - Properties `name` and `messages` need to be provided\n  - Messages need to be provided as an array of job result messages\n  - Other properties are not allowed\n\nJob processing is performed as part of the Event Queue processing. The Event Queue is a framework built on top of CAP\nNode.js, designed specifically for efficient and streamlined asynchronous event processing. In case of errors, the Event Queue\nprovides resilient processing (circuit breaker, retry, load-balancing, etc.).\n\nIn addition, to overwriting the default implementation via an `on` handler, also additional `before` and `after` handlers can be registered.\n\n##### Error Codes\n\nThe following error codes are defined to be used in exceptions as part of the stable interface (`x-extensible-enum`):\n\n- `statusTransitionNotAllowed`: Status transition is not allowed for the current job status\n\n#### Job Provider\n\nA job provider service is already provided per default by the SDK, implementing\nthe [SAP Advanced Financial Closing Scheduling Service Provider Interface](https://hub.sap.com/api/SSPIV1).\nTherefore, focus can be put on additional custom provider logic (e.g., streaming of data from a remote location).\n\nThe **SAP Advanced Financial Closing Scheduling Service Provider Interface** is published on SAP Business Accelerator Hub\nunder the package **SAP Advanced Financial Closing** at https://api.sap.com/api/SSPIV1.\n\nTo implement a custom job provider, extend the job provider service definition as follows:\n\n**Implementation file:** `srv/src/main/java/customer/scheduling/CustomSchedulingProviderHandler.java`\n\n```java\npackage customer.scheduling;\n\nimport com.github.capjscommunity.sapafcsdk.model.sapafcsdk.scheduling.providerservice.*;\nimport com.github.capjscommunity.sapafcsdk.scheduling.base.SchedulingProviderBase;\nimport com.sap.cds.services.cds.CdsCreateEventContext;\nimport com.sap.cds.services.cds.CqnService;\nimport com.sap.cds.services.handler.annotations.HandlerOrder;\nimport com.sap.cds.services.handler.annotations.On;\nimport com.sap.cds.services.handler.annotations.ServiceName;\nimport java.util.List;\nimport org.springframework.stereotype.Component;\n\n@Component\n@ServiceName(ProviderService_.CDS_NAME)\npublic class CustomSchedulingProviderHandler extends SchedulingProviderBase {\n\n  @On(event = CqnService.EVENT_CREATE, entity = Job_.CDS_NAME)\n  @HandlerOrder(HandlerOrder.EARLY)\n  public void createJob(CdsCreateEventContext context, List<Job> jobs) {\n    // Your logic goes here\n    context.proceed();\n  }\n\n  @On(event = JobCancelContext.CDS_NAME, entity = Job_.CDS_NAME)\n  @HandlerOrder(HandlerOrder.EARLY)\n  public void cancelJob(JobCancelContext context) {\n    // Your logic goes here\n    context.proceed();\n  }\n\n  @On(event = JobResultDataContext.CDS_NAME, entity = JobResult_.CDS_NAME)\n  @HandlerOrder(HandlerOrder.EARLY)\n  public void downloadData(JobResultDataContext context) {\n    // Your logic goes here\n    context.proceed();\n  }\n}\n```\n\nA stub implementation for a custom scheduling provider service can be generated via command:\n\n- Terminal: `afc add stub`\n\nAs part of the custom scheduling provider service implementation, the following operations can be implemented:\n\n- `createJob`:\n  - Validates and creates a new job instance\n  - Call `context.proceed()` to perform default implementation\n  - `after`: Calls scheduling processing service function `processJob`\n- `cancelJob`:\n  - Cancels a job\n  - Call `context.proceed()` to perform default implementation\n  - `after`: Calls scheduling processing service function `cancelJob`\n- `downloadData`:\n  - Call `context.proceed()` to perform default implementation\n  - Streams data of a job result (type `data`) from DB to response\n\nIn addition, to overwriting the default implementation via an `on`-handler, also additional `before` and `after` handlers can be registered.\n\n#### Periodic Job Sync\n\nA periodic scheduling job synchronization event named `SchedulingProcessingService.syncJob` is running per default every **1 minute**\nin Spring scheduling tasks, to perform job synchronization from an external source. The default implementation is a no-op.\n\nThe event `syncJob` is registered automatically with interval Spring scheduling configuration.\nTo change the interval, the `application.yaml` configuration can be adjusted in the Spring environment:\n\n**Application file:**\n\n```yaml\nsap-afc-sdk:\n  syncJob:\n    cron: 0 */2 * * * *\n```\n\n**Implementation file:** `srv/src/main/java/customer/scheduling/CustomSchedulingProcessingHandler.java`\n\n```java\npackage customer.scheduling;\n\nimport com.github.capjscommunity.sapafcsdk.model.sapafcsdk.scheduling.processingservice.*;\nimport com.github.capjscommunity.sapafcsdk.scheduling.base.SchedulingProcessingBase;\nimport com.sap.cds.services.handler.annotations.HandlerOrder;\nimport com.sap.cds.services.handler.annotations.On;\nimport com.sap.cds.services.handler.annotations.ServiceName;\nimport org.springframework.stereotype.Component;\n\n@Component\n@ServiceName(ProcessingService_.CDS_NAME)\npublic class CustomSchedulingProcessingHandler extends SchedulingProcessingBase {\n\n  @On(event = SyncJobContext.CDS_NAME)\n  @HandlerOrder(HandlerOrder.EARLY)\n  public void syncJob(SyncJobContext context) {\n    // Your logic goes here\n    context.proceed();\n  }\n}\n```\n\nA stub implementation for periodic job sync can be generated via command:\n\n- Terminal: `afc add stub`\n\n#### Notification\n\nThe service provider can be notified with special scheduling notifications via operation `notify`.\nThe `notification` capability is active per default, can be disabled by setting environment option:\n\n**Application file:**\n\n```yaml\nsap-afc-sdk:\n  capabilities:\n    supportsNotification: false\n```\n\nThe `notify` operation of the Scheduling Service Provider Interface can send multiple notifications at once.\nThe signature of a single notification is defined as follows:\n\n```cds\ntype Notification {\n  name  : String(255) not null;\n  ID    : String(255);\n  value : String(5000);\n};\n```\n\nAvailable notifications are:\n\n- `taskListStatusChanged`: Notification to inform about changed task list status.\n  - `name`: Notification name `taskListStatusChanged`\n  - `ID`: Task list ID\n  - `code`: Task list code\n  - `value`: New task list status\n\n**Implementation file:** `srv/src/main/java/customer/scheduling/CustomSchedulingProcessingHandler.java`\n\n```java\npackage customer.scheduling;\n\nimport com.github.capjscommunity.sapafcsdk.model.sapafcsdk.scheduling.processingservice.*;\nimport com.github.capjscommunity.sapafcsdk.scheduling.base.SchedulingProcessingBase;\nimport com.sap.cds.services.handler.annotations.HandlerOrder;\nimport com.sap.cds.services.handler.annotations.On;\nimport com.sap.cds.services.handler.annotations.ServiceName;\nimport org.springframework.stereotype.Component;\n\n@Component\n@ServiceName(ProcessingService_.CDS_NAME)\npublic class CustomSchedulingProcessingHandler extends SchedulingProcessingBase {\n\n  @On(event = NotifyContext.CDS_NAME)\n  @HandlerOrder(HandlerOrder.EARLY)\n  public void notify(NotifyContext context) {\n    // Your logic goes here\n    context.proceed();\n  }\n}\n```\n\nA stub implementation for notification handling can be generated via command:\n\n- Terminal: `afc add stub`\n\n### API\n\nThe SDK-based application exposes the scheduling provider API. The out-of-the-box open service broker implementation\ncan be used to manage service keys and access tokens to the API.\nAfter [Deployment](#deployment) the [Service Broker](#service-broker) can be registered in Cloud Foundry.\n\nAfter adding the broker to a project via `afc add broker`, the default configuration is located in `application.yaml` at:\n\n```yaml\nspring:\n  cloud:\n    openservicebroker:\n      catalog:\n        services: ...\n```\n\nFor details see [Spring Cloud Open Service Broker](https://docs.spring.io/spring-cloud-open-service-broker) documentation.\n\nMore details on how to use the service broker can be found in the [Service Broker](#service-broker) section.\n\n## Deployment\n\nTo fully test the application, also accessing APIs from external, a deployment needs to be performed.\nBTP offers different deployment options, depending on the target environment (Cloud Foundry or Kyma).\n\n### Cloud Foundry\n\n- Initialize project for Cloud Foundry:\n  - Terminal: `afc init cf`\n- CDS Upgrade:\n  - Terminal: `cds up --to cf`\n- For details see guide [Deployment to CF](https://cap.cloud.sap/docs/guides/deployment/to-cf)\n\n### Kyma\n\n- Initialize project for Kyma:\n  - Terminal: `afc init kyma`\n- Configuration:\n  - Set global domain in `chart/values.yaml`\n  - Set global image registry in `chart/values.yaml`\n  - Set repository in `containerize.yaml`\n  - Set endpoints to `approuter` and `server` in `sap-afc-sdk` env to Kyma API rule hosts\n- CDS Upgrade:\n  - Terminal: `cds up --to k8s -n <namespace>`\n- For details see guide [Deployment to Kyma](https://cap.cloud.sap/docs/guides/deployment/to-kyma)\n\n## Service Broker\n\nAn Open Service Broker compliant broker implementation can be added via AFC SDK to the CAP project using XSUAA for authentication.\nThe broker is used to manage service key management to the API in a Cloud Foundry environment.\n\n> For AFC SDK feature `broker` the auth strategy `xsuaa` with plan `broker` is required\n\n- Add broker and service configuration:\n  - Terminal: `afc add broker`\n  - Auth strategy for service `xsuaa` with plan `broker` is applied via `cds add xsuaa`\n- Deploy to CF (see [Deployment](#deployment) to [Cloud Foundry](#cloud-foundry))\n- Get API key credentials\n  - Terminal: `afc api key`\n- Use API key credentials\n  - Swagger UI:\n    - Open URL: `https://<server-url>/api-docs/api/job-scheduling/v1/`\n    - Click `Authorize` and provide key credentials for `client_id` and `client_secret`\n    - Try out endpoints\n  - HTTP Client:\n    - Add [.http](#http-files) files\n    - Update .http files placeholders\n      - Terminal: `afc api key -h`\n    - Perform OAuth token request using key credentials (clientId, clientSecret)\n      - See [http/auth/uaa.cloud.http](./http/auth/uaa.cloud.http) for getting an OAuth token\n      - Via CLI:\n        - Terminal: `afc api key -t`\n    - Call API using OAuth token\n      - See `.http` files in [/http](./http) to call API endpoints\n      - See `.http` files in [/http/scheduling](./http/scheduling) to call scheduling provider API endpoints\n    - Clear credentials in .http files via\n      - Terminal: `afc api key -c`\n  - Destination:\n    - A destination file for an API endpoint can be created via command:\n      - Terminal: `afc add key -d -e <endpoint>`\n    - A destination file for Job Scheduling Provider API can be created via command:\n      - Terminal: `afc add key -d -j`\n- Reset API management in CF\n  - Terminal: `afc api key -r`\n\n> Own broker is not necessary for projects using IAS-based authentication. SAP Identity Services brings its own service broker implementation\n> and supports App2App communication as described at https://cap.cloud.sap/docs/guides/security/remote-authentication#app-to-app.\n\n## Miscellaneous\n\n### Testing\n\nThe application can be tested locally using the following steps:\n\n- Start application\n  - Terminal: `npm start`\n- Open the welcome page\n  - Browser:\n    - CAP Node.js: http://localhost:4004\n    - CAP Java: http://localhost:8080\n\n#### Sample data\n\nTo add sample job definitions and job instances, run:\n\n- Terminal: `afc add sample`\n\nTest data will be placed at `/db/data`\n\n#### Unit-Tests\n\nTo add unit-tests for testing the API endpoints, run:\n\n- Terminal: `afc add test`\n\nTest files will be placed at `/test`.\n\n#### .http files\n\nTo add `.http` files for testing the API endpoints run\n\n- Terminal: `afc add http`\n\nHTTP files will be placed at `/http`.\n\n### Authorization\n\n#### Authentication Method\n\nThe authentication strategy can be configured via CDS env according to [CDS documentation](https://cap.cloud.sap/docs/node.js/authentication#strategies).\nFor production scenarios, it's recommended to use IAS-based (kind: `ias`) authentication or XSUAA-based authentication (kind: `xsuaa`).\n\nFor XSUAA-based authentication, the broker is used to manage service key management to the API in a Cloud Foundry environment.\n\n- Terminal: `afc add broker`\n- Service `xsuaa` with plan `broker` is applied via `cds add xsuaa`\n- [Service Broker](#service-broker) feature can be used to manage service keys and access tokens\n\n> For AFC SDK feature `broker` the auth strategy `xsuaa` with plan `broker` is required:\n\n#### Service Restrictions\n\nScheduling Provider Service can be restricted for authorization adding `@requires` annotation:\n\n```cds\nusing sapafcsdk.scheduling.ProviderService from '@cap-js-community/sap-afc-sdk';\n\nannotate ProviderService with @requires: 'JobScheduling';\n```\n\nDetails can be found in [CDS-based Authorization](https://cap.cloud.sap/docs/guides/security/authorization).\n\n### Work Zone\n\nFor development and testing purposes SDK UIs are served as part of the server. Exposed UIs can be accessed via the\nserver welcome page. For productive usage, UIs should be served via HTML5 repo:\n\n- Add SDK Apps to HTML5 Repo (copy to project)\n  - Terminal: `afc add app`\n- Work Zone and HTML5 Repo features are added automatically via `cds add workzone,html5-repo`\n- Set up and configure SAP Work Zone instance using HTML5 Apps Content Channel\n  - Add `Monitor Scheduling Jobs` app to Content Explorer\n  - Assign an app to a group, role, and site to be accessible\n- (CAP Node.js) Disable UI served in server via CDS env: `cds.requires.sap-afc-sdk.ui: false`\n- (Optional) Apps from AFC SDK can also be copied over into a project at `/app` for further adjustments\n  - Terminal: `afc add app`\n\n### Multitenancy\n\nThe project can be enabled for multitenancy by following the guide:\nhttps://cap.cloud.sap/docs/guides/multitenancy/#enable-multitenancy\n\nThe MTX Tool is used to manage the application lifecycle. It can be used to manage the application in Cloud Foundry.\nDetails can be found at https://github.com/cap-js-community/mtx-tool.\n\n## Support, Feedback, Contributing\n\nThis project is open to feature requests/suggestions, bug reports, etc. via [GitHub issues](https://github.com/cap-js-community/sap-afc-sdk/issues). Contribution and feedback are encouraged and always welcome. For more information about how to contribute, the project structure, as well as additional contribution information, see our [Contribution Guidelines](CONTRIBUTING.md).\n\n## Code of Conduct\n\nWe as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone. By participating in this project, you agree to abide by its [Code of Conduct](CODE_OF_CONDUCT.md) at all times.\n\n## Licensing\n\nCopyright 2025 SAP SE or an SAP affiliate company and sap-afc-sdk contributors. Please see our [LICENSE](LICENSE) for copyright and license information. Detailed information including third-party components and their licensing/copyright information is available [via the REUSE tool](https://api.reuse.software/info/github.com/cap-js-community/sap-afc-sdk).\n","readmeFilename":"README.md"}