@app-connect/core 1.7.37 → 1.7.38

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 (286) hide show
  1. package/README.md +17 -16
  2. package/dist/connector/developerPortal.d.ts +6 -0
  3. package/{connector → dist/connector}/developerPortal.js +29 -12
  4. package/dist/connector/mock.d.ts +1 -0
  5. package/{connector → dist/connector}/mock.js +33 -17
  6. package/dist/connector/proxy/engine.d.ts +10 -0
  7. package/dist/connector/proxy/engine.js +222 -0
  8. package/dist/connector/proxy/index.d.ts +5 -0
  9. package/dist/connector/proxy/index.js +511 -0
  10. package/dist/connector/registry.d.ts +1 -0
  11. package/dist/connector/registry.js +243 -0
  12. package/dist/handlers/admin.d.ts +1 -0
  13. package/{handlers → dist/handlers}/admin.js +137 -78
  14. package/dist/handlers/appointment.d.ts +9 -0
  15. package/{handlers → dist/handlers}/appointment.js +58 -29
  16. package/dist/handlers/auth.d.ts +9 -0
  17. package/{handlers → dist/handlers}/auth.js +68 -40
  18. package/dist/handlers/calldown.d.ts +10 -0
  19. package/dist/handlers/calldown.js +134 -0
  20. package/dist/handlers/contact.d.ts +1 -0
  21. package/{handlers → dist/handlers}/contact.js +61 -39
  22. package/dist/handlers/disposition.d.ts +1 -0
  23. package/{handlers → dist/handlers}/disposition.js +20 -10
  24. package/dist/handlers/log.d.ts +1 -0
  25. package/{handlers → dist/handlers}/log.js +91 -124
  26. package/dist/handlers/managedAuth.d.ts +1 -0
  27. package/{handlers → dist/handlers}/managedAuth.js +134 -61
  28. package/dist/handlers/managedOAuth.d.ts +13 -0
  29. package/{handlers → dist/handlers}/managedOAuth.js +102 -30
  30. package/dist/handlers/plugin.d.ts +1 -0
  31. package/{handlers → dist/handlers}/plugin.js +59 -27
  32. package/dist/handlers/user.d.ts +1 -0
  33. package/{handlers → dist/handlers}/user.js +45 -27
  34. package/dist/index.d.ts +1 -0
  35. package/{index.js → dist/index.js} +538 -449
  36. package/dist/jest.config.d.ts +1 -0
  37. package/dist/jest.config.js +65 -0
  38. package/dist/lib/analytics.d.ts +4 -0
  39. package/{lib → dist/lib}/analytics.js +8 -6
  40. package/dist/lib/authSession.d.ts +5 -0
  41. package/{lib → dist/lib}/authSession.js +15 -43
  42. package/dist/lib/cacheCleanup.d.ts +4 -0
  43. package/{lib → dist/lib}/cacheCleanup.js +5 -17
  44. package/dist/lib/callLogComposer.d.ts +109 -0
  45. package/{lib → dist/lib}/callLogComposer.js +157 -197
  46. package/dist/lib/callLogLookup.d.ts +6 -0
  47. package/{lib → dist/lib}/callLogLookup.js +12 -34
  48. package/dist/lib/constants.d.ts +6 -0
  49. package/dist/lib/constants.js +9 -0
  50. package/dist/lib/debugTracer.d.ts +17 -0
  51. package/{lib → dist/lib}/debugTracer.js +7 -83
  52. package/dist/lib/encode.d.ts +3 -0
  53. package/dist/lib/encode.js +50 -0
  54. package/dist/lib/errorHandler.d.ts +7 -0
  55. package/dist/lib/errorHandler.js +161 -0
  56. package/dist/lib/generalErrorMessage.d.ts +7 -0
  57. package/{lib → dist/lib}/generalErrorMessage.js +6 -6
  58. package/dist/lib/jwt.d.ts +4 -0
  59. package/dist/lib/jwt.js +18 -0
  60. package/dist/lib/logger.d.ts +24 -0
  61. package/dist/lib/logger.js +126 -0
  62. package/dist/lib/migrateCallLogsSchema.d.ts +32 -0
  63. package/{lib → dist/lib}/migrateCallLogsSchema.js +75 -160
  64. package/dist/lib/oauth.d.ts +4 -0
  65. package/{lib → dist/lib}/oauth.js +157 -160
  66. package/dist/lib/ringcentral.d.ts +24 -0
  67. package/dist/lib/ringcentral.js +226 -0
  68. package/dist/lib/s3ErrorLogReport.d.ts +4 -0
  69. package/{lib → dist/lib}/s3ErrorLogReport.js +11 -23
  70. package/dist/lib/sharedSMSComposer.d.ts +7 -0
  71. package/{lib → dist/lib}/sharedSMSComposer.js +21 -107
  72. package/dist/lib/util.d.ts +7 -0
  73. package/{lib → dist/lib}/util.js +9 -20
  74. package/dist/mcp/lib/oauthError.d.ts +1 -0
  75. package/dist/mcp/lib/oauthError.js +25 -0
  76. package/dist/mcp/lib/validator.d.ts +1 -0
  77. package/{mcp → dist/mcp}/lib/validator.js +16 -20
  78. package/dist/mcp/lib/widgetSessionToken.d.ts +1 -0
  79. package/dist/mcp/lib/widgetSessionToken.js +46 -0
  80. package/dist/mcp/mcpHandler.d.ts +8 -0
  81. package/{mcp → dist/mcp}/mcpHandler.js +98 -88
  82. package/dist/mcp/tools/cancelAppointment.d.ts +1 -0
  83. package/{mcp → dist/mcp}/tools/cancelAppointment.js +7 -16
  84. package/dist/mcp/tools/checkAuthStatus.d.ts +1 -0
  85. package/{mcp → dist/mcp}/tools/checkAuthStatus.js +21 -14
  86. package/dist/mcp/tools/confirmAppointment.d.ts +1 -0
  87. package/{mcp → dist/mcp}/tools/confirmAppointment.js +7 -16
  88. package/dist/mcp/tools/createAppointment.d.ts +1 -0
  89. package/{mcp → dist/mcp}/tools/createAppointment.js +7 -19
  90. package/dist/mcp/tools/createCallLog.d.ts +1 -0
  91. package/{mcp → dist/mcp}/tools/createCallLog.js +18 -29
  92. package/dist/mcp/tools/createContact.d.ts +1 -0
  93. package/{mcp → dist/mcp}/tools/createContact.js +8 -20
  94. package/dist/mcp/tools/createMessageLog.d.ts +1 -0
  95. package/{mcp → dist/mcp}/tools/createMessageLog.js +14 -26
  96. package/dist/mcp/tools/doAuth.d.ts +1 -0
  97. package/{mcp → dist/mcp}/tools/doAuth.js +17 -13
  98. package/dist/mcp/tools/findContactByName.d.ts +1 -0
  99. package/{mcp → dist/mcp}/tools/findContactByName.js +9 -15
  100. package/dist/mcp/tools/findContactByPhone.d.ts +1 -0
  101. package/{mcp → dist/mcp}/tools/findContactByPhone.js +8 -15
  102. package/dist/mcp/tools/getCallLog.d.ts +1 -0
  103. package/{mcp → dist/mcp}/tools/getCallLog.js +12 -21
  104. package/dist/mcp/tools/getGoogleFilePicker.d.ts +1 -0
  105. package/{mcp → dist/mcp}/tools/getGoogleFilePicker.js +9 -18
  106. package/dist/mcp/tools/getHelp.d.ts +1 -0
  107. package/{mcp → dist/mcp}/tools/getHelp.js +5 -6
  108. package/dist/mcp/tools/getPublicConnectors.d.ts +1 -0
  109. package/{mcp → dist/mcp}/tools/getPublicConnectors.js +19 -18
  110. package/dist/mcp/tools/getSessionInfo.d.ts +1 -0
  111. package/{mcp → dist/mcp}/tools/getSessionInfo.js +10 -16
  112. package/dist/mcp/tools/index.d.ts +8 -0
  113. package/dist/mcp/tools/index.js +50 -0
  114. package/dist/mcp/tools/listAppointments.d.ts +1 -0
  115. package/{mcp → dist/mcp}/tools/listAppointments.js +7 -19
  116. package/dist/mcp/tools/logout.d.ts +1 -0
  117. package/{mcp → dist/mcp}/tools/logout.js +16 -14
  118. package/dist/mcp/tools/rcGetCallLogs.d.ts +1 -0
  119. package/{mcp → dist/mcp}/tools/rcGetCallLogs.js +10 -8
  120. package/dist/mcp/tools/updateAppointment.d.ts +1 -0
  121. package/{mcp → dist/mcp}/tools/updateAppointment.js +17 -22
  122. package/dist/mcp/tools/updateCallLog.d.ts +1 -0
  123. package/{mcp → dist/mcp}/tools/updateCallLog.js +16 -26
  124. package/dist/models/accountDataModel.d.ts +3 -0
  125. package/dist/models/accountDataModel.js +39 -0
  126. package/dist/models/adminConfigModel.d.ts +2 -0
  127. package/dist/models/adminConfigModel.js +39 -0
  128. package/dist/models/cacheModel.d.ts +2 -0
  129. package/{models → dist/models}/cacheModel.js +7 -3
  130. package/dist/models/callDownListModel.d.ts +2 -0
  131. package/{models → dist/models}/callDownListModel.js +8 -4
  132. package/dist/models/callLogModel.d.ts +2 -0
  133. package/dist/models/callLogModel.js +43 -0
  134. package/dist/models/dynamo/connectorSchema.d.ts +2 -0
  135. package/dist/models/dynamo/connectorSchema.js +141 -0
  136. package/dist/models/dynamo/lockSchema.d.ts +2 -0
  137. package/{models → dist/models}/dynamo/lockSchema.js +5 -7
  138. package/dist/models/dynamo/noteCacheSchema.d.ts +2 -0
  139. package/{models → dist/models}/dynamo/noteCacheSchema.js +4 -6
  140. package/dist/models/llmSessionModel.d.ts +2 -0
  141. package/dist/models/llmSessionModel.js +21 -0
  142. package/dist/models/messageLogModel.d.ts +2 -0
  143. package/{models → dist/models}/messageLogModel.js +8 -4
  144. package/dist/models/sequelize.d.ts +2 -0
  145. package/dist/models/sequelize.js +68 -0
  146. package/dist/models/userModel.d.ts +2 -0
  147. package/dist/models/userModel.js +49 -0
  148. package/dist/package.json +100 -0
  149. package/dist/releaseNotes.json +1222 -0
  150. package/dist/tsconfig.json +14 -0
  151. package/dist/types/admin.d.ts +141 -0
  152. package/dist/types/analytics.d.ts +14 -0
  153. package/dist/types/appointment.d.ts +50 -0
  154. package/dist/types/auth.d.ts +137 -0
  155. package/dist/types/authSession.d.ts +35 -0
  156. package/dist/types/cacheCleanup.d.ts +12 -0
  157. package/dist/types/calldown.d.ts +54 -0
  158. package/dist/types/common.d.ts +46 -0
  159. package/dist/types/connector.d.ts +165 -0
  160. package/dist/types/contact.d.ts +125 -0
  161. package/dist/types/errorHandler.d.ts +60 -0
  162. package/dist/types/index.d.ts +76 -0
  163. package/dist/types/json.d.ts +9 -0
  164. package/dist/types/jwt.d.ts +8 -0
  165. package/dist/types/logging.d.ts +224 -0
  166. package/dist/types/managedAuth.d.ts +114 -0
  167. package/dist/types/managedOAuth.d.ts +59 -0
  168. package/dist/types/manifest.d.ts +120 -0
  169. package/dist/types/migration.d.ts +15 -0
  170. package/dist/types/plugin.d.ts +74 -0
  171. package/dist/types/ringcentral.d.ts +61 -0
  172. package/dist/types/s3ErrorLogReport.d.ts +16 -0
  173. package/dist/types/sharedSMSComposer.d.ts +105 -0
  174. package/dist/types/user.d.ts +46 -0
  175. package/dist/types/util.d.ts +7 -0
  176. package/package.json +34 -6
  177. package/releaseNotes.json +8 -0
  178. package/.env.test +0 -5
  179. package/connector/proxy/engine.js +0 -165
  180. package/connector/proxy/index.js +0 -500
  181. package/connector/registry.js +0 -252
  182. package/docs/README.md +0 -50
  183. package/docs/architecture.md +0 -94
  184. package/docs/connectors.md +0 -116
  185. package/docs/handlers.md +0 -128
  186. package/docs/libraries.md +0 -98
  187. package/docs/models.md +0 -146
  188. package/docs/routes.md +0 -119
  189. package/docs/tests.md +0 -73
  190. package/handlers/calldown.js +0 -99
  191. package/jest.config.js +0 -57
  192. package/lib/constants.js +0 -9
  193. package/lib/encode.js +0 -30
  194. package/lib/errorHandler.js +0 -218
  195. package/lib/jwt.js +0 -18
  196. package/lib/logger.js +0 -190
  197. package/lib/ringcentral.js +0 -267
  198. package/mcp/README.md +0 -420
  199. package/mcp/tools/index.js +0 -51
  200. package/mcp/ui/App/App.tsx +0 -358
  201. package/mcp/ui/App/components/AuthInfoForm.tsx +0 -113
  202. package/mcp/ui/App/components/AuthSuccess.tsx +0 -22
  203. package/mcp/ui/App/components/ConnectorList.tsx +0 -82
  204. package/mcp/ui/App/components/DebugPanel.tsx +0 -43
  205. package/mcp/ui/App/components/OAuthConnect.tsx +0 -270
  206. package/mcp/ui/App/lib/callTool.ts +0 -130
  207. package/mcp/ui/App/lib/debugLog.ts +0 -41
  208. package/mcp/ui/App/lib/developerPortal.ts +0 -111
  209. package/mcp/ui/App/main.css +0 -6
  210. package/mcp/ui/App/root.tsx +0 -13
  211. package/mcp/ui/dist/index.html +0 -53
  212. package/mcp/ui/vite.config.ts +0 -16
  213. package/models/accountDataModel.js +0 -34
  214. package/models/adminConfigModel.js +0 -35
  215. package/models/callLogModel.js +0 -39
  216. package/models/dynamo/connectorSchema.js +0 -146
  217. package/models/llmSessionModel.js +0 -17
  218. package/models/sequelize.js +0 -17
  219. package/models/userModel.js +0 -45
  220. package/test/connector/developerPortal.test.js +0 -166
  221. package/test/connector/mock.test.js +0 -131
  222. package/test/connector/proxy/engine.test.js +0 -211
  223. package/test/connector/proxy/index.test.js +0 -525
  224. package/test/connector/proxy/sample.json +0 -162
  225. package/test/connector/registry.test.js +0 -416
  226. package/test/handlers/admin.test.js +0 -960
  227. package/test/handlers/appointment.test.js +0 -260
  228. package/test/handlers/auth.test.js +0 -1096
  229. package/test/handlers/calldown.test.js +0 -310
  230. package/test/handlers/contact.test.js +0 -1014
  231. package/test/handlers/disposition.test.js +0 -396
  232. package/test/handlers/log.test.js +0 -1847
  233. package/test/handlers/managedAuth.test.js +0 -458
  234. package/test/handlers/managedOAuth.test.js +0 -262
  235. package/test/handlers/plugin.test.js +0 -429
  236. package/test/handlers/user.test.js +0 -381
  237. package/test/index.test.js +0 -301
  238. package/test/lib/analytics.test.js +0 -146
  239. package/test/lib/authSession.test.js +0 -173
  240. package/test/lib/cacheCleanup.test.js +0 -127
  241. package/test/lib/callLogComposer.test.js +0 -1231
  242. package/test/lib/debugTracer.test.js +0 -328
  243. package/test/lib/encode.test.js +0 -59
  244. package/test/lib/errorHandler.test.js +0 -246
  245. package/test/lib/generalErrorMessage.test.js +0 -82
  246. package/test/lib/jwt.test.js +0 -176
  247. package/test/lib/logger.test.js +0 -206
  248. package/test/lib/oauth.test.js +0 -359
  249. package/test/lib/ringcentral.test.js +0 -467
  250. package/test/lib/s3ErrorLogReport.test.js +0 -187
  251. package/test/lib/sharedSMSComposer.test.js +0 -1084
  252. package/test/lib/util.test.js +0 -329
  253. package/test/mcp/mcpHandler.test.js +0 -73
  254. package/test/mcp/mcpHandlerMore.test.js +0 -384
  255. package/test/mcp/tools/appointmentTools.test.js +0 -362
  256. package/test/mcp/tools/checkAuthStatus.test.js +0 -83
  257. package/test/mcp/tools/createCallLog.test.js +0 -436
  258. package/test/mcp/tools/createContact.test.js +0 -58
  259. package/test/mcp/tools/createMessageLog.test.js +0 -595
  260. package/test/mcp/tools/doAuth.test.js +0 -113
  261. package/test/mcp/tools/findContactByName.test.js +0 -275
  262. package/test/mcp/tools/findContactByPhone.test.js +0 -296
  263. package/test/mcp/tools/getCallLog.test.js +0 -298
  264. package/test/mcp/tools/getGoogleFilePicker.test.js +0 -281
  265. package/test/mcp/tools/getPublicConnectors.test.js +0 -107
  266. package/test/mcp/tools/getSessionInfo.test.js +0 -127
  267. package/test/mcp/tools/logout.test.js +0 -233
  268. package/test/mcp/tools/rcGetCallLogs.test.js +0 -56
  269. package/test/mcp/tools/updateCallLog.test.js +0 -360
  270. package/test/models/accountDataModel.test.js +0 -98
  271. package/test/models/callDownListModel.test.js +0 -125
  272. package/test/models/dynamo/connectorSchema.test.js +0 -189
  273. package/test/models/dynamo/lockSchema.test.js +0 -37
  274. package/test/models/dynamo/noteCacheSchema.test.js +0 -45
  275. package/test/models/llmSessionModel.test.js +0 -91
  276. package/test/models/models.test.js +0 -660
  277. package/test/routes/calldownRoutes.test.js +0 -224
  278. package/test/routes/coreRouterBroadRoutes.test.js +0 -855
  279. package/test/routes/dispositionRoutes.test.js +0 -192
  280. package/test/routes/managedAuthRoutes.test.js +0 -386
  281. package/test/routes/pluginRoutes.test.js +0 -262
  282. package/test/setup.js +0 -178
  283. /package/{mcp → dist/mcp}/ui/index.html +0 -0
  284. /package/{mcp → dist/mcp}/ui/package-lock.json +0 -0
  285. /package/{mcp → dist/mcp}/ui/package.json +0 -0
  286. /package/{mcp → dist/mcp}/ui/tsconfig.json +0 -0
