account-lookup-service 15.5.0-iso.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (209) hide show
  1. package/.circleci/config.yml +11 -0
  2. package/.ncurc.yaml +6 -0
  3. package/.nvmrc +1 -0
  4. package/.nycrc.yml +20 -0
  5. package/.versionrc +15 -0
  6. package/CHANGELOG.md +330 -0
  7. package/CODEOWNERS +38 -0
  8. package/Dockerfile +45 -0
  9. package/LICENSE.md +10 -0
  10. package/README.md +252 -0
  11. package/audit-ci.jsonc +32 -0
  12. package/audit-resolve.json +161 -0
  13. package/config/default.json +109 -0
  14. package/config/knexfile.js +21 -0
  15. package/docker/account-lookup-service/default.json +106 -0
  16. package/docker/account-lookup-service/make-default-json.sh +5 -0
  17. package/docker/account-lookup-service/override.json +15 -0
  18. package/docker/central-ledger/default.json +458 -0
  19. package/docker/config-modifier/account-lookup-service.js +31 -0
  20. package/docker/kafka/consumer.properties +26 -0
  21. package/docker/kafka/producer.properties +45 -0
  22. package/docker/kafka/server.properties +143 -0
  23. package/docker/kafka/tools-log4j.properties +21 -0
  24. package/docker/mock-proxy/Dockerfile +15 -0
  25. package/docker/mock-proxy/package-lock.json +4986 -0
  26. package/docker/mock-proxy/package.json +24 -0
  27. package/docker/mock-proxy/src/config.ts +14 -0
  28. package/docker/mock-proxy/src/server.ts +94 -0
  29. package/docker/mock-proxy/src/utils.ts +29 -0
  30. package/docker/mock-proxy/tsconfig.json +24 -0
  31. package/docker/sql-init/01_permissions.sql +2 -0
  32. package/docker/sql-init-central-ledger/01_permissions.sql +2 -0
  33. package/docker/wait-for/wait-for-account-lookup-service.sh +10 -0
  34. package/docker/wait-for/wait-for-central-ledger.sh +11 -0
  35. package/docker/wait-for/wait-for-kafka.sh +7 -0
  36. package/docker/wait-for/wait-for-ml-api-adapter.sh +9 -0
  37. package/docker/wait-for/wait-for-mockserver.sh +20 -0
  38. package/docker/wait-for/wait-for-mysql-als.sh +14 -0
  39. package/docker/wait-for/wait-for-mysql-central-ledger.sh +11 -0
  40. package/docker/wait-for/wait-for-mysql.sh +11 -0
  41. package/docker/wait-for/wait-for-objstore.sh +12 -0
  42. package/docker/wait-for/wait-for.env +18 -0
  43. package/docker/wait-for/wait-for.sh +81 -0
  44. package/docker-compose.integration.yml +29 -0
  45. package/docker-compose.yml +243 -0
  46. package/jest-int.config.js +8 -0
  47. package/jest.config.js +16 -0
  48. package/jsdoc.json +38 -0
  49. package/migrations/01_currency.js +42 -0
  50. package/migrations/02_endpointType.js +43 -0
  51. package/migrations/03_endpointType-indexes.js +37 -0
  52. package/migrations/04_partyIdType.js +43 -0
  53. package/migrations/05_partyIdType-indexes.js +38 -0
  54. package/migrations/08_oracleEndpoint.js +51 -0
  55. package/migrations/09_oracleEndpoint-indexes.js +41 -0
  56. package/migrations/10_oracleEndpoint-remove-constraints.js +38 -0
  57. package/package.json +180 -0
  58. package/scripts/_wait4_all.js +143 -0
  59. package/scripts/test-functional.sh +76 -0
  60. package/secrets/jwsSigningKey.key +27 -0
  61. package/seeds/currency.js +765 -0
  62. package/seeds/endpointType.js +65 -0
  63. package/seeds/partyIdType.js +79 -0
  64. package/src/api/endpointcache.js +67 -0
  65. package/src/api/health.js +66 -0
  66. package/src/api/index.js +85 -0
  67. package/src/api/oracles/{ID}.js +100 -0
  68. package/src/api/oracles.js +96 -0
  69. package/src/api/participants/{ID}/error.js +44 -0
  70. package/src/api/participants/{ID}.js +44 -0
  71. package/src/api/participants/{Type}/{ID}/error.js +74 -0
  72. package/src/api/participants/{Type}/{ID}/{SubId}/error.js +68 -0
  73. package/src/api/participants/{Type}/{ID}/{SubId}.js +113 -0
  74. package/src/api/participants/{Type}/{ID}.js +133 -0
  75. package/src/api/participants.js +63 -0
  76. package/src/api/parties/{Type}/{ID}/error.js +66 -0
  77. package/src/api/parties/{Type}/{ID}/{SubId}/error.js +56 -0
  78. package/src/api/parties/{Type}/{ID}/{SubId}.js +77 -0
  79. package/src/api/parties/{Type}/{ID}.js +98 -0
  80. package/src/api/routes.js +294 -0
  81. package/src/constants.js +16 -0
  82. package/src/domain/oracle/index.js +33 -0
  83. package/src/domain/oracle/oracle.js +234 -0
  84. package/src/domain/participants/index.js +35 -0
  85. package/src/domain/participants/participants.js +560 -0
  86. package/src/domain/parties/getPartiesByTypeAndID.js +239 -0
  87. package/src/domain/parties/index.js +32 -0
  88. package/src/domain/parties/parties.js +215 -0
  89. package/src/domain/parties/utils.js +84 -0
  90. package/src/domain/timeout/dto.js +48 -0
  91. package/src/domain/timeout/index.js +104 -0
  92. package/src/handlers/TimeoutHandler.js +94 -0
  93. package/src/handlers/index.js +70 -0
  94. package/src/handlers/monitoring/index.js +51 -0
  95. package/src/handlers/monitoring/plugins/health.js +61 -0
  96. package/src/handlers/monitoring/plugins/metrics.js +48 -0
  97. package/src/handlers/register.js +102 -0
  98. package/src/index.js +66 -0
  99. package/src/interface/admin-swagger.yaml +804 -0
  100. package/src/interface/admin_swagger.json +959 -0
  101. package/src/interface/api-swagger-iso20022-parties.yaml +1734 -0
  102. package/src/interface/api-swagger.yaml +1733 -0
  103. package/src/interface/api_swagger.json +3046 -0
  104. package/src/interface/fspiop-rest-v2.0-ISO20022_parties.yaml +2256 -0
  105. package/src/interface/thirdparty/admin-swagger.yaml +808 -0
  106. package/src/interface/thirdparty/admin_swagger.json +961 -0
  107. package/src/interface/thirdparty/api-swagger.yaml +1739 -0
  108. package/src/interface/thirdparty/api_swagger.json +3142 -0
  109. package/src/lib/argv.js +39 -0
  110. package/src/lib/cache.js +126 -0
  111. package/src/lib/config.js +183 -0
  112. package/src/lib/db.js +26 -0
  113. package/src/lib/headers.js +53 -0
  114. package/src/lib/healthCheck/subServiceHealth.js +84 -0
  115. package/src/lib/index.js +11 -0
  116. package/src/lib/migrator.js +17 -0
  117. package/src/lib/requestLogger.js +54 -0
  118. package/src/lib/util.js +66 -0
  119. package/src/metrics/handler.js +33 -0
  120. package/src/metrics/plugin.js +52 -0
  121. package/src/metrics/routes.js +43 -0
  122. package/src/models/currency/currency.js +48 -0
  123. package/src/models/currency/index.js +32 -0
  124. package/src/models/endpointType/endpointType.js +48 -0
  125. package/src/models/endpointType/index.js +32 -0
  126. package/src/models/misc/migrationLock.js +49 -0
  127. package/src/models/oracle/facade.js +341 -0
  128. package/src/models/oracle/index.js +41 -0
  129. package/src/models/oracle/oracleEndpoint.js +192 -0
  130. package/src/models/oracle/oracleEndpointCached.js +108 -0
  131. package/src/models/participantEndpoint/facade.js +238 -0
  132. package/src/models/partyIdType/index.js +32 -0
  133. package/src/models/partyIdType/partyIdType.js +41 -0
  134. package/src/plugins.js +139 -0
  135. package/src/server.js +199 -0
  136. package/test/fixtures/index.js +131 -0
  137. package/test/fixtures/iso.js +110 -0
  138. package/test/integration/.env +8 -0
  139. package/test/integration/api/parties.test.js +137 -0
  140. package/test/integration/constants.js +20 -0
  141. package/test/integration/domain/oracle/index.test.js +324 -0
  142. package/test/integration/domain/timeout/index.test.js +75 -0
  143. package/test/integration/env.sh +15 -0
  144. package/test/integration/example.test.js +12 -0
  145. package/test/integration/models/currency/currency.test.js +68 -0
  146. package/test/integration/plugins.test.js +62 -0
  147. package/test/integration/prepareTestParticipants.js +30 -0
  148. package/test/integration/setup.js +5 -0
  149. package/test/integration-config.json +81 -0
  150. package/test/integration-runner.sh +108 -0
  151. package/test/unit/api/health.test.js +142 -0
  152. package/test/unit/api/oracles/{ID}.test.js +264 -0
  153. package/test/unit/api/oracles.test.js +173 -0
  154. package/test/unit/api/participants/participants.test.js +117 -0
  155. package/test/unit/api/participants/{Type}/{ID}/error.test.js +155 -0
  156. package/test/unit/api/participants/{Type}/{ID}/{SubId}/error.test.js +131 -0
  157. package/test/unit/api/participants/{Type}/{ID}/{SubId}.test.js +377 -0
  158. package/test/unit/api/participants/{Type}/{ID}.test.js +383 -0
  159. package/test/unit/api/participants.test.js +108 -0
  160. package/test/unit/api/parties/endpointcache.test.js +83 -0
  161. package/test/unit/api/parties/parties.test.js +102 -0
  162. package/test/unit/api/parties/{Type}/{ID}/error.test.js +145 -0
  163. package/test/unit/api/parties/{Type}/{ID}/{SubId}/error.test.js +141 -0
  164. package/test/unit/api/parties/{Type}/{ID}/{SubId}.test.js +241 -0
  165. package/test/unit/api/parties/{Type}/{ID}.test.js +240 -0
  166. package/test/unit/domain/oracle/oracle.test.js +505 -0
  167. package/test/unit/domain/participants/participants.test.js +1724 -0
  168. package/test/unit/domain/parties/parties.test.js +940 -0
  169. package/test/unit/domain/timeout/dto.test.js +28 -0
  170. package/test/unit/domain/timeout/index.test.js +81 -0
  171. package/test/unit/handlers/TimeoutHandler.test.js +125 -0
  172. package/test/unit/handlers/index.test.js +56 -0
  173. package/test/unit/handlers/register.test.js +90 -0
  174. package/test/unit/index.test.js +139 -0
  175. package/test/unit/iso20022/partiesValidation.test.js +129 -0
  176. package/test/unit/lib/TransformFacades.test.js +18 -0
  177. package/test/unit/lib/argv.test.js +40 -0
  178. package/test/unit/lib/cache.test.js +172 -0
  179. package/test/unit/lib/config.test.js +108 -0
  180. package/test/unit/lib/healthCheck/subServiceHealth.test.js +89 -0
  181. package/test/unit/lib/migrator.test.js +52 -0
  182. package/test/unit/lib/requestLogger.test.js +115 -0
  183. package/test/unit/lib/util.test.js +68 -0
  184. package/test/unit/mocks.js +66 -0
  185. package/test/unit/models/currency/currency.test.js +91 -0
  186. package/test/unit/models/endpointType/endpointType.test.js +69 -0
  187. package/test/unit/models/misc/migrationLock.test.js +96 -0
  188. package/test/unit/models/oracle/facade.test.js +546 -0
  189. package/test/unit/models/oracle/oracleEndpoint.test.js +409 -0
  190. package/test/unit/models/oracle/oracleEndpointCached.test.js +153 -0
  191. package/test/unit/models/participantEndpoint/facade.test.js +295 -0
  192. package/test/unit/models/partyIdType/partyIdType.test.js +88 -0
  193. package/test/unit/plugins.test.js +89 -0
  194. package/test/unit/setup.js +7 -0
  195. package/test/util/apiClients/AlsApiClient.js +44 -0
  196. package/test/util/apiClients/BasicApiClient.js +34 -0
  197. package/test/util/apiClients/ProxyApiClient.js +25 -0
  198. package/test/util/apiClients/index.js +7 -0
  199. package/test/util/helper.js +332 -0
  200. package/test/util/index.js +11 -0
  201. package/test/util/mockgen.js +43 -0
  202. package/test/util/onboarding.js +132 -0
  203. package/test/util/scripts/addAlsDb.sh +33 -0
  204. package/test/util/scripts/configureMockServer.sh +35 -0
  205. package/test/util/scripts/env.sh +19 -0
  206. package/test/util/scripts/populateTestData.sh +62 -0
  207. package/test/util/scripts/startMockCentralServer.sh +45 -0
  208. package/test/util/scripts/startMockOracleServer.sh +45 -0
  209. package/test/util/testConfig.js +44 -0
