@leapdev/app-platform 0.0.1

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 (95) hide show
  1. package/README.md +7 -0
  2. package/package.json +15 -0
  3. package/src/index.d.ts +7 -0
  4. package/src/index.js +22 -0
  5. package/src/index.js.map +1 -0
  6. package/src/lib/app-platform.d.ts +13 -0
  7. package/src/lib/app-platform.js +114 -0
  8. package/src/lib/app-platform.js.map +1 -0
  9. package/src/lib/environment/environment.d.ts +37 -0
  10. package/src/lib/environment/environment.dictionary.d.ts +4 -0
  11. package/src/lib/environment/environment.dictionary.js +30 -0
  12. package/src/lib/environment/environment.dictionary.js.map +1 -0
  13. package/src/lib/environment/environment.js +17 -0
  14. package/src/lib/environment/environment.js.map +1 -0
  15. package/src/lib/environment/index.d.ts +2 -0
  16. package/src/lib/environment/index.js +9 -0
  17. package/src/lib/environment/index.js.map +1 -0
  18. package/src/lib/environment/leap/env.dev.au.config.d.ts +32 -0
  19. package/src/lib/environment/leap/env.dev.au.config.js +36 -0
  20. package/src/lib/environment/leap/env.dev.au.config.js.map +1 -0
  21. package/src/lib/environment/leap/env.live.au.config.d.ts +32 -0
  22. package/src/lib/environment/leap/env.live.au.config.js +36 -0
  23. package/src/lib/environment/leap/env.live.au.config.js.map +1 -0
  24. package/src/lib/environment/leap/env.live.ca.config.d.ts +32 -0
  25. package/src/lib/environment/leap/env.live.ca.config.js +36 -0
  26. package/src/lib/environment/leap/env.live.ca.config.js.map +1 -0
  27. package/src/lib/environment/leap/env.live.nz.config.d.ts +32 -0
  28. package/src/lib/environment/leap/env.live.nz.config.js +36 -0
  29. package/src/lib/environment/leap/env.live.nz.config.js.map +1 -0
  30. package/src/lib/environment/leap/env.live.uk.config.d.ts +32 -0
  31. package/src/lib/environment/leap/env.live.uk.config.js +36 -0
  32. package/src/lib/environment/leap/env.live.uk.config.js.map +1 -0
  33. package/src/lib/environment/leap/env.live.us.config.d.ts +32 -0
  34. package/src/lib/environment/leap/env.live.us.config.js +36 -0
  35. package/src/lib/environment/leap/env.live.us.config.js.map +1 -0
  36. package/src/lib/environment/leap/env.liveb.au.config.d.ts +32 -0
  37. package/src/lib/environment/leap/env.liveb.au.config.js +36 -0
  38. package/src/lib/environment/leap/env.liveb.au.config.js.map +1 -0
  39. package/src/lib/environment/leap/env.test.au.config.d.ts +32 -0
  40. package/src/lib/environment/leap/env.test.au.config.js +36 -0
  41. package/src/lib/environment/leap/env.test.au.config.js.map +1 -0
  42. package/src/lib/environment/leap/env.test.ca.config.d.ts +32 -0
  43. package/src/lib/environment/leap/env.test.ca.config.js +36 -0
  44. package/src/lib/environment/leap/env.test.ca.config.js.map +1 -0
  45. package/src/lib/environment/leap/env.test.nz.config.d.ts +32 -0
  46. package/src/lib/environment/leap/env.test.nz.config.js +36 -0
  47. package/src/lib/environment/leap/env.test.nz.config.js.map +1 -0
  48. package/src/lib/environment/leap/env.test.uk.config.d.ts +32 -0
  49. package/src/lib/environment/leap/env.test.uk.config.js +36 -0
  50. package/src/lib/environment/leap/env.test.uk.config.js.map +1 -0
  51. package/src/lib/environment/leap/env.test.us.config.d.ts +32 -0
  52. package/src/lib/environment/leap/env.test.us.config.js +36 -0
  53. package/src/lib/environment/leap/env.test.us.config.js.map +1 -0
  54. package/src/lib/functions/helpers.d.ts +5 -0
  55. package/src/lib/functions/helpers.js +95 -0
  56. package/src/lib/functions/helpers.js.map +1 -0
  57. package/src/lib/functions/xml.d.ts +2 -0
  58. package/src/lib/functions/xml.js +41 -0
  59. package/src/lib/functions/xml.js.map +1 -0
  60. package/src/lib/models/calc-api.model.d.ts +57 -0
  61. package/src/lib/models/calc-api.model.js +39 -0
  62. package/src/lib/models/calc-api.model.js.map +1 -0
  63. package/src/lib/models/constants/index.d.ts +34 -0
  64. package/src/lib/models/constants/index.js +41 -0
  65. package/src/lib/models/constants/index.js.map +1 -0
  66. package/src/lib/models/index.d.ts +1 -0
  67. package/src/lib/models/index.js +5 -0
  68. package/src/lib/models/index.js.map +1 -0
  69. package/src/lib/models/leap-events.model.d.ts +55 -0
  70. package/src/lib/models/leap-events.model.js +70 -0
  71. package/src/lib/models/leap-events.model.js.map +1 -0
  72. package/src/lib/models/leap.model.d.ts +51 -0
  73. package/src/lib/models/leap.model.js +29 -0
  74. package/src/lib/models/leap.model.js.map +1 -0
  75. package/src/lib/services/calc-api/calc-api-service.interface.d.ts +6 -0
  76. package/src/lib/services/calc-api/calc-api-service.interface.js +3 -0
  77. package/src/lib/services/calc-api/calc-api-service.interface.js.map +1 -0
  78. package/src/lib/services/calc-api/calc-word.service.d.ts +12 -0
  79. package/src/lib/services/calc-api/calc-word.service.js +99 -0
  80. package/src/lib/services/calc-api/calc-word.service.js.map +1 -0
  81. package/src/lib/services/calc-api/promise-helper.function.d.ts +2 -0
  82. package/src/lib/services/calc-api/promise-helper.function.js +32 -0
  83. package/src/lib/services/calc-api/promise-helper.function.js.map +1 -0
  84. package/src/lib/services/custom-xml-part.service.d.ts +5 -0
  85. package/src/lib/services/custom-xml-part.service.js +270 -0
  86. package/src/lib/services/custom-xml-part.service.js.map +1 -0
  87. package/src/lib/services/index.d.ts +4 -0
  88. package/src/lib/services/index.js +8 -0
  89. package/src/lib/services/index.js.map +1 -0
  90. package/src/lib/services/leap-events.service.d.ts +26 -0
  91. package/src/lib/services/leap-events.service.js +357 -0
  92. package/src/lib/services/leap-events.service.js.map +1 -0
  93. package/src/lib/services/logger/logger.service.d.ts +10 -0
  94. package/src/lib/services/logger/logger.service.js +39 -0
  95. package/src/lib/services/logger/logger.service.js.map +1 -0
