@appconda/nextjs 1.0.112 → 1.0.113

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (307) hide show
  1. package/package.json +3 -3
  2. package/dist/actions/actionClient.d.ts +0 -10
  3. package/dist/actions/actionClient.js +0 -38
  4. package/dist/actions/auth.d.ts +0 -1
  5. package/dist/actions/auth.js +0 -6
  6. package/dist/actions/authOptions.d.ts +0 -5
  7. package/dist/actions/authOptions.js +0 -235
  8. package/dist/actions/index.d.ts +0 -3
  9. package/dist/actions/index.js +0 -4
  10. package/dist/actions/nextAuthHandler.d.ts +0 -1
  11. package/dist/actions/nextAuthHandler.js +0 -6
  12. package/dist/actions/nodes.d.ts +0 -4
  13. package/dist/actions/nodes.js +0 -15
  14. package/dist/client.d.ts +0 -141
  15. package/dist/client.js +0 -335
  16. package/dist/decorators/Cache.d.ts +0 -1
  17. package/dist/decorators/Cache.js +0 -79
  18. package/dist/decorators/CacheKey.d.ts +0 -1
  19. package/dist/decorators/CacheKey.js +0 -9
  20. package/dist/decorators/Invalidate.d.ts +0 -1
  21. package/dist/decorators/Invalidate.js +0 -47
  22. package/dist/enums/api-service.d.ts +0 -13
  23. package/dist/enums/api-service.js +0 -15
  24. package/dist/enums/api.d.ts +0 -5
  25. package/dist/enums/api.js +0 -7
  26. package/dist/enums/auth-method.d.ts +0 -9
  27. package/dist/enums/auth-method.js +0 -11
  28. package/dist/enums/authentication-factor.d.ts +0 -6
  29. package/dist/enums/authentication-factor.js +0 -7
  30. package/dist/enums/authenticator-type.d.ts +0 -3
  31. package/dist/enums/authenticator-type.js +0 -4
  32. package/dist/enums/browser.d.ts +0 -16
  33. package/dist/enums/browser.js +0 -18
  34. package/dist/enums/compression.d.ts +0 -5
  35. package/dist/enums/compression.js +0 -7
  36. package/dist/enums/credit-card.d.ts +0 -18
  37. package/dist/enums/credit-card.js +0 -20
  38. package/dist/enums/database-usage-range.d.ts +0 -5
  39. package/dist/enums/database-usage-range.js +0 -7
  40. package/dist/enums/email-template-locale.d.ts +0 -133
  41. package/dist/enums/email-template-locale.js +0 -135
  42. package/dist/enums/email-template-type.d.ts +0 -9
  43. package/dist/enums/email-template-type.js +0 -11
  44. package/dist/enums/entities/EntityLimitType.d.ts +0 -4
  45. package/dist/enums/entities/EntityLimitType.js +0 -6
  46. package/dist/enums/entities/PropertyAttributeName.d.ts +0 -27
  47. package/dist/enums/entities/PropertyAttributeName.js +0 -29
  48. package/dist/enums/entities/PropertyCondition.d.ts +0 -7
  49. package/dist/enums/entities/PropertyCondition.js +0 -10
  50. package/dist/enums/entities/PropertyType.d.ts +0 -12
  51. package/dist/enums/entities/PropertyType.js +0 -18
  52. package/dist/enums/entities/PropertyValueType.d.ts +0 -6
  53. package/dist/enums/entities/PropertyValueType.js +0 -8
  54. package/dist/enums/entities/RowAccess.d.ts +0 -2
  55. package/dist/enums/entities/RowAccess.js +0 -2
  56. package/dist/enums/entities/ViewFilterCondition.d.ts +0 -12
  57. package/dist/enums/entities/ViewFilterCondition.js +0 -14
  58. package/dist/enums/execution-method.d.ts +0 -8
  59. package/dist/enums/execution-method.js +0 -10
  60. package/dist/enums/flag.d.ts +0 -197
  61. package/dist/enums/flag.js +0 -199
  62. package/dist/enums/function-usage-range.d.ts +0 -5
  63. package/dist/enums/function-usage-range.js +0 -7
  64. package/dist/enums/image-format.d.ts +0 -7
  65. package/dist/enums/image-format.js +0 -9
  66. package/dist/enums/image-gravity.d.ts +0 -11
  67. package/dist/enums/image-gravity.js +0 -13
  68. package/dist/enums/index-type.d.ts +0 -5
  69. package/dist/enums/index-type.js +0 -7
  70. package/dist/enums/messaging-provider-type.d.ts +0 -5
  71. package/dist/enums/messaging-provider-type.js +0 -7
  72. package/dist/enums/name.d.ts +0 -14
  73. package/dist/enums/name.js +0 -16
  74. package/dist/enums/o-auth-provider copy.d.ts +0 -41
  75. package/dist/enums/o-auth-provider copy.js +0 -43
  76. package/dist/enums/o-auth-provider.d.ts +0 -41
  77. package/dist/enums/o-auth-provider.js +0 -42
  78. package/dist/enums/password-hash.d.ts +0 -13
  79. package/dist/enums/password-hash.js +0 -15
  80. package/dist/enums/platform-type.d.ts +0 -17
  81. package/dist/enums/platform-type.js +0 -19
  82. package/dist/enums/project-usage-range.d.ts +0 -4
  83. package/dist/enums/project-usage-range.js +0 -6
  84. package/dist/enums/region.d.ts +0 -4
  85. package/dist/enums/region.js +0 -6
  86. package/dist/enums/relation-mutate.d.ts +0 -5
  87. package/dist/enums/relation-mutate.js +0 -7
  88. package/dist/enums/relationship-type.d.ts +0 -6
  89. package/dist/enums/relationship-type.js +0 -8
  90. package/dist/enums/resource-type.d.ts +0 -4
  91. package/dist/enums/resource-type.js +0 -6
  92. package/dist/enums/runtime.d.ts +0 -48
  93. package/dist/enums/runtime.js +0 -50
  94. package/dist/enums/s-m-t-p-secure.d.ts +0 -3
  95. package/dist/enums/s-m-t-p-secure.js +0 -5
  96. package/dist/enums/shared/ApplicationLayout.d.ts +0 -4
  97. package/dist/enums/shared/ApplicationLayout.js +0 -6
  98. package/dist/enums/shared/Colors.d.ts +0 -24
  99. package/dist/enums/shared/Colors.js +0 -26
  100. package/dist/enums/shared/InputType.d.ts +0 -6
  101. package/dist/enums/shared/InputType.js +0 -8
  102. package/dist/enums/shared/Periodicity.d.ts +0 -7
  103. package/dist/enums/shared/Periodicity.js +0 -9
  104. package/dist/enums/shared/SvgIcon.d.ts +0 -37
  105. package/dist/enums/shared/SvgIcon.js +0 -39
  106. package/dist/enums/shared/Theme.d.ts +0 -4
  107. package/dist/enums/shared/Theme.js +0 -6
  108. package/dist/enums/sms-template-locale.d.ts +0 -133
  109. package/dist/enums/sms-template-locale.js +0 -135
  110. package/dist/enums/sms-template-type.d.ts +0 -6
  111. package/dist/enums/sms-template-type.js +0 -8
  112. package/dist/enums/smtp-encryption.d.ts +0 -5
  113. package/dist/enums/smtp-encryption.js +0 -7
  114. package/dist/enums/storage-usage-range.d.ts +0 -5
  115. package/dist/enums/storage-usage-range.js +0 -7
  116. package/dist/enums/subscriptions/PricingModel.d.ts +0 -11
  117. package/dist/enums/subscriptions/PricingModel.js +0 -12
  118. package/dist/enums/subscriptions/SubscriptionBillingPeriod.d.ts +0 -10
  119. package/dist/enums/subscriptions/SubscriptionBillingPeriod.js +0 -11
  120. package/dist/enums/subscriptions/SubscriptionFeatureLimitType.d.ts +0 -10
  121. package/dist/enums/subscriptions/SubscriptionFeatureLimitType.js +0 -13
  122. package/dist/enums/subscriptions/SubscriptionPriceType.d.ts +0 -7
  123. package/dist/enums/subscriptions/SubscriptionPriceType.js +0 -8
  124. package/dist/enums/tenants/LinkedAccountStatus.d.ts +0 -5
  125. package/dist/enums/tenants/LinkedAccountStatus.js +0 -7
  126. package/dist/enums/tenants/TenantUserJoined.d.ts +0 -6
  127. package/dist/enums/tenants/TenantUserJoined.js +0 -8
  128. package/dist/enums/tenants/TenantUserStatus.d.ts +0 -6
  129. package/dist/enums/tenants/TenantUserStatus.js +0 -8
  130. package/dist/enums/tenants/TenantUserType.d.ts +0 -5
  131. package/dist/enums/tenants/TenantUserType.js +0 -7
  132. package/dist/enums/user-usage-range.d.ts +0 -5
  133. package/dist/enums/user-usage-range.js +0 -7
  134. package/dist/getAppcondaClient.d.ts +0 -2
  135. package/dist/getAppcondaClient.js +0 -44
  136. package/dist/getSDKForCurrentUser.d.ts +0 -43
  137. package/dist/getSDKForCurrentUser.js +0 -76
  138. package/dist/getSDKForService.d.ts +0 -6
  139. package/dist/getSDKForService.js +0 -51
  140. package/dist/getSDKForTenant.d.ts +0 -20
  141. package/dist/getSDKForTenant.js +0 -44
  142. package/dist/id.d.ts +0 -20
  143. package/dist/id.js +0 -45
  144. package/dist/index.d.ts +0 -44
  145. package/dist/index.js +0 -42
  146. package/dist/inputFile.d.ts +0 -6
  147. package/dist/inputFile.js +0 -17
  148. package/dist/lib/Cache/Adapter.d.ts +0 -10
  149. package/dist/lib/Cache/Adapter.js +0 -2
  150. package/dist/lib/Cache/Adapters/Filesystem.d.ts +0 -16
  151. package/dist/lib/Cache/Adapters/Filesystem.js +0 -103
  152. package/dist/lib/Cache/Adapters/Memory.d.ts +0 -18
  153. package/dist/lib/Cache/Adapters/Memory.js +0 -47
  154. package/dist/lib/Cache/Adapters/None.d.ts +0 -12
  155. package/dist/lib/Cache/Adapters/None.js +0 -28
  156. package/dist/lib/Cache/Adapters/Sharding.d.ts +0 -17
  157. package/dist/lib/Cache/Adapters/Sharding.js +0 -73
  158. package/dist/lib/Cache/Cache.d.ts +0 -16
  159. package/dist/lib/Cache/Cache.js +0 -52
  160. package/dist/lib/Cache/index.d.ts +0 -4
  161. package/dist/lib/Cache/index.js +0 -5
  162. package/dist/lib/Cache/test.d.ts +0 -0
  163. package/dist/lib/Cache/test.js +0 -1
  164. package/dist/lib/Registry/Registry.d.ts +0 -38
  165. package/dist/lib/Registry/Registry.js +0 -56
  166. package/dist/lib/Registry/index.d.ts +0 -1
  167. package/dist/lib/Registry/index.js +0 -2
  168. package/dist/lib/Services.d.ts +0 -6
  169. package/dist/lib/Services.js +0 -14
  170. package/dist/lib/crypto.d.ts +0 -23
  171. package/dist/lib/crypto.js +0 -78
  172. package/dist/lib/env.d.ts +0 -1
  173. package/dist/lib/env.js +0 -137
  174. package/dist/lib/errors.d.ts +0 -70
  175. package/dist/lib/errors.js +0 -76
  176. package/dist/lib/index.d.ts +0 -2
  177. package/dist/lib/index.js +0 -3
  178. package/dist/lib/jwt.d.ts +0 -12
  179. package/dist/lib/jwt.js +0 -103
  180. package/dist/models.d.ts +0 -3272
  181. package/dist/models.js +0 -2
  182. package/dist/modules/account/actions.d.ts +0 -25
  183. package/dist/modules/account/actions.js +0 -18
  184. package/dist/modules/account/enums/authentication-factor.d.ts +0 -6
  185. package/dist/modules/account/enums/authentication-factor.js +0 -8
  186. package/dist/modules/account/enums/authenticator-type.d.ts +0 -3
  187. package/dist/modules/account/enums/authenticator-type.js +0 -5
  188. package/dist/modules/account/enums/o-auth-provider.d.ts +0 -41
  189. package/dist/modules/account/enums/o-auth-provider.js +0 -43
  190. package/dist/modules/account/index.d.ts +0 -3
  191. package/dist/modules/account/index.js +0 -4
  192. package/dist/modules/account/schema.d.ts +0 -17
  193. package/dist/modules/account/schema.js +0 -8
  194. package/dist/modules/account/service.d.ts +0 -530
  195. package/dist/modules/account/service.js +0 -1260
  196. package/dist/modules/account/types.d.ts +0 -411
  197. package/dist/modules/account/types.js +0 -2
  198. package/dist/modules/acl/service.d.ts +0 -26
  199. package/dist/modules/acl/service.js +0 -27
  200. package/dist/modules/agent/action.d.ts +0 -53
  201. package/dist/modules/agent/action.js +0 -64
  202. package/dist/modules/agent/index.d.ts +0 -4
  203. package/dist/modules/agent/index.js +0 -5
  204. package/dist/modules/agent/schema.d.ts +0 -48
  205. package/dist/modules/agent/schema.js +0 -21
  206. package/dist/modules/agent/service.d.ts +0 -12
  207. package/dist/modules/agent/service.js +0 -22
  208. package/dist/modules/agent/types.d.ts +0 -11
  209. package/dist/modules/agent/types.js +0 -2
  210. package/dist/modules/ai/index.d.ts +0 -1
  211. package/dist/modules/ai/index.js +0 -2
  212. package/dist/modules/ai/node/actions.d.ts +0 -4
  213. package/dist/modules/ai/node/actions.js +0 -16
  214. package/dist/modules/ai/node/index.d.ts +0 -2
  215. package/dist/modules/ai/node/index.js +0 -3
  216. package/dist/modules/ai/node/service.d.ts +0 -5
  217. package/dist/modules/ai/node/service.js +0 -12
  218. package/dist/modules/index.d.ts +0 -6
  219. package/dist/modules/index.js +0 -7
  220. package/dist/modules/task/action.d.ts +0 -168
  221. package/dist/modules/task/action.js +0 -163
  222. package/dist/modules/task/index.d.ts +0 -4
  223. package/dist/modules/task/index.js +0 -5
  224. package/dist/modules/task/schema.d.ts +0 -107
  225. package/dist/modules/task/schema.js +0 -44
  226. package/dist/modules/task/service.d.ts +0 -19
  227. package/dist/modules/task/service.js +0 -43
  228. package/dist/modules/task/types.d.ts +0 -84
  229. package/dist/modules/task/types.js +0 -2
  230. package/dist/modules/tenant/actions.d.ts +0 -45
  231. package/dist/modules/tenant/actions.js +0 -38
  232. package/dist/modules/tenant/index.d.ts +0 -3
  233. package/dist/modules/tenant/index.js +0 -4
  234. package/dist/modules/tenant/tenant.d.ts +0 -32
  235. package/dist/modules/tenant/tenant.js +0 -125
  236. package/dist/modules/tenant/types.d.ts +0 -11
  237. package/dist/modules/tenant/types.js +0 -2
  238. package/dist/modules/waitlist/action.d.ts +0 -69
  239. package/dist/modules/waitlist/action.js +0 -78
  240. package/dist/modules/waitlist/index.d.ts +0 -4
  241. package/dist/modules/waitlist/index.js +0 -5
  242. package/dist/modules/waitlist/schema.d.ts +0 -39
  243. package/dist/modules/waitlist/schema.js +0 -18
  244. package/dist/modules/waitlist/service.d.ts +0 -13
  245. package/dist/modules/waitlist/service.js +0 -28
  246. package/dist/modules/waitlist/types.d.ts +0 -14
  247. package/dist/modules/waitlist/types.js +0 -2
  248. package/dist/permission.d.ts +0 -43
  249. package/dist/permission.js +0 -54
  250. package/dist/query.d.ts +0 -194
  251. package/dist/query.js +0 -204
  252. package/dist/role.d.ts +0 -70
  253. package/dist/role.js +0 -94
  254. package/dist/schemas/nodes.d.ts +0 -0
  255. package/dist/schemas/nodes.js +0 -1
  256. package/dist/service-client.d.ts +0 -7
  257. package/dist/service-client.js +0 -14
  258. package/dist/service.d.ts +0 -11
  259. package/dist/service.js +0 -23
  260. package/dist/services/account.d.ts +0 -530
  261. package/dist/services/account.js +0 -1259
  262. package/dist/services/applets.d.ts +0 -9
  263. package/dist/services/applets.js +0 -40
  264. package/dist/services/avatars.d.ts +0 -115
  265. package/dist/services/avatars.js +0 -251
  266. package/dist/services/chat-flow.d.ts +0 -7
  267. package/dist/services/chat-flow.js +0 -26
  268. package/dist/services/community.d.ts +0 -19
  269. package/dist/services/community.js +0 -69
  270. package/dist/services/configuration.d.ts +0 -5
  271. package/dist/services/configuration.js +0 -11
  272. package/dist/services/databases.d.ts +0 -613
  273. package/dist/services/databases.js +0 -1736
  274. package/dist/services/functions.d.ts +0 -319
  275. package/dist/services/functions.js +0 -810
  276. package/dist/services/graphql.d.ts +0 -25
  277. package/dist/services/graphql.js +0 -57
  278. package/dist/services/health.d.ts +0 -231
  279. package/dist/services/health.js +0 -463
  280. package/dist/services/locale.d.ts +0 -80
  281. package/dist/services/locale.js +0 -144
  282. package/dist/services/messaging.d.ts +0 -685
  283. package/dist/services/messaging.js +0 -1920
  284. package/dist/services/node.d.ts +0 -5
  285. package/dist/services/node.js +0 -11
  286. package/dist/services/permissions.d.ts +0 -20
  287. package/dist/services/permissions.js +0 -90
  288. package/dist/services/pricing.d.ts +0 -15
  289. package/dist/services/pricing.js +0 -21
  290. package/dist/services/projects.d.ts +0 -542
  291. package/dist/services/projects.js +0 -1526
  292. package/dist/services/roles.d.ts +0 -19
  293. package/dist/services/roles.js +0 -72
  294. package/dist/services/schema.d.ts +0 -17
  295. package/dist/services/schema.js +0 -48
  296. package/dist/services/storage.d.ts +0 -189
  297. package/dist/services/storage.js +0 -474
  298. package/dist/services/subscription.d.ts +0 -15
  299. package/dist/services/subscription.js +0 -30
  300. package/dist/services/teams.d.ts +0 -167
  301. package/dist/services/teams.js +0 -395
  302. package/dist/services/tenant-subscription.d.ts +0 -12
  303. package/dist/services/tenant-subscription.js +0 -52
  304. package/dist/services/tenant.d.ts +0 -32
  305. package/dist/services/tenant.js +0 -124
  306. package/dist/services/users.d.ts +0 -499
  307. package/dist/services/users.js +0 -1283