@@ -0,0 +1,143 @@
1
+ # Licensed to the Apache Software Foundation (ASF) under one or more
2
+ # contributor license agreements. See the NOTICE file distributed with
3
+ # this work for additional information regarding copyright ownership.
4
+ # The ASF licenses this file to You under the Apache License, Version 2.0
5
+ # (the "License"); you may not use this file except in compliance with
6
+ # the License. You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
16
+ # see kafka.server.KafkaConfig for additional details and defaults
17
+
18
+ ############################# Server Basics #############################
19
+
20
+ # The id of the broker. This must be set to a unique integer for each broker.
21
+ broker.id=0
22
+
23
+ ############################# Socket Server Settings #############################
24
+
25
+ # The address the socket server listens on. It will get the value returned from
26
+ # java.net.InetAddress.getCanonicalHostName() if not configured.
27
+ # FORMAT:
28
+ # listeners = listener_name://host_name:port
29
+ # EXAMPLE:
30
+ # listeners = PLAINTEXT://your.host.name:9092
31
+
32
+ #use this configuration to access Kafka both inside docker and outside
33
+ #reference: https://rmoff.net/2018/08/02/kafka-listeners-explained/
34
+ listeners=LISTENER_DOCKER://kafka:29092,LISTENER_HOST://kafka:9092
35
+
36
+ # Hostname and port the broker will advertise to producers and consumers. If not set,
37
+ # it uses the value for "listeners" if configured. Otherwise, it will use the value
38
+ # returned from java.net.InetAddress.getCanonicalHostName().
39
+ #advertised.listeners=PLAINTEXT://your.host.name:9092
40
+ advertised.listeners=LISTENER_DOCKER://kafka:29092,LISTENER_HOST://localhost:9092
41
+
42
+ # Maps listener names to security protocols, the default is for them to be the same. See the config documentation for more details
43
+ #listener.security.protocol.map=PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL
44
+ listener.security.protocol.map=LISTENER_DOCKER:PLAINTEXT,LISTENER_HOST:PLAINTEXT
45
+ inter.broker.listener.name=LISTENER_DOCKER
46
+
47
+
48
+ # The number of threads that the server uses for receiving requests from the network and sending responses to the network
49
+ num.network.threads=3
50
+
51
+ # The number of threads that the server uses for processing requests, which may include disk I/O
52
+ num.io.threads=8
53
+
54
+ # The send buffer (SO_SNDBUF) used by the socket server
55
+ socket.send.buffer.bytes=102400
56
+
57
+ # The receive buffer (SO_RCVBUF) used by the socket server
58
+ socket.receive.buffer.bytes=102400
59
+
60
+ # The maximum size of a request that the socket server will accept (protection against OOM)
61
+ socket.request.max.bytes=104857600
62
+
63
+
64
+ ############################# Log Basics #############################
65
+
66
+ # A comma separated list of directories under which to store log files
67
+ log.dirs=/tmp/kafka-logs
68
+
69
+ # The default number of log partitions per topic. More partitions allow greater
70
+ # parallelism for consumption, but this will also result in more files across
71
+ # the brokers.
72
+ num.partitions=1
73
+
74
+ # The number of threads per data directory to be used for log recovery at startup and flushing at shutdown.
75
+ # This value is recommended to be increased for installations with data dirs located in RAID array.
76
+ num.recovery.threads.per.data.dir=1
77
+
78
+ ############################# Internal Topic Settings #############################
79
+ # The replication factor for the group metadata internal topics "__consumer_offsets" and "__transaction_state"
80
+ # For anything other than development testing, a value greater than 1 is recommended for to ensure availability such as 3.
81
+ offsets.topic.replication.factor=1
82
+ transaction.state.log.replication.factor=1
83
+ transaction.state.log.min.isr=1
84
+
85
+ ############################# Log Flush Policy #############################
86
+
87
+ # Messages are immediately written to the filesystem but by default we only fsync() to sync
88
+ # the OS cache lazily. The following configurations control the flush of data to disk.
89
+ # There are a few important trade-offs here:
90
+ # 1. Durability: Unflushed data may be lost if you are not using replication.
91
+ # 2. Latency: Very large flush intervals may lead to latency spikes when the flush does occur as there will be a lot of data to flush.
92
+ # 3. Throughput: The flush is generally the most expensive operation, and a small flush interval may lead to excessive seeks.
93
+ # The settings below allow one to configure the flush policy to flush data after a period of time or
94
+ # every N messages (or both). This can be done globally and overridden on a per-topic basis.
95
+
96
+ # The number of messages to accept before forcing a flush of data to disk
97
+ #log.flush.interval.messages=10000
98
+
99
+ # The maximum amount of time a message can sit in a log before we force a flush
100
+ #log.flush.interval.ms=1000
101
+
102
+ ############################# Log Retention Policy #############################
103
+
104
+ # The following configurations control the disposal of log segments. The policy can
105
+ # be set to delete segments after a period of time, or after a given size has accumulated.
106
+ # A segment will be deleted whenever *either* of these criteria are met. Deletion always happens
107
+ # from the end of the log.
108
+
109
+ # The minimum age of a log file to be eligible for deletion due to age
110
+ log.retention.hours=168
111
+
112
+ # A size-based retention policy for logs. Segments are pruned from the log unless the remaining
113
+ # segments drop below log.retention.bytes. Functions independently of log.retention.hours.
114
+ #log.retention.bytes=1073741824
115
+
116
+ # The maximum size of a log segment file. When this size is reached a new log segment will be created.
117
+ log.segment.bytes=1073741824
118
+
119
+ # The interval at which log segments are checked to see if they can be deleted according
120
+ # to the retention policies
121
+ log.retention.check.interval.ms=300000
122
+
123
+ ############################# Zookeeper #############################
124
+
125
+ # Zookeeper connection string (see zookeeper docs for details).
126
+ # This is a comma separated host:port pairs, each corresponding to a zk
127
+ # server. e.g. "127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002".
128
+ # You can also append an optional chroot string to the urls to specify the
129
+ # root directory for all kafka znodes.
130
+ zookeeper.connect=localhost:2181
131
+
132
+ # Timeout in ms for connecting to zookeeper
133
+ zookeeper.connection.timeout.ms=6000
134
+
135
+
136
+ ############################# Group Coordinator Settings #############################
137
+
138
+ # The following configuration specifies the time, in milliseconds, that the GroupCoordinator will delay the initial consumer rebalance.
139
+ # The rebalance will be further delayed by the value of group.initial.rebalance.delay.ms as new members join the group, up to a maximum of max.poll.interval.ms.
140
+ # The default value for this is 3 seconds.
141
+ # We override this to 0 here as it makes for a better out-of-the-box experience for development and testing.
142
+ # However, in production environments the default value of 3 seconds is more suitable as this will help to avoid unnecessary, and potentially expensive, rebalances during application startup.
143
+ group.initial.rebalance.delay.ms=0
@@ -0,0 +1,21 @@
1
+ # Licensed to the Apache Software Foundation (ASF) under one or more
2
+ # contributor license agreements. See the NOTICE file distributed with
3
+ # this work for additional information regarding copyright ownership.
4
+ # The ASF licenses this file to You under the Apache License, Version 2.0
5
+ # (the "License"); you may not use this file except in compliance with
6
+ # the License. You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
16
+ log4j.rootLogger=WARN, stderr
17
+
18
+ log4j.appender.stderr=org.apache.log4j.ConsoleAppender
19
+ log4j.appender.stderr.layout=org.apache.log4j.PatternLayout
20
+ log4j.appender.stderr.layout.ConversionPattern=[%d] %p %m (%c)%n
21
+ log4j.appender.stderr.Target=System.err
@@ -0,0 +1,15 @@
1
+ ARG NODE_VERSION=lts-alpine
2
+ ARG USERNAME=ml-user
3
+
4
+ FROM node:${NODE_VERSION}
5
+ ARG USERNAME
6
+
7
+ WORKDIR /opt/app
8
+ COPY tsconfig.json package*.json ./
9
+ COPY src ./src
10
+ RUN npm ci
11
+
12
+ RUN adduser -D ${USERNAME}
13
+ USER ${USERNAME}
14
+
15
+ CMD [ "npm" , "start" ]