@@ -1,25 +1,61 @@
1
- const connectorRegistry = require('../connector/registry');
2
- const developerPortal = require('../connector/developerPortal');
3
- const { AccountDataModel } = require('../models/accountDataModel');
1
+ "use strict";
2
+ // @ts-check
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ /** @typedef {import('../types').AppConnectManifest} AppConnectManifest */
5
+ /** @typedef {import('../types').DeveloperPortalManifestProvider} DeveloperPortalManifestProvider */
6
+ /** @typedef {import('../types').ManagedAuthAdminSettingsParams} ManagedAuthAdminSettingsParams */
7
+ /** @typedef {import('../types').ManagedAuthFieldDefinition} ManagedAuthFieldDefinition */
8
+ /** @typedef {import('../types').ManagedAuthFieldDefinitionParams} ManagedAuthFieldDefinitionParams */
9
+ /** @typedef {import('../types').ManagedAuthLoginFailureParams} ManagedAuthLoginFailureParams */
10
+ /** @typedef {import('../types').ManagedAuthRecord} ManagedAuthRecord */
11
+ /** @typedef {import('../types').ManagedAuthState} ManagedAuthState */
12
+ /** @typedef {import('../types').ManagedAuthStateParams} ManagedAuthStateParams */
13
+ /** @typedef {import('../types').ManagedAuthStoredValue} ManagedAuthStoredValue */
14
+ /** @typedef {import('../types').ManagedAuthUserParams} ManagedAuthUserParams */
15
+ /** @typedef {import('../types').ManagedAuthValue} ManagedAuthValue */
16
+ /** @typedef {import('../types').ManagedAuthValues} ManagedAuthValues */
17
+ /** @typedef {import('../types').PersistSubmittedManagedValuesParams} PersistSubmittedManagedValuesParams */
18
+ /** @typedef {import('../types').ResolveApiKeyLoginFieldsParams} ResolveApiKeyLoginFieldsParams */
19
+ /** @typedef {import('../types').ResolveApiKeyLoginFieldsResult} ResolveApiKeyLoginFieldsResult */
20
+ /** @typedef {import('../types').StoredFieldValue} StoredFieldValue */
21
+ /** @typedef {import('../types').UpsertOrgManagedAuthValuesParams} UpsertOrgManagedAuthValuesParams */
22
+ /** @typedef {import('../types').UpsertUserManagedAuthValuesParams} UpsertUserManagedAuthValuesParams */
23
+ const connectorRegistry = /** @type {{ getManifest(platform: string, fallback?: boolean): AppConnectManifest }} */ ( /** @type {unknown} */(require('../connector/registry')));
24
+ const developerPortal = /** @type {DeveloperPortalManifestProvider} */ ( /** @type {unknown} */(require('../connector/developerPortal')));
25
+ const { AccountDataModel: RawAccountDataModel } = require('../models/accountDataModel');
26
+ const AccountDataModel = /** @type {{ findOne(options: Record<string, unknown>): Promise<ManagedAuthRecord | null>, findAll(options: Record<string, unknown>): Promise<ManagedAuthRecord[]>, create(values: Record<string, unknown>): Promise<ManagedAuthRecord>, destroy(options: Record<string, unknown>): Promise<number> }} */ (RawAccountDataModel);
4
27
  const { Op } = require('sequelize');
