@intuitionrobotics/user-account 0.47.59 → 1.0.0

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 (175) hide show
  1. package/LICENSE +3 -0
  2. package/dist/app-backend/api/_user-account.d.ts +4 -0
  3. package/dist/app-backend/api/_user-account.d.ts.map +1 -0
  4. package/dist/app-backend/api/_user-account.js +3 -0
  5. package/{app-backend → dist/app-backend}/api/_user-account.js.map +1 -1
  6. package/{app-backend → dist/app-backend}/api/v1/account/_assert.d.ts +3 -2
  7. package/dist/app-backend/api/v1/account/_assert.d.ts.map +1 -0
  8. package/dist/app-backend/api/v1/account/_assert.js +12 -0
  9. package/dist/app-backend/api/v1/account/_assert.js.map +1 -0
  10. package/dist/app-backend/api/v1/account/_imports.d.ts +5 -0
  11. package/dist/app-backend/api/v1/account/_imports.d.ts.map +1 -0
  12. package/dist/app-backend/api/v1/account/_imports.js +6 -0
  13. package/{app-backend → dist/app-backend}/api/v1/account/_imports.js.map +1 -1
  14. package/dist/app-backend/api/v1/account/create.d.ts +10 -0
  15. package/dist/app-backend/api/v1/account/create.d.ts.map +1 -0
  16. package/dist/app-backend/api/v1/account/create.js +16 -0
  17. package/dist/app-backend/api/v1/account/create.js.map +1 -0
  18. package/dist/app-backend/api/v1/account/list.d.ts +11 -0
  19. package/dist/app-backend/api/v1/account/list.d.ts.map +1 -0
  20. package/dist/app-backend/api/v1/account/list.js +14 -0
  21. package/dist/app-backend/api/v1/account/list.js.map +1 -0
  22. package/dist/app-backend/api/v1/account/login-saml.d.ts +12 -0
  23. package/dist/app-backend/api/v1/account/login-saml.d.ts.map +1 -0
  24. package/dist/app-backend/api/v1/account/login-saml.js +15 -0
  25. package/dist/app-backend/api/v1/account/login-saml.js.map +1 -0
  26. package/dist/app-backend/api/v1/account/login.d.ts +10 -0
  27. package/dist/app-backend/api/v1/account/login.d.ts.map +1 -0
  28. package/dist/app-backend/api/v1/account/login.js +15 -0
  29. package/dist/app-backend/api/v1/account/login.js.map +1 -0
  30. package/dist/app-backend/api/v1/account/logout.d.ts +10 -0
  31. package/dist/app-backend/api/v1/account/logout.d.ts.map +1 -0
  32. package/dist/app-backend/api/v1/account/logout.js +17 -0
  33. package/dist/app-backend/api/v1/account/logout.js.map +1 -0
  34. package/dist/app-backend/api/v1/account/upsert.d.ts +10 -0
  35. package/dist/app-backend/api/v1/account/upsert.d.ts.map +1 -0
  36. package/dist/app-backend/api/v1/account/upsert.js +18 -0
  37. package/dist/app-backend/api/v1/account/upsert.js.map +1 -0
  38. package/dist/app-backend/api/v1/account/validate.d.ts +13 -0
  39. package/dist/app-backend/api/v1/account/validate.d.ts.map +1 -0
  40. package/dist/app-backend/api/v1/account/validate.js +14 -0
  41. package/dist/app-backend/api/v1/account/validate.js.map +1 -0
  42. package/{app-backend → dist/app-backend}/apis/add-new-account.d.ts +4 -3
  43. package/dist/app-backend/apis/add-new-account.d.ts.map +1 -0
  44. package/dist/app-backend/apis/add-new-account.js +15 -0
  45. package/dist/app-backend/apis/add-new-account.js.map +1 -0
  46. package/dist/app-backend/core/module-pack.d.ts +4 -0
  47. package/dist/app-backend/core/module-pack.d.ts.map +1 -0
  48. package/dist/app-backend/core/module-pack.js +9 -0
  49. package/dist/app-backend/core/module-pack.js.map +1 -0
  50. package/{app-backend → dist/app-backend}/modules/AccountModule.d.ts +3 -2
  51. package/dist/app-backend/modules/AccountModule.d.ts.map +1 -0
  52. package/dist/app-backend/modules/AccountModule.js +341 -0
  53. package/dist/app-backend/modules/AccountModule.js.map +1 -0
  54. package/{app-backend → dist/app-backend}/modules/JWTBuilder.d.ts +3 -2
  55. package/dist/app-backend/modules/JWTBuilder.d.ts.map +1 -0
  56. package/dist/app-backend/modules/JWTBuilder.js +113 -0
  57. package/dist/app-backend/modules/JWTBuilder.js.map +1 -0
  58. package/{app-backend → dist/app-backend}/modules/SamlModule.d.ts +3 -2
  59. package/dist/app-backend/modules/SamlModule.d.ts.map +1 -0
  60. package/dist/app-backend/modules/SamlModule.js +47 -0
  61. package/dist/app-backend/modules/SamlModule.js.map +1 -0
  62. package/{app-backend → dist/app-backend}/modules/SecretsModule.d.ts +4 -3
  63. package/dist/app-backend/modules/SecretsModule.d.ts.map +1 -0
  64. package/dist/app-backend/modules/SecretsModule.js +131 -0
  65. package/dist/app-backend/modules/SecretsModule.js.map +1 -0
  66. package/{app-backend → dist/app-backend}/modules/_imports.d.ts +3 -2
  67. package/dist/app-backend/modules/_imports.d.ts.map +1 -0
  68. package/dist/app-backend/modules/_imports.js +3 -0
  69. package/{app-backend → dist/app-backend}/modules/_imports.js.map +1 -1
  70. package/dist/app-frontend/core/module-pack.d.ts +3 -0
  71. package/dist/app-frontend/core/module-pack.d.ts.map +1 -0
  72. package/dist/app-frontend/core/module-pack.js +6 -0
  73. package/dist/app-frontend/core/module-pack.js.map +1 -0
  74. package/{app-frontend → dist/app-frontend}/modules/AccountModule.d.ts +3 -2
  75. package/dist/app-frontend/modules/AccountModule.d.ts.map +1 -0
  76. package/dist/app-frontend/modules/AccountModule.js +151 -0
  77. package/dist/app-frontend/modules/AccountModule.js.map +1 -0
  78. package/{app-frontend → dist/app-frontend}/ui/Component_Login.d.ts +2 -1
  79. package/dist/app-frontend/ui/Component_Login.d.ts.map +1 -0
  80. package/dist/app-frontend/ui/Component_Login.js +63 -0
  81. package/dist/app-frontend/ui/Component_Login.js.map +1 -0
  82. package/{app-frontend → dist/app-frontend}/ui/Component_Register.d.ts +2 -1
  83. package/dist/app-frontend/ui/Component_Register.d.ts.map +1 -0
  84. package/dist/app-frontend/ui/Component_Register.js +69 -0
  85. package/dist/app-frontend/ui/Component_Register.js.map +1 -0
  86. package/dist/backend.d.ts +3 -0
  87. package/dist/backend.d.ts.map +1 -0
  88. package/dist/backend.js +3 -0
  89. package/dist/backend.js.map +1 -0
  90. package/dist/frontend.d.ts +4 -0
  91. package/dist/frontend.d.ts.map +1 -0
  92. package/dist/frontend.js +3 -0
  93. package/dist/frontend.js.map +1 -0
  94. package/dist/index.d.ts +3 -0
  95. package/dist/index.d.ts.map +1 -0
  96. package/dist/index.js +3 -0
  97. package/dist/index.js.map +1 -0
  98. package/{shared → dist/shared}/api.d.ts +2 -1
  99. package/dist/shared/api.d.ts.map +1 -0
  100. package/dist/shared/api.js +14 -0
  101. package/dist/shared/api.js.map +1 -0
  102. package/dist/shared/types.d.ts +2 -0
  103. package/dist/shared/types.d.ts.map +1 -0
  104. package/dist/shared/types.js +2 -0
  105. package/{shared → dist/shared}/utils/AuthenticationConsts.d.ts +1 -0
  106. package/dist/shared/utils/AuthenticationConsts.d.ts.map +1 -0
  107. package/dist/shared/utils/AuthenticationConsts.js +3 -0
  108. package/{shared → dist/shared}/utils/AuthenticationConsts.js.map +1 -1
  109. package/dist/tsconfig.tsbuildinfo +1 -0
  110. package/package.json +64 -15
  111. package/app-backend/api/_user-account.d.ts +0 -1
  112. package/app-backend/api/_user-account.js +0 -5
  113. package/app-backend/api/v1/account/_assert.js +0 -27
  114. package/app-backend/api/v1/account/_assert.js.map +0 -1
  115. package/app-backend/api/v1/account/_imports.d.ts +0 -4
  116. package/app-backend/api/v1/account/_imports.js +0 -22
  117. package/app-backend/api/v1/account/create.d.ts +0 -1
  118. package/app-backend/api/v1/account/create.js +0 -28
  119. package/app-backend/api/v1/account/create.js.map +0 -1
  120. package/app-backend/api/v1/account/list.d.ts +0 -1
  121. package/app-backend/api/v1/account/list.js +0 -27
  122. package/app-backend/api/v1/account/list.js.map +0 -1
  123. package/app-backend/api/v1/account/login-saml.d.ts +0 -1
  124. package/app-backend/api/v1/account/login-saml.js +0 -27
  125. package/app-backend/api/v1/account/login-saml.js.map +0 -1
  126. package/app-backend/api/v1/account/login.d.ts +0 -1
  127. package/app-backend/api/v1/account/login.js +0 -27
  128. package/app-backend/api/v1/account/login.js.map +0 -1
  129. package/app-backend/api/v1/account/logout.d.ts +0 -1
  130. package/app-backend/api/v1/account/logout.js +0 -29
  131. package/app-backend/api/v1/account/logout.js.map +0 -1
  132. package/app-backend/api/v1/account/upsert.d.ts +0 -1
  133. package/app-backend/api/v1/account/upsert.js +0 -30
  134. package/app-backend/api/v1/account/upsert.js.map +0 -1
  135. package/app-backend/api/v1/account/validate.d.ts +0 -1
  136. package/app-backend/api/v1/account/validate.js +0 -27
  137. package/app-backend/api/v1/account/validate.js.map +0 -1
  138. package/app-backend/apis/add-new-account.js +0 -29
  139. package/app-backend/apis/add-new-account.js.map +0 -1
  140. package/app-backend/core/module-pack.d.ts +0 -3
  141. package/app-backend/core/module-pack.js +0 -26
  142. package/app-backend/core/module-pack.js.map +0 -1
  143. package/app-backend/modules/AccountModule.js +0 -395
  144. package/app-backend/modules/AccountModule.js.map +0 -1
  145. package/app-backend/modules/JWTBuilder.js +0 -116
  146. package/app-backend/modules/JWTBuilder.js.map +0 -1
  147. package/app-backend/modules/SamlModule.js +0 -60
  148. package/app-backend/modules/SamlModule.js.map +0 -1
  149. package/app-backend/modules/SecretsModule.js +0 -137
  150. package/app-backend/modules/SecretsModule.js.map +0 -1
  151. package/app-backend/modules/_imports.js +0 -18
  152. package/app-frontend/core/module-pack.d.ts +0 -2
  153. package/app-frontend/core/module-pack.js +0 -23
  154. package/app-frontend/core/module-pack.js.map +0 -1
  155. package/app-frontend/modules/AccountModule.js +0 -164
  156. package/app-frontend/modules/AccountModule.js.map +0 -1
  157. package/app-frontend/ui/Component_Login.js +0 -68
  158. package/app-frontend/ui/Component_Login.js.map +0 -1
  159. package/app-frontend/ui/Component_Register.js +0 -74
  160. package/app-frontend/ui/Component_Register.js.map +0 -1
  161. package/backend.d.ts +0 -2
  162. package/backend.js +0 -19
  163. package/backend.js.map +0 -1
  164. package/frontend.d.ts +0 -3
  165. package/frontend.js +0 -20
  166. package/frontend.js.map +0 -1
  167. package/index.d.ts +0 -2
  168. package/index.js +0 -19
  169. package/index.js.map +0 -1
  170. package/shared/api.js +0 -16
  171. package/shared/api.js.map +0 -1
  172. package/shared/types.d.ts +0 -0
  173. package/shared/types.js +0 -2
  174. package/shared/utils/AuthenticationConsts.js +0 -6
  175. /package/{shared → dist/shared}/types.js.map +0 -0