@@ -0,0 +1,357 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LeapEventsService = void 0;
4
+ /// <reference types="office-js" />
5
+ const rxjs_1 = require("rxjs");
6
+ const leap_events_model_1 = require("../models/leap-events.model");
7
+ const custom_xml_part_service_1 = require("./custom-xml-part.service");
8
+ const helpers_1 = require("../functions/helpers");
9
+ const logger_service_1 = require("./logger/logger.service");
10
+ const constants_1 = require("../models/constants");
11
+ const xml_1 = require("../functions/xml");
12
+ class LeapEventsService {
13
+ constructor() {
14
+ this.eventSubject$ = new rxjs_1.Subject();
15
+ this.event$ = this.eventSubject$.asObservable();
16
+ this.addEventLock = false;
17
+ this.addEventQueue = [];
18
+ this.subscriptions = [];
19
+ this.loggerService = new logger_service_1.LoggerService(false);
20
+ }
21
+ addHandler(eventType, handler) {
22
+ return (0, custom_xml_part_service_1.addHandlerForCustomXmlPart)(constants_1.constants.LeapEventsNamespace, eventType, handler);
23
+ }
24
+ // A default handler. The caller MUST wrap this in a new Promise
25
+ // NOTE: some voodoo passing over the encompassing Promise's resolve/reject functions
26
+ handleLeapEventResponse(event, { resolve, reject }) {
27
+ this.loggerService.log(`[LeapEventsService] (handleLeapEventResponse) Handling ${leap_events_model_1.LeapEventType[event.eventType]}::${leap_events_model_1.LeapEventAction[event.action]}`);
28
+ this.loggerService.log(`[LeapEventsService] (handleLeapEventResponse): ${JSON.stringify(event.data)}`);
29
+ let response = {};
30
+ if (Array.isArray(event.data)) {
31
+ response = event.data;
32
+ resolve(response);
33
+ }
34
+ else {
35
+ Object.assign(response, event.data);
36
+ if (response.status === 'ok') {
37
+ resolve(response);
38
+ }
39
+ else {
40
+ reject(response.error);
41
+ }
42
+ }
43
+ return response;
44
+ }
45
+ handleCustomXmlPartNodeEvent(eventType, eventArgs) {
46
+ return Promise.resolve(`Handle custom XML part event`)
47
+ .then(() => {
48
+ this.loggerService.log(`[LeapEventsService] (handleCustomXmlPartNodeEvent) Handling ${eventType} event on the LEAP Events custom XML part`);
49
+ })
50
+ .then(() => {
51
+ return this.getLeapEventFromNode(eventType, eventArgs);
52
+ })
53
+ .then((result) => {
54
+ const leapEvent = result;
55
+ if (!leapEvent || !leapEvent.eventType) {
56
+ this.loggerService.log(`[LeapEventsService] (handleCustomXmlPartNodeEvent) This LeapEvent of type ${eventType} is no longer valid: ${eventArgs} `);
57
+ return;
58
+ }
59
+ switch (leapEvent.eventType) {
60
+ case leap_events_model_1.LeapEventType.CalcApiRequest:
61
+ case leap_events_model_1.LeapEventType.DocumentBuilderRequest:
62
+ this.loggerService.log(`[LeapEventsService] (handleCustomXmlPartNodeEvent) This LeapEvent is a request: ` +
63
+ `${leapEvent.id} | ${leap_events_model_1.LeapEventType[leapEvent.eventType]} | ${leap_events_model_1.LeapEventAction[leapEvent.action]}`);
64
+ break;
65
+ case leap_events_model_1.LeapEventType.VstoEvent:
66
+ this.loggerService.log(`[LeapEventsService] (handleCustomXmlPartNodeEvent) This LeapEvent is fire-and-forget: ` +
67
+ `${leapEvent.id} | ${leap_events_model_1.LeapEventType[leapEvent.eventType]} | ${leap_events_model_1.LeapEventAction[leapEvent.action]}`);
68
+ this.notify(leapEvent);
69
+ break;
70
+ case leap_events_model_1.LeapEventType.WordAppEvent:
71
+ this.loggerService.log(`[LeapEventsService] (handleCustomXmlPartNodeEvent) This LeapEvent is fire-and-forget: ` +
72
+ `${leapEvent.id} | ${leap_events_model_1.LeapEventType[leapEvent.eventType]} | ${leap_events_model_1.LeapEventAction[leapEvent.action]}`);
73
+ if (leapEvent.action === leap_events_model_1.LeapEventAction.WordApp_ResetTemplate) {
74
+ this.notify(leapEvent);
75
+ }
76
+ break;
77
+ case leap_events_model_1.LeapEventType.CalcApiResponse:
78
+ case leap_events_model_1.LeapEventType.DocumentBuilderResponse:
79
+ case leap_events_model_1.LeapEventType.WordAppEventResponse:
80
+ this.loggerService.log(`[LeapEventsService] (handleCustomXmlPartNodeEvent) This LeapEvent is a response: ` +
81
+ `${leapEvent.id} | ${leap_events_model_1.LeapEventType[leapEvent.eventType]} | ${leap_events_model_1.LeapEventAction[leapEvent.action]}`);
82
+ this.notify(leapEvent);
83
+ break;
84
+ }
85
+ })
86
+ .catch((error) => {
87
+ this.loggerService.error(`[LeapEventsService] (handleCustomXmlPartNodeEvent) Could not handle ${eventType} event on the LEAP Events custom XML part: ${error}`);
88
+ });
89
+ }
90
+ addEvent(event) {
91
+ return new Promise((resolve, reject) => {
92
+ this.addEventQueue.push({ data: event, resolve, reject });
93
+ const e = this.addEventQueue.shift();
94
+ if (!this.addEventLock && e) {
95
+ this.processAddEvent(e);
96
+ }
97
+ });
98
+ }
99
+ subscribe(correlationId, eventType, action, handler) {
100
+ const subscriptionId = [
101
+ leap_events_model_1.LeapEventType[eventType],
102
+ leap_events_model_1.LeapEventAction[action],
103
+ correlationId,
104
+ ]
105
+ .filter((e) => !!e)
106
+ .join('::');
107
+ const subscription = this.event$
108
+ .pipe((0, rxjs_1.catchError)((error) => {
109
+ this.loggerService.error(`[LeapEventsService] (subscribe) Subscription observable error: ${error}`);
110
+ return (0, rxjs_1.of)(null);
111
+ }), (0, rxjs_1.filter)((event) => {
112
+ return (event !== null &&
113
+ event.eventType === eventType &&
114
+ (Array.isArray(action)
115
+ ? action.includes(event.action)
116
+ : event.action === action) &&
117
+ (!event.correlationId || event.correlationId === correlationId));
118
+ }))
119
+ .subscribe((event) => {
120
+ handler(event);
121
+ });
122
+ if (this.subscriptions.find((s) => s.id === subscriptionId)) {
123
+ this.loggerService.warn(`[LeapEventsService] (subscribe) ${subscriptionId} already subscribed (handler already exists)`);
124
+ }
125
+ else {
126
+ this.subscriptions.push({ id: subscriptionId, subscription });
127
+ }
128
+ return subscriptionId;
129
+ }
130
+ unsubscribe(subscriptionId) {
131
+ return new Promise((resolve) => {
132
+ const idx = this.subscriptions.findIndex((s) => s.id === subscriptionId);
133
+ if (idx >= 0) {
134
+ this.loggerService.log(`[LeapEventsService] (unsubscribe) Removing ${subscriptionId} subscription (handler)`);
135
+ const matchingSubscription = this.subscriptions[idx];
136
+ matchingSubscription.subscription.unsubscribe();
137
+ this.subscriptions.splice(idx, 1);
138
+ }
139
+ else {
140
+ const message = `Could not find subscription ${subscriptionId}`;
141
+ this.loggerService.warn(`[LeapEventsService] (unsubscribe) ${message}`);
142
+ resolve(false);
143
+ }
144
+ resolve(true);
145
+ });
146
+ }
147
+ getEvents() {
148
+ this.loggerService.log('[LeapEventsService] Get data from custom XML part');
149
+ return (0, custom_xml_part_service_1.getDataByNamespace)(constants_1.constants.LeapEventsNamespace)
150
+ .then((result) => {
151
+ const r = result;
152
+ const eventArray = [];
153
+ if (!r || r.xmlns === null) {
154
+ const events = new leap_events_model_1.LeapEvents({
155
+ xmlns: constants_1.constants.LeapEventsNamespace,
156
+ currentEventId: '',
157
+ LeapEvent: eventArray,
158
+ });
159
+ return events;
160
+ }
161
+ if (r.LeapEvent != null) {
162
+ if (Array.isArray(r.LeapEvent)) {
163
+ for (let i = 0; i < r.LeapEvent.length; i++) {
164
+ const eventBase64String = r.LeapEvent[i];
165
+ if (eventBase64String != null && eventBase64String !== '') {
166
+ const eventJsonString = (0, helpers_1.b64DecodeUnicode)(eventBase64String);
167
+ if (eventJsonString) {
168
+ eventArray.push(JSON.parse(eventJsonString));
169
+ }
170
+ }
171
+ }
172
+ }
173
+ else {
174
+ const eventBase64String = r.LeapEvent;
175
+ if (eventBase64String != null && eventBase64String !== '') {
176
+ const eventJsonString = (0, helpers_1.b64DecodeUnicode)(eventBase64String);
177
+ if (eventJsonString) {
178
+ eventArray.push(JSON.parse(eventJsonString));
179
+ }
180
+ }
181
+ }
182
+ }
183
+ const events = new leap_events_model_1.LeapEvents({
184
+ xmlns: r.xmlns,
185
+ currentEventId: r.currentEventId,
186
+ LeapEvent: eventArray,
187
+ });
188
+ return events;
189
+ })
190
+ .catch((error) => {
191
+ this.loggerService.error(`[LeapEventsService] (getEvents) Unable to retrieve LeapEvents: ${error}`);
192
+ return null;
193
+ });
194
+ }
195
+ processAddEvent({ data: event, resolve, reject, }) {
196
+ this.addEventLock = true;
197
+ let events;
198
+ this.getEvents()
199
+ .then((result) => {
200
+ if (result != null) {
201
+ events = new leap_events_model_1.LeapEvents({
202
+ xmlns: constants_1.constants.LeapEventsNamespace,
203
+ currentEventId: event.id,
204
+ LeapEvent: result.LeapEvent.map((evt) => (0, helpers_1.b64EncodeUnicode)(JSON.stringify(evt)) || ''),
205
+ });
206
+ const e = (0, helpers_1.b64EncodeUnicode)(JSON.stringify(event));
207
+ if (e) {
208
+ events.LeapEvent.push(e);
209
+ }
210
+ const leapEventsObject = {
211
+ $: {
212
+ xmlns: constants_1.constants.LeapEventsNamespace,
213
+ currentEventId: event.id,
214
+ },
215
+ LeapEvent: events.LeapEvent,
216
+ };
217
+ const xml = (0, xml_1.toXml)(leapEventsObject, constants_1.constants.LeapEventsRootTagName, {
218
+ headless: true,
219
+ });
220
+ return xml;
221
+ }
222
+ else {
223
+ throw new Error(`LeapEvents array is null`);
224
+ }
225
+ })
226
+ .then((initialXml) => {
227
+ // Rewrite XML to add the id attribute to the newly-added <LeapEvent>
228
+ const xml = this.addIdAttributeToLeapEvent(initialXml, event.id);
229
+ // Write raw XML string to custom XML part
230
+ return (0, custom_xml_part_service_1.updateXmlDataByNamespace)(constants_1.constants.LeapEventsNamespace, xml, constants_1.constants.LeapEventsRootTagName);
231
+ })
232
+ .then(() => {
233
+ resolve(event);
234
+ })
235
+ .catch((error) => {
236
+ this.loggerService.error(`[LeapEventsService] (getEvents) Unable to add LeapEvent: ${error}`);
237
+ reject(error);
238
+ })
239
+ .finally(() => {
240
+ this.addEventLock = false; // Release template data lock to allow other mutations to be processed
241
+ if (this.addEventQueue.length > 0) {
242
+ const e = this.addEventQueue.shift();
243
+ if (e) {
244
+ this.processAddEvent(e);
245
+ }
246
+ }
247
+ });
248
+ }
249
+ notify(event) {
250
+ this.eventSubject$.next(event);
251
+ }
252
+ getLeapEventFromNode(eventType, eventArgs) {
253
+ return Promise.resolve(`Get LeapEvent from node`)
254
+ .then(() => {
255
+ if (eventArgs.isUndoRedo || eventArgs.inUndoRedo) {
256
+ // OfficeJS API runtime quirk/bug
257
+ this.loggerService.log(`[LeapEventsService] (getLeapEventFromNode) IGNORING ${eventType} event since this is an Undo/Redo`);
258
+ return Promise.resolve('');
259
+ }
260
+ else {
261
+ if (eventArgs.oldNode != null) {
262
+ // Office.NodeReplacedEventArgs - contains all child nodes
263
+ return (0, custom_xml_part_service_1.getChildNodes)(eventArgs.newNode)
264
+ .then((childNodes) => {
265
+ if (Array.isArray(childNodes) && childNodes.length > 0) {
266
+ return childNodes[0];
267
+ }
268
+ else {
269
+ return null;
270
+ }
271
+ })
272
+ .then((firstNode) => {
273
+ return (0, custom_xml_part_service_1.getNodeText)(firstNode);
274
+ });
275
+ }
276
+ else {
277
+ // Office.NodeInsertedEventArgs - contains just the one inserted node
278
+ return (0, custom_xml_part_service_1.getNodeText)(eventArgs.newNode);
279
+ }
280
+ }
281
+ })
282
+ .then((nodeText) => {
283
+ let leapEvent;
284
+ if (nodeText == null) {
285
+ return Promise.resolve(null);
286
+ }
287
+ else {
288
+ let jsonString;
289
+ // TODO: How to handle an invalid LEAP Event?
290
+ try {
291
+ jsonString = (0, helpers_1.b64DecodeUnicode)(nodeText) || '';
292
+ }
293
+ catch (error) {
294
+ // Just ignore and pass through
295
+ return Promise.resolve(null);
296
+ }
297
+ const obj = JSON.parse(jsonString, this.leapEventJsonReviver);
298
+ leapEvent = new leap_events_model_1.LeapEvent({
299
+ id: obj.id,
300
+ correlationId: obj.correlationId,
301
+ eventType: obj.eventType,
302
+ action: obj.action,
303
+ data: obj.data,
304
+ });
305
+ }
306
+ return leapEvent;
307
+ })
308
+ .catch((error) => {
309
+ this.loggerService.error(`[LeapEventsService] (getLeapEventFromNode) Unable to get LeapEvent from node: ${error}`);
310
+ return null;
311
+ });
312
+ }
313
+ leapEventJsonReviver(key, value) {
314
+ let result;
315
+ switch (key) {
316
+ case 'eventType':
317
+ const eventTypeAsNumber = Number.parseInt(value, 10);
318
+ if (!Number.isNaN(eventTypeAsNumber)) {
319
+ result = eventTypeAsNumber;
320
+ }
321
+ else {
322
+ result = leap_events_model_1.LeapEventType[value];
323
+ }
324
+ break;
325
+ case 'action':
326
+ const actionAsNumber = Number.parseInt(value, 10);
327
+ if (!Number.isNaN(actionAsNumber)) {
328
+ result = actionAsNumber;
329
+ }
330
+ else {
331
+ result = leap_events_model_1.LeapEventAction[value];
332
+ }
333
+ break;
334
+ default:
335
+ result = value;
336
+ break;
337
+ }
338
+ return result;
339
+ }
340
+ // Rewrites the newly-added <LeapEvent> element to include the id attribute
341
+ addIdAttributeToLeapEvent(initialXml, leapEventId) {
342
+ // 1. Create an XmlDocument in order to edit the XML
343
+ const parser = new DOMParser();
344
+ const xmlDoc = parser.parseFromString(initialXml, 'text/xml');
345
+ // 2. Get the newly-added <LeapEvent> element, and append the id attribute to it
346
+ const leapEventElements = xmlDoc.getElementsByTagName('LeapEvent');
347
+ if (leapEventElements.length > 0) {
348
+ const last = leapEventElements[leapEventElements.length - 1];
349
+ last.setAttribute('id', leapEventId);
350
+ }
351
+ // 3. Serialize updated XmlDocument to string
352
+ const xmlSerializer = new XMLSerializer();
353
+ return xmlSerializer.serializeToString(xmlDoc);
354
+ }
355
+ }
356
+ exports.LeapEventsService = LeapEventsService;
357
+ //# sourceMappingURL=leap-events.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"leap-events.service.js","sourceRoot":"","sources":["../../../../../../packages/app-platform/src/lib/services/leap-events.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export declare class LoggerService {
2
+ log: (message: any) => void;
3
+ warn: (message: any) => void;
4
+ debug: (message: any) => void;
5
+ error: (message: any) => void;
6
+ isProduction: boolean;
7
+ constructor(isProduction: boolean);
8
+ init(name: string): void;
9
+ private setupLogs;
10
+ }
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LoggerService = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const log = tslib_1.__importStar(require("loglevel"));
6
+ class LoggerService {
7
+ constructor(isProduction) {
8
+ this.log = () => undefined;
9
+ this.warn = () => undefined;
10
+ this.debug = () => undefined;
11
+ this.error = () => undefined;
12
+ console.log('LoggerService ctor');
13
+ this.isProduction = isProduction;
14
+ this.setupLogs();
15
+ }
16
+ init(name) {
17
+ this.setupLogs(name);
18
+ }
19
+ setupLogs(name) {
20
+ console.log('LoggerService init', name);
21
+ log.setDefaultLevel(this.isProduction ? log.levels.ERROR : log.levels.DEBUG);
22
+ this.error = log.error.bind(log);
23
+ this.warn = log.warn.bind(log);
24
+ if (!this.isProduction) {
25
+ this.debug = log.debug.bind(log);
26
+ this.log = log.info.bind(log);
27
+ }
28
+ else {
29
+ this.debug = () => undefined;
30
+ this.log = () => undefined;
31
+ }
32
+ // Set logger name (optional)
33
+ if (name) {
34
+ log.getLogger(name);
35
+ }
36
+ }
37
+ }
38
+ exports.LoggerService = LoggerService;
39
+ //# sourceMappingURL=logger.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.service.js","sourceRoot":"","sources":["../../../../../../../packages/app-platform/src/lib/services/logger/logger.service.ts"],"names":[],"mappings":";;;;AAAA,sDAAgC;AAEhC,MAAa,aAAa;IAOxB,YAAY,YAAqB;QANjC,QAAG,GAA2B,GAAG,EAAE,CAAC,SAAS,CAAC;QAC9C,SAAI,GAA2B,GAAG,EAAE,CAAC,SAAS,CAAC;QAC/C,UAAK,GAA2B,GAAG,EAAE,CAAC,SAAS,CAAC;QAChD,UAAK,GAA2B,GAAG,EAAE,CAAC,SAAS,CAAC;QAI9C,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAClC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QAEjC,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAED,IAAI,CAAC,IAAY;QACf,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAEO,SAAS,CAAC,IAAa;QAC7B,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;QAExC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAE7E,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAE/B,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACtB,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAC/B;aAAM;YACL,IAAI,CAAC,KAAK,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC;YAC7B,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC;SAC5B;QAED,6BAA6B;QAC7B,IAAI,IAAI,EAAE;YACR,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;SACrB;IACH,CAAC;CACF;AAvCD,sCAuCC"}