@appconda/nextjs 1.0.112 → 1.0.114

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 (308) hide show
  1. package/package.json +3 -3
  2. package/src/modules/task/action.ts +11 -31
  3. package/dist/actions/actionClient.d.ts +0 -10
  4. package/dist/actions/actionClient.js +0 -38
  5. package/dist/actions/auth.d.ts +0 -1
  6. package/dist/actions/auth.js +0 -6
  7. package/dist/actions/authOptions.d.ts +0 -5
  8. package/dist/actions/authOptions.js +0 -235
  9. package/dist/actions/index.d.ts +0 -3
  10. package/dist/actions/index.js +0 -4
  11. package/dist/actions/nextAuthHandler.d.ts +0 -1
  12. package/dist/actions/nextAuthHandler.js +0 -6
  13. package/dist/actions/nodes.d.ts +0 -4
  14. package/dist/actions/nodes.js +0 -15
  15. package/dist/client.d.ts +0 -141
  16. package/dist/client.js +0 -335
  17. package/dist/decorators/Cache.d.ts +0 -1
  18. package/dist/decorators/Cache.js +0 -79
  19. package/dist/decorators/CacheKey.d.ts +0 -1
  20. package/dist/decorators/CacheKey.js +0 -9
  21. package/dist/decorators/Invalidate.d.ts +0 -1
  22. package/dist/decorators/Invalidate.js +0 -47
  23. package/dist/enums/api-service.d.ts +0 -13
  24. package/dist/enums/api-service.js +0 -15
  25. package/dist/enums/api.d.ts +0 -5
  26. package/dist/enums/api.js +0 -7
  27. package/dist/enums/auth-method.d.ts +0 -9
  28. package/dist/enums/auth-method.js +0 -11
  29. package/dist/enums/authentication-factor.d.ts +0 -6
  30. package/dist/enums/authentication-factor.js +0 -7
  31. package/dist/enums/authenticator-type.d.ts +0 -3
  32. package/dist/enums/authenticator-type.js +0 -4
  33. package/dist/enums/browser.d.ts +0 -16
  34. package/dist/enums/browser.js +0 -18
  35. package/dist/enums/compression.d.ts +0 -5
  36. package/dist/enums/compression.js +0 -7
  37. package/dist/enums/credit-card.d.ts +0 -18
  38. package/dist/enums/credit-card.js +0 -20
  39. package/dist/enums/database-usage-range.d.ts +0 -5
  40. package/dist/enums/database-usage-range.js +0 -7
  41. package/dist/enums/email-template-locale.d.ts +0 -133
  42. package/dist/enums/email-template-locale.js +0 -135
  43. package/dist/enums/email-template-type.d.ts +0 -9
  44. package/dist/enums/email-template-type.js +0 -11
  45. package/dist/enums/entities/EntityLimitType.d.ts +0 -4
  46. package/dist/enums/entities/EntityLimitType.js +0 -6
  47. package/dist/enums/entities/PropertyAttributeName.d.ts +0 -27
  48. package/dist/enums/entities/PropertyAttributeName.js +0 -29
  49. package/dist/enums/entities/PropertyCondition.d.ts +0 -7
  50. package/dist/enums/entities/PropertyCondition.js +0 -10
  51. package/dist/enums/entities/PropertyType.d.ts +0 -12
  52. package/dist/enums/entities/PropertyType.js +0 -18
  53. package/dist/enums/entities/PropertyValueType.d.ts +0 -6
  54. package/dist/enums/entities/PropertyValueType.js +0 -8
  55. package/dist/enums/entities/RowAccess.d.ts +0 -2
  56. package/dist/enums/entities/RowAccess.js +0 -2
  57. package/dist/enums/entities/ViewFilterCondition.d.ts +0 -12
  58. package/dist/enums/entities/ViewFilterCondition.js +0 -14
  59. package/dist/enums/execution-method.d.ts +0 -8
  60. package/dist/enums/execution-method.js +0 -10
  61. package/dist/enums/flag.d.ts +0 -197
  62. package/dist/enums/flag.js +0 -199
  63. package/dist/enums/function-usage-range.d.ts +0 -5
  64. package/dist/enums/function-usage-range.js +0 -7
  65. package/dist/enums/image-format.d.ts +0 -7
  66. package/dist/enums/image-format.js +0 -9
  67. package/dist/enums/image-gravity.d.ts +0 -11
  68. package/dist/enums/image-gravity.js +0 -13
  69. package/dist/enums/index-type.d.ts +0 -5
  70. package/dist/enums/index-type.js +0 -7
  71. package/dist/enums/messaging-provider-type.d.ts +0 -5
  72. package/dist/enums/messaging-provider-type.js +0 -7
  73. package/dist/enums/name.d.ts +0 -14
  74. package/dist/enums/name.js +0 -16
  75. package/dist/enums/o-auth-provider copy.d.ts +0 -41
  76. package/dist/enums/o-auth-provider copy.js +0 -43
  77. package/dist/enums/o-auth-provider.d.ts +0 -41
  78. package/dist/enums/o-auth-provider.js +0 -42
  79. package/dist/enums/password-hash.d.ts +0 -13
  80. package/dist/enums/password-hash.js +0 -15
  81. package/dist/enums/platform-type.d.ts +0 -17
  82. package/dist/enums/platform-type.js +0 -19
  83. package/dist/enums/project-usage-range.d.ts +0 -4
  84. package/dist/enums/project-usage-range.js +0 -6
  85. package/dist/enums/region.d.ts +0 -4
  86. package/dist/enums/region.js +0 -6
  87. package/dist/enums/relation-mutate.d.ts +0 -5
  88. package/dist/enums/relation-mutate.js +0 -7
  89. package/dist/enums/relationship-type.d.ts +0 -6
  90. package/dist/enums/relationship-type.js +0 -8
  91. package/dist/enums/resource-type.d.ts +0 -4
  92. package/dist/enums/resource-type.js +0 -6
  93. package/dist/enums/runtime.d.ts +0 -48
  94. package/dist/enums/runtime.js +0 -50
  95. package/dist/enums/s-m-t-p-secure.d.ts +0 -3
  96. package/dist/enums/s-m-t-p-secure.js +0 -5
  97. package/dist/enums/shared/ApplicationLayout.d.ts +0 -4
  98. package/dist/enums/shared/ApplicationLayout.js +0 -6
  99. package/dist/enums/shared/Colors.d.ts +0 -24
  100. package/dist/enums/shared/Colors.js +0 -26
  101. package/dist/enums/shared/InputType.d.ts +0 -6
  102. package/dist/enums/shared/InputType.js +0 -8
  103. package/dist/enums/shared/Periodicity.d.ts +0 -7
  104. package/dist/enums/shared/Periodicity.js +0 -9
  105. package/dist/enums/shared/SvgIcon.d.ts +0 -37
  106. package/dist/enums/shared/SvgIcon.js +0 -39
  107. package/dist/enums/shared/Theme.d.ts +0 -4
  108. package/dist/enums/shared/Theme.js +0 -6
  109. package/dist/enums/sms-template-locale.d.ts +0 -133
  110. package/dist/enums/sms-template-locale.js +0 -135
  111. package/dist/enums/sms-template-type.d.ts +0 -6
  112. package/dist/enums/sms-template-type.js +0 -8
  113. package/dist/enums/smtp-encryption.d.ts +0 -5
  114. package/dist/enums/smtp-encryption.js +0 -7
  115. package/dist/enums/storage-usage-range.d.ts +0 -5
  116. package/dist/enums/storage-usage-range.js +0 -7
  117. package/dist/enums/subscriptions/PricingModel.d.ts +0 -11
  118. package/dist/enums/subscriptions/PricingModel.js +0 -12
  119. package/dist/enums/subscriptions/SubscriptionBillingPeriod.d.ts +0 -10
  120. package/dist/enums/subscriptions/SubscriptionBillingPeriod.js +0 -11
  121. package/dist/enums/subscriptions/SubscriptionFeatureLimitType.d.ts +0 -10
  122. package/dist/enums/subscriptions/SubscriptionFeatureLimitType.js +0 -13
  123. package/dist/enums/subscriptions/SubscriptionPriceType.d.ts +0 -7
  124. package/dist/enums/subscriptions/SubscriptionPriceType.js +0 -8
  125. package/dist/enums/tenants/LinkedAccountStatus.d.ts +0 -5
  126. package/dist/enums/tenants/LinkedAccountStatus.js +0 -7
  127. package/dist/enums/tenants/TenantUserJoined.d.ts +0 -6
  128. package/dist/enums/tenants/TenantUserJoined.js +0 -8
  129. package/dist/enums/tenants/TenantUserStatus.d.ts +0 -6
  130. package/dist/enums/tenants/TenantUserStatus.js +0 -8
  131. package/dist/enums/tenants/TenantUserType.d.ts +0 -5
  132. package/dist/enums/tenants/TenantUserType.js +0 -7
  133. package/dist/enums/user-usage-range.d.ts +0 -5
  134. package/dist/enums/user-usage-range.js +0 -7
  135. package/dist/getAppcondaClient.d.ts +0 -2
  136. package/dist/getAppcondaClient.js +0 -44
  137. package/dist/getSDKForCurrentUser.d.ts +0 -43
  138. package/dist/getSDKForCurrentUser.js +0 -76
  139. package/dist/getSDKForService.d.ts +0 -6
  140. package/dist/getSDKForService.js +0 -51
  141. package/dist/getSDKForTenant.d.ts +0 -20
  142. package/dist/getSDKForTenant.js +0 -44
  143. package/dist/id.d.ts +0 -20
  144. package/dist/id.js +0 -45
  145. package/dist/index.d.ts +0 -44
  146. package/dist/index.js +0 -42
  147. package/dist/inputFile.d.ts +0 -6
  148. package/dist/inputFile.js +0 -17
  149. package/dist/lib/Cache/Adapter.d.ts +0 -10
  150. package/dist/lib/Cache/Adapter.js +0 -2
  151. package/dist/lib/Cache/Adapters/Filesystem.d.ts +0 -16
  152. package/dist/lib/Cache/Adapters/Filesystem.js +0 -103
  153. package/dist/lib/Cache/Adapters/Memory.d.ts +0 -18
  154. package/dist/lib/Cache/Adapters/Memory.js +0 -47
  155. package/dist/lib/Cache/Adapters/None.d.ts +0 -12
  156. package/dist/lib/Cache/Adapters/None.js +0 -28
  157. package/dist/lib/Cache/Adapters/Sharding.d.ts +0 -17
  158. package/dist/lib/Cache/Adapters/Sharding.js +0 -73
  159. package/dist/lib/Cache/Cache.d.ts +0 -16
  160. package/dist/lib/Cache/Cache.js +0 -52
  161. package/dist/lib/Cache/index.d.ts +0 -4
  162. package/dist/lib/Cache/index.js +0 -5
  163. package/dist/lib/Cache/test.d.ts +0 -0
  164. package/dist/lib/Cache/test.js +0 -1
  165. package/dist/lib/Registry/Registry.d.ts +0 -38
  166. package/dist/lib/Registry/Registry.js +0 -56
  167. package/dist/lib/Registry/index.d.ts +0 -1
  168. package/dist/lib/Registry/index.js +0 -2
  169. package/dist/lib/Services.d.ts +0 -6
  170. package/dist/lib/Services.js +0 -14
  171. package/dist/lib/crypto.d.ts +0 -23
  172. package/dist/lib/crypto.js +0 -78
  173. package/dist/lib/env.d.ts +0 -1
  174. package/dist/lib/env.js +0 -137
  175. package/dist/lib/errors.d.ts +0 -70
  176. package/dist/lib/errors.js +0 -76
  177. package/dist/lib/index.d.ts +0 -2
  178. package/dist/lib/index.js +0 -3
  179. package/dist/lib/jwt.d.ts +0 -12
  180. package/dist/lib/jwt.js +0 -103
  181. package/dist/models.d.ts +0 -3272
  182. package/dist/models.js +0 -2
  183. package/dist/modules/account/actions.d.ts +0 -25
  184. package/dist/modules/account/actions.js +0 -18
  185. package/dist/modules/account/enums/authentication-factor.d.ts +0 -6
  186. package/dist/modules/account/enums/authentication-factor.js +0 -8
  187. package/dist/modules/account/enums/authenticator-type.d.ts +0 -3
  188. package/dist/modules/account/enums/authenticator-type.js +0 -5
  189. package/dist/modules/account/enums/o-auth-provider.d.ts +0 -41
  190. package/dist/modules/account/enums/o-auth-provider.js +0 -43
  191. package/dist/modules/account/index.d.ts +0 -3
  192. package/dist/modules/account/index.js +0 -4
  193. package/dist/modules/account/schema.d.ts +0 -17
  194. package/dist/modules/account/schema.js +0 -8
  195. package/dist/modules/account/service.d.ts +0 -530
  196. package/dist/modules/account/service.js +0 -1260
  197. package/dist/modules/account/types.d.ts +0 -411
  198. package/dist/modules/account/types.js +0 -2
  199. package/dist/modules/acl/service.d.ts +0 -26
  200. package/dist/modules/acl/service.js +0 -27
  201. package/dist/modules/agent/action.d.ts +0 -53
  202. package/dist/modules/agent/action.js +0 -64
  203. package/dist/modules/agent/index.d.ts +0 -4
  204. package/dist/modules/agent/index.js +0 -5
  205. package/dist/modules/agent/schema.d.ts +0 -48
  206. package/dist/modules/agent/schema.js +0 -21
  207. package/dist/modules/agent/service.d.ts +0 -12
  208. package/dist/modules/agent/service.js +0 -22
  209. package/dist/modules/agent/types.d.ts +0 -11
  210. package/dist/modules/agent/types.js +0 -2
  211. package/dist/modules/ai/index.d.ts +0 -1
  212. package/dist/modules/ai/index.js +0 -2
  213. package/dist/modules/ai/node/actions.d.ts +0 -4
  214. package/dist/modules/ai/node/actions.js +0 -16
  215. package/dist/modules/ai/node/index.d.ts +0 -2
  216. package/dist/modules/ai/node/index.js +0 -3
  217. package/dist/modules/ai/node/service.d.ts +0 -5
  218. package/dist/modules/ai/node/service.js +0 -12
  219. package/dist/modules/index.d.ts +0 -6
  220. package/dist/modules/index.js +0 -7
  221. package/dist/modules/task/action.d.ts +0 -168
  222. package/dist/modules/task/action.js +0 -163
  223. package/dist/modules/task/index.d.ts +0 -4
  224. package/dist/modules/task/index.js +0 -5
  225. package/dist/modules/task/schema.d.ts +0 -107
  226. package/dist/modules/task/schema.js +0 -44
  227. package/dist/modules/task/service.d.ts +0 -19
  228. package/dist/modules/task/service.js +0 -43
  229. package/dist/modules/task/types.d.ts +0 -84
  230. package/dist/modules/task/types.js +0 -2
  231. package/dist/modules/tenant/actions.d.ts +0 -45
  232. package/dist/modules/tenant/actions.js +0 -38
  233. package/dist/modules/tenant/index.d.ts +0 -3
  234. package/dist/modules/tenant/index.js +0 -4
  235. package/dist/modules/tenant/tenant.d.ts +0 -32
  236. package/dist/modules/tenant/tenant.js +0 -125
  237. package/dist/modules/tenant/types.d.ts +0 -11
  238. package/dist/modules/tenant/types.js +0 -2
  239. package/dist/modules/waitlist/action.d.ts +0 -69
  240. package/dist/modules/waitlist/action.js +0 -78
  241. package/dist/modules/waitlist/index.d.ts +0 -4
  242. package/dist/modules/waitlist/index.js +0 -5
  243. package/dist/modules/waitlist/schema.d.ts +0 -39
  244. package/dist/modules/waitlist/schema.js +0 -18
  245. package/dist/modules/waitlist/service.d.ts +0 -13
  246. package/dist/modules/waitlist/service.js +0 -28
  247. package/dist/modules/waitlist/types.d.ts +0 -14
  248. package/dist/modules/waitlist/types.js +0 -2
  249. package/dist/permission.d.ts +0 -43
  250. package/dist/permission.js +0 -54
  251. package/dist/query.d.ts +0 -194
  252. package/dist/query.js +0 -204
  253. package/dist/role.d.ts +0 -70
  254. package/dist/role.js +0 -94
  255. package/dist/schemas/nodes.d.ts +0 -0
  256. package/dist/schemas/nodes.js +0 -1
  257. package/dist/service-client.d.ts +0 -7
  258. package/dist/service-client.js +0 -14
  259. package/dist/service.d.ts +0 -11
  260. package/dist/service.js +0 -23
  261. package/dist/services/account.d.ts +0 -530
  262. package/dist/services/account.js +0 -1259
  263. package/dist/services/applets.d.ts +0 -9
  264. package/dist/services/applets.js +0 -40
  265. package/dist/services/avatars.d.ts +0 -115
  266. package/dist/services/avatars.js +0 -251
  267. package/dist/services/chat-flow.d.ts +0 -7
  268. package/dist/services/chat-flow.js +0 -26
  269. package/dist/services/community.d.ts +0 -19
  270. package/dist/services/community.js +0 -69
  271. package/dist/services/configuration.d.ts +0 -5
  272. package/dist/services/configuration.js +0 -11
  273. package/dist/services/databases.d.ts +0 -613
  274. package/dist/services/databases.js +0 -1736
  275. package/dist/services/functions.d.ts +0 -319
  276. package/dist/services/functions.js +0 -810
  277. package/dist/services/graphql.d.ts +0 -25
  278. package/dist/services/graphql.js +0 -57
  279. package/dist/services/health.d.ts +0 -231
  280. package/dist/services/health.js +0 -463
  281. package/dist/services/locale.d.ts +0 -80
  282. package/dist/services/locale.js +0 -144
  283. package/dist/services/messaging.d.ts +0 -685
  284. package/dist/services/messaging.js +0 -1920
  285. package/dist/services/node.d.ts +0 -5
  286. package/dist/services/node.js +0 -11
  287. package/dist/services/permissions.d.ts +0 -20
  288. package/dist/services/permissions.js +0 -90
  289. package/dist/services/pricing.d.ts +0 -15
  290. package/dist/services/pricing.js +0 -21
  291. package/dist/services/projects.d.ts +0 -542
  292. package/dist/services/projects.js +0 -1526
  293. package/dist/services/roles.d.ts +0 -19
  294. package/dist/services/roles.js +0 -72
  295. package/dist/services/schema.d.ts +0 -17
  296. package/dist/services/schema.js +0 -48
  297. package/dist/services/storage.d.ts +0 -189
  298. package/dist/services/storage.js +0 -474
  299. package/dist/services/subscription.d.ts +0 -15
  300. package/dist/services/subscription.js +0 -30
  301. package/dist/services/teams.d.ts +0 -167
  302. package/dist/services/teams.js +0 -395
  303. package/dist/services/tenant-subscription.d.ts +0 -12
  304. package/dist/services/tenant-subscription.js +0 -52
  305. package/dist/services/tenant.d.ts +0 -32
  306. package/dist/services/tenant.js +0 -124
  307. package/dist/services/users.d.ts +0 -499
  308. 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
- }