@leapdev/app-platform 0.1.0-beta.4 → 0.1.0-beta.5

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 (142) hide show
  1. package/package.json +15 -15
  2. package/src/index.d.ts +25 -0
  3. package/src/index.js +42 -0
  4. package/src/index.js.map +1 -0
  5. package/src/lib/app-platform.d.ts +37 -0
  6. package/src/lib/app-platform.js +231 -0
  7. package/src/lib/app-platform.js.map +1 -0
  8. package/src/lib/environment/environment.d.ts +37 -0
  9. package/src/lib/environment/environment.dictionary.d.ts +4 -0
  10. package/src/lib/environment/environment.dictionary.js +30 -0
  11. package/src/lib/environment/environment.dictionary.js.map +1 -0
  12. package/src/lib/environment/environment.js +17 -0
  13. package/src/lib/environment/environment.js.map +1 -0
  14. package/src/lib/environment/{index.ts → index.d.ts} +2 -2
  15. package/src/lib/environment/index.js +9 -0
  16. package/src/lib/environment/index.js.map +1 -0
  17. package/src/lib/environment/leap/env.dev.au.config.d.ts +32 -0
  18. package/src/lib/environment/leap/env.dev.au.config.js +36 -0
  19. package/src/lib/environment/leap/env.dev.au.config.js.map +1 -0
  20. package/src/lib/environment/leap/env.live.au.config.d.ts +32 -0
  21. package/src/lib/environment/leap/env.live.au.config.js +36 -0
  22. package/src/lib/environment/leap/env.live.au.config.js.map +1 -0
  23. package/src/lib/environment/leap/env.live.ca.config.d.ts +32 -0
  24. package/src/lib/environment/leap/env.live.ca.config.js +36 -0
  25. package/src/lib/environment/leap/env.live.ca.config.js.map +1 -0
  26. package/src/lib/environment/leap/env.live.nz.config.d.ts +32 -0
  27. package/src/lib/environment/leap/env.live.nz.config.js +36 -0
  28. package/src/lib/environment/leap/env.live.nz.config.js.map +1 -0
  29. package/src/lib/environment/leap/env.live.uk.config.d.ts +32 -0
  30. package/src/lib/environment/leap/env.live.uk.config.js +36 -0
  31. package/src/lib/environment/leap/env.live.uk.config.js.map +1 -0
  32. package/src/lib/environment/leap/env.live.us.config.d.ts +32 -0
  33. package/src/lib/environment/leap/env.live.us.config.js +36 -0
  34. package/src/lib/environment/leap/env.live.us.config.js.map +1 -0
  35. package/src/lib/environment/leap/env.liveb.au.config.d.ts +32 -0
  36. package/src/lib/environment/leap/env.liveb.au.config.js +36 -0
  37. package/src/lib/environment/leap/env.liveb.au.config.js.map +1 -0
  38. package/src/lib/environment/leap/env.test.au.config.d.ts +32 -0
  39. package/src/lib/environment/leap/env.test.au.config.js +36 -0
  40. package/src/lib/environment/leap/env.test.au.config.js.map +1 -0
  41. package/src/lib/environment/leap/env.test.ca.config.d.ts +32 -0
  42. package/src/lib/environment/leap/env.test.ca.config.js +36 -0
  43. package/src/lib/environment/leap/env.test.ca.config.js.map +1 -0
  44. package/src/lib/environment/leap/env.test.nz.config.d.ts +32 -0
  45. package/src/lib/environment/leap/env.test.nz.config.js +36 -0
  46. package/src/lib/environment/leap/env.test.nz.config.js.map +1 -0
  47. package/src/lib/environment/leap/env.test.uk.config.d.ts +32 -0
  48. package/src/lib/environment/leap/env.test.uk.config.js +36 -0
  49. package/src/lib/environment/leap/env.test.uk.config.js.map +1 -0
  50. package/src/lib/environment/leap/env.test.us.config.d.ts +32 -0
  51. package/src/lib/environment/leap/env.test.us.config.js +36 -0
  52. package/src/lib/environment/leap/env.test.us.config.js.map +1 -0
  53. package/src/lib/functions/helpers.d.ts +5 -0
  54. package/src/lib/functions/helpers.js +95 -0
  55. package/src/lib/functions/helpers.js.map +1 -0
  56. package/src/lib/functions/xml.d.ts +2 -0
  57. package/src/lib/functions/xml.js +41 -0
  58. package/src/lib/functions/xml.js.map +1 -0
  59. package/src/lib/models/calc-api.model.d.ts +57 -0
  60. package/src/lib/models/calc-api.model.js +39 -0
  61. package/src/lib/models/calc-api.model.js.map +1 -0
  62. package/src/lib/models/constants/index.d.ts +28 -0
  63. package/src/lib/models/constants/index.js +32 -0
  64. package/src/lib/models/constants/index.js.map +1 -0
  65. package/src/lib/models/{index.ts → index.d.ts} +1 -1
  66. package/src/lib/models/index.js +5 -0
  67. package/src/lib/models/index.js.map +1 -0
  68. package/src/lib/models/leap-events.model.d.ts +56 -0
  69. package/src/lib/models/leap-events.model.js +71 -0
  70. package/src/lib/models/leap-events.model.js.map +1 -0
  71. package/src/lib/models/leap.model.d.ts +65 -0
  72. package/src/lib/models/leap.model.js +29 -0
  73. package/src/lib/models/leap.model.js.map +1 -0
  74. package/src/lib/models/signalr.model.d.ts +21 -0
  75. package/src/lib/models/signalr.model.js +3 -0
  76. package/src/lib/models/signalr.model.js.map +1 -0
  77. package/src/lib/services/auth/auth.service.d.ts +13 -0
  78. package/src/lib/services/auth/auth.service.js +185 -0
  79. package/src/lib/services/auth/auth.service.js.map +1 -0
  80. package/src/lib/services/calc-api/calc-api-service.interface.d.ts +4 -0
  81. package/src/lib/services/calc-api/calc-api-service.interface.js +3 -0
  82. package/src/lib/services/calc-api/calc-api-service.interface.js.map +1 -0
  83. package/src/lib/services/calc-api/calc-word.service.d.ts +10 -0
  84. package/src/lib/services/calc-api/calc-word.service.js +63 -0
  85. package/src/lib/services/calc-api/calc-word.service.js.map +1 -0
  86. package/src/lib/services/calc-api/promise-helper.function.d.ts +2 -0
  87. package/src/lib/services/calc-api/promise-helper.function.js +32 -0
  88. package/src/lib/services/calc-api/promise-helper.function.js.map +1 -0
  89. package/src/lib/services/custom-xml-part.service.d.ts +5 -0
  90. package/src/lib/services/custom-xml-part.service.js +269 -0
  91. package/src/lib/services/custom-xml-part.service.js.map +1 -0
  92. package/src/lib/services/document/document.service.d.ts +16 -0
  93. package/src/lib/services/document/document.service.js +32 -0
  94. package/src/lib/services/document/document.service.js.map +1 -0
  95. package/src/lib/services/{index.ts → index.d.ts} +5 -10
  96. package/src/lib/services/index.js +9 -0
  97. package/src/lib/services/index.js.map +1 -0
  98. package/src/lib/services/leap-events.service.d.ts +26 -0
  99. package/src/lib/services/leap-events.service.js +357 -0
  100. package/src/lib/services/leap-events.service.js.map +1 -0
  101. package/src/lib/services/logger/logger.service.d.ts +10 -0
  102. package/src/lib/services/logger/logger.service.js +39 -0
  103. package/src/lib/services/logger/logger.service.js.map +1 -0
  104. package/src/lib/services/signalr/signalr.service.d.ts +9 -0
  105. package/src/lib/services/signalr/signalr.service.js +93 -0
  106. package/src/lib/services/signalr/signalr.service.js.map +1 -0
  107. package/.eslintrc.json +0 -25
  108. package/project.json +0 -27
  109. package/src/index.ts +0 -44
  110. package/src/lib/app-platform.ts +0 -270
  111. package/src/lib/environment/environment.dictionary.ts +0 -28
  112. package/src/lib/environment/environment.ts +0 -44
  113. package/src/lib/environment/leap/env.dev.au.config.ts +0 -33
  114. package/src/lib/environment/leap/env.live.au.config.ts +0 -32
  115. package/src/lib/environment/leap/env.live.ca.config.ts +0 -32
  116. package/src/lib/environment/leap/env.live.nz.config.ts +0 -32
  117. package/src/lib/environment/leap/env.live.uk.config.ts +0 -32
  118. package/src/lib/environment/leap/env.live.us.config.ts +0 -32
  119. package/src/lib/environment/leap/env.liveb.au.config.ts +0 -32
  120. package/src/lib/environment/leap/env.test.au.config.ts +0 -33
  121. package/src/lib/environment/leap/env.test.ca.config.ts +0 -33
  122. package/src/lib/environment/leap/env.test.nz.config.ts +0 -33
  123. package/src/lib/environment/leap/env.test.uk.config.ts +0 -33
  124. package/src/lib/environment/leap/env.test.us.config.ts +0 -33
  125. package/src/lib/functions/helpers.ts +0 -100
  126. package/src/lib/functions/xml.ts +0 -41
  127. package/src/lib/models/calc-api.model.ts +0 -74
  128. package/src/lib/models/constants/index.ts +0 -29
  129. package/src/lib/models/leap-events.model.ts +0 -79
  130. package/src/lib/models/leap.model.ts +0 -78
  131. package/src/lib/models/signalr.model.ts +0 -22
  132. package/src/lib/services/auth/auth.service.ts +0 -219
  133. package/src/lib/services/calc-api/calc-api-service.interface.ts +0 -12
  134. package/src/lib/services/calc-api/calc-word.service.ts +0 -117
  135. package/src/lib/services/calc-api/promise-helper.function.ts +0 -26
  136. package/src/lib/services/custom-xml-part.service.ts +0 -340
  137. package/src/lib/services/document/document.service.ts +0 -33
  138. package/src/lib/services/leap-events.service.ts +0 -489
  139. package/src/lib/services/logger/logger.service.ts +0 -42
  140. package/src/lib/services/signalr/signalr.service.ts +0 -88
  141. package/tsconfig.json +0 -20
  142. package/tsconfig.lib.json +0 -12