5
- const { encode, decoded } = require('../lib/encode');
6
-
28
+ const { encode: rawEncode, decoded: rawDecoded } = require('../lib/encode');
29
+ const encode = /** @type {(value: string) => string} */ (rawEncode);
30
+ const decoded = /** @type {(value: string) => string} */ (rawDecoded);
7
31
  const MANAGED_AUTH_ORG_DATA_KEY = 'managed-auth-org';
8
32
  const MANAGED_AUTH_USER_DATA_KEY = 'managed-auth-user';
9
33
  const MANAGED_AUTH_LOGIN_FAILURE_DATA_KEY = 'managed-auth-login-failure';
10
-
34
+ /**
35
+ * @param {{ rcExtensionId: string | number }} params
36
+ * @returns {string}
37
+ */
11
38
  function getUserManagedAuthDataKey({ rcExtensionId }) {
12
39
  return `${MANAGED_AUTH_USER_DATA_KEY}:${rcExtensionId}`;
13
40
  }
14
-
41
+ /**
42
+ * @param {{ rcExtensionId: string | number }} params
43
+ * @returns {string}
44
+ */
15
45
  function getManagedAuthLoginFailureDataKey({ rcExtensionId }) {
16
46
  return `${MANAGED_AUTH_LOGIN_FAILURE_DATA_KEY}:${rcExtensionId}`;
17
47
  }