@@ -1,463 +0,0 @@
1
- import { AppcondaException } from '../client';
2
- export class Health {
3
- constructor(client) {
4
- this.client = client;
5
- }
6
- /**
7
- * Get HTTP
8
- *
9
- * Check the Appconda HTTP server is up and responsive.
10
- *
11
- * @throws {AppcondaException}
12
- * @returns {Promise<Models.HealthStatus>}
13
- */
14
- async get() {
15
- const apiPath = '/health';
16
- const payload = {};
17
- const uri = new URL(this.client.config.endpoint + apiPath);
18
- const apiHeaders = {
19
- 'content-type': 'application/json',
20
- };
21
- return await this.client.call('get', uri, apiHeaders, payload);
22
- }
23
- /**
24
- * Get antivirus
25
- *
26
- * Check the Appconda Antivirus server is up and connection is successful.
27
- *
28
- * @throws {AppcondaException}
29
- * @returns {Promise<Models.HealthAntivirus>}
30
- */
31
- async getAntivirus() {
32
- const apiPath = '/health/anti-virus';
33
- const payload = {};
34
- const uri = new URL(this.client.config.endpoint + apiPath);
35
- const apiHeaders = {
36
- 'content-type': 'application/json',
37
- };
38
- return await this.client.call('get', uri, apiHeaders, payload);
39
- }
40
- /**
41
- * Get cache
42
- *
43
- * Check the Appconda in-memory cache servers are up and connection is successful.
44
- *
45
- * @throws {AppcondaException}
46
- * @returns {Promise<Models.HealthStatus>}
47
- */
48
- async getCache() {
49
- const apiPath = '/health/cache';
50
- const payload = {};
51
- const uri = new URL(this.client.config.endpoint + apiPath);
52
- const apiHeaders = {
53
- 'content-type': 'application/json',
54
- };
55
- return await this.client.call('get', uri, apiHeaders, payload);
56
- }
57
- /**
58
- * Get the SSL certificate for a domain
59
- *
60
- * Get the SSL certificate for a domain
61
- *
62
- * @param {string} domain
63
- * @throws {AppcondaException}
64
- * @returns {Promise<Models.HealthCertificate>}
65
- */
66
- async getCertificate(domain) {
67
- const apiPath = '/health/certificate';
68
- const payload = {};
69
- if (typeof domain !== 'undefined') {
70
- payload['domain'] = domain;
71
- }
72
- const uri = new URL(this.client.config.endpoint + apiPath);
73
- const apiHeaders = {
74
- 'content-type': 'application/json',
75
- };
76
- return await this.client.call('get', uri, apiHeaders, payload);
77
- }
78
- /**
79
- * Get DB
80
- *
81
- * Check the Appconda database servers are up and connection is successful.
82
- *
83
- * @throws {AppcondaException}
84
- * @returns {Promise<Models.HealthStatus>}
85
- */
86
- async getDB() {
87
- const apiPath = '/health/db';
88
- const payload = {};
89
- const uri = new URL(this.client.config.endpoint + apiPath);
90
- const apiHeaders = {
91
- 'content-type': 'application/json',
92
- };
93
- return await this.client.call('get', uri, apiHeaders, payload);
94
- }
95
- /**
96
- * Get pubsub
97
- *
98
- * Check the Appconda pub-sub servers are up and connection is successful.
99
- *
100
- * @throws {AppcondaException}
101
- * @returns {Promise<Models.HealthStatus>}
102
- */
103
- async getPubSub() {
104
- const apiPath = '/health/pubsub';
105
- const payload = {};
106
- const uri = new URL(this.client.config.endpoint + apiPath);
107
- const apiHeaders = {
108
- 'content-type': 'application/json',
109
- };
110
- return await this.client.call('get', uri, apiHeaders, payload);
111
- }
112
- /**
113
- * Get queue
114
- *
115
- * Check the Appconda queue messaging servers are up and connection is successful.
116
- *
117
- * @throws {AppcondaException}
118
- * @returns {Promise<Models.HealthStatus>}
119
- */
120
- async getQueue() {
121
- const apiPath = '/health/queue';
122
- const payload = {};
123
- const uri = new URL(this.client.config.endpoint + apiPath);
124
- const apiHeaders = {
125
- 'content-type': 'application/json',
126
- };
127
- return await this.client.call('get', uri, apiHeaders, payload);
128
- }
129
- /**
130
- * Get builds queue
131
- *
132
- * Get the number of builds that are waiting to be processed in the Appconda internal queue server.
133
- *
134
- * @param {number} threshold
135
- * @throws {AppcondaException}
136
- * @returns {Promise<Models.HealthQueue>}
137
- */
138
- async getQueueBuilds(threshold) {
139
- const apiPath = '/health/queue/builds';
140
- const payload = {};
141
- if (typeof threshold !== 'undefined') {
142
- payload['threshold'] = threshold;
143
- }
144
- const uri = new URL(this.client.config.endpoint + apiPath);
145
- const apiHeaders = {
146
- 'content-type': 'application/json',
147
- };
148
- return await this.client.call('get', uri, apiHeaders, payload);
149
- }
150
- /**
151
- * Get certificates queue
152
- *
153
- * Get the number of certificates that are waiting to be issued against [Letsencrypt](https://letsencrypt.org/) in the Appconda internal queue server.
154
- *
155
- * @param {number} threshold
156
- * @throws {AppcondaException}
157
- * @returns {Promise<Models.HealthQueue>}
158
- */
159
- async getQueueCertificates(threshold) {
160
- const apiPath = '/health/queue/certificates';
161
- const payload = {};
162
- if (typeof threshold !== 'undefined') {
163
- payload['threshold'] = threshold;
164
- }
165
- const uri = new URL(this.client.config.endpoint + apiPath);
166
- const apiHeaders = {
167
- 'content-type': 'application/json',
168
- };
169
- return await this.client.call('get', uri, apiHeaders, payload);
170
- }
171
- /**
172
- * Get databases queue
173
- *
174
- * Get the number of database changes that are waiting to be processed in the Appconda internal queue server.
175
- *
176
- * @param {string} name
177
- * @param {number} threshold
178
- * @throws {AppcondaException}
179
- * @returns {Promise<Models.HealthQueue>}
180
- */
181
- async getQueueDatabases(name, threshold) {
182
- const apiPath = '/health/queue/databases';
183
- const payload = {};
184
- if (typeof name !== 'undefined') {
185
- payload['name'] = name;
186
- }
187
- if (typeof threshold !== 'undefined') {
188
- payload['threshold'] = threshold;
189
- }
190
- const uri = new URL(this.client.config.endpoint + apiPath);
191
- const apiHeaders = {
192
- 'content-type': 'application/json',
193
- };
194
- return await this.client.call('get', uri, apiHeaders, payload);
195
- }
196
- /**
197
- * Get deletes queue
198
- *
199
- * Get the number of background destructive changes that are waiting to be processed in the Appconda internal queue server.
200
- *
201
- * @param {number} threshold
202
- * @throws {AppcondaException}
203
- * @returns {Promise<Models.HealthQueue>}
204
- */
205
- async getQueueDeletes(threshold) {
206
- const apiPath = '/health/queue/deletes';
207
- const payload = {};
208
- if (typeof threshold !== 'undefined') {
209
- payload['threshold'] = threshold;
210
- }
211
- const uri = new URL(this.client.config.endpoint + apiPath);
212
- const apiHeaders = {
213
- 'content-type': 'application/json',
214
- };
215
- return await this.client.call('get', uri, apiHeaders, payload);
216
- }
217
- /**
218
- * Get number of failed queue jobs
219
- *
220
- * Returns the amount of failed jobs in a given queue.
221
-
222
- *
223
- * @param {Name} name
224
- * @param {number} threshold
225
- * @throws {AppcondaException}
226
- * @returns {Promise<Models.HealthQueue>}
227
- */
228
- async getFailedJobs(name, threshold) {
229
- if (typeof name === 'undefined') {
230
- throw new AppcondaException('Missing required parameter: "name"');
231
- }
232
- const apiPath = '/health/queue/failed/{name}'.replace('{name}', name);
233
- const payload = {};
234
- if (typeof threshold !== 'undefined') {
235
- payload['threshold'] = threshold;
236
- }
237
- const uri = new URL(this.client.config.endpoint + apiPath);
238
- const apiHeaders = {
239
- 'content-type': 'application/json',
240
- };
241
- return await this.client.call('get', uri, apiHeaders, payload);
242
- }
243
- /**
244
- * Get functions queue
245
- *
246
- * Get the number of function executions that are waiting to be processed in the Appconda internal queue server.
247
- *
248
- * @param {number} threshold
249
- * @throws {AppcondaException}
250
- * @returns {Promise<Models.HealthQueue>}
251
- */
252
- async getQueueFunctions(threshold) {
253
- const apiPath = '/health/queue/functions';
254
- const payload = {};
255
- if (typeof threshold !== 'undefined') {
256
- payload['threshold'] = threshold;
257
- }
258
- const uri = new URL(this.client.config.endpoint + apiPath);
259
- const apiHeaders = {
260
- 'content-type': 'application/json',
261
- };
262
- return await this.client.call('get', uri, apiHeaders, payload);
263
- }
264
- /**
265
- * Get logs queue
266
- *
267
- * Get the number of logs that are waiting to be processed in the Appconda internal queue server.
268
- *
269
- * @param {number} threshold
270
- * @throws {AppcondaException}
271
- * @returns {Promise<Models.HealthQueue>}
272
- */
273
- async getQueueLogs(threshold) {
274
- const apiPath = '/health/queue/logs';
275
- const payload = {};
276
- if (typeof threshold !== 'undefined') {
277
- payload['threshold'] = threshold;
278
- }
279
- const uri = new URL(this.client.config.endpoint + apiPath);
280
- const apiHeaders = {
281
- 'content-type': 'application/json',
282
- };
283
- return await this.client.call('get', uri, apiHeaders, payload);
284
- }
285
- /**
286
- * Get mails queue
287
- *
288
- * Get the number of mails that are waiting to be processed in the Appconda internal queue server.
289
- *
290
- * @param {number} threshold
291
- * @throws {AppcondaException}
292
- * @returns {Promise<Models.HealthQueue>}
293
- */
294
- async getQueueMails(threshold) {
295
- const apiPath = '/health/queue/mails';
296
- const payload = {};
297
- if (typeof threshold !== 'undefined') {
298
- payload['threshold'] = threshold;
299
- }
300
- const uri = new URL(this.client.config.endpoint + apiPath);
301
- const apiHeaders = {
302
- 'content-type': 'application/json',
303
- };
304
- return await this.client.call('get', uri, apiHeaders, payload);
305
- }
306
- /**
307
- * Get messaging queue
308
- *
309
- * Get the number of messages that are waiting to be processed in the Appconda internal queue server.
310
- *
311
- * @param {number} threshold
312
- * @throws {AppcondaException}
313
- * @returns {Promise<Models.HealthQueue>}
314
- */
315
- async getQueueMessaging(threshold) {
316
- const apiPath = '/health/queue/messaging';
317
- const payload = {};
318
- if (typeof threshold !== 'undefined') {
319
- payload['threshold'] = threshold;
320
- }
321
- const uri = new URL(this.client.config.endpoint + apiPath);
322
- const apiHeaders = {
323
- 'content-type': 'application/json',
324
- };
325
- return await this.client.call('get', uri, apiHeaders, payload);
326
- }
327
- /**
328
- * Get migrations queue
329
- *
330
- * Get the number of migrations that are waiting to be processed in the Appconda internal queue server.
331
- *
332
- * @param {number} threshold
333
- * @throws {AppcondaException}
334
- * @returns {Promise<Models.HealthQueue>}
335
- */
336
- async getQueueMigrations(threshold) {
337
- const apiPath = '/health/queue/migrations';
338
- const payload = {};
339
- if (typeof threshold !== 'undefined') {
340
- payload['threshold'] = threshold;
341
- }
342
- const uri = new URL(this.client.config.endpoint + apiPath);
343
- const apiHeaders = {
344
- 'content-type': 'application/json',
345
- };
346
- return await this.client.call('get', uri, apiHeaders, payload);
347
- }
348
- /**
349
- * Get usage queue
350
- *
351
- * Get the number of metrics that are waiting to be processed in the Appconda internal queue server.
352
- *
353
- * @param {number} threshold
354
- * @throws {AppcondaException}
355
- * @returns {Promise<Models.HealthQueue>}
356
- */
357
- async getQueueUsage(threshold) {
358
- const apiPath = '/health/queue/usage';
359
- const payload = {};
360
- if (typeof threshold !== 'undefined') {
361
- payload['threshold'] = threshold;
362
- }
363
- const uri = new URL(this.client.config.endpoint + apiPath);
364
- const apiHeaders = {
365
- 'content-type': 'application/json',
366
- };
367
- return await this.client.call('get', uri, apiHeaders, payload);
368
- }
369
- /**
370
- * Get usage dump queue
371
- *
372
- * Get the number of projects containing metrics that are waiting to be processed in the Appconda internal queue server.
373
- *
374
- * @param {number} threshold
375
- * @throws {AppcondaException}
376
- * @returns {Promise<Models.HealthQueue>}
377
- */
378
- async getQueueUsageDump(threshold) {
379
- const apiPath = '/health/queue/usage-dump';
380
- const payload = {};
381
- if (typeof threshold !== 'undefined') {
382
- payload['threshold'] = threshold;
383
- }
384
- const uri = new URL(this.client.config.endpoint + apiPath);
385
- const apiHeaders = {
386
- 'content-type': 'application/json',
387
- };
388
- return await this.client.call('get', uri, apiHeaders, payload);
389
- }
390
- /**
391
- * Get webhooks queue
392
- *
393
- * Get the number of webhooks that are waiting to be processed in the Appconda internal queue server.
394
- *
395
- * @param {number} threshold
396
- * @throws {AppcondaException}
397
- * @returns {Promise<Models.HealthQueue>}
398
- */
399
- async getQueueWebhooks(threshold) {
400
- const apiPath = '/health/queue/webhooks';
401
- const payload = {};
402
- if (typeof threshold !== 'undefined') {
403
- payload['threshold'] = threshold;
404
- }
405
- const uri = new URL(this.client.config.endpoint + apiPath);
406
- const apiHeaders = {
407
- 'content-type': 'application/json',
408
- };
409
- return await this.client.call('get', uri, apiHeaders, payload);
410
- }
411
- /**
412
- * Get storage
413
- *
414
- * Check the Appconda storage device is up and connection is successful.
415
- *
416
- * @throws {AppcondaException}
417
- * @returns {Promise<Models.HealthStatus>}
418
- */
419
- async getStorage() {
420
- const apiPath = '/health/storage';
421
- const payload = {};
422
- const uri = new URL(this.client.config.endpoint + apiPath);
423
- const apiHeaders = {
424
- 'content-type': 'application/json',
425
- };
426
- return await this.client.call('get', uri, apiHeaders, payload);
427
- }
428
- /**
429
- * Get local storage
430
- *
431
- * Check the Appconda local storage device is up and connection is successful.
432
- *
433
- * @throws {AppcondaException}
434
- * @returns {Promise<Models.HealthStatus>}
435
- */
436
- async getStorageLocal() {
437
- const apiPath = '/health/storage/local';
438
- const payload = {};
439
- const uri = new URL(this.client.config.endpoint + apiPath);
440
- const apiHeaders = {
441
- 'content-type': 'application/json',
442
- };
443
- return await this.client.call('get', uri, apiHeaders, payload);
444
- }
445
- /**
446
- * Get time
447
- *
448
- * Check the Appconda server time is synced with Google remote NTP server. We use this technology to smoothly handle leap seconds with no disruptive events. The [Network Time Protocol](https://en.wikipedia.org/wiki/Network_Time_Protocol) (NTP) is used by hundreds of millions of computers and devices to synchronize their clocks over the Internet. If your computer sets its own clock, it likely uses NTP.
449
- *
450
- * @throws {AppcondaException}
451
- * @returns {Promise<Models.HealthTime>}
452
- */
453
- async getTime() {
454
- const apiPath = '/health/time';
455
- const payload = {};
456
- const uri = new URL(this.client.config.endpoint + apiPath);
457
- const apiHeaders = {
458
- 'content-type': 'application/json',
459
- };
460
- return await this.client.call('get', uri, apiHeaders, payload);
461
- }
462
- }
463
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhbHRoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL2hlYWx0aC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQXdDLE1BQU0sV0FBVyxDQUFDO0FBSXBGLE1BQU0sT0FBTyxNQUFNO0lBR2YsWUFBWSxNQUFjO1FBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsS0FBSyxDQUFDLEdBQUc7UUFDTCxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUM7UUFDMUIsTUFBTSxPQUFPLEdBQVksRUFBRSxDQUFDO1FBQzVCLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsQ0FBQztRQUUzRCxNQUFNLFVBQVUsR0FBaUM7WUFDN0MsY0FBYyxFQUFFLGtCQUFrQjtTQUNyQyxDQUFBO1FBRUQsT0FBTyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUN6QixLQUFLLEVBQ0wsR0FBRyxFQUNILFVBQVUsRUFDVixPQUFPLENBQ1YsQ0FBQztJQUNOLENBQUM7SUFDRDs7Ozs7OztPQU9HO0lBQ0gsS0FBSyxDQUFDLFlBQVk7UUFDZCxNQUFNLE9BQU8sR0FBRyxvQkFBb0IsQ0FBQztRQUNyQyxNQUFNLE9BQU8sR0FBWSxFQUFFLENBQUM7UUFDNUIsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxDQUFDO1FBRTNELE1BQU0sVUFBVSxHQUFpQztZQUM3QyxjQUFjLEVBQUUsa0JBQWtCO1NBQ3JDLENBQUE7UUFFRCxPQUFPLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ3pCLEtBQUssRUFDTCxHQUFHLEVBQ0gsVUFB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LEVBQ0gsVUFBVSxFQUNWLE9BQU8sQ0FDVixDQUFDO0lBQ04sQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBwY29uZGFFeGNlcHRpb24sIENsaWVudCwgdHlwZSBQYXlsb2FkLCBVcGxvYWRQcm9ncmVzcyB9IGZyb20gJy4uL2NsaWVudCc7XG5pbXBvcnQgdHlwZSB7IE1vZGVscyB9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQgeyBOYW1lIH0gZnJvbSAnLi4vZW51bXMvbmFtZSc7XG5cbmV4cG9ydCBjbGFzcyBIZWFsdGgge1xuICAgIGNsaWVudDogQ2xpZW50O1xuXG4gICAgY29uc3RydWN0b3IoY2xpZW50OiBDbGllbnQpIHtcbiAgICAgICAgdGhpcy5jbGllbnQgPSBjbGllbnQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IEhUVFBcbiAgICAgKlxuICAgICAqIENoZWNrIHRoZSBBcHBjb25kYSBIVFRQIHNlcnZlciBpcyB1cCBhbmQgcmVzcG9uc2l2ZS5cbiAgICAgKlxuICAgICAqIEB0aHJvd3Mge0FwcGNvbmRhRXhjZXB0aW9ufVxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPE1vZGVscy5IZWFsdGhTdGF0dXM+fVxuICAgICAqL1xuICAgIGFzeW5jIGdldCgpOiBQcm9taXNlPE1vZGVscy5IZWFsdGhTdGF0dXM+IHtcbiAgICAgICAgY29uc3QgYXBpUGF0aCA9ICcvaGVhbHRoJztcbiAgICAgICAgY29uc3QgcGF5bG9hZDogUGF5bG9hZCA9IHt9O1xuICAgICAgICBjb25zdCB1cmkgPSBuZXcgVVJMKHRoaXMuY2xpZW50LmNvbmZpZy5lbmRwb2ludCArIGFwaVBhdGgpO1xuXG4gICAgICAgIGNvbnN0IGFwaUhlYWRlcnM6IHsgW2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgICAgICAgICAnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuY2xpZW50LmNhbGwoXG4gICAgICAgICAgICAnZ2V0JyxcbiAgICAgICAgICAgIHVyaSxcbiAgICAgICAgICAgIGFwaUhlYWRlcnMsXG4gICAgICAgICAgICBwYXlsb2FkLFxuICAgICAgICApO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBHZXQgYW50aXZpcnVzXG4gICAgICpcbiAgICAgKiBDaGVjayB0aGUgQXBwY29uZGEgQW50aXZpcnVzIHNlcnZlciBpcyB1cCBhbmQgY29ubmVjdGlvbiBpcyBzdWNjZXNzZnVsLlxuICAgICAqXG4gICAgICogQHRocm93cyB7QXBwY29uZGFFeGNlcHRpb259XG4gICAgICogQHJldHVybnMge1Byb21pc2U8TW9kZWxzLkhlYWx0aEFudGl2aXJ1cz59XG4gICAgICovXG4gICAgYXN5bmMgZ2V0QW50aXZpcnVzKCk6IFByb21pc2U8TW9kZWxzLkhlYWx0aEFudGl2aXJ1cz4ge1xuICAgICAgICBjb25zdCBhcGlQYXRoID0gJy9oZWFsdGgvYW50aS12aXJ1cyc7XG4gICAgICAgIGNvbnN0IHBheWxvYWQ6IFBheWxvYWQgPSB7fTtcbiAgICAgICAgY29uc3QgdXJpID0gbmV3IFVSTCh0aGlzLmNsaWVudC5jb25maWcuZW5kcG9pbnQgKyBhcGlQYXRoKTtcblxuICAgICAgICBjb25zdCBhcGlIZWFkZXJzOiB7IFtoZWFkZXI6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgICAgICAgICAgJ2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmNsaWVudC5jYWxsKFxuICAgICAgICAgICAgJ2dldCcsXG4gICAgICAgICAgICB1cmksXG4gICAgICAgICAgICBhcGlIZWFkZXJzLFxuICAgICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogR2V0IGNhY2hlXG4gICAgICpcbiAgICAgKiBDaGVjayB0aGUgQXBwY29uZGEgaW4tbWVtb3J5IGNhY2hlIHNlcnZlcnMgYXJlIHVwIGFuZCBjb25uZWN0aW9uIGlzIHN1Y2Nlc3NmdWwuXG4gICAgICpcbiAgICAgKiBAdGhyb3dzIHtBcHBjb25kYUV4Y2VwdGlvbn1cbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTxNb2RlbHMuSGVhbHRoU3RhdHVzPn1cbiAgICAgKi9cbiAgICBhc3luYyBnZXRDYWNoZSgpOiBQcm9taXNlPE1vZGVscy5IZWFsdGhTdGF0dXM+IHtcbiAgICAgICAgY29uc3QgYXBpUGF0aCA9ICcvaGVhbHRoL2NhY2hlJztcbiAgICAgICAgY29uc3QgcGF5bG9hZDogUGF5bG9hZCA9IHt9O1xuICAgICAgICBjb25zdCB1cmkgPSBuZXcgVVJMKHRoaXMuY2xpZW50LmNvbmZpZy5lbmRwb2ludCArIGFwaVBhdGgpO1xuXG4gICAgICAgIGNvbnN0IGFwaUhlYWRlcnM6IHsgW2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgICAgICAgICAnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuY2xpZW50LmNhbGwoXG4gICAgICAgICAgICAnZ2V0JyxcbiAgICAgICAgICAgIHVyaSxcbiAgICAgICAgICAgIGFwaUhlYWRlcnMsXG4gICAgICAgICAgICBwYXlsb2FkLFxuICAgICAgICApO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIFNTTCBjZXJ0aWZpY2F0ZSBmb3IgYSBkb21haW5cbiAgICAgKlxuICAgICAqIEdldCB0aGUgU1NMIGNlcnRpZmljYXRlIGZvciBhIGRvbWFpblxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGRvbWFpblxuICAgICAqIEB0aHJvd3Mge0FwcGNvbmRhRXhjZXB0aW9ufVxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPE1vZGVscy5IZWFsdGhDZXJ0aWZpY2F0ZT59XG4gICAgICovXG4gICAgYXN5bmMgZ2V0Q2VydGlmaWNhdGUoZG9tYWluPzogc3RyaW5nKTogUHJvbWlzZTxNb2RlbHMuSGVhbHRoQ2VydGlmaWNhdGU+IHtcbiAgICAgICAgY29uc3QgYXBpUGF0aCA9ICcvaGVhbHRoL2NlcnRpZmljYXRlJztcbiAgICAgICAgY29uc3QgcGF5bG9hZDogUGF5bG9hZCA9IHt9O1xuICAgICAgICBpZiAodHlwZW9mIGRvbWFpbiAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHBheWxvYWRbJ2RvbWFpbiddID0gZG9tYWluO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHVyaSA9IG5ldyBVUkwodGhpcy5jbGllbnQuY29uZmlnLmVuZHBvaW50ICsgYXBpUGF0aCk7XG5cbiAgICAgICAgY29uc3QgYXBpSGVhZGVyczogeyBbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICAgICAgICAgICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5jbGllbnQuY2FsbChcbiAgICAgICAgICAgICdnZXQnLFxuICAgICAgICAgICAgdXJpLFxuICAgICAgICAgICAgYXBpSGVhZGVycyxcbiAgICAgICAgICAgIHBheWxvYWQsXG4gICAgICAgICk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEdldCBEQlxuICAgICAqXG4gICAgICogQ2hlY2sgdGhlIEFwcGNvbmRhIGRhdGFiYXNlIHNlcnZlcnMgYXJlIHVwIGFuZCBjb25uZWN0aW9uIGlzIHN1Y2Nlc3NmdWwuXG4gICAgICpcbiAgICAgKiBAdGhyb3dzIHtBcHBjb25kYUV4Y2VwdGlvbn1cbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTxNb2RlbHMuSGVhbHRoU3RhdHVzPn1cbiAgICAgKi9cbiAgICBhc3luYyBnZXREQigpOiBQcm9taXNlPE1vZGVscy5IZWFsdGhTdGF0dXM+IHtcbiAgICAgICAgY29uc3QgYXBpUGF0aCA9ICcvaGVhbHRoL2RiJztcbiAgICAgICAgY29uc3QgcGF5bG9hZDogUGF5bG9hZCA9IHt9O1xuICAgICAgICBjb25zdCB1cmkgPSBuZXcgVVJMKHRoaXMuY2xpZW50LmNvbmZpZy5lbmRwb2ludCArIGFwaVBhdGgpO1xuXG4gICAgICAgIGNvbnN0IGFwaUhlYWRlcnM6IHsgW2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgICAgICAgICAnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuY2xpZW50LmNhbGwoXG4gICAgICAgICAgICAnZ2V0JyxcbiAgICAgICAgICAgIHVyaSxcbiAgICAgICAgICAgIGFwaUhlYWRlcnMsXG4gICAgICAgICAgICBwYXlsb2FkLFxuICAgICAgICApO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBHZXQgcHVic3ViXG4gICAgICpcbiAgICAgKiBDaGVjayB0aGUgQXBwY29uZGEgcHViLXN1YiBzZXJ2ZXJzIGFyZSB1cCBhbmQgY29ubmVjdGlvbiBpcyBzdWNjZXNzZnVsLlxuICAgICAqXG4gICAgICogQHRocm93cyB7QXBwY29uZGFFeGNlcHRpb259XG4gICAgICogQHJldHVybnMge1Byb21pc2U8TW9kZWxzLkhlYWx0aFN0YXR1cz59XG4gICAgICovXG4gICAgYXN5bmMgZ2V0UHViU3ViKCk6IFByb21pc2U8TW9kZWxzLkhlYWx0aFN0YXR1cz4ge1xuICAgICAgICBjb25zdCBhcGlQYXRoID0gJy9oZWFsdGgvcHVic3ViJztcbiAgICAgICAgY29uc3QgcGF5bG9hZDogUGF5bG9hZCA9IHt9O1xuICAgICAgICBjb25zdCB1cmkgPSBuZXcgVVJMKHRoaXMuY2xpZW50LmNvbmZpZy5lbmRwb2ludCArIGFwaVBhdGgpO1xuXG4gICAgICAgIGNvbnN0IGFwaUhlYWRlcnM6IHsgW2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgICAgICAgICAnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuY2xpZW50LmNhbGwoXG4gICAgICAgICAgICAnZ2V0JyxcbiAgICAgICAgICAgIHVyaSxcbiAgICAgICAgICAgIGFwaUhlYWRlcnMsXG4gICAgICAgICAgICBwYXlsb2FkLFxuICAgICAgICApO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBHZXQgcXVldWVcbiAgICAgKlxuICAgICAqIENoZWNrIHRoZSBBcHBjb25kYSBxdWV1ZSBtZXNzYWdpbmcgc2VydmVycyBhcmUgdXAgYW5kIGNvbm5lY3Rpb24gaXMgc3VjY2Vzc2Z1bC5cbiAgICAgKlxuICAgICAqIEB0aHJvd3Mge0FwcGNvbmRhRXhjZXB0aW9ufVxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPE1vZGVscy5IZWFsdGhTdGF0dXM+fVxuICAgICAqL1xuICAgIGFzeW5jIGdldFF1ZXVlKCk6IFByb21pc2U8TW9kZWxzLkhlYWx0aFN0YXR1cz4ge1xuICAgICAgICBjb25zdCBhcGlQYXRoID0gJy9oZWFsdGgvcXVldWUnO1xuICAgICAgICBjb25zdCBwYXlsb2FkOiBQYXlsb2FkID0ge307XG4gICAgICAgIGNvbnN0IHVyaSA9IG5ldyBVUkwodGhpcy5jbGllbnQuY29uZmlnLmVuZHBvaW50ICsgYXBpUGF0aCk7XG5cbiAgICAgICAgY29uc3QgYXBpSGVhZGVyczogeyBbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICAgICAgICAgICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5jbGllbnQuY2FsbChcbiAgICAgICAgICAgICdnZXQnLFxuICAgICAgICAgICAgdXJpLFxuICAgICAgICAgICAgYXBpSGVhZGVycyxcbiAgICAgICAgICAgIHBheWxvYWQsXG4gICAgICAgICk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEdldCBidWlsZHMgcXVldWVcbiAgICAgKlxuICAgICAqIEdldCB0aGUgbnVtYmVyIG9mIGJ1aWxkcyB0aGF0IGFyZSB3YWl0aW5nIHRvIGJlIHByb2Nlc3NlZCBpbiB0aGUgQXBwY29uZGEgaW50ZXJuYWwgcXVldWUgc2VydmVyLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHRocmVzaG9sZFxuICAgICAqIEB0aHJvd3Mge0FwcGNvbmRhRXhjZXB0aW9ufVxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPE1vZGVscy5IZWFsdGhRdWV1ZT59XG4gICAgICovXG4gICAgYXN5bmMgZ2V0UXVldWVCdWlsZHModGhyZXNob2xkPzogbnVtYmVyKTogUHJvbWlzZTxNb2RlbHMuSGVhbHRoUXVldWU+IHtcbiAgICAgICAgY29uc3QgYXBpUGF0aCA9ICcvaGVhbHRoL3F1ZXVlL2J1aWxkcyc7XG4gICAgICAgIGNvbnN0IHBheWxvYWQ6IFBheWxvYWQgPSB7fTtcbiAgICAgICAgaWYgKHR5cGVvZiB0aHJlc2hvbGQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBwYXlsb2FkWyd0aHJlc2hvbGQnXSA9IHRocmVzaG9sZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB1cmkgPSBuZXcgVVJMKHRoaXMuY2xpZW50LmNvbmZpZy5lbmRwb2ludCArIGFwaVBhdGgpO1xuXG4gICAgICAgIGNvbnN0IGFwaUhlYWRlcnM6IHsgW2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgICAgICAgICAnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuY2xpZW50LmNhbGwoXG4gICAgICAgICAgICAnZ2V0JyxcbiAgICAgICAgICAgIHVyaSxcbiAgICAgICAgICAgIGFwaUhlYWRlcnMsXG4gICAgICAgICAgICBwYXlsb2FkLFxuICAgICAgICApO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBHZXQgY2VydGlmaWNhdGVzIHF1ZXVlXG4gICAgICpcbiAgICAgKiBHZXQgdGhlIG51bWJlciBvZiBjZXJ0aWZpY2F0ZXMgdGhhdCBhcmUgd2FpdGluZyB0byBiZSBpc3N1ZWQgYWdhaW5zdCBbTGV0c2VuY3J5cHRdKGh0dHBzOi8vbGV0c2VuY3J5cHQub3JnLykgaW4gdGhlIEFwcGNvbmRhIGludGVybmFsIHF1ZXVlIHNlcnZlci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0aHJlc2hvbGRcbiAgICAgKiBAdGhyb3dzIHtBcHBjb25kYUV4Y2VwdGlvbn1cbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTxNb2RlbHMuSGVhbHRoUXVldWU+fVxuICAgICAqL1xuICAgIGFzeW5jIGdldFF1ZXVlQ2VydGlmaWNhdGVzKHRocmVzaG9sZD86IG51bWJlcik6IFByb21pc2U8TW9kZWxzLkhlYWx0aFF1ZXVlPiB7XG4gICAgICAgIGNvbnN0IGFwaVBhdGggPSAnL2hlYWx0aC9xdWV1ZS9jZXJ0aWZpY2F0ZXMnO1xuICAgICAgICBjb25zdCBwYXlsb2FkOiBQYXlsb2FkID0ge307XG4gICAgICAgIGlmICh0eXBlb2YgdGhyZXNob2xkICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcGF5bG9hZFsndGhyZXNob2xkJ10gPSB0aHJlc2hvbGQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdXJpID0gbmV3IFVSTCh0aGlzLmNsaWVudC5jb25maWcuZW5kcG9pbnQgKyBhcGlQYXRoKTtcblxuICAgICAgICBjb25zdCBhcGlIZWFkZXJzOiB7IFtoZWFkZXI6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgICAgICAgICAgJ2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmNsaWVudC5jYWxsKFxuICAgICAgICAgICAgJ2dldCcsXG4gICAgICAgICAgICB1cmksXG4gICAgICAgICAgICBhcGlIZWFkZXJzLFxuICAgICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogR2V0IGRhdGFiYXNlcyBxdWV1ZVxuICAgICAqXG4gICAgICogR2V0IHRoZSBudW1iZXIgb2YgZGF0YWJhc2UgY2hhbmdlcyB0aGF0IGFyZSB3YWl0aW5nIHRvIGJlIHByb2Nlc3NlZCBpbiB0aGUgQXBwY29uZGEgaW50ZXJuYWwgcXVldWUgc2VydmVyLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gdGhyZXNob2xkXG4gICAgICogQHRocm93cyB7QXBwY29uZGFFeGNlcHRpb259XG4gICAgICogQHJldHVybnMge1Byb21pc2U8TW9kZWxzLkhlYWx0aFF1ZXVlPn1cbiAgICAgKi9cbiAgICBhc3luYyBnZXRRdWV1ZURhdGFiYXNlcyhuYW1lPzogc3RyaW5nLCB0aHJlc2hvbGQ/OiBudW1iZXIpOiBQcm9taXNlPE1vZGVscy5IZWFsdGhRdWV1ZT4ge1xuICAgICAgICBjb25zdCBhcGlQYXRoID0gJy9oZWFsdGgvcXVldWUvZGF0YWJhc2VzJztcbiAgICAgICAgY29uc3QgcGF5bG9hZDogUGF5bG9hZCA9IHt9O1xuICAgICAgICBpZiAodHlwZW9mIG5hbWUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBwYXlsb2FkWyduYW1lJ10gPSBuYW1lO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgdGhyZXNob2xkICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcGF5bG9hZFsndGhyZXNob2xkJ10gPSB0aHJlc2hvbGQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdXJpID0gbmV3IFVSTCh0aGlzLmNsaWVudC5jb25maWcuZW5kcG9pbnQgKyBhcGlQYXRoKTtcblxuICAgICAgICBjb25zdCBhcGlIZWFkZXJzOiB7IFtoZWFkZXI6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgICAgICAgICAgJ2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmNsaWVudC5jYWxsKFxuICAgICAgICAgICAgJ2dldCcsXG4gICAgICAgICAgICB1cmksXG4gICAgICAgICAgICBhcGlIZWFkZXJzLFxuICAgICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogR2V0IGRlbGV0ZXMgcXVldWVcbiAgICAgKlxuICAgICAqIEdldCB0aGUgbnVtYmVyIG9mIGJhY2tncm91bmQgZGVzdHJ1Y3RpdmUgY2hhbmdlcyB0aGF0IGFyZSB3YWl0aW5nIHRvIGJlIHByb2Nlc3NlZCBpbiB0aGUgQXBwY29uZGEgaW50ZXJuYWwgcXVldWUgc2VydmVyLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHRocmVzaG9sZFxuICAgICAqIEB0aHJvd3Mge0FwcGNvbmRhRXhjZXB0aW9ufVxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPE1vZGVscy5IZWFsdGhRdWV1ZT59XG4gICAgICovXG4gICAgYXN5bmMgZ2V0UXVldWVEZWxldGVzKHRocmVzaG9sZD86IG51bWJlcik6IFByb21pc2U8TW9kZWxzLkhlYWx0aFF1ZXVlPiB7XG4gICAgICAgIGNvbnN0IGFwaVBhdGggPSAnL2hlYWx0aC9xdWV1ZS9kZWxldGVzJztcbiAgICAgICAgY29uc3QgcGF5bG9hZDogUGF5bG9hZCA9IHt9O1xuICAgICAgICBpZiAodHlwZW9mIHRocmVzaG9sZCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHBheWxvYWRbJ3RocmVzaG9sZCddID0gdGhyZXNob2xkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHVyaSA9IG5ldyBVUkwodGhpcy5jbGllbnQuY29uZmlnLmVuZHBvaW50ICsgYXBpUGF0aCk7XG5cbiAgICAgICAgY29uc3QgYXBpSGVhZGVyczogeyBbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICAgICAgICAgICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5jbGllbnQuY2FsbChcbiAgICAgICAgICAgICdnZXQnLFxuICAgICAgICAgICAgdXJpLFxuICAgICAgICAgICAgYXBpSGVhZGVycyxcbiAgICAgICAgICAgIHBheWxvYWQsXG4gICAgICAgICk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEdldCBudW1iZXIgb2YgZmFpbGVkIHF1ZXVlIGpvYnNcbiAgICAgKlxuICAgICAqIFJldHVybnMgdGhlIGFtb3VudCBvZiBmYWlsZWQgam9icyBpbiBhIGdpdmVuIHF1ZXVlLlxuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge05hbWV9IG5hbWVcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gdGhyZXNob2xkXG4gICAgICogQHRocm93cyB7QXBwY29uZGFFeGNlcHRpb259XG4gICAgICogQHJldHVybnMge1Byb21pc2U8TW9kZWxzLkhlYWx0aFF1ZXVlPn1cbiAgICAgKi9cbiAgICBhc3luYyBnZXRGYWlsZWRKb2JzKG5hbWU6IE5hbWUsIHRocmVzaG9sZD86IG51bWJlcik6IFByb21pc2U8TW9kZWxzLkhlYWx0aFF1ZXVlPiB7XG4gICAgICAgIGlmICh0eXBlb2YgbmFtZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBBcHBjb25kYUV4Y2VwdGlvbignTWlzc2luZyByZXF1aXJlZCBwYXJhbWV0ZXI6IFwibmFtZVwiJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYXBpUGF0aCA9ICcvaGVhbHRoL3F1ZXVlL2ZhaWxlZC97bmFtZX0nLnJlcGxhY2UoJ3tuYW1lfScsIG5hbWUpO1xuICAgICAgICBjb25zdCBwYXlsb2FkOiBQYXlsb2FkID0ge307XG4gICAgICAgIGlmICh0eXBlb2YgdGhyZXNob2xkICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcGF5bG9hZFsndGhyZXNob2xkJ10gPSB0aHJlc2hvbGQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdXJpID0gbmV3IFVSTCh0aGlzLmNsaWVudC5jb25maWcuZW5kcG9pbnQgKyBhcGlQYXRoKTtcblxuICAgICAgICBjb25zdCBhcGlIZWFkZXJzOiB7IFtoZWFkZXI6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgICAgICAgICAgJ2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmNsaWVudC5jYWxsKFxuICAgICAgICAgICAgJ2dldCcsXG4gICAgICAgICAgICB1cmksXG4gICAgICAgICAgICBhcGlIZWFkZXJzLFxuICAgICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogR2V0IGZ1bmN0aW9ucyBxdWV1ZVxuICAgICAqXG4gICAgICogR2V0IHRoZSBudW1iZXIgb2YgZnVuY3Rpb24gZXhlY3V0aW9ucyB0aGF0IGFyZSB3YWl0aW5nIHRvIGJlIHByb2Nlc3NlZCBpbiB0aGUgQXBwY29uZGEgaW50ZXJuYWwgcXVldWUgc2VydmVyLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHRocmVzaG9sZFxuICAgICAqIEB0aHJvd3Mge0FwcGNvbmRhRXhjZXB0aW9ufVxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPE1vZGVscy5IZWFsdGhRdWV1ZT59XG4gICAgICovXG4gICAgYXN5bmMgZ2V0UXVldWVGdW5jdGlvbnModGhyZXNob2xkPzogbnVtYmVyKTogUHJvbWlzZTxNb2RlbHMuSGVhbHRoUXVldWU+IHtcbiAgICAgICAgY29uc3QgYXBpUGF0aCA9ICcvaGVhbHRoL3F1ZXVlL2Z1bmN0aW9ucyc7XG4gICAgICAgIGNvbnN0IHBheWxvYWQ6IFBheWxvYWQgPSB7fTtcbiAgICAgICAgaWYgKHR5cGVvZiB0aHJlc2hvbGQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBwYXlsb2FkWyd0aHJlc2hvbGQnXSA9IHRocmVzaG9sZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB1cmkgPSBuZXcgVVJMKHRoaXMuY2xpZW50LmNvbmZpZy5lbmRwb2ludCArIGFwaVBhdGgpO1xuXG4gICAgICAgIGNvbnN0IGFwaUhlYWRlcnM6IHsgW2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgICAgICAgICAnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuY2xpZW50LmNhbGwoXG4gICAgICAgICAgICAnZ2V0JyxcbiAgICAgICAgICAgIHVyaSxcbiAgICAgICAgICAgIGFwaUhlYWRlcnMsXG4gICAgICAgICAgICBwYXlsb2FkLFxuICAgICAgICApO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBHZXQgbG9ncyBxdWV1ZVxuICAgICAqXG4gICAgICogR2V0IHRoZSBudW1iZXIgb2YgbG9ncyB0aGF0IGFyZSB3YWl0aW5nIHRvIGJlIHByb2Nlc3NlZCBpbiB0aGUgQXBwY29uZGEgaW50ZXJuYWwgcXVldWUgc2VydmVyLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHRocmVzaG9sZFxuICAgICAqIEB0aHJvd3Mge0FwcGNvbmRhRXhjZXB0aW9ufVxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPE1vZGVscy5IZWFsdGhRdWV1ZT59XG4gICAgICovXG4gICAgYXN5bmMgZ2V0UXVldWVMb2dzKHRocmVzaG9sZD86IG51bWJlcik6IFByb21pc2U8TW9kZWxzLkhlYWx0aFF1ZXVlPiB7XG4gICAgICAgIGNvbnN0IGFwaVBhdGggPSAnL2hlYWx0aC9xdWV1ZS9sb2dzJztcbiAgICAgICAgY29uc3QgcGF5bG9hZDogUGF5bG9hZCA9IHt9O1xuICAgICAgICBpZiAodHlwZW9mIHRocmVzaG9sZCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHBheWxvYWRbJ3RocmVzaG9sZCddID0gdGhyZXNob2xkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHVyaSA9IG5ldyBVUkwodGhpcy5jbGllbnQuY29uZmlnLmVuZHBvaW50ICsgYXBpUGF0aCk7XG5cbiAgICAgICAgY29uc3QgYXBpSGVhZGVyczogeyBbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICAgICAgICAgICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5jbGllbnQuY2FsbChcbiAgICAgICAgICAgICdnZXQnLFxuICAgICAgICAgICAgdXJpLFxuICAgICAgICAgICAgYXBpSGVhZGVycyxcbiAgICAgICAgICAgIHBheWxvYWQsXG4gICAgICAgICk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEdldCBtYWlscyBxdWV1ZVxuICAgICAqXG4gICAgICogR2V0IHRoZSBudW1iZXIgb2YgbWFpbHMgdGhhdCBhcmUgd2FpdGluZyB0byBiZSBwcm9jZXNzZWQgaW4gdGhlIEFwcGNvbmRhIGludGVybmFsIHF1ZXVlIHNlcnZlci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0aHJlc2hvbGRcbiAgICAgKiBAdGhyb3dzIHtBcHBjb25kYUV4Y2VwdGlvbn1cbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTxNb2RlbHMuSGVhbHRoUXVldWU+fVxuICAgICAqL1xuICAgIGFzeW5jIGdldFF1ZXVlTWFpbHModGhyZXNob2xkPzogbnVtYmVyKTogUHJvbWlzZTxNb2RlbHMuSGVhbHRoUXVldWU+IHtcbiAgICAgICAgY29uc3QgYXBpUGF0aCA9ICcvaGVhbHRoL3F1ZXVlL21haWxzJztcbiAgICAgICAgY29uc3QgcGF5bG9hZDogUGF5bG9hZCA9IHt9O1xuICAgICAgICBpZiAodHlwZW9mIHRocmVzaG9sZCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHBheWxvYWRbJ3RocmVzaG9sZCddID0gdGhyZXNob2xkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHVyaSA9IG5ldyBVUkwodGhpcy5jbGllbnQuY29uZmlnLmVuZHBvaW50ICsgYXBpUGF0aCk7XG5cbiAgICAgICAgY29uc3QgYXBpSGVhZGVyczogeyBbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICAgICAgICAgICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5jbGllbnQuY2FsbChcbiAgICAgICAgICAgICdnZXQnLFxuICAgICAgICAgICAgdXJpLFxuICAgICAgICAgICAgYXBpSGVhZGVycyxcbiAgICAgICAgICAgIHBheWxvYWQsXG4gICAgICAgICk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEdldCBtZXNzYWdpbmcgcXVldWVcbiAgICAgKlxuICAgICAqIEdldCB0aGUgbnVtYmVyIG9mIG1lc3NhZ2VzIHRoYXQgYXJlIHdhaXRpbmcgdG8gYmUgcHJvY2Vzc2VkIGluIHRoZSBBcHBjb25kYSBpbnRlcm5hbCBxdWV1ZSBzZXJ2ZXIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gdGhyZXNob2xkXG4gICAgICogQHRocm93cyB7QXBwY29uZGFFeGNlcHRpb259XG4gICAgICogQHJldHVybnMge1Byb21pc2U8TW9kZWxzLkhlYWx0aFF1ZXVlPn1cbiAgICAgKi9cbiAgICBhc3luYyBnZXRRdWV1ZU1lc3NhZ2luZyh0aHJlc2hvbGQ/OiBudW1iZXIpOiBQcm9taXNlPE1vZGVscy5IZWFsdGhRdWV1ZT4ge1xuICAgICAgICBjb25zdCBhcGlQYXRoID0gJy9oZWFsdGgvcXVldWUvbWVzc2FnaW5nJztcbiAgICAgICAgY29uc3QgcGF5bG9hZDogUGF5bG9hZCA9IHt9O1xuICAgICAgICBpZiAodHlwZW9mIHRocmVzaG9sZCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHBheWxvYWRbJ3RocmVzaG9sZCddID0gdGhyZXNob2xkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHVyaSA9IG5ldyBVUkwodGhpcy5jbGllbnQuY29uZmlnLmVuZHBvaW50ICsgYXBpUGF0aCk7XG5cbiAgICAgICAgY29uc3QgYXBpSGVhZGVyczogeyBbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICAgICAgICAgICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5jbGllbnQuY2FsbChcbiAgICAgICAgICAgICdnZXQnLFxuICAgICAgICAgICAgdXJpLFxuICAgICAgICAgICAgYXBpSGVhZGVycyxcbiAgICAgICAgICAgIHBheWxvYWQsXG4gICAgICAgICk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEdldCBtaWdyYXRpb25zIHF1ZXVlXG4gICAgICpcbiAgICAgKiBHZXQgdGhlIG51bWJlciBvZiBtaWdyYXRpb25zIHRoYXQgYXJlIHdhaXRpbmcgdG8gYmUgcHJvY2Vzc2VkIGluIHRoZSBBcHBjb25kYSBpbnRlcm5hbCBxdWV1ZSBzZXJ2ZXIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gdGhyZXNob2xkXG4gICAgICogQHRocm93cyB7QXBwY29uZGFFeGNlcHRpb259XG4gICAgICogQHJldHVybnMge1Byb21pc2U8TW9kZWxzLkhlYWx0aFF1ZXVlPn1cbiAgICAgKi9cbiAgICBhc3luYyBnZXRRdWV1ZU1pZ3JhdGlvbnModGhyZXNob2xkPzogbnVtYmVyKTogUHJvbWlzZTxNb2RlbHMuSGVhbHRoUXVldWU+IHtcbiAgICAgICAgY29uc3QgYXBpUGF0aCA9ICcvaGVhbHRoL3F1ZXVlL21pZ3JhdGlvbnMnO1xuICAgICAgICBjb25zdCBwYXlsb2FkOiBQYXlsb2FkID0ge307XG4gICAgICAgIGlmICh0eXBlb2YgdGhyZXNob2xkICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcGF5bG9hZFsndGhyZXNob2xkJ10gPSB0aHJlc2hvbGQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdXJpID0gbmV3IFVSTCh0aGlzLmNsaWVudC5jb25maWcuZW5kcG9pbnQgKyBhcGlQYXRoKTtcblxuICAgICAgICBjb25zdCBhcGlIZWFkZXJzOiB7IFtoZWFkZXI6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgICAgICAgICAgJ2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmNsaWVudC5jYWxsKFxuICAgICAgICAgICAgJ2dldCcsXG4gICAgICAgICAgICB1cmksXG4gICAgICAgICAgICBhcGlIZWFkZXJzLFxuICAgICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogR2V0IHVzYWdlIHF1ZXVlXG4gICAgICpcbiAgICAgKiBHZXQgdGhlIG51bWJlciBvZiBtZXRyaWNzIHRoYXQgYXJlIHdhaXRpbmcgdG8gYmUgcHJvY2Vzc2VkIGluIHRoZSBBcHBjb25kYSBpbnRlcm5hbCBxdWV1ZSBzZXJ2ZXIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gdGhyZXNob2xkXG4gICAgICogQHRocm93cyB7QXBwY29uZGFFeGNlcHRpb259XG4gICAgICogQHJldHVybnMge1Byb21pc2U8TW9kZWxzLkhlYWx0aFF1ZXVlPn1cbiAgICAgKi9cbiAgICBhc3luYyBnZXRRdWV1ZVVzYWdlKHRocmVzaG9sZD86IG51bWJlcik6IFByb21pc2U8TW9kZWxzLkhlYWx0aFF1ZXVlPiB7XG4gICAgICAgIGNvbnN0IGFwaVBhdGggPSAnL2hlYWx0aC9xdWV1ZS91c2FnZSc7XG4gICAgICAgIGNvbnN0IHBheWxvYWQ6IFBheWxvYWQgPSB7fTtcbiAgICAgICAgaWYgKHR5cGVvZiB0aHJlc2hvbGQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBwYXlsb2FkWyd0aHJlc2hvbGQnXSA9IHRocmVzaG9sZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB1cmkgPSBuZXcgVVJMKHRoaXMuY2xpZW50LmNvbmZpZy5lbmRwb2ludCArIGFwaVBhdGgpO1xuXG4gICAgICAgIGNvbnN0IGFwaUhlYWRlcnM6IHsgW2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgICAgICAgICAnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuY2xpZW50LmNhbGwoXG4gICAgICAgICAgICAnZ2V0JyxcbiAgICAgICAgICAgIHVyaSxcbiAgICAgICAgICAgIGFwaUhlYWRlcnMsXG4gICAgICAgICAgICBwYXlsb2FkLFxuICAgICAgICApO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBHZXQgdXNhZ2UgZHVtcCBxdWV1ZVxuICAgICAqXG4gICAgICogR2V0IHRoZSBudW1iZXIgb2YgcHJvamVjdHMgY29udGFpbmluZyBtZXRyaWNzIHRoYXQgYXJlIHdhaXRpbmcgdG8gYmUgcHJvY2Vzc2VkIGluIHRoZSBBcHBjb25kYSBpbnRlcm5hbCBxdWV1ZSBzZXJ2ZXIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gdGhyZXNob2xkXG4gICAgICogQHRocm93cyB7QXBwY29uZGFFeGNlcHRpb259XG4gICAgICogQHJldHVybnMge1Byb21pc2U8TW9kZWxzLkhlYWx0aFF1ZXVlPn1cbiAgICAgKi9cbiAgICBhc3luYyBnZXRRdWV1ZVVzYWdlRHVtcCh0aHJlc2hvbGQ/OiBudW1iZXIpOiBQcm9taXNlPE1vZGVscy5IZWFsdGhRdWV1ZT4ge1xuICAgICAgICBjb25zdCBhcGlQYXRoID0gJy9oZWFsdGgvcXVldWUvdXNhZ2UtZHVtcCc7XG4gICAgICAgIGNvbnN0IHBheWxvYWQ6IFBheWxvYWQgPSB7fTtcbiAgICAgICAgaWYgKHR5cGVvZiB0aHJlc2hvbGQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBwYXlsb2FkWyd0aHJlc2hvbGQnXSA9IHRocmVzaG9sZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB1cmkgPSBuZXcgVVJMKHRoaXMuY2xpZW50LmNvbmZpZy5lbmRwb2ludCArIGFwaVBhdGgpO1xuXG4gICAgICAgIGNvbnN0IGFwaUhlYWRlcnM6IHsgW2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgICAgICAgICAnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuY2xpZW50LmNhbGwoXG4gICAgICAgICAgICAnZ2V0JyxcbiAgICAgICAgICAgIHVyaSxcbiAgICAgICAgICAgIGFwaUhlYWRlcnMsXG4gICAgICAgICAgICBwYXlsb2FkLFxuICAgICAgICApO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBHZXQgd2ViaG9va3MgcXVldWVcbiAgICAgKlxuICAgICAqIEdldCB0aGUgbnVtYmVyIG9mIHdlYmhvb2tzIHRoYXQgYXJlIHdhaXRpbmcgdG8gYmUgcHJvY2Vzc2VkIGluIHRoZSBBcHBjb25kYSBpbnRlcm5hbCBxdWV1ZSBzZXJ2ZXIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gdGhyZXNob2xkXG4gICAgICogQHRocm93cyB7QXBwY29uZGFFeGNlcHRpb259XG4gICAgICogQHJldHVybnMge1Byb21pc2U8TW9kZWxzLkhlYWx0aFF1ZXVlPn1cbiAgICAgKi9cbiAgICBhc3luYyBnZXRRdWV1ZVdlYmhvb2tzKHRocmVzaG9sZD86IG51bWJlcik6IFByb21pc2U8TW9kZWxzLkhlYWx0aFF1ZXVlPiB7XG4gICAgICAgIGNvbnN0IGFwaVBhdGggPSAnL2hlYWx0aC9xdWV1ZS93ZWJob29rcyc7XG4gICAgICAgIGNvbnN0IHBheWxvYWQ6IFBheWxvYWQgPSB7fTtcbiAgICAgICAgaWYgKHR5cGVvZiB0aHJlc2hvbGQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBwYXlsb2FkWyd0aHJlc2hvbGQnXSA9IHRocmVzaG9sZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB1cmkgPSBuZXcgVVJMKHRoaXMuY2xpZW50LmNvbmZpZy5lbmRwb2ludCArIGFwaVBhdGgpO1xuXG4gICAgICAgIGNvbnN0IGFwaUhlYWRlcnM6IHsgW2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgICAgICAgICAnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuY2xpZW50LmNhbGwoXG4gICAgICAgICAgICAnZ2V0JyxcbiAgICAgICAgICAgIHVyaSxcbiAgICAgICAgICAgIGFwaUhlYWRlcnMsXG4gICAgICAgICAgICBwYXlsb2FkLFxuICAgICAgICApO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBHZXQgc3RvcmFnZVxuICAgICAqXG4gICAgICogQ2hlY2sgdGhlIEFwcGNvbmRhIHN0b3JhZ2UgZGV2aWNlIGlzIHVwIGFuZCBjb25uZWN0aW9uIGlzIHN1Y2Nlc3NmdWwuXG4gICAgICpcbiAgICAgKiBAdGhyb3dzIHtBcHBjb25kYUV4Y2VwdGlvbn1cbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTxNb2RlbHMuSGVhbHRoU3RhdHVzPn1cbiAgICAgKi9cbiAgICBhc3luYyBnZXRTdG9yYWdlKCk6IFByb21pc2U8TW9kZWxzLkhlYWx0aFN0YXR1cz4ge1xuICAgICAgICBjb25zdCBhcGlQYXRoID0gJy9oZWFsdGgvc3RvcmFnZSc7XG4gICAgICAgIGNvbnN0IHBheWxvYWQ6IFBheWxvYWQgPSB7fTtcbiAgICAgICAgY29uc3QgdXJpID0gbmV3IFVSTCh0aGlzLmNsaWVudC5jb25maWcuZW5kcG9pbnQgKyBhcGlQYXRoKTtcblxuICAgICAgICBjb25zdCBhcGlIZWFkZXJzOiB7IFtoZWFkZXI6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgICAgICAgICAgJ2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmNsaWVudC5jYWxsKFxuICAgICAgICAgICAgJ2dldCcsXG4gICAgICAgICAgICB1cmksXG4gICAgICAgICAgICBhcGlIZWFkZXJzLFxuICAgICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogR2V0IGxvY2FsIHN0b3JhZ2VcbiAgICAgKlxuICAgICAqIENoZWNrIHRoZSBBcHBjb25kYSBsb2NhbCBzdG9yYWdlIGRldmljZSBpcyB1cCBhbmQgY29ubmVjdGlvbiBpcyBzdWNjZXNzZnVsLlxuICAgICAqXG4gICAgICogQHRocm93cyB7QXBwY29uZGFFeGNlcHRpb259XG4gICAgICogQHJldHVybnMge1Byb21pc2U8TW9kZWxzLkhlYWx0aFN0YXR1cz59XG4gICAgICovXG4gICAgYXN5bmMgZ2V0U3RvcmFnZUxvY2FsKCk6IFByb21pc2U8TW9kZWxzLkhlYWx0aFN0YXR1cz4ge1xuICAgICAgICBjb25zdCBhcGlQYXRoID0gJy9oZWFsdGgvc3RvcmFnZS9sb2NhbCc7XG4gICAgICAgIGNvbnN0IHBheWxvYWQ6IFBheWxvYWQgPSB7fTtcbiAgICAgICAgY29uc3QgdXJpID0gbmV3IFVSTCh0aGlzLmNsaWVudC5jb25maWcuZW5kcG9pbnQgKyBhcGlQYXRoKTtcblxuICAgICAgICBjb25zdCBhcGlIZWFkZXJzOiB7IFtoZWFkZXI6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgICAgICAgICAgJ2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmNsaWVudC5jYWxsKFxuICAgICAgICAgICAgJ2dldCcsXG4gICAgICAgICAgICB1cmksXG4gICAgICAgICAgICBhcGlIZWFkZXJzLFxuICAgICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogR2V0IHRpbWVcbiAgICAgKlxuICAgICAqIENoZWNrIHRoZSBBcHBjb25kYSBzZXJ2ZXIgdGltZSBpcyBzeW5jZWQgd2l0aCBHb29nbGUgcmVtb3RlIE5UUCBzZXJ2ZXIuIFdlIHVzZSB0aGlzIHRlY2hub2xvZ3kgdG8gc21vb3RobHkgaGFuZGxlIGxlYXAgc2Vjb25kcyB3aXRoIG5vIGRpc3J1cHRpdmUgZXZlbnRzLiBUaGUgW05ldHdvcmsgVGltZSBQcm90b2NvbF0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTmV0d29ya19UaW1lX1Byb3RvY29sKSAoTlRQKSBpcyB1c2VkIGJ5IGh1bmRyZWRzIG9mIG1pbGxpb25zIG9mIGNvbXB1dGVycyBhbmQgZGV2aWNlcyB0byBzeW5jaHJvbml6ZSB0aGVpciBjbG9ja3Mgb3ZlciB0aGUgSW50ZXJuZXQuIElmIHlvdXIgY29tcHV0ZXIgc2V0cyBpdHMgb3duIGNsb2NrLCBpdCBsaWtlbHkgdXNlcyBOVFAuXG4gICAgICpcbiAgICAgKiBAdGhyb3dzIHtBcHBjb25kYUV4Y2VwdGlvbn1cbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTxNb2RlbHMuSGVhbHRoVGltZT59XG4gICAgICovXG4gICAgYXN5bmMgZ2V0VGltZSgpOiBQcm9taXNlPE1vZGVscy5IZWFsdGhUaW1lPiB7XG4gICAgICAgIGNvbnN0IGFwaVBhdGggPSAnL2hlYWx0aC90aW1lJztcbiAgICAgICAgY29uc3QgcGF5bG9hZDogUGF5bG9hZCA9IHt9O1xuICAgICAgICBjb25zdCB1cmkgPSBuZXcgVVJMKHRoaXMuY2xpZW50LmNvbmZpZy5lbmRwb2ludCArIGFwaVBhdGgpO1xuXG4gICAgICAgIGNvbnN0IGFwaUhlYWRlcnM6IHsgW2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgICAgICAgICAnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuY2xpZW50LmNhbGwoXG4gICAgICAgICAgICAnZ2V0JyxcbiAgICAgICAgICAgIHVyaSxcbiAgICAgICAgICAgIGFwaUhlYWRlcnMsXG4gICAgICAgICAgICBwYXlsb2FkLFxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,80 +0,0 @@
1
- import { Client } from '../client';
2
- import type { Models } from '../models';
3
- export declare class Locale {
4
- client: Client;
5
- constructor(client: Client);
6
- /**
7
- * Get user locale
8
- *
9
- * Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.
10
-
11
- ([IP Geolocation by DB-IP](https://db-ip.com))
12
- *
13
- * @throws {AppcondaException}
14
- * @returns {Promise<Models.Locale>}
15
- */
16
- get(): Promise<Models.Locale>;
17
- /**
18
- * List Locale Codes
19
- *
20
- * List of all locale codes in [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes).
21
- *
22
- * @throws {AppcondaException}
23
- * @returns {Promise<Models.LocaleCodeList>}
24
- */
25
- listCodes(): Promise<Models.LocaleCodeList>;
26
- /**
27
- * List continents
28
- *
29
- * List of all continents. You can use the locale header to get the data in a supported language.
30
- *
31
- * @throws {AppcondaException}
32
- * @returns {Promise<Models.ContinentList>}
33
- */
34
- listContinents(): Promise<Models.ContinentList>;
35
- /**
36
- * List countries
37
- *
38
- * List of all countries. You can use the locale header to get the data in a supported language.
39
- *
40
- * @throws {AppcondaException}
41
- * @returns {Promise<Models.CountryList>}
42
- */
43
- listCountries(): Promise<Models.CountryList>;
44
- /**
45
- * List EU countries
46
- *
47
- * List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.
48
- *
49
- * @throws {AppcondaException}
50
- * @returns {Promise<Models.CountryList>}
51
- */
52
- listCountriesEU(): Promise<Models.CountryList>;
53
- /**
54
- * List countries phone codes
55
- *
56
- * List of all countries phone codes. You can use the locale header to get the data in a supported language.
57
- *
58
- * @throws {AppcondaException}
59
- * @returns {Promise<Models.PhoneList>}
60
- */
61
- listCountriesPhones(): Promise<Models.PhoneList>;
62
- /**
63
- * List currencies
64
- *
65
- * List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.
66
- *
67
- * @throws {AppcondaException}
68
- * @returns {Promise<Models.CurrencyList>}
69
- */
70
- listCurrencies(): Promise<Models.CurrencyList>;
71
- /**
72
- * List languages
73
- *
74
- * List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.
75
- *
76
- * @throws {AppcondaException}
77
- * @returns {Promise<Models.LanguageList>}
78
- */
79
- listLanguages(): Promise<Models.LanguageList>;
80
- }