@@ -1,22 +0,0 @@
1
- export type SignalRMessage<T> = {
2
- action: string;
3
- payload: T;
4
- sessionId: string;
5
- requestId: string;
6
- source: string;
7
- }
8
-
9
- export type SignalRInitData = {
10
- code: string;
11
- codeChallenge: string;
12
- contentModeEnabled: boolean;
13
- country: string;
14
- countryCode: number;
15
- hostType: string;
16
- hostVersion: string;
17
- environment: string;
18
- firmId: string;
19
- staffId: string;
20
- userId: string;
21
- userName: string;
22
- }
@@ -1,219 +0,0 @@
1
- import { constants } from '../../models/constants';
2
- import { LEAPUser } from '../../models/leap.model';
3
-
4
- export class AuthService {
5
- readonly #code: string;
6
- readonly #codeVerifier: string;
7
- readonly #clientId: string;
8
- readonly #env: string;
9
- readonly #authHost: string;
10
-
11
- #user: LEAPUser | undefined;
12
- #accessToken: string | undefined;
13
- #refreshToken: string | undefined;
14
-
15
- constructor(data: {
16
- code: string;
17
- codeVerifier;
18
- clientId: string;
19
- env: string;
20
- }) {
21
- this.#code = data.code;
22
- this.#codeVerifier = data.codeVerifier;
23
- this.#clientId = data.clientId;
24
- this.#env = data.env.toLowerCase();
25
- this.#authHost =
26
- this.#env === 'live'
27
- ? 'https://auth.leap.services'
28
- : 'https://auth-test.leap.services';
29
- }
30
-
31
- async init(): Promise<boolean> {
32
- try {
33
- const data = await this.#exchangeAuthCodeForAccessToken();
34
- this.#accessToken = data.access_token;
35
- this.#refreshToken = data.refresh_token;
36
- this.#user = await this.#getUserInfo();
37
- return true;
38
- } catch (e) {
39
- console.log('[AuthService] unable to init');
40
- return true;
41
- }
42
- }
43
-
44
- async getRefreshedAccessToken(force?: boolean) {
45
- if (this.#accessToken === undefined || !this.#accessToken) {
46
- return '';
47
- } else {
48
- const decoded = this.#decodeAccessToken(this.#accessToken);
49
-
50
- if (
51
- force ||
52
- (!!decoded &&
53
- (decoded.exp - constants.tokenSecondsBeforeExpire) * 1000 <
54
- Date.now())
55
- ) {
56
- const data = await this.#exchangeRefreshTokenForAccessToken();
57
-
58
- if (data) {
59
- this.#accessToken = data.access_token;
60
- this.#refreshToken = data.refresh_token;
61
- }
62
- return this.#accessToken;
63
- } else {
64
- return this.#accessToken;
65
- }
66
- }
67
- }
68
-
69
- getLEAPUser() {
70
- return this.#user;
71
- }
72
-
73
- async #exchangeAuthCodeForAccessToken(): Promise<{
74
- access_token: string;
75
- refresh_token: string;
76
- }> {
77
- return new Promise<{ access_token: string; refresh_token: string }>(
78
- (resolve, reject) => {
79
- this.#xhr<{ access_token: string; refresh_token: string }>(
80
- {
81
- method: 'POST',
82
- endpoint: `${this.#authHost}/oauth/token`,
83
- options: {
84
- body: {
85
- grant_type: 'authorization_code',
86
- code: this.#code,
87
- code_verifier: this.#codeVerifier,
88
- client_id: this.#clientId,
89
- redirect_uri: constants.fourdRedirectUrl,
90
- },
91
- },
92
- accessToken: undefined,
93
- },
94
- (response, status) => {
95
- if (status === 200) {
96
- return resolve(response);
97
- } else return reject(response);
98
- }
99
- );
100
- }
101
- );
102
- }
103
-
104
- async #getUserInfo(): Promise<LEAPUser> {
105
- return new Promise<LEAPUser>((resolve, reject) => {
106
- this.#xhr<LEAPUser>(
107
- {
108
- method: 'GET',
109
- endpoint: `${this.#authHost}/api/userinfo`,
110
- options: {},
111
- accessToken: this.#accessToken,
112
- },
113
- (response, status) => {
114
- if (status === 200) {
115
- return resolve(response);
116
- } else return reject(response);
117
- }
118
- );
119
- });
120
- }
121
-
122
- async #exchangeRefreshTokenForAccessToken(): Promise<{
123
- access_token: string;
124
- refresh_token: string;
125
- } | null> {
126
- return new Promise<{ access_token: string; refresh_token: string } | null>(
127
- (resolve, reject) => {
128
- if (!this.#refreshToken) {
129
- resolve(null);
130
- } else {
131
- this.#xhr<{ access_token: string; refresh_token: string }>(
132
- {
133
- method: 'POST',
134
- endpoint: `${this.#authHost}/oauth/token`,
135
- options: {
136
- body: {
137
- grant_type: 'refresh_token',
138
- refresh_token: this.#refreshToken,
139
- code_verifier: this.#codeVerifier,
140
- client_id: this.#clientId,
141
- },
142
- },
143
- accessToken: undefined,
144
- },
145
- (response, status) => {
146
- if (status === 200) {
147
- return resolve(response);
148
- } else return reject(response);
149
- }
150
- );
151
- }
152
- }
153
- );
154
- }
155
-
156
- #xhr<T>(
157
- params: {
158
- method: string;
159
- endpoint: string;
160
- options: any;
161
- accessToken: string | undefined;
162
- },
163
- onload: (resp: T, status: number) => any
164
- ): void {
165
- const { method, endpoint, accessToken } = params;
166
- let { options } = params;
167
- options = {
168
- ...{
169
- contentType: 'application/json',
170
- accessControlAllowOrigin: '*',
171
- body: undefined,
172
- },
173
- ...options,
174
- };
175
-
176
- const xhr = new XMLHttpRequest();
177
- xhr.open(method, endpoint, true);
178
- xhr.setRequestHeader('Content-type', options.contentType);
179
- xhr.setRequestHeader(
180
- 'Access-Control-Allow-Origin',
181
- options.accessControlAllowOrigin
182
- );
183
-
184
- if (accessToken)
185
- xhr.setRequestHeader('Authorization', 'Bearer ' + accessToken);
186
-
187
- xhr.onload = () => {
188
- try {
189
- let resp;
190
- if (xhr.response) resp = JSON.parse(xhr.response);
191
- onload(resp, xhr.status);
192
- } catch (e) {
193
- onload(xhr.response, xhr.status);
194
- }
195
- };
196
-
197
- if (options.body) options.body = JSON.stringify(options.body);
198
-
199
- xhr.send(options.body);
200
- }
201
-
202
- #decodeAccessToken(accessToken: string | undefined) {
203
- if (!accessToken) {
204
- return undefined;
205
- }
206
-
207
- const payload = accessToken.split('.')[1];
208
- if (payload) {
209
- try {
210
- const result = window.atob(payload);
211
- return JSON.parse(result);
212
- } catch (e) {
213
- throw Error('Fail to decode access token.');
214
- }
215
- }
216
-
217
- return undefined;
218
- }
219
- }
@@ -1,12 +0,0 @@
1
- import {
2
- CreateSessionRequest,
3
- EvaluatePathsRequest,
4
- } from '../../models/calc-api.model';
5
-
6
- export interface ICalcApiService {
7
- createSession(request: CreateSessionRequest): Promise<string>;
8
-
9
- destroySession(sessionId: string): Promise<void>;
10
-
11
- evaluatePaths(request: EvaluatePathsRequest): Promise<Array<any> | null>;
12
- }
@@ -1,117 +0,0 @@
1
- import { v4 as uuid } from 'uuid';
2
-
3
- import { ICalcApiService } from './calc-api-service.interface';
4
- import { CreateSessionRequest, EvaluatePathsRequest, EvaluatePathsResponse } from '../../models/calc-api.model';
5
- import { LeapEventsService } from '../leap-events.service';
6
- import { LoggerService } from '../logger/logger.service';
7
- import { LeapEvent, LeapEventAction, LeapEventType } from '../../models/leap-events.model';
8
- import { timeout } from './promise-helper.function';
9
-
10
- export class CalcWordService implements ICalcApiService {
11
-
12
- constructor(
13
- private leapEventsService: LeapEventsService,
14
- private loggerService: LoggerService
15
- ) { }
16
-
17
- createSession(request: CreateSessionRequest): Promise<string> {
18
- return new Promise((resolve, reject) => {
19
- Promise.resolve(() => {
20
- this.loggerService.log('[CalcApiOfflineService] (createSession) Creating CalcApi session');
21
- })
22
- .then(() => {
23
- // TODO: Get Calc API sessionId from LEAP Desktop and return that
24
- })
25
- .then(() => {
26
- this.loggerService.log('[CalcApiOfflineService] (createSession) LeapEvent CreateSession request sent');
27
- resolve('');
28
- })
29
- .catch((error: any) => {
30
- this.loggerService.error(`[CalcApiOfflineService] createSession() failed: ${error}`);
31
- reject(error);
32
- });
33
- });
34
- }
35
-
36
- destroySession(sessionId: string): Promise<void> {
37
- return new Promise((resolve, reject) => {
38
- Promise.resolve(() => {
39
- this.loggerService.log('[CalcApiOfflineService] (destroySession) Destroying CalcApi session');
40
- })
41
- .then(() => {
42
- // TODO: Should we just fall through here?
43
- })
44
- .then(() => {
45
- this.loggerService.log('[DocumentBuilderService] (destroySession) LeapEvent DestroySession request sent');
46
- resolve();
47
- })
48
- .catch((error: any) => {
49
- this.loggerService.error(`[DocumentBuilderService] destroySession() failed: ${error}`);
50
- reject(error);
51
- });
52
- });
53
- }
54
-
55
- evaluatePaths(request: EvaluatePathsRequest): Promise<Array<EvaluatePathsResponse> | null> {
56
- let subscriptionId: string;
57
-
58
- // Check for empty matterFields - don't bother hitting the Local DocBuilder API in this case
59
- if (request == null || (request.paths && request.paths.length === 0)) {
60
- return Promise.resolve(null);
61
- }
62
-
63
- return new Promise((resolve, reject) => {
64
- Promise.resolve(() => {
65
- this.loggerService.log(
66
- '[CalcApiWordService] (evaluatePaths) Evaluating paths on Local Calc API'
67
- );
68
- })
69
- .then(() => {
70
- const id = new Date().getTime().toString();
71
- return this.leapEventsService.addEvent({
72
- id,
73
- correlationId: null,
74
- eventType: LeapEventType.CalcApiRequest,
75
- action: LeapEventAction.Calc_EvaluatePaths,
76
- data: request
77
- });
78
- })
79
- .then(event => {
80
- this.loggerService.log('[CalcApiWordService] LeapEvent EvaluatePaths request sent');
81
-
82
- // Subscribe
83
- const leapEventResponseHandlerPromise = new Promise<Array<EvaluatePathsResponse>>((innerResolve, innerReject) => {
84
- subscriptionId = this.leapEventsService.subscribe(
85
- event.id,
86
- LeapEventType.CalcApiResponse,
87
- LeapEventAction.Calc_EvaluatePathsResponse,
88
- (leapEvent: LeapEvent) => this.leapEventsService.handleLeapEventResponse<Array<EvaluatePathsResponse>>(
89
- leapEvent, { resolve: innerResolve, reject: innerReject }
90
- )
91
- );
92
- });
93
-
94
- return timeout(leapEventResponseHandlerPromise, 5000);
95
- })
96
- .then((result) => {
97
- // Return result
98
- resolve(result);
99
- })
100
- .catch((error: any) => {
101
- this.loggerService.error(`[CalcApiWordService] evaluatePaths() failed: ${error}`);
102
- reject(error);
103
- })
104
- .then(() => {
105
- // Unsubscribe
106
- return this.leapEventsService.unsubscribe(subscriptionId);
107
- })
108
- .then((unsubscribeSuccess: boolean) => {
109
- if (unsubscribeSuccess === true) {
110
- this.loggerService.log(`[CalcApiWordService] (evaluatePaths) Successfully unsubscribed ${subscriptionId}`);
111
- } else {
112
- this.loggerService.warn(`[CalcApiWordService] (evaluatePaths) Failed to unsubscribe from ${subscriptionId}`);
113
- }
114
- });
115
- });
116
- }
117
- }
@@ -1,26 +0,0 @@
1
- /*
2
- Return a promise that resolves after duration milliseconds
3
- */
4
- export function sleep(duration: number) {
5
- return new Promise<void>(function (resolve) {
6
- setTimeout(() => {
7
- resolve();
8
- }, duration);
9
- });
10
- }
11
-
12
- /*
13
- Return a promise that rejects after duration milliseconds
14
- */
15
- export function timeout<T>(promise: Promise<T>, duration: number): Promise<T> {
16
- if (duration === null || duration <= 0) {
17
- return promise;
18
- } else {
19
- const timeoutPromise = new Promise<T>((resolve, reject) => {
20
- setTimeout(() => {
21
- reject(`Timed out after ${duration}ms`);
22
- }, duration);
23
- });
24
- return Promise.race<T>([promise, timeoutPromise]);
25
- }
26
- }