18
-
48
+ /**
49
+ * @param {unknown} value
50
+ * @returns {boolean}
51
+ */
19
52
  function isFilled(value) {
20
53
  return value !== undefined && value !== null && value !== '';
21
54
  }
22
-
55
+ /**
56
+ * @param {ManagedAuthFieldDefinitionParams} params
57
+ * @returns {Promise<ManagedAuthFieldDefinition[]>}
58
+ */
23
59
  async function getApiKeyFieldDefinitions({ rcAccountId, platform, connectorId, isPrivate = false }) {
24
60
  if (!platform) {
25
61
  return [];
@@ -27,23 +63,29 @@ async function getApiKeyFieldDefinitions({ rcAccountId, platform, connectorId, i
27
63
  if (connectorId) {
28
64
  const manifest = await developerPortal.getConnectorManifest({ rcAccountId, connectorId, isPrivate });
29
65
  if (manifest?.platforms?.[platform]?.auth?.apiKey?.page?.content) {
30
- return manifest.platforms[platform].auth.apiKey.page.content;
66
+ return /** @type {ManagedAuthFieldDefinition[]} */ (manifest.platforms[platform].auth.apiKey.page.content);
31
67
  }
32
68
  }
33
69
  try {
34
70
  const manifest = connectorRegistry.getManifest(platform, true);
35
- return manifest?.platforms?.[platform]?.auth?.apiKey?.page?.content ?? [];
71
+ return /** @type {ManagedAuthFieldDefinition[]} */ (manifest?.platforms?.[platform]?.auth?.apiKey?.page?.content ?? []);
36
72
  }
37
73
  catch (error) {
38
74
  return [];
39
75
  }
40
76
  }
41
-
77
+ /**
78
+ * @param {ManagedAuthFieldDefinitionParams} params
79
+ * @returns {Promise<ManagedAuthFieldDefinition[]>}
80
+ */
42
81
  async function getManagedFieldDefinitions({ rcAccountId, platform, connectorId, isPrivate = false }) {
43
82
  const fieldDefinitions = await getApiKeyFieldDefinitions({ rcAccountId, platform, connectorId, isPrivate });
44
83
  return fieldDefinitions.filter(field => field?.managed);
45
84
  }
46
-
85
+ /**
86
+ * @param {ManagedAuthValue} value
87
+ * @returns {ManagedAuthStoredValue}
88
+ */
47
89
  function encryptStoredValue(value) {
48
90
  return {
49
91
  version: 1,
@@ -51,17 +93,24 @@ function encryptStoredValue(value) {
51
93
  value: encode(JSON.stringify(value))
52
94
  };
53
95
  }
54
-
96
+ /**
97
+ * @param {ManagedAuthValue} value
98
+ * @returns {ManagedAuthValue}
99
+ */
55
100
  function decryptStoredValue(value) {
56
101
  if (!value) {
57
102
  return undefined;
58
103
  }
59
- if (value?.encrypted && value?.value) {
60
- return JSON.parse(decoded(value.value));
104
+ const storedValue = /** @type {ManagedAuthStoredValue} */ (value);
105
+ if (storedValue?.encrypted && storedValue?.value) {
106
+ return JSON.parse(decoded(storedValue.value));
61
107
  }
62
108
  return value;
63
109
  }
64
-
110
+ /**
111
+ * @param {{ rcAccountId?: string | number, platform?: string, dataKey: string }} params
112
+ * @returns {Promise<ManagedAuthRecord | null>}
113
+ */
65
114
  async function getManagedAuthRecord({ rcAccountId, platform, dataKey }) {
66
115
  if (!rcAccountId || !platform) {
67
116
  return null;
@@ -74,7 +123,10 @@ async function getManagedAuthRecord({ rcAccountId, platform, dataKey }) {
74
123
  }
75
124
  });
76
125
  }
77
-
126
+ /**
127
+ * @param {import('../types').ManagedAuthAccountParams} params
128
+ * @returns {Promise<ManagedAuthValues>}
129
+ */
78
130
  async function getOrgManagedAuthValues({ rcAccountId, platform }) {
79
131
  const record = await getManagedAuthRecord({
80
132
  rcAccountId,
@@ -82,13 +134,17 @@ async function getOrgManagedAuthValues({ rcAccountId, platform }) {
82
134
  dataKey: MANAGED_AUTH_ORG_DATA_KEY
83
135
  });
84
136
  const fields = record?.data?.fields ?? {};
137
+ /** @type {ManagedAuthValues} */
85
138
  const decryptedFields = {};
86
139
  Object.keys(fields).forEach(key => {
87
140
  decryptedFields[key] = decryptStoredValue(fields[key]);
88
141
  });
89
142
  return decryptedFields;
90
143
  }
91
-
144
+ /**
145
+ * @param {ManagedAuthUserParams} params
146
+ * @returns {Promise<ManagedAuthValues>}
147
+ */
92
148
  async function getUserManagedAuthValues({ rcAccountId, platform, rcExtensionId }) {
93
149
  if (!rcExtensionId) {
94
150
  return {};
@@ -100,13 +156,17 @@ async function getUserManagedAuthValues({ rcAccountId, platform, rcExtensionId }
100
156
  dataKey: userDataKey
101
157
  });
102
158
  const fields = scopedRecord?.data?.fields ?? {};
159
+ /** @type {ManagedAuthValues} */
103
160
  const decryptedFields = {};
104
161
  Object.keys(fields).forEach(key => {
105
162
  decryptedFields[key] = decryptStoredValue(fields[key]);
106
163
  });
107
164
  return decryptedFields;
108
165
  }
109
-
166
+ /**
167
+ * @param {ManagedAuthLoginFailureParams} params
168
+ * @returns {Promise<boolean>}
169
+ */
110
170
  async function hasManagedAuthLoginFailure({ rcAccountId, platform, rcExtensionId }) {
111
171
  if (!rcExtensionId) {
112
172
  return false;
@@ -118,7 +178,10 @@ async function hasManagedAuthLoginFailure({ rcAccountId, platform, rcExtensionId
118
178
  });
119
179
  return !!record;
120
180
  }
121
-
181
+ /**
182
+ * @param {ManagedAuthLoginFailureParams} params
183
+ * @returns {Promise<ManagedAuthRecord | undefined>}
184
+ */
122
185
  async function markManagedAuthLoginFailure({ rcAccountId, platform, rcExtensionId }) {
123
186
  if (!rcAccountId || !platform || !rcExtensionId) {
124
187
  return;
@@ -143,7 +206,10 @@ async function markManagedAuthLoginFailure({ rcAccountId, platform, rcExtensionI
143
206
  data
144
207
  });
145
208
  }
146
-
209
+ /**
210
+ * @param {ManagedAuthLoginFailureParams} params
211
+ * @returns {Promise<number | undefined>}
212
+ */
147
213
  async function clearManagedAuthLoginFailure({ rcAccountId, platform, rcExtensionId }) {
148
214
  if (!rcAccountId || !platform || !rcExtensionId) {
149
215
  return 0;
@@ -156,17 +222,20 @@ async function clearManagedAuthLoginFailure({ rcAccountId, platform, rcExtension
156
222
  }
157
223
  });
158
224
  }
159
-
225
+ /**
226
+ * @param {UpsertOrgManagedAuthValuesParams} params
227
+ * @returns {Promise<ManagedAuthRecord>}
228
+ */
160
229
  async function upsertOrgManagedAuthValues({ rcAccountId, platform, values = {}, fieldsToRemove = [] }) {
161
230
  const existingRecord = await getManagedAuthRecord({
162
231
  rcAccountId,
163
232
  platform,
164
233
  dataKey: MANAGED_AUTH_ORG_DATA_KEY
165
234
  });
235
+ /** @type {Record<string, unknown>} */
166
236
  const nextFields = {
167
237
  ...(existingRecord?.data?.fields ?? {})
168
238
  };
169
-
170
239
  Object.keys(values).forEach(key => {
171
240
  if (isFilled(values[key])) {
172
241
  nextFields[key] = encryptStoredValue(values[key]);
@@ -175,11 +244,9 @@ async function upsertOrgManagedAuthValues({ rcAccountId, platform, values = {},
175
244
  fieldsToRemove.forEach(key => {
176
245
  delete nextFields[key];
177
246
  });
178
-
179
247
  const nextData = {
180
248
  fields: nextFields
181
249
  };
182
-
183
250
  if (existingRecord) {
184
251
  await existingRecord.update({ data: nextData });
185
252
  return existingRecord;
@@ -191,7 +258,10 @@ async function upsertOrgManagedAuthValues({ rcAccountId, platform, values = {},
191
258
  data: nextData
192
259
  });
193
260
  }
194
-
261
+ /**
262
+ * @param {UpsertUserManagedAuthValuesParams} params
263
+ * @returns {Promise<ManagedAuthRecord>}
264
+ */
195
265
  async function upsertUserManagedAuthValues({ rcAccountId, platform, rcExtensionId, rcUserName, values = {}, fieldsToRemove = [] }) {
196
266
  if (!rcExtensionId) {
197
267
  throw new Error('rcExtensionId is required for user managed auth values');
@@ -202,10 +272,10 @@ async function upsertUserManagedAuthValues({ rcAccountId, platform, rcExtensionI
202
272
  platform,
203
273
  dataKey: userDataKey
204
274
  });
275
+ /** @type {Record<string, unknown>} */
205
276
  const nextFields = {
206
277
  ...(existingRecord?.data?.fields ?? {})
207
278
  };
208
-
209
279
  Object.keys(values).forEach(key => {
210
280
  if (isFilled(values[key])) {
211
281
  nextFields[key] = encryptStoredValue(values[key]);
@@ -214,13 +284,11 @@ async function upsertUserManagedAuthValues({ rcAccountId, platform, rcExtensionI
214
284
  fieldsToRemove.forEach(key => {
215
285
  delete nextFields[key];
216
286
  });
217
-
218
287
  const nextData = {
219
288
  rcExtensionId,
220
289
  rcUserName: rcUserName ?? existingRecord?.data?.rcUserName ?? '',
221
290
  fields: nextFields
222
291
  };
223
-
224
292
  if (existingRecord) {
225
293
  await existingRecord.update({ data: nextData });
226
294
  return existingRecord;
@@ -232,7 +300,10 @@ async function upsertUserManagedAuthValues({ rcAccountId, platform, rcExtensionI
232
300
  data: nextData
233
301
  });
234
302
  }
235
-
303
+ /**
304
+ * @param {{ value: unknown }} params
305
+ * @returns {StoredFieldValue}
306
+ */
236
307
  function getStoredFieldValue({ value }) {
237
308
  if (!isFilled(value)) {
238
309
  return {
@@ -245,7 +316,9 @@ function getStoredFieldValue({ value }) {
245
316
  value
246
317
  };
247
318
  }
248
-
319
+ /**
320
+ * @param {ManagedAuthAdminSettingsParams} params
321
+ */
249
322
  async function getManagedAuthAdminSettings({ platform, rcAccountId, connectorId, isPrivate = false }) {
250
323
  const fieldDefinitions = await getManagedFieldDefinitions({ rcAccountId, platform, connectorId, isPrivate });
251
324
  const orgFieldDefinitions = fieldDefinitions.filter(field => field.managedScope === 'account');
@@ -262,27 +335,27 @@ async function getManagedAuthAdminSettings({ platform, rcAccountId, connectorId,
262
335
  });
263
336
  const userEntries = userRecords
264
337
  .map(record => {
265
- const extensionIdFromDataKey = record.dataKey?.split(`${MANAGED_AUTH_USER_DATA_KEY}:`)?.[1];
266
- const rcExtensionId = record?.data?.rcExtensionId ?? extensionIdFromDataKey;
267
- if (!rcExtensionId) {
268
- return null;
269
- }
270
- return {
271
- rcExtensionId,
272
- rcUserName: record?.data?.rcUserName ?? '',
273
- fields: record?.data?.fields ?? {}
274
- };
275
- })
338
+ const extensionIdFromDataKey = record.dataKey?.split(`${MANAGED_AUTH_USER_DATA_KEY}:`)?.[1];
339
+ const rcExtensionId = record?.data?.rcExtensionId ?? extensionIdFromDataKey;
340
+ if (!rcExtensionId) {
341
+ return null;
342
+ }
343
+ return {
344
+ rcExtensionId,
345
+ rcUserName: record?.data?.rcUserName ?? '',
346
+ fields: record?.data?.fields ?? {}
347
+ };
348
+ })
276
349
  .filter(Boolean);
277
-
350
+ /** @type {Record<string, StoredFieldValue>} */
278
351
  const adminOrgValues = {};
279
352
  orgFieldDefinitions.forEach(field => {
280
353
  adminOrgValues[field.const] = getStoredFieldValue({
281
354
  value: orgValues[field.const]
282
355
  });
283
356
  });
284
-
285
357
  const adminUserValues = userEntries.map(entry => {
358
+ /** @type {Record<string, StoredFieldValue>} */
286
359
  const fields = {};
287
360
  userFieldDefinitions.forEach(field => {
288
361
  fields[field.const] = getStoredFieldValue({
@@ -295,7 +368,6 @@ async function getManagedAuthAdminSettings({ platform, rcAccountId, connectorId,
295
368
  fields
296
369
  };
297
370
  });
298
-
299
371
  return {
300
372
  hasManagedAuth: fieldDefinitions.length > 0,
301
373
  fields: fieldDefinitions,
@@ -305,18 +377,21 @@ async function getManagedAuthAdminSettings({ platform, rcAccountId, connectorId,
305
377
  userValues: adminUserValues
306
378
  };
307
379
  }
308
-
380
+ /**
381
+ * @param {ManagedAuthStateParams} params
382
+ * @returns {Promise<ManagedAuthState>}
383
+ */
309
384
  async function getManagedAuthState({ platform, rcAccountId, rcExtensionId, connectorId, isPrivate = false }) {
310
385
  const fieldDefinitions = await getApiKeyFieldDefinitions({ rcAccountId, platform, connectorId, isPrivate });
311
386
  const managedFieldDefinitions = fieldDefinitions.filter(field => field?.managed);
312
387
  const orgValues = await getOrgManagedAuthValues({ rcAccountId, platform });
313
388
  const userValues = await getUserManagedAuthValues({ rcAccountId, platform, rcExtensionId });
314
389
  const hasLoginFailureFallback = await hasManagedAuthLoginFailure({ rcAccountId, platform, rcExtensionId });
315
-
390
+ /** @type {string[]} */
316
391
  const visibleFieldConsts = [];
392
+ /** @type {string[]} */
317
393
  const missingRequiredFieldConsts = [];
318
394
  let allRequiredFieldsSatisfied = true;
319
-
320
395
  // Default behavior for connectors without managed auth: render full API key form.
321
396
  if (managedFieldDefinitions.length === 0) {
322
397
  return {
@@ -327,7 +402,6 @@ async function getManagedAuthState({ platform, rcAccountId, rcExtensionId, conne
327
402
  fallbackToManualAuth: false
328
403
  };
329
404
  }
330
-
331
405
  if (hasLoginFailureFallback) {
332
406
  return {
333
407
  hasManagedAuth: true,
@@ -337,7 +411,6 @@ async function getManagedAuthState({ platform, rcAccountId, rcExtensionId, conne
337
411
  fallbackToManualAuth: true
338
412
  };
339
413
  }
340
-
341
414
  fieldDefinitions.forEach(field => {
342
415
  const storedValue = field.managed
343
416
  ? (field.managedScope === 'user' ? userValues[field.const] : orgValues[field.const])
@@ -356,7 +429,6 @@ async function getManagedAuthState({ platform, rcAccountId, rcExtensionId, conne
356
429
  allRequiredFieldsSatisfied = false;
357
430
  }
358
431
  });
359
-
360
432
  return {
361
433
  hasManagedAuth: managedFieldDefinitions.length > 0,
362
434
  allRequiredFieldsSatisfied,
@@ -365,20 +437,23 @@ async function getManagedAuthState({ platform, rcAccountId, rcExtensionId, conne
365
437
  fallbackToManualAuth: false
366
438
  };
367
439
  }
368
-
440
+ /**
441
+ * @param {ResolveApiKeyLoginFieldsParams} params
442
+ * @returns {Promise<ResolveApiKeyLoginFieldsResult>}
443
+ */
369
444
  async function resolveApiKeyLoginFields({ platform, rcAccountId, rcExtensionId, connectorId, isPrivate = false, apiKey, additionalInfo = {}, preferSubmittedValuesForManagedFields = false }) {
370
445
  const fieldDefinitions = await getApiKeyFieldDefinitions({ rcAccountId, platform, connectorId, isPrivate });
446
+ /** @type {ManagedAuthValues} */
371
447
  const resolvedAdditionalInfo = {
372
448
  ...(additionalInfo ?? {})
373
449
  };
374
450
  if (resolvedAdditionalInfo.apiKey === undefined && apiKey !== undefined) {
375
451
  resolvedAdditionalInfo.apiKey = apiKey;
376
452
  }
377
-
378
453
  const orgValues = await getOrgManagedAuthValues({ rcAccountId, platform });
379
454
  const userValues = await getUserManagedAuthValues({ rcAccountId, platform, rcExtensionId });
455
+ /** @type {string[]} */
380
456
  const missingRequiredFieldConsts = [];
381
-
382
457
  fieldDefinitions.forEach(field => {
383
458
  if (!field?.managed) {
384
459
  if (field.required && !isFilled(resolvedAdditionalInfo[field.const])) {
@@ -386,7 +461,6 @@ async function resolveApiKeyLoginFields({ platform, rcAccountId, rcExtensionId,
386
461
  }
387
462
  return;
388
463
  }
389
-
390
464
  const storedValue = field.managedScope === 'user'
391
465
  ? userValues[field.const]
392
466
  : orgValues[field.const];
@@ -395,19 +469,20 @@ async function resolveApiKeyLoginFields({ platform, rcAccountId, rcExtensionId,
395
469
  if (isFilled(storedValue) && !(preferSubmittedValuesForManagedFields && isFilled(resolvedAdditionalInfo[field.const]))) {
396
470
  resolvedAdditionalInfo[field.const] = storedValue;
397
471
  }
398
-
399
472
  if (field.required && !isFilled(resolvedAdditionalInfo[field.const])) {
400
473
  missingRequiredFieldConsts.push(field.const);
401
474
  }
402
475
  });
403
-
404
476
  return {
405
477
  resolvedAdditionalInfo,
406
478
  resolvedApiKey: resolvedAdditionalInfo.apiKey ?? apiKey,
407
479
  missingRequiredFieldConsts
408
480
  };
409
481
  }
410
-
482
+ /**
483
+ * @param {PersistSubmittedManagedValuesParams} params
484
+ * @returns {Promise<void>}
485
+ */
411
486
  async function persistSubmittedManagedValues({ platform, rcAccountId, rcExtensionId, rcUserName, submittedManagedValues = {} }) {
412
487
  if (!rcAccountId) {
413
488
  return;
@@ -429,7 +504,6 @@ async function persistSubmittedManagedValues({ platform, rcAccountId, rcExtensio
429
504
  });
430
505
  }
431
506
  }
432
-
433
507
  exports.MANAGED_AUTH_ORG_DATA_KEY = MANAGED_AUTH_ORG_DATA_KEY;
434
508
  exports.MANAGED_AUTH_USER_DATA_KEY = MANAGED_AUTH_USER_DATA_KEY;
435
509
  exports.getApiKeyFieldDefinitions = getApiKeyFieldDefinitions;
@@ -443,4 +517,3 @@ exports.resolveApiKeyLoginFields = resolveApiKeyLoginFields;
443
517
  exports.persistSubmittedManagedValues = persistSubmittedManagedValues;
444
518
  exports.upsertOrgManagedAuthValues = upsertOrgManagedAuthValues;
445
519
  exports.upsertUserManagedAuthValues = upsertUserManagedAuthValues;
446
-
@@ -0,0 +1,13 @@
1
+ /** @typedef {import('../types').ManagedOAuthAccountParams} ManagedOAuthAccountParams */
2
+ /** @typedef {import('../types').ManagedOAuthPendingParams} ManagedOAuthPendingParams */
3
+ /** @typedef {import('../types').ManagedOAuthRecord} ManagedOAuthRecord */
4
+ /** @typedef {import('../types').ManagedOAuthResolution} ManagedOAuthResolution */
5
+ /** @typedef {import('../types').ManagedOAuthState} ManagedOAuthState */
6
+ /** @typedef {import('../types').ManagedOAuthStateParams} ManagedOAuthStateParams */
7
+ /** @typedef {import('../types').ManagedOAuthStoredData} ManagedOAuthStoredData */
8
+ /** @typedef {import('../types').ManagedOAuthStoredValue} ManagedOAuthStoredValue */
9
+ /** @typedef {import('../types').ManagedOAuthValue} ManagedOAuthValue */
10
+ /** @typedef {import('../types').ManagedOAuthValues} ManagedOAuthValues */
11
+ /** @typedef {import('../types').ResetManagedOAuthResult} ResetManagedOAuthResult */
12
+ /** @typedef {import('../types').UpsertPendingManagedOAuthParams} UpsertPendingManagedOAuthParams */
13
+ export {};