@keiser/metrics-sdk-admin-typescript 5.0.12

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 (317) hide show
  1. package/.github/ISSUE_TEMPLATE/bug_report.md +41 -0
  2. package/.github/ISSUE_TEMPLATE/enhancement.md +46 -0
  3. package/.github/ISSUE_TEMPLATE/feature_request.md +46 -0
  4. package/.github/workflows/main.yml +63 -0
  5. package/README.md +202 -0
  6. package/dist/apis/MetricsAdminApi.d.ts +328 -0
  7. package/dist/apis/index.d.ts +1 -0
  8. package/dist/connection.d.ts +110 -0
  9. package/dist/error.d.ts +134 -0
  10. package/dist/event.d.ts +51 -0
  11. package/dist/index.d.ts +7 -0
  12. package/dist/index.js +8429 -0
  13. package/dist/index.mjs +7939 -0
  14. package/dist/jwt.d.ts +1 -0
  15. package/dist/models/A500DataSetData.d.ts +93 -0
  16. package/dist/models/A500MachineStateData.d.ts +88 -0
  17. package/dist/models/A500RepDataPointData.d.ts +169 -0
  18. package/dist/models/A500TestResultData.d.ts +103 -0
  19. package/dist/models/A500TimeSeriesPointData.d.ts +145 -0
  20. package/dist/models/AcceptedTermsVersionData.d.ts +43 -0
  21. package/dist/models/BodyCompositionMeasurementData.d.ts +211 -0
  22. package/dist/models/CacheKeysResponse.d.ts +43 -0
  23. package/dist/models/CacheObject.d.ts +55 -0
  24. package/dist/models/CacheObjectResponse.d.ts +44 -0
  25. package/dist/models/CardioExerciseData.d.ts +65 -0
  26. package/dist/models/CardioExerciseVariantData.d.ts +77 -0
  27. package/dist/models/CardioMachineData.d.ts +83 -0
  28. package/dist/models/EmailAddressData.d.ts +49 -0
  29. package/dist/models/ExerciseAliasData.d.ts +73 -0
  30. package/dist/models/ExerciseOrdinalSetAssignmentData.d.ts +65 -0
  31. package/dist/models/ExerciseOrdinalSetData.d.ts +56 -0
  32. package/dist/models/FacilityConfigurationData.d.ts +101 -0
  33. package/dist/models/FacilityData.d.ts +65 -0
  34. package/dist/models/FacilityLicenseData.d.ts +83 -0
  35. package/dist/models/FacilityLicenseListResponse.d.ts +51 -0
  36. package/dist/models/FacilityLicenseListResponseMeta.d.ts +89 -0
  37. package/dist/models/FacilityLicenseResponse.d.ts +44 -0
  38. package/dist/models/FacilityLicenseSorting.d.ts +25 -0
  39. package/dist/models/FacilityProfileData.d.ts +73 -0
  40. package/dist/models/FacilityRelationshipData.d.ts +99 -0
  41. package/dist/models/FacilitySessionUserData.d.ts +112 -0
  42. package/dist/models/FacilityStrengthMachineConfigurationData.d.ts +94 -0
  43. package/dist/models/FacilityStrengthMachineData.d.ts +99 -0
  44. package/dist/models/FingerprintData.d.ts +69 -0
  45. package/dist/models/GlobalAccessControlCreationResponse.d.ts +51 -0
  46. package/dist/models/GlobalAccessControlData.d.ts +148 -0
  47. package/dist/models/GlobalAccessControlListResponse.d.ts +51 -0
  48. package/dist/models/GlobalAccessControlListResponseMeta.d.ts +62 -0
  49. package/dist/models/GlobalAccessControlResponse.d.ts +44 -0
  50. package/dist/models/GlobalAccessControlSecretData.d.ts +37 -0
  51. package/dist/models/GlobalAccessControlSecretResponse.d.ts +44 -0
  52. package/dist/models/GlobalAccessControlSorting.d.ts +23 -0
  53. package/dist/models/HeartRateDataPointData.d.ts +49 -0
  54. package/dist/models/HeartRateDataSetData.d.ts +81 -0
  55. package/dist/models/HeartRateDataSetSessionData.d.ts +56 -0
  56. package/dist/models/HeightMeasurementData.d.ts +55 -0
  57. package/dist/models/High.d.ts +31 -0
  58. package/dist/models/Low.d.ts +31 -0
  59. package/dist/models/MSeriesDataPointData.d.ts +103 -0
  60. package/dist/models/MSeriesDataSetData.d.ts +222 -0
  61. package/dist/models/MSeriesDataSetSegmentData.d.ts +129 -0
  62. package/dist/models/MSeriesFtpMeasurementData.d.ts +74 -0
  63. package/dist/models/MuscleArea.d.ts +24 -0
  64. package/dist/models/MuscleData.d.ts +67 -0
  65. package/dist/models/MuscleGroup.d.ts +35 -0
  66. package/dist/models/MuscleIdentifier.d.ts +86 -0
  67. package/dist/models/OAuthServiceData.d.ts +73 -0
  68. package/dist/models/PrimaryEmailAddressData.d.ts +37 -0
  69. package/dist/models/ProfileData.d.ts +67 -0
  70. package/dist/models/Queue.d.ts +23 -0
  71. package/dist/models/ResqueDetailsData.d.ts +45 -0
  72. package/dist/models/ResqueDetailsResponse.d.ts +44 -0
  73. package/dist/models/SessionData.d.ts +135 -0
  74. package/dist/models/SessionPlanActivitySetData.d.ts +31 -0
  75. package/dist/models/SessionPlanCardioSetData.d.ts +57 -0
  76. package/dist/models/SessionPlanData.d.ts +118 -0
  77. package/dist/models/SessionPlanSequenceAssignmentData.d.ts +44 -0
  78. package/dist/models/SessionPlanSequenceData.d.ts +63 -0
  79. package/dist/models/SessionPlanSequenceInstanceData.d.ts +82 -0
  80. package/dist/models/SessionPlanSetData.d.ts +81 -0
  81. package/dist/models/SessionPlanSetInstanceData.d.ts +87 -0
  82. package/dist/models/SessionPlanStrengthSetData.d.ts +67 -0
  83. package/dist/models/SessionPlanStretchSetData.d.ts +31 -0
  84. package/dist/models/StatData.d.ts +97 -0
  85. package/dist/models/StatListResponse.d.ts +51 -0
  86. package/dist/models/StatListResponseMeta.d.ts +68 -0
  87. package/dist/models/StatSorting.d.ts +23 -0
  88. package/dist/models/StrengthExerciseData.d.ts +125 -0
  89. package/dist/models/StrengthExerciseVariantData.d.ts +115 -0
  90. package/dist/models/StrengthMachineData.d.ts +88 -0
  91. package/dist/models/StrengthMachineDataSetData.d.ts +199 -0
  92. package/dist/models/StrengthMachineDataSetTestData.d.ts +54 -0
  93. package/dist/models/StrengthMachineDataSetTestSubsetData.d.ts +49 -0
  94. package/dist/models/StrengthMachineModelData.d.ts +31 -0
  95. package/dist/models/StretchExerciseData.d.ts +58 -0
  96. package/dist/models/StretchExerciseVariantData.d.ts +70 -0
  97. package/dist/models/TaskFailedResponse.d.ts +51 -0
  98. package/dist/models/TaskFailure.d.ts +69 -0
  99. package/dist/models/TaskPayload.d.ts +44 -0
  100. package/dist/models/TaskQueueResponse.d.ts +51 -0
  101. package/dist/models/TaskQueueResponseMeta.d.ts +68 -0
  102. package/dist/models/TaskQueues.d.ts +39 -0
  103. package/dist/models/TaskStats.d.ts +37 -0
  104. package/dist/models/UserData.d.ts +112 -0
  105. package/dist/models/UserListResponse.d.ts +51 -0
  106. package/dist/models/UserListResponseMeta.d.ts +68 -0
  107. package/dist/models/UserResponse.d.ts +44 -0
  108. package/dist/models/UserSorting.d.ts +24 -0
  109. package/dist/models/WeightMeasurementData.d.ts +68 -0
  110. package/dist/models/WorkersResponse.d.ts +43 -0
  111. package/dist/models/index.d.ts +96 -0
  112. package/dist/runtime.d.ts +134 -0
  113. package/docs/A500DataSetData.md +41 -0
  114. package/docs/A500MachineStateData.md +46 -0
  115. package/docs/A500RepDataPointData.md +56 -0
  116. package/docs/A500TestResultData.md +22 -0
  117. package/docs/A500TimeSeriesPointData.md +29 -0
  118. package/docs/AcceptedTermsVersionData.md +12 -0
  119. package/docs/BodyCompositionMeasurementData.md +40 -0
  120. package/docs/CacheKeysResponse.md +12 -0
  121. package/docs/CacheObject.md +14 -0
  122. package/docs/CacheObjectResponse.md +12 -0
  123. package/docs/CardioExerciseData.md +15 -0
  124. package/docs/CardioExerciseVariantData.md +25 -0
  125. package/docs/CardioMachineData.md +36 -0
  126. package/docs/EmailAddressData.md +13 -0
  127. package/docs/ExerciseAliasData.md +28 -0
  128. package/docs/ExerciseOrdinalSetAssignmentData.md +15 -0
  129. package/docs/ExerciseOrdinalSetData.md +14 -0
  130. package/docs/FacilityConfigurationData.md +41 -0
  131. package/docs/FacilityData.md +15 -0
  132. package/docs/FacilityLicenseData.md +30 -0
  133. package/docs/FacilityLicenseListResponse.md +13 -0
  134. package/docs/FacilityLicenseListResponseMeta.md +31 -0
  135. package/docs/FacilityLicenseResponse.md +12 -0
  136. package/docs/FacilityLicenseSorting.md +15 -0
  137. package/docs/FacilityProfileData.md +17 -0
  138. package/docs/FacilityRelationshipData.md +36 -0
  139. package/docs/FacilitySessionUserData.md +22 -0
  140. package/docs/FacilityStrengthMachineConfigurationData.md +47 -0
  141. package/docs/FacilityStrengthMachineData.md +21 -0
  142. package/docs/FingerprintData.md +24 -0
  143. package/docs/GlobalAccessControlCreationResponse.md +13 -0
  144. package/docs/GlobalAccessControlData.md +103 -0
  145. package/docs/GlobalAccessControlListResponse.md +13 -0
  146. package/docs/GlobalAccessControlListResponseMeta.md +15 -0
  147. package/docs/GlobalAccessControlResponse.md +12 -0
  148. package/docs/GlobalAccessControlSecretData.md +11 -0
  149. package/docs/GlobalAccessControlSecretResponse.md +12 -0
  150. package/docs/GlobalAccessControlSorting.md +11 -0
  151. package/docs/HeartRateDataPointData.md +13 -0
  152. package/docs/HeartRateDataSetData.md +18 -0
  153. package/docs/HeartRateDataSetSessionData.md +14 -0
  154. package/docs/HeightMeasurementData.md +14 -0
  155. package/docs/High.md +10 -0
  156. package/docs/Low.md +10 -0
  157. package/docs/MSeriesDataPointData.md +22 -0
  158. package/docs/MSeriesDataSetData.md +41 -0
  159. package/docs/MSeriesDataSetSegmentData.md +26 -0
  160. package/docs/MSeriesFtpMeasurementData.md +17 -0
  161. package/docs/MetricsAdminApi.md +1576 -0
  162. package/docs/MuscleArea.md +13 -0
  163. package/docs/MuscleData.md +27 -0
  164. package/docs/MuscleGroup.md +35 -0
  165. package/docs/MuscleIdentifier.md +137 -0
  166. package/docs/OAuthServiceData.md +17 -0
  167. package/docs/PrimaryEmailAddressData.md +11 -0
  168. package/docs/ProfileData.md +16 -0
  169. package/docs/Queue.md +11 -0
  170. package/docs/ResqueDetailsData.md +12 -0
  171. package/docs/ResqueDetailsResponse.md +12 -0
  172. package/docs/SessionData.md +26 -0
  173. package/docs/SessionPlanActivitySetData.md +10 -0
  174. package/docs/SessionPlanCardioSetData.md +14 -0
  175. package/docs/SessionPlanData.md +24 -0
  176. package/docs/SessionPlanSequenceAssignmentData.md +12 -0
  177. package/docs/SessionPlanSequenceData.md +15 -0
  178. package/docs/SessionPlanSequenceInstanceData.md +18 -0
  179. package/docs/SessionPlanSetData.md +31 -0
  180. package/docs/SessionPlanSetInstanceData.md +32 -0
  181. package/docs/SessionPlanStrengthSetData.md +29 -0
  182. package/docs/SessionPlanStretchSetData.md +10 -0
  183. package/docs/StatData.md +21 -0
  184. package/docs/StatListResponse.md +13 -0
  185. package/docs/StatListResponseMeta.md +16 -0
  186. package/docs/StatSorting.md +11 -0
  187. package/docs/StrengthExerciseData.md +71 -0
  188. package/docs/StrengthExerciseVariantData.md +69 -0
  189. package/docs/StrengthMachineData.md +38 -0
  190. package/docs/StrengthMachineDataSetData.md +60 -0
  191. package/docs/StrengthMachineDataSetTestData.md +27 -0
  192. package/docs/StrengthMachineDataSetTestSubsetData.md +13 -0
  193. package/docs/StrengthMachineModelData.md +10 -0
  194. package/docs/StretchExerciseData.md +14 -0
  195. package/docs/StretchExerciseVariantData.md +24 -0
  196. package/docs/TaskFailedResponse.md +13 -0
  197. package/docs/TaskFailure.md +16 -0
  198. package/docs/TaskPayload.md +12 -0
  199. package/docs/TaskQueueResponse.md +13 -0
  200. package/docs/TaskQueueResponseMeta.md +24 -0
  201. package/docs/TaskQueues.md +11 -0
  202. package/docs/TaskStats.md +11 -0
  203. package/docs/UserData.md +22 -0
  204. package/docs/UserListResponse.md +13 -0
  205. package/docs/UserListResponseMeta.md +16 -0
  206. package/docs/UserResponse.md +12 -0
  207. package/docs/UserSorting.md +13 -0
  208. package/docs/WeightMeasurementData.md +16 -0
  209. package/docs/WorkersResponse.md +12 -0
  210. package/package.json +37 -0
  211. package/rollup.config.mjs +32 -0
  212. package/src/apis/MetricsAdminApi.ts +1735 -0
  213. package/src/apis/index.ts +3 -0
  214. package/src/connection.ts +256 -0
  215. package/src/error.ts +248 -0
  216. package/src/event.ts +267 -0
  217. package/src/index.ts +9 -0
  218. package/src/jwt.ts +17 -0
  219. package/src/models/A500DataSetData.ts +164 -0
  220. package/src/models/A500MachineStateData.ts +150 -0
  221. package/src/models/A500RepDataPointData.ts +264 -0
  222. package/src/models/A500TestResultData.ts +174 -0
  223. package/src/models/A500TimeSeriesPointData.ts +233 -0
  224. package/src/models/AcceptedTermsVersionData.ts +83 -0
  225. package/src/models/BodyCompositionMeasurementData.ts +336 -0
  226. package/src/models/CacheKeysResponse.ts +82 -0
  227. package/src/models/CacheObject.ts +102 -0
  228. package/src/models/CacheObjectResponse.ts +89 -0
  229. package/src/models/CardioExerciseData.ts +131 -0
  230. package/src/models/CardioExerciseVariantData.ts +144 -0
  231. package/src/models/CardioMachineData.ts +143 -0
  232. package/src/models/EmailAddressData.ts +93 -0
  233. package/src/models/ExerciseAliasData.ts +138 -0
  234. package/src/models/ExerciseOrdinalSetAssignmentData.ts +132 -0
  235. package/src/models/ExerciseOrdinalSetData.ts +107 -0
  236. package/src/models/FacilityConfigurationData.ts +167 -0
  237. package/src/models/FacilityData.ts +132 -0
  238. package/src/models/FacilityLicenseData.ts +144 -0
  239. package/src/models/FacilityLicenseListResponse.ts +104 -0
  240. package/src/models/FacilityLicenseListResponseMeta.ts +152 -0
  241. package/src/models/FacilityLicenseResponse.ts +89 -0
  242. package/src/models/FacilityLicenseSorting.ts +40 -0
  243. package/src/models/FacilityProfileData.ts +121 -0
  244. package/src/models/FacilityRelationshipData.ts +175 -0
  245. package/src/models/FacilitySessionUserData.ts +216 -0
  246. package/src/models/FacilityStrengthMachineConfigurationData.ts +159 -0
  247. package/src/models/FacilityStrengthMachineData.ts +170 -0
  248. package/src/models/FingerprintData.ts +127 -0
  249. package/src/models/GlobalAccessControlCreationResponse.ts +104 -0
  250. package/src/models/GlobalAccessControlData.ts +217 -0
  251. package/src/models/GlobalAccessControlListResponse.ts +104 -0
  252. package/src/models/GlobalAccessControlListResponseMeta.ts +113 -0
  253. package/src/models/GlobalAccessControlResponse.ts +89 -0
  254. package/src/models/GlobalAccessControlSecretData.ts +75 -0
  255. package/src/models/GlobalAccessControlSecretResponse.ts +89 -0
  256. package/src/models/GlobalAccessControlSorting.ts +38 -0
  257. package/src/models/HeartRateDataPointData.ts +91 -0
  258. package/src/models/HeartRateDataSetData.ts +148 -0
  259. package/src/models/HeartRateDataSetSessionData.ts +108 -0
  260. package/src/models/HeightMeasurementData.ts +102 -0
  261. package/src/models/High.ts +66 -0
  262. package/src/models/Low.ts +66 -0
  263. package/src/models/MSeriesDataPointData.ts +167 -0
  264. package/src/models/MSeriesDataSetData.ts +363 -0
  265. package/src/models/MSeriesDataSetSegmentData.ts +219 -0
  266. package/src/models/MSeriesFtpMeasurementData.ts +133 -0
  267. package/src/models/MuscleArea.ts +39 -0
  268. package/src/models/MuscleData.ts +131 -0
  269. package/src/models/MuscleGroup.ts +50 -0
  270. package/src/models/MuscleIdentifier.ts +101 -0
  271. package/src/models/OAuthServiceData.ts +126 -0
  272. package/src/models/PrimaryEmailAddressData.ts +75 -0
  273. package/src/models/ProfileData.ts +115 -0
  274. package/src/models/Queue.ts +38 -0
  275. package/src/models/ResqueDetailsData.ts +97 -0
  276. package/src/models/ResqueDetailsResponse.ts +89 -0
  277. package/src/models/SessionData.ts +249 -0
  278. package/src/models/SessionPlanActivitySetData.ts +66 -0
  279. package/src/models/SessionPlanCardioSetData.ts +113 -0
  280. package/src/models/SessionPlanData.ts +205 -0
  281. package/src/models/SessionPlanSequenceAssignmentData.ts +90 -0
  282. package/src/models/SessionPlanSequenceData.ts +122 -0
  283. package/src/models/SessionPlanSequenceInstanceData.ts +154 -0
  284. package/src/models/SessionPlanSetData.ts +153 -0
  285. package/src/models/SessionPlanSetInstanceData.ts +162 -0
  286. package/src/models/SessionPlanStrengthSetData.ts +126 -0
  287. package/src/models/SessionPlanStretchSetData.ts +66 -0
  288. package/src/models/StatData.ts +165 -0
  289. package/src/models/StatListResponse.ts +104 -0
  290. package/src/models/StatListResponseMeta.ts +121 -0
  291. package/src/models/StatSorting.ts +38 -0
  292. package/src/models/StrengthExerciseData.ts +208 -0
  293. package/src/models/StrengthExerciseVariantData.ts +189 -0
  294. package/src/models/StrengthMachineData.ts +154 -0
  295. package/src/models/StrengthMachineDataSetData.ts +331 -0
  296. package/src/models/StrengthMachineDataSetTestData.ts +104 -0
  297. package/src/models/StrengthMachineDataSetTestSubsetData.ts +93 -0
  298. package/src/models/StrengthMachineModelData.ts +66 -0
  299. package/src/models/StretchExerciseData.ts +117 -0
  300. package/src/models/StretchExerciseVariantData.ts +130 -0
  301. package/src/models/TaskFailedResponse.ts +104 -0
  302. package/src/models/TaskFailure.ts +133 -0
  303. package/src/models/TaskPayload.ts +91 -0
  304. package/src/models/TaskQueueResponse.ts +104 -0
  305. package/src/models/TaskQueueResponseMeta.ts +117 -0
  306. package/src/models/TaskQueues.ts +88 -0
  307. package/src/models/TaskStats.ts +73 -0
  308. package/src/models/UserData.ts +217 -0
  309. package/src/models/UserListResponse.ts +104 -0
  310. package/src/models/UserListResponseMeta.ts +121 -0
  311. package/src/models/UserResponse.ts +89 -0
  312. package/src/models/UserSorting.ts +39 -0
  313. package/src/models/WeightMeasurementData.ts +125 -0
  314. package/src/models/WorkersResponse.ts +82 -0
  315. package/src/models/index.ts +98 -0
  316. package/src/runtime.ts +473 -0
  317. package/tsconfig.json +18 -0