@@ -0,0 +1,131 @@
1
+ import { __stringify, BadImplementationException, currentTimeMillies, Day, Module } from "@intuitionrobotics/ts-common";
2
+ import { ApiException } from "@intuitionrobotics/thunderstorm/backend";
3
+ import * as jws from "jws";
4
+ import {} from "jws";
5
+ import { EXPIRES_AT, JWTBuilder } from "./JWTBuilder.js";
6
+ import { AUTHENTICATION_KEY, AUTHENTICATION_PREFIX } from "../../index.js";
7
+ export class TokenExpiredException extends ApiException {
8
+ constructor(message, cause) {
9
+ super(401, message, cause);
10
+ }
11
+ }
12
+ export class SecretsModule_Class extends Module {
13
+ DEFAULT_ISS = "TOOLS";
14
+ AUTHENTICATION_PREFIX = AUTHENTICATION_PREFIX;
15
+ AUTHENTICATION_KEY = AUTHENTICATION_KEY;
16
+ constructor() {
17
+ super("SecretsModule");
18
+ this.setDefaultConfig({ validateKeyId: "AUTH_SECRET" });
19
+ }
20
+ getSecret(k) {
21
+ const secret = process.env?.[k] || this.getConfig()?.[k];
22
+ if (!secret)
23
+ throw new BadImplementationException(`Missing secret with key ${k} in SecretsModule`);
24
+ return {
25
+ kid: k,
26
+ value: secret
27
+ };
28
+ }
29
+ getAuthSecret = (kid) => {
30
+ return this.getSecret(kid);
31
+ };
32
+ getConfig = () => {
33
+ if (!this.config)
34
+ throw new BadImplementationException(`Missing config, check SecretsModule's config`);
35
+ if (!this.config.secrets)
36
+ throw new BadImplementationException(`Missing 'secrets' key in config, check SecretsModule's config`);
37
+ return this.config.secrets;
38
+ };
39
+ validateRequestAndCheckExpiration(request, scopes) {
40
+ const token = this.validateRequest(request, scopes);
41
+ if (this.isExpired(token)) {
42
+ const cause = `The JWT passed is not valid, check. With payload: ${__stringify(token.payload)}. The JWT passed is expired`;
43
+ throw new TokenExpiredException(cause);
44
+ }
45
+ return token.payload;
46
+ }
47
+ // Specify a kid to force the usage of it
48
+ validateRequest(request, scopes) {
49
+ const authToken = this.extractAuthToken(request);
50
+ const token = this.decodeJwt(authToken);
51
+ if (!token)
52
+ throw new ApiException(401, "Could not decode token " + authToken);
53
+ const kid = token.header.kid || this.config.validateKeyId;
54
+ if (!kid)
55
+ throw new ApiException(401, "Could not deduce which key to use in order to verify the token, please specify a key ID");
56
+ const secret = this.getAuthSecret(kid);
57
+ const verified = jws.verify(authToken, token.header.alg, secret.value);
58
+ let cause = `The JWT passed is not valid, check. With payload: ${__stringify(token.payload)} and header ${__stringify(token.header)}.`;
59
+ if (!verified)
60
+ throw new ApiException(401, cause);
61
+ if (!token.payload?.[EXPIRES_AT]) {
62
+ cause += ` The JWT is missing the expiration claim`;
63
+ throw new ApiException(401, cause);
64
+ }
65
+ const scopesToValidate = token.payload?.scopes;
66
+ if (scopesToValidate)
67
+ this.validateScopes(scopesToValidate, scopes);
68
+ return token;
69
+ }
70
+ validateScopes(_scopesToValidate, scopes) {
71
+ const scopesToValidate = _scopesToValidate.split(",");
72
+ const isValidScope = scopesToValidate.some(s => scopes.includes(s));
73
+ if (!isValidScope)
74
+ throw new ApiException(403, `User doesn't have valid scopes. It needs ${scopes.join(",")} but it has ${_scopesToValidate}`);
75
+ }
76
+ extractAuthToken(request) {
77
+ const authHead = request.header(this.AUTHENTICATION_KEY);
78
+ if (authHead === undefined)
79
+ throw new BadImplementationException("Missing Authorization header");
80
+ if (!authHead)
81
+ throw new BadImplementationException('The Authorization header is empty');
82
+ const parts = authHead.split(" ");
83
+ if (parts.length !== 2 || parts[0] !== this.AUTHENTICATION_PREFIX)
84
+ throw new BadImplementationException(`The Authorization header is malformed` + "\n"
85
+ + `Value: ${authHead}` + "\n"
86
+ + `Expected Value: ${this.AUTHENTICATION_PREFIX} [token]`);
87
+ const authToken = parts[1].trim();
88
+ if (!authToken)
89
+ throw new BadImplementationException(`The token provided is empty`);
90
+ return authToken;
91
+ }
92
+ isExpired = (token) => {
93
+ return this.getExpiration(token) < currentTimeMillies();
94
+ };
95
+ getExpiration(token) {
96
+ let exp = token.payload[EXPIRES_AT];
97
+ if (!exp)
98
+ return exp;
99
+ const now = currentTimeMillies();
100
+ const cutOff = 100000000000; // 3-3-1973 in milliseconds
101
+ const isInSeconds = exp < cutOff;
102
+ if (isInSeconds)
103
+ exp = exp * 1000;
104
+ const year = 365 * Day;
105
+ if (exp > now + year)
106
+ throw new ApiException(401, `The JWT passed is not valid. Payload: ${__stringify(token.payload)}.` +
107
+ `Malformed JWT, expiry date is not valid, check the exp format, assumed to be in ${isInSeconds ? "seconds" : "milliseconds"}`);
108
+ return exp;
109
+ }
110
+ generateJwt = (payload, kid, algorithm = "HS256") => {
111
+ const secret = this.getAuthSecret(kid);
112
+ return new JWTBuilder(algorithm)
113
+ // This is a default that can be overwritten by the claims
114
+ .setExpiration(Math.floor((currentTimeMillies() + Day) / 1000))
115
+ .addClaims(payload)
116
+ .setIssuer(this.getIss())
117
+ .setKeyID(secret.kid)
118
+ .build(secret.value);
119
+ };
120
+ getIss = () => {
121
+ const issuer = this.config.issuer;
122
+ if (!issuer)
123
+ return this.DEFAULT_ISS;
124
+ return issuer;
125
+ };
126
+ decodeJwt = (jwt) => {
127
+ return jws.decode(jwt);
128
+ };
129
+ }
130
+ export const SecretsModule = new SecretsModule_Class();
131
+ //# sourceMappingURL=SecretsModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SecretsModule.js","sourceRoot":"","sources":["../../../src/main/app-backend/modules/SecretsModule.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { AuditBy, DB_Object } from "@intuitionrobotics/ts-common";
2
- export * from "../../index";
1
+ import { type AuditBy, type DB_Object } from "@intuitionrobotics/ts-common";
2
+ export * from "../../index.js";
3
3
  export type RequestBody_SamlAssertOptions = {
4
4
  request_body: {
5
5
  SAMLResponse: string;
@@ -14,3 +14,4 @@ export type DB_Account = DB_Object & {
14
14
  salt?: string;
15
15
  saltedPassword?: string;
16
16
  };
17
+ //# sourceMappingURL=_imports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_imports.d.ts","sourceRoot":"","sources":["../../../src/main/app-backend/modules/_imports.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,KAAK,OAAO,EAAE,KAAK,SAAS,EAAC,MAAM,8BAA8B,CAAC;AAE1E,cAAc,gBAAgB,CAAC;AAE/B,MAAM,MAAM,6BAA6B,GAAG;IAC3C,YAAY,EAAE;QACb,YAAY,EAAE,MAAM,CAAA;QACpB,UAAU,EAAE,MAAM,CAAA;KAClB,CAAC;IACF,2BAA2B,CAAC,EAAE,OAAO,CAAC;CACtC,CAAA;AAED,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG;IACpC,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,OAAO,CAAA;IACf,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,cAAc,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA"}
@@ -0,0 +1,3 @@
1
+ import {} from "@intuitionrobotics/ts-common";
2
+ export * from "../../index.js";
3
+ //# sourceMappingURL=_imports.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_imports.js","sourceRoot":"","sources":["../../../src/main/app-backend/modules/_imports.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAGA,8CAA4B"}
1
+ {"version":3,"file":"_imports.js","sourceRoot":"","sources":["../../../src/main/app-backend/modules/_imports.ts"],"names":[],"mappings":"AACA,OAAO,EAA8B,MAAM,8BAA8B,CAAC;AAE1E,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare const Frontend_ModulePack_Users: import("../modules/AccountModule.js").AccountModule_Class[];
2
+ export * from "../modules/AccountModule.js";
3
+ //# sourceMappingURL=module-pack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-pack.d.ts","sourceRoot":"","sources":["../../../src/main/app-frontend/core/module-pack.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,yBAAyB,6DAErC,CAAC;AAEF,cAAc,6BAA6B,CAAA"}
@@ -0,0 +1,6 @@
1
+ import { AccountModule } from "../modules/AccountModule.js";
2
+ export const Frontend_ModulePack_Users = [
3
+ AccountModule,
4
+ ];
5
+ export * from "../modules/AccountModule.js";
6
+ //# sourceMappingURL=module-pack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-pack.js","sourceRoot":"","sources":["../../../src/main/app-frontend/core/module-pack.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,aAAa,EAAC,MAAM,6BAA6B,CAAC;AAE1D,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACxC,aAAa;CACb,CAAC;AAEF,cAAc,6BAA6B,CAAA"}
@@ -1,6 +1,6 @@
1
1
  import { Module } from "@intuitionrobotics/ts-common";
2
- import { OnUnauthenticatedResponse, StorageKey } from "@intuitionrobotics/thunderstorm/frontend";
3
- import { Request_CreateAccount, Request_LoginAccount, RequestParams_LoginSAML, UI_Account } from "../../shared/api";
2
+ import { type OnUnauthenticatedResponse, StorageKey } from "@intuitionrobotics/thunderstorm/frontend";
3
+ import { type Request_CreateAccount, type Request_LoginAccount, type RequestParams_LoginSAML, type UI_Account } from "../../shared/api.js";
4
4
  export declare const StorageKey_UserEmail: StorageKey<string>;
5
5
  export declare const StorageKey_JWT: StorageKey<string>;
6
6
  export declare const RequestKey_AccountCreate = "account-create";
@@ -40,3 +40,4 @@ export declare class AccountModule_Class extends Module<Config> implements OnUna
40
40
  }
41
41
  export declare const AccountModule: AccountModule_Class;
42
42
  export {};
43
+ //# sourceMappingURL=AccountModule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccountModule.d.ts","sourceRoot":"","sources":["../../../src/main/app-frontend/modules/AccountModule.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAS,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAGH,KAAK,yBAAyB,EAC9B,UAAU,EAIb,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAQH,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAI5B,KAAK,UAAU,EAClB,MAAM,qBAAqB,CAAC;AAS7B,eAAO,MAAM,oBAAoB,EAAE,UAAU,CAAC,MAAM,CAAyD,CAAC;AAC9G,eAAO,MAAM,cAAc,EAAE,UAAU,CAAC,MAAM,CAAuD,CAAC;AAEtG,eAAO,MAAM,wBAAwB,mBAAmB,CAAC;AACzD,eAAO,MAAM,uBAAuB,kBAAkB,CAAC;AACvD,eAAO,MAAM,2BAA2B,uBAAuB,CAAC;AAChE,eAAO,MAAM,0BAA0B,qBAAqB,CAAC;AAE7D,MAAM,WAAW,oBAAoB;IACjC,oBAAoB,EAAE,MAAM,IAAI,CAAC;CACpC;AAED,oBAAY,YAAY;IACpB,UAAU,IAAA;IACV,UAAU,IAAA;IACV,SAAS,IAAA;CACZ;AAED,KAAK,MAAM,GAAG,EAAE,CAAA;AAEhB,MAAM,WAAW,gBAAgB;IAC7B,kBAAkB,EAAE,MAAM,IAAI,CAAC;CAClC;AAID,qBAAa,mBACT,SAAQ,MAAM,CAAC,MAAM,CAAE,YAAW,yBAAyB;IAE3D,OAAO,CAAC,MAAM,CAAyC;IACvD,OAAO,CAAC,uBAAuB,CAAmE;IAClG,OAAO,CAAC,QAAQ,CAAoB;;IAuBpC,yBAAyB,aAEvB;IAEF,WAAW;IAIX,eAAe,qBAAqB;IAEpC,QAAQ,GAAI,QAAQ,YAAY,aAA4B;IAE5D,SAAS,CAAC,eAAe,GAAI,WAAW,YAAY,UASlD;IAGF,SAAS,CAAC,IAAI,IAAI,IAAI;IAsBf,MAAM,CAAC,OAAO,EAAE,qBAAqB;IAYrC,KAAK,CAAC,OAAO,EAAE,oBAAoB;IAY1C,OAAO,CAAC,YAAY;IAMb,SAAS,CAAC,OAAO,EAAE,uBAAuB;IAejD,OAAO,CAAC,aAAa,CAkBnB;IAEF,MAAM,GAAI,MAAM,MAAM,wBAMpB;IAEF,SAAS,aAUR;CACJ;AAED,eAAO,MAAM,aAAa,qBAA4B,CAAC"}
@@ -0,0 +1,151 @@
1
+ import { Module, Second } from "@intuitionrobotics/ts-common";
2
+ import { BaseComponent, BrowserHistoryModule, StorageKey, ThunderDispatcher, ToastModule, XhrHttpModule } from "@intuitionrobotics/thunderstorm/frontend";
3
+ import { QueryParam_Email, QueryParam_JWT } from "../../shared/api.js";
4
+ import { BaseHttpRequest, HeaderKey_FunctionExecutionId, HeaderKey_JWT, HttpMethod } from "@intuitionrobotics/thunderstorm";
5
+ import { AUTHENTICATION_KEY, AUTHENTICATION_PREFIX } from "../../index.js";
6
+ export const StorageKey_UserEmail = new StorageKey(`storage-${QueryParam_Email}`);
7
+ export const StorageKey_JWT = new StorageKey(`storage-${QueryParam_JWT}`);
8
+ export const RequestKey_AccountCreate = "account-create";
9
+ export const RequestKey_AccountLogin = "account-login";
10
+ export const RequestKey_AccountLoginSAML = "account-login-saml";
11
+ export const RequestKey_ValidateSession = "account-validate";
12
+ export var LoggedStatus;
13
+ (function (LoggedStatus) {
14
+ LoggedStatus[LoggedStatus["VALIDATING"] = 0] = "VALIDATING";
15
+ LoggedStatus[LoggedStatus["LOGGED_OUT"] = 1] = "LOGGED_OUT";
16
+ LoggedStatus[LoggedStatus["LOGGED_IN"] = 2] = "LOGGED_IN";
17
+ })(LoggedStatus || (LoggedStatus = {}));
18
+ const dispatch_onAccountsLoaded = new ThunderDispatcher("__onAccountsLoaded");
19
+ export class AccountModule_Class extends Module {
20
+ status = LoggedStatus.VALIDATING;
21
+ dispatchUI_loginChanged;
22
+ accounts = [];
23
+ constructor() {
24
+ super("AccountModule");
25
+ XhrHttpModule.addDefaultResponseHandler((request) => {
26
+ const status = request.getStatus();
27
+ if (status < 200 || status >= 300)
28
+ return false;
29
+ try {
30
+ const functionExecutionId = request?.getResponseHeader?.(HeaderKey_FunctionExecutionId);
31
+ XhrHttpModule.logDebug(`${request.key} Function execution id: ${functionExecutionId}`);
32
+ const jwt = request.getResponseHeader(HeaderKey_JWT);
33
+ if (jwt)
34
+ StorageKey_JWT.set(jwt);
35
+ }
36
+ catch (e) {
37
+ XhrHttpModule.logError(`${request.key} - Failed to retrieve headers from xhr call`, e);
38
+ }
39
+ return false;
40
+ });
41
+ }
42
+ onUnauthenticatedResponse = () => {
43
+ this.logout();
44
+ };
45
+ getAccounts() {
46
+ return this.accounts;
47
+ }
48
+ getLoggedStatus = () => this.status;
49
+ isStatus = (status) => this.status === status;
50
+ setLoggedStatus = (newStatus) => {
51
+ if (this.status === newStatus)
52
+ return;
53
+ const pervStatus = this.status;
54
+ this.status = newStatus;
55
+ this.logInfo(`Login status changes: ${LoggedStatus[pervStatus]} => ${LoggedStatus[newStatus]}`);
56
+ this.dispatchUI_loginChanged.dispatchUI();
57
+ this.dispatchUI_loginChanged.dispatchModule();
58
+ };
59
+ init() {
60
+ XhrHttpModule.addDefaultHeader(AUTHENTICATION_KEY, () => `${AUTHENTICATION_PREFIX} ${StorageKey_JWT.get()}`);
61
+ this.dispatchUI_loginChanged = new ThunderDispatcher("onLoginStatusUpdated");
62
+ const email = BaseComponent.getQueryParameter(QueryParam_Email);
63
+ const jwt = BaseComponent.getQueryParameter(QueryParam_JWT);
64
+ if (email && jwt) {
65
+ StorageKey_JWT.set(jwt);
66
+ StorageKey_UserEmail.set(email);
67
+ BrowserHistoryModule.removeQueryParam(QueryParam_Email);
68
+ BrowserHistoryModule.removeQueryParam(QueryParam_JWT);
69
+ }
70
+ if (StorageKey_JWT.get())
71
+ return AccountModule.validateToken();
72
+ this.logDebug("login out user.... ");
73
+ this.setLoggedStatus(LoggedStatus.LOGGED_OUT);
74
+ }
75
+ create(request) {
76
+ XhrHttpModule
77
+ .createRequest(HttpMethod.POST, RequestKey_AccountCreate)
78
+ .setRelativeUrl("/v1/account/create")
79
+ .setJsonBody(request)
80
+ .setLabel(`User register...`)
81
+ .setOnError("Error registering user")
82
+ .execute(async (response) => {
83
+ ToastModule.toastSuccess(`Account successfully created with email: ${response.email}`);
84
+ });
85
+ }
86
+ login(request) {
87
+ XhrHttpModule
88
+ .createRequest(HttpMethod.POST, RequestKey_AccountLogin)
89
+ .setRelativeUrl("/v1/account/login")
90
+ .setJsonBody(request)
91
+ .setLabel(`User login with password...`)
92
+ .setOnError("Error login user")
93
+ .execute(async (response) => {
94
+ this.setLoginInfo(response);
95
+ });
96
+ }
97
+ setLoginInfo(response) {
98
+ StorageKey_JWT.set(response.jwt);
99
+ StorageKey_UserEmail.set(response.email);
100
+ this.setLoggedStatus(LoggedStatus.LOGGED_IN);
101
+ }
102
+ loginSAML(request) {
103
+ XhrHttpModule
104
+ .createRequest(HttpMethod.GET, RequestKey_AccountLoginSAML)
105
+ .setRelativeUrl("/v1/account/login-saml")
106
+ .setUrlParams(request)
107
+ .setLabel(`User login SAML...`)
108
+ .setOnError('Error login user')
109
+ .execute(async (response) => {
110
+ if (!response.loginUrl)
111
+ return;
112
+ window.location.href = response.loginUrl;
113
+ });
114
+ }
115
+ validateToken = () => {
116
+ XhrHttpModule
117
+ .createRequest(HttpMethod.GET, RequestKey_ValidateSession)
118
+ .setLabel(`Validate token...`)
119
+ .setRelativeUrl("/v1/account/validate")
120
+ .setOnError((request, _resError) => {
121
+ if (request.getStatus() === 0) {
122
+ ToastModule.toastError("Cannot reach Server... trying in 30 sec");
123
+ setTimeout(() => AccountModule.validateToken(), 30 * Second);
124
+ return;
125
+ }
126
+ StorageKey_JWT.delete();
127
+ return AccountModule.setLoggedStatus(LoggedStatus.LOGGED_OUT);
128
+ })
129
+ .execute(async () => {
130
+ AccountModule.setLoggedStatus(LoggedStatus.LOGGED_IN);
131
+ });
132
+ };
133
+ logout = (url) => {
134
+ StorageKey_JWT.delete();
135
+ if (url)
136
+ return window.location.href = url;
137
+ this.setLoggedStatus(LoggedStatus.LOGGED_OUT);
138
+ };
139
+ listUsers = () => {
140
+ XhrHttpModule
141
+ .createRequest(HttpMethod.GET, RequestKey_ValidateSession)
142
+ .setLabel(`Fetching users...`)
143
+ .setRelativeUrl("/v1/account/query")
144
+ .execute(async (res) => {
145
+ this.accounts = res.accounts.filter(account => account._id);
146
+ dispatch_onAccountsLoaded.dispatchUI();
147
+ });
148
+ };
149
+ }
150
+ export const AccountModule = new AccountModule_Class();
151
+ //# sourceMappingURL=AccountModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccountModule.js","sourceRoot":"","sources":["../../../src/main/app-frontend/modules/AccountModule.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import * as React from "react";
2
- import { Request_LoginAccount } from "../../shared/api";
2
+ import { type Request_LoginAccount } from "../../shared/api.js";
3
3
  export type ValueAndError = {
4
4
  value?: string;
5
5
  error?: string;
@@ -19,3 +19,4 @@ export declare class Component_Login extends React.Component<Props<Request_Login
19
19
  private loginClicked;
20
20
  }
21
21
  export {};
22
+ //# sourceMappingURL=Component_Login.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Component_Login.d.ts","sourceRoot":"","sources":["../../../src/main/app-frontend/ui/Component_Login.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,OAAO,EAAC,KAAK,oBAAoB,EAAC,MAAM,qBAAqB,CAAC;AAM9D,MAAM,MAAM,aAAa,GAAG;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED,KAAK,KAAK,CAAC,CAAC,IAAI;IACf,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;CAChB,CAAA;AAED,KAAK,KAAK,CAAC,CAAC,IAAI;IACf,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,MAAM,GAAG,SAAS,CAAA;CACnD,CAAA;AAkCD,qBAAa,eACZ,SAAQ,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAEjF,KAAK;cACQ,OAAO,CAAC,oBAAoB,CAAC;MACxC;IAEF,MAAM;IAyBN,OAAO,CAAC,cAAc,CAKpB;IAEF,OAAO,CAAC,YAAY,CAelB;CACF"}
@@ -0,0 +1,63 @@
1
+ import * as React from "react";
2
+ import {} from "react";
3
+ import { _keys, addItemToArray } from "@intuitionrobotics/ts-common";
4
+ import { AccountModule } from "../modules/AccountModule.js";
5
+ import {} from "../../shared/api.js";
6
+ import { ToastModule, TS_Input } from "@intuitionrobotics/thunderstorm/frontend";
7
+ const style = {
8
+ "height": "38px",
9
+ "borderRadius": "25px",
10
+ "backgroundColor": "#9c9ccd",
11
+ "borderWidth": "0",
12
+ "textAlign": "left",
13
+ "padding": "0 15px",
14
+ "color": "white",
15
+ "marginTop": "10px"
16
+ };
17
+ const form = {
18
+ email: {
19
+ type: "text",
20
+ hint: "email",
21
+ label: "Email",
22
+ },
23
+ password: {
24
+ type: "password",
25
+ hint: "****",
26
+ label: "Password",
27
+ }
28
+ };
29
+ export class Component_Login extends React.Component {
30
+ state = {
31
+ data: {},
32
+ };
33
+ render() {
34
+ const data = this.state.data;
35
+ return React.createElement(React.Fragment, null,
36
+ React.createElement("div", { className: 'll_v_c', style: { justifyContent: 'space-evenly' } }, _keys(form).map(key => {
37
+ const field = form[key];
38
+ return React.createElement(TS_Input, { id: key, key: key, value: data[key], type: field.type, placeholder: field.hint, onChange: this.onValueChanged, onAccept: this.loginClicked });
39
+ })),
40
+ React.createElement("div", { className: 'll_h_c', style: { justifyContent: 'center' } },
41
+ React.createElement("button", { onClick: this.loginClicked, className: `clickable`, style: style }, "Login")));
42
+ }
43
+ onValueChanged = (value, id) => {
44
+ this.setState(state => {
45
+ state.data[id] = value;
46
+ return state;
47
+ });
48
+ };
49
+ loginClicked = () => {
50
+ const data = this.state.data;
51
+ const errors = _keys(form).map(key => {
52
+ const field = form[key];
53
+ return data[key] ? undefined : ` * missing ${field.label}`;
54
+ }).filter(error => !!error);
55
+ const validateError = this.props.validate && this.props.validate(data);
56
+ if (validateError)
57
+ addItemToArray(errors, validateError);
58
+ if (errors.length > 0)
59
+ return ToastModule.toastError(`Wrong input:\n${errors.join("\n")}`);
60
+ AccountModule.login(this.state.data);
61
+ };
62
+ }
63
+ //# sourceMappingURL=Component_Login.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Component_Login.js","sourceRoot":"","sources":["../../../src/main/app-frontend/ui/Component_Login.tsx"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import * as React from "react";
2
- import { Request_CreateAccount } from "../../shared/api";
2
+ import { type Request_CreateAccount } from "../../shared/api.js";
3
3
  type State<T> = {
4
4
  data: Partial<T>;
5
5
  };
@@ -15,3 +15,4 @@ export declare class Component_Register extends React.Component<Props<Request_Cr
15
15
  private registerClicked;
16
16
  }
17
17
  export {};
18
+ //# sourceMappingURL=Component_Register.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Component_Register.d.ts","sourceRoot":"","sources":["../../../src/main/app-frontend/ui/Component_Register.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,OAAO,EAAC,KAAK,qBAAqB,EAAC,MAAM,qBAAqB,CAAC;AAM/D,KAAK,KAAK,CAAC,CAAC,IAAI;IACf,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;CAChB,CAAA;AACD,KAAK,KAAK,CAAC,CAAC,IAAI;IACf,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,MAAM,GAAG,SAAS,CAAA;CACnD,CAAA;AAwCD,qBAAa,kBACZ,SAAQ,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,qBAAqB,CAAC,EAAE,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAEnF,KAAK;cACQ,OAAO,CAAC,qBAAqB,CAAC;MACzC;IAEF,MAAM;IAwBN,OAAO,CAAC,cAAc,CAKpB;IAEF,OAAO,CAAC,eAAe,CAerB;CACF"}
@@ -0,0 +1,69 @@
1
+ import * as React from "react";
2
+ import {} from "react";
3
+ import { _keys, addItemToArray } from "@intuitionrobotics/ts-common";
4
+ import { AccountModule } from "../modules/AccountModule.js";
5
+ import {} from "../../shared/api.js";
6
+ import { ToastModule, TS_Input } from "@intuitionrobotics/thunderstorm/frontend";
7
+ const style = {
8
+ "height": "38px",
9
+ "borderRadius": "25px",
10
+ "backgroundColor": "#9c9ccd",
11
+ "borderWidth": "0",
12
+ "textAlign": "left",
13
+ "padding": "0 15px",
14
+ "color": "white",
15
+ "marginTop": "10px"
16
+ };
17
+ const form = {
18
+ email: {
19
+ className: "",
20
+ type: "text",
21
+ hint: "email",
22
+ label: "Email",
23
+ },
24
+ password: {
25
+ type: "password",
26
+ hint: "****",
27
+ label: "Password",
28
+ },
29
+ password_check: {
30
+ type: "password",
31
+ hint: "****",
32
+ label: "Password Check",
33
+ },
34
+ };
35
+ export class Component_Register extends React.Component {
36
+ state = {
37
+ data: {},
38
+ };
39
+ render() {
40
+ const data = this.state.data;
41
+ return React.createElement(React.Fragment, null,
42
+ React.createElement("div", { className: 'll_v_c', style: { justifyContent: 'space-evenly' } }, _keys(form).map(key => {
43
+ const field = form[key];
44
+ return React.createElement(TS_Input, { id: key, value: data[key], type: field.type, placeholder: field?.hint, onChange: this.onValueChanged, onAccept: this.registerClicked });
45
+ })),
46
+ React.createElement("div", { className: 'll_h_c', style: { justifyContent: 'center' } },
47
+ React.createElement("button", { onClick: this.registerClicked, className: `clickable`, style: style }, "Register")));
48
+ }
49
+ onValueChanged = (value, id) => {
50
+ this.setState(state => {
51
+ state.data[id] = value;
52
+ return state;
53
+ });
54
+ };
55
+ registerClicked = () => {
56
+ const data = this.state.data;
57
+ const errors = _keys(form).map(key => {
58
+ const field = form[key];
59
+ return data[key] ? undefined : ` * missing ${field.label}`;
60
+ }).filter(error => !!error);
61
+ const validateError = this.props.validate && this.props.validate(data);
62
+ if (validateError)
63
+ addItemToArray(errors, validateError);
64
+ if (errors.length > 0)
65
+ return ToastModule.toastError(`Wrong input:\n${errors.join("\n")}`);
66
+ AccountModule.create(this.state.data);
67
+ };
68
+ }
69
+ //# sourceMappingURL=Component_Register.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Component_Register.js","sourceRoot":"","sources":["../../../src/main/app-frontend/ui/Component_Register.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from "./app-backend/core/module-pack.js";
2
+ export * from "./app-backend/apis/add-new-account.js";
3
+ //# sourceMappingURL=backend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../src/main/backend.ts"],"names":[],"mappings":"AACA,cAAc,mCAAmC,CAAC;AAClD,cAAc,uCAAuC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from "./app-backend/core/module-pack.js";
2
+ export * from "./app-backend/apis/add-new-account.js";
3
+ //# sourceMappingURL=backend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend.js","sourceRoot":"","sources":["../src/main/backend.ts"],"names":[],"mappings":"AACA,cAAc,mCAAmC,CAAC;AAClD,cAAc,uCAAuC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from "./app-frontend/core/module-pack.js";
2
+ export type { Component_Login, ValueAndError } from "./app-frontend/ui/Component_Login.js";
3
+ export type { Component_Register } from "./app-frontend/ui/Component_Register.js";
4
+ //# sourceMappingURL=frontend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frontend.d.ts","sourceRoot":"","sources":["../src/main/frontend.ts"],"names":[],"mappings":"AACA,cAAc,oCAAoC,CAAC;AAKnD,YAAY,EAAC,eAAe,EAAE,aAAa,EAAC,MAAM,sCAAsC,CAAC;AACzF,YAAY,EAAC,kBAAkB,EAAC,MAAM,yCAAyC,CAAC"}
@@ -0,0 +1,3 @@
1
+ // Runtime essentials: module pack and singleton AccountModule.
2
+ export * from "./app-frontend/core/module-pack.js";
3
+ //# sourceMappingURL=frontend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frontend.js","sourceRoot":"","sources":["../src/main/frontend.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,cAAc,oCAAoC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from "./shared/api.js";
2
+ export * from "./shared/utils/AuthenticationConsts.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/main/index.ts"],"names":[],"mappings":"AACA,cAAc,iBAAiB,CAAC;AAChC,cAAc,wCAAwC,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,3 @@
1
+ export * from "./shared/api.js";
2
+ export * from "./shared/utils/AuthenticationConsts.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/main/index.ts"],"names":[],"mappings":"AACA,cAAc,iBAAiB,CAAC;AAChC,cAAc,wCAAwC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { ApiWithBody, ApiWithQuery } from "@intuitionrobotics/thunderstorm";
1
+ import { type ApiWithBody, type ApiWithQuery } from "@intuitionrobotics/thunderstorm";
2
2
  export declare const HeaderKey_SessionId = "x-session-id";
3
3
  export declare const HeaderKey_Email = "x-email";
4
4
  export declare const QueryParam_Email = "userEmail";
@@ -78,3 +78,4 @@ export type AccountApi_LoginSAML = ApiWithQuery<"/v1/account/login-saml", Respon
78
78
  export type AccountApi_ValidateSession = ApiWithQuery<'/v1/account/validate', Response_Validation>;
79
79
  export type AccountApi_AssertLoginSAML = ApiWithBody<"/v1/account/assert", PostAssertBody, void>;
80
80
  export type AccountApi_ListAccounts = ApiWithQuery<'/v1/account/query', Response_ListAccounts>;
81
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/main/shared/api.ts"],"names":[],"mappings":"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"}