@@ -0,0 +1,3 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ export * from './MetricsAdminApi';
@@ -0,0 +1,256 @@
1
+ import { DecodeJWT } from './jwt'
2
+ import { SessionError } from './error'
3
+ import { EventDispatcher } from './event'
4
+ import { DEFAULT_REQUEST_TIMEOUT, ConnectionEvent, ConnectionOptions, MetricsConnection, PushDataEvent, HTTPMethod, HTTPHeaders } from './runtime'
5
+ export const JWT_TTL_LIMIT = 5000
6
+ const MAX_TIMEOUT = 2147483647;
7
+
8
+ /** @ignore */
9
+ const MODEL_UPDATE_ROOM_REGEX = /^sub:/
10
+ export interface AuthenticatedResponse {
11
+ accessToken: string
12
+ refreshToken?: string
13
+ }
14
+ export interface SubscriptionResponse extends AuthenticatedResponse {
15
+ subscriptionKey: string
16
+ }
17
+
18
+ export interface AuthPrefillParams {
19
+ email: string
20
+ returnUrl: string
21
+ requiresElevated?: boolean
22
+ name?: string
23
+ birthday?: string
24
+ gender?: string
25
+ language?: string
26
+ units?: string
27
+ metricWeight?: number
28
+ bodyFatPercentage?: number
29
+ metricHeight?: number
30
+ }
31
+
32
+ export interface AccessTokenChangeEvent {
33
+ accessToken: string
34
+ }
35
+
36
+ export interface RefreshTokenChangeEvent {
37
+ refreshToken: string
38
+ }
39
+
40
+ export interface KioskTokenChangeEvent {
41
+ kioskToken: string
42
+ }
43
+
44
+ export interface StrengthMachineTokenChangeEvent {
45
+ accessToken: string
46
+ }
47
+
48
+ export interface JWTFacility {
49
+ id: number
50
+ licensedUntil: string
51
+ }
52
+
53
+ export interface JWTToken {
54
+ iss: string
55
+ jti: string
56
+ exp: number
57
+ type: 'access' | 'refresh' | 'kiosk' | 'machine'
58
+ }
59
+
60
+
61
+ export interface SessionToken extends JWTToken {
62
+ user: { id: number }
63
+ facility?: {id:number, licencedUntil: string} | null
64
+ facilityRole?: string | null
65
+ }
66
+
67
+ export interface AccessToken extends SessionToken {
68
+ type: 'access'
69
+ }
70
+
71
+ export interface RefreshToken extends SessionToken {
72
+ type: 'refresh'
73
+ }
74
+
75
+ export interface ModelChangeEvent {
76
+ id: number
77
+ name: string
78
+ mutation: 'create' | 'update' | 'delete'
79
+ occurredAt: number
80
+ }
81
+
82
+ interface ModelChangeEventHandler {
83
+ onChangeCallbacks: Set<(modelChangeEvent: ModelChangeEvent) => void>
84
+ onReconnectCallback: () => Promise<SubscriptionResponse>
85
+ }
86
+
87
+ export interface ModelSubscribeParameters {
88
+ model: string
89
+ id: number
90
+ userId?: number
91
+ facilityRelationshipId?: number
92
+ actionOverride?: string
93
+ }
94
+
95
+ export interface ListSubscribeParameters {
96
+ parentModel: string
97
+ parentId: number
98
+ model: string
99
+ actionOverride?: string
100
+ }
101
+
102
+
103
+ export class AuthenticatedConnection {
104
+ protected readonly _connection: MetricsConnection
105
+ private _keepAlive: boolean = true
106
+ private _accessToken: string = ''
107
+ private _refreshToken: string | null = null
108
+ private _accessTokenTimeout: ReturnType<typeof setTimeout> | null = null
109
+ private readonly _modelChangeEventHandlerMap = new Map<string, ModelChangeEventHandler>()
110
+ private readonly _onAccessTokenChangeEvent = new EventDispatcher<AccessTokenChangeEvent>()
111
+ private readonly _onRefreshTokenChangeEvent = new EventDispatcher<RefreshTokenChangeEvent>()
112
+
113
+ constructor (params: {options?: ConnectionOptions, keepAlive?: boolean, authenticatedResponse?: AuthenticatedResponse}) {
114
+ const {options, keepAlive, authenticatedResponse} = params
115
+ this._connection = new MetricsConnection(options)
116
+ this._keepAlive = keepAlive ?? true
117
+ this._connection.onDisposeEvent.one(() => this.close())
118
+ this._connection.onConnectionChangeEvent.subscribe(connectionEvent => this.handleConnectionEvent(connectionEvent))
119
+ this._connection.onPushDataEvent.subscribe(data => this.dispatchPushData(data))
120
+ if (authenticatedResponse) {
121
+ this.updateTokens(authenticatedResponse)
122
+ }
123
+ }
124
+
125
+ async initializeAuthenticatedSession( refreshToken: string) : Promise<AuthenticatedResponse> {
126
+ this.updateTokens({accessToken: refreshToken})
127
+ const authenticatedResponse: AuthenticatedResponse = await this.keepAccessTokenAlive();
128
+ return authenticatedResponse;
129
+ }
130
+
131
+ private updateTokens (response: AuthenticatedResponse) {
132
+ this._accessToken = response.accessToken
133
+ this._onAccessTokenChangeEvent.dispatchAsync({ accessToken: this._accessToken })
134
+
135
+ if (this._accessTokenTimeout !== null) {
136
+ clearTimeout(this._accessTokenTimeout)
137
+ }
138
+
139
+ if (this._keepAlive) {
140
+ const tokenTTL = this.decodedAccessToken.exp * 1000 - Date.now() - JWT_TTL_LIMIT
141
+ if(tokenTTL < MAX_TIMEOUT ) {
142
+ this._accessTokenTimeout = setTimeout(() => { void this.keepAccessTokenAlive() }, tokenTTL)
143
+ }
144
+ }
145
+
146
+ if (typeof response.refreshToken !== 'undefined') {
147
+ this._refreshToken = response.refreshToken
148
+ this._onRefreshTokenChangeEvent.dispatchAsync({ refreshToken: this._refreshToken })
149
+ }
150
+ }
151
+
152
+ private async keepAccessTokenAlive(): Promise<AuthenticatedResponse> {
153
+ if (this._keepAlive) {
154
+ try {
155
+ const response: AuthenticatedResponse = await this.authenticatedAction('auth:keepAlive', `/auth/keep-alive`, 'POST', {}, {}, {})
156
+ return response;
157
+ } catch (error) {
158
+
159
+ }
160
+ }
161
+ }
162
+
163
+ private handleConnectionEvent (connectionEvent: ConnectionEvent) {
164
+ if (connectionEvent.socketConnection) {
165
+ this._modelChangeEventHandlerMap.forEach(e => void e.onReconnectCallback())
166
+ }
167
+ }
168
+
169
+ private dispatchPushData (pushData: PushDataEvent) {
170
+ if (MODEL_UPDATE_ROOM_REGEX.test(pushData.room)) {
171
+ const modelChangeEventHandler = this._modelChangeEventHandlerMap.get(pushData.room)
172
+ if (typeof modelChangeEventHandler !== 'undefined') {
173
+ modelChangeEventHandler.onChangeCallbacks.forEach(e => e(pushData.message))
174
+ }
175
+ }
176
+ }
177
+
178
+ get connection () {
179
+ return this._connection
180
+ }
181
+
182
+ get keepAlive () {
183
+ return this._keepAlive
184
+ }
185
+
186
+ set keepAlive (value: boolean) {
187
+ this._keepAlive = value
188
+ if (!this._keepAlive && this._accessTokenTimeout !== null) {
189
+ clearTimeout(this._accessTokenTimeout)
190
+ }
191
+ }
192
+
193
+ get decodedAccessToken (){
194
+ return DecodeJWT(this.accessToken) as AccessToken
195
+ }
196
+
197
+ get accessToken () {
198
+ return this._accessToken
199
+ }
200
+
201
+ get refreshToken () {
202
+ return this._refreshToken
203
+ }
204
+
205
+ get onRefreshTokenChangeEvent () {
206
+ return this._onRefreshTokenChangeEvent.asEvent()
207
+ }
208
+
209
+ get onAccessTokenChangeEvent () {
210
+ return this._onAccessTokenChangeEvent.asEvent()
211
+ }
212
+
213
+ close () {
214
+ if (this._accessTokenTimeout !== null) {
215
+ clearTimeout(this._accessTokenTimeout)
216
+ }
217
+ this.keepAlive = false
218
+ this._accessToken = ''
219
+ this._refreshToken = null
220
+ this.connection.dispose()
221
+ }
222
+
223
+ async authenticatedAction (action: string, route: string, method: HTTPMethod, params: Object = { }, pathParams: Object = { }, headers: HTTPHeaders) {
224
+ let response
225
+ if (this._keepAlive && this._accessTokenTimeout !== null && this.decodedAccessToken.exp * 1000 - Date.now() <= JWT_TTL_LIMIT + DEFAULT_REQUEST_TIMEOUT) {
226
+ clearTimeout(this._accessTokenTimeout)
227
+ }
228
+ try {
229
+ const authParams = { authorization: this._accessToken, ...params }
230
+ response = await this._connection.action(action, route, method, authParams, pathParams, headers)
231
+ } catch (error) {
232
+ if (error instanceof SessionError && this._refreshToken !== null && (DecodeJWT(this._refreshToken) as RefreshToken).exp * 1000 - Date.now() > 0) {
233
+ const authParams = { authorization: this._refreshToken, ...params }
234
+ response = await this._connection.action(action, route, method, authParams, pathParams, headers)
235
+ } else {
236
+ throw error
237
+ }
238
+ }
239
+ this.updateTokens(response)
240
+ return response
241
+ }
242
+ async action (action: string, route: string, method: HTTPMethod, params: Object = { }, pathParams: Object = { }, headers: HTTPHeaders) {
243
+ let response
244
+
245
+ try {
246
+ response = await this._connection.action(action, route, method, params, pathParams, headers)
247
+ } catch (error) {
248
+ throw error
249
+ }
250
+ if (response.accessToken) {
251
+ this.updateTokens(response)
252
+ }
253
+ return response
254
+ }
255
+
256
+ }
package/src/error.ts ADDED
@@ -0,0 +1,248 @@
1
+ export interface ActionErrorProperties {
2
+ code?: number
3
+ name: string
4
+ message: string
5
+ explanation?: string
6
+ params?: string[]
7
+ }
8
+
9
+ export class BaseMetricsError extends Error {
10
+ static readonly code: number = 600
11
+ readonly message: string
12
+ readonly explanation: string
13
+ readonly params: string[]
14
+
15
+ constructor (errorProperties: ActionErrorProperties) {
16
+ super(errorProperties.name)
17
+ this.message = errorProperties.message ?? ''
18
+ this.explanation = errorProperties.explanation ?? ''
19
+ this.params = errorProperties.params ?? []
20
+ }
21
+
22
+ toString () {
23
+ return this.name + ': ' + this.message + (this.params?.length > 0 ? ' [' + this.params.join(', ') + ']' : '')
24
+ }
25
+
26
+ get code () {
27
+ return (this.constructor as typeof BaseMetricsError).code
28
+ }
29
+ }
30
+
31
+ /** @hidden */
32
+ export function GetErrorInstance (errorProperties: ActionErrorProperties) {
33
+ const ErrorType = [
34
+ MissingParamsError,
35
+ UnknownActionError,
36
+ InvalidCredentialsError,
37
+ ValidationError,
38
+ UnknownEntityError,
39
+ DuplicateEntityError,
40
+ CSRFError,
41
+ UnsupportedTypeError,
42
+ ServerShutdownError,
43
+ PendingActionOverflowError,
44
+ DataSizeLimitError,
45
+ OTPTokenExpiredError,
46
+ UnauthorizedTokenError,
47
+ InvalidAuthorizationCodeError,
48
+ BlacklistTokenError,
49
+ TokenInvalidError,
50
+ ParseError,
51
+ OAuthInvalidLoginError,
52
+ InvalidExchangeCodeError,
53
+ UnauthorizedResourceError,
54
+ OAuthCollisionError,
55
+ OAuthRequestError,
56
+ OAuthRefreshTokenError,
57
+ DuplicateActionError,
58
+ ActionPreventedError,
59
+ DemoActionPreventedError,
60
+ SessionDataMissingError,
61
+ FacilityLicenseExpiredError,
62
+ FacilityAccessControlError,
63
+ UnhealthyNodeError,
64
+ InvalidReturnUrlError,
65
+ SubscribePreventedError,
66
+ DatabaseError
67
+ ].find(c => c.code === errorProperties.code)
68
+
69
+ if (typeof ErrorType !== 'undefined') {
70
+ return new ErrorType(errorProperties)
71
+ }
72
+
73
+ return new ConnectionError(errorProperties)
74
+ }
75
+
76
+ // Category Errors
77
+
78
+ export class RequestError extends BaseMetricsError {
79
+ // For errors where the issue is in the action or parameters
80
+ }
81
+
82
+ export class SessionError extends BaseMetricsError {
83
+ // For errors where the issue is in the token lifecycle
84
+ }
85
+
86
+ export class ServerError extends BaseMetricsError {
87
+ // For errors that are a result of the server's health
88
+ }
89
+
90
+ export class ConnectionError extends BaseMetricsError {
91
+ // For errors that are a result of a faulty connection
92
+ static readonly code = 0
93
+ }
94
+
95
+ // Remote Errors
96
+
97
+ export class MissingParamsError extends RequestError {
98
+ static readonly code = 601
99
+ }
100
+
101
+ export class UnknownActionError extends RequestError {
102
+ static readonly code = 602
103
+ }
104
+
105
+ export class InvalidCredentialsError extends RequestError {
106
+ static readonly code = 603
107
+ }
108
+
109
+ export class ValidationError extends RequestError {
110
+ static readonly code = 604
111
+ }
112
+
113
+ export class UnknownEntityError extends RequestError {
114
+ static readonly code = 605
115
+ }
116
+
117
+ export class DuplicateEntityError extends RequestError {
118
+ static readonly code = 606
119
+ }
120
+
121
+ export class CSRFError extends SessionError {
122
+ static readonly code = 607
123
+ }
124
+
125
+ export class UnsupportedTypeError extends RequestError {
126
+ static readonly code = 608
127
+ }
128
+
129
+ export class ServerShutdownError extends ServerError {
130
+ static readonly code = 609
131
+ }
132
+
133
+ export class PendingActionOverflowError extends ServerError {
134
+ static readonly code = 610
135
+ }
136
+
137
+ export class DataSizeLimitError extends RequestError {
138
+ static readonly code = 611
139
+ }
140
+
141
+ export class OTPTokenExpiredError extends RequestError {
142
+ static readonly code = 612
143
+ }
144
+
145
+ export class UnauthorizedTokenError extends SessionError {
146
+ static readonly code = 613
147
+ }
148
+
149
+ export class InvalidAuthorizationCodeError extends RequestError {
150
+ static readonly code = 614
151
+ }
152
+
153
+ export class BlacklistTokenError extends SessionError {
154
+ static readonly code = 615
155
+ }
156
+
157
+ export class TokenInvalidError extends SessionError {
158
+ static readonly code = 616
159
+ }
160
+
161
+ export class ParseError extends RequestError {
162
+ static readonly code = 617
163
+ }
164
+
165
+ export class OAuthInvalidLoginError extends RequestError {
166
+ static readonly code = 618
167
+ }
168
+
169
+ export class InvalidExchangeCodeError extends RequestError {
170
+ static readonly code = 619
171
+ }
172
+
173
+ export class UnauthorizedResourceError extends RequestError {
174
+ static readonly code = 620
175
+ }
176
+
177
+ export class OAuthCollisionError extends RequestError {
178
+ static readonly code = 621
179
+ }
180
+
181
+ export class OAuthRequestError extends RequestError {
182
+ static readonly code = 622
183
+ }
184
+
185
+ export class OAuthRefreshTokenError extends SessionError {
186
+ static readonly code = 623
187
+ }
188
+
189
+ export class DuplicateActionError extends RequestError {
190
+ static readonly code = 624
191
+ }
192
+
193
+ export class ActionPreventedError extends RequestError {
194
+ static readonly code = 625
195
+ }
196
+
197
+ export class DemoActionPreventedError extends RequestError {
198
+ static readonly code = 626
199
+ }
200
+
201
+ export class SessionDataMissingError extends SessionError {
202
+ static readonly code = 627
203
+ }
204
+
205
+ export class FacilityLicenseExpiredError extends SessionError {
206
+ static readonly code = 628
207
+ }
208
+
209
+ export class FacilityAccessControlError extends RequestError {
210
+ static readonly code = 629
211
+ }
212
+
213
+ export class UnhealthyNodeError extends ServerError {
214
+ static readonly code = 630
215
+ }
216
+
217
+ export class InvalidReturnUrlError extends RequestError {
218
+ static readonly code = 631
219
+ }
220
+
221
+ export class SubscribePreventedError extends RequestError {
222
+ static readonly code = 632
223
+ }
224
+
225
+ export class DatabaseError extends RequestError {
226
+ static readonly code = 633
227
+ }
228
+
229
+ // Local Errors
230
+
231
+ export class ClientSideActionPrevented extends RequestError {
232
+ constructor ({ explanation }: { explanation?: string }) {
233
+ super({
234
+ name: 'InvalidGACSession',
235
+ message: 'is not a valid GAC session',
236
+ explanation
237
+ })
238
+ }
239
+ }
240
+
241
+ export class ConnectionFaultError extends ConnectionError {
242
+ constructor () {
243
+ super({
244
+ name: 'ConnectionFault',
245
+ message: 'connection to server failed'
246
+ })
247
+ }
248
+ }