@onecx/accelerator 3.2.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.
- package/README.md +11 -0
- package/package.json +14 -0
- package/src/index.d.ts +1 -0
- package/src/index.js +5 -0
- package/src/index.js.map +1 -0
- package/src/lib/topic/message.d.ts +5 -0
- package/src/lib/topic/message.js +13 -0
- package/src/lib/topic/message.js.map +1 -0
- package/src/lib/topic/topic-data-message.d.ts +6 -0
- package/src/lib/topic/topic-data-message.js +13 -0
- package/src/lib/topic/topic-data-message.js.map +1 -0
- package/src/lib/topic/topic-message-type.d.ts +4 -0
- package/src/lib/topic/topic-message-type.js +3 -0
- package/src/lib/topic/topic-message-type.js.map +1 -0
- package/src/lib/topic/topic-message.d.ts +7 -0
- package/src/lib/topic/topic-message.js +15 -0
- package/src/lib/topic/topic-message.js.map +1 -0
- package/src/lib/topic/topic.d.ts +35 -0
- package/src/lib/topic/topic.js +73 -0
- package/src/lib/topic/topic.js.map +1 -0
package/README.md
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
# accelerator
|
2
|
+
|
3
|
+
This library contains all framework independent accelerators.
|
4
|
+
|
5
|
+
## Building
|
6
|
+
|
7
|
+
Run `nx build accelerator` to build the library.
|
8
|
+
|
9
|
+
## Running unit tests
|
10
|
+
|
11
|
+
Run `nx test accelerator` to execute the unit tests via [Jest](https://jestjs.io).
|
package/package.json
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
{
|
2
|
+
"name": "@onecx/accelerator",
|
3
|
+
"version": "3.2.1",
|
4
|
+
"peerDependencies": {
|
5
|
+
"tslib": "^2.3.0",
|
6
|
+
"rxjs": "7.8.1"
|
7
|
+
},
|
8
|
+
"type": "commonjs",
|
9
|
+
"main": "./src/index.js",
|
10
|
+
"typings": "./src/index.d.ts",
|
11
|
+
"publishConfig": {
|
12
|
+
"access": "public"
|
13
|
+
}
|
14
|
+
}
|
package/src/index.d.ts
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
export * from './lib/topic/topic';
|
package/src/index.js
ADDED
package/src/index.js.map
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/accelerator/src/index.ts"],"names":[],"mappings":";;;AAAA,4DAAiC"}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.Message = void 0;
|
4
|
+
class Message {
|
5
|
+
type;
|
6
|
+
timestamp;
|
7
|
+
constructor(type) {
|
8
|
+
this.type = type;
|
9
|
+
this.timestamp = window.performance.now();
|
10
|
+
}
|
11
|
+
}
|
12
|
+
exports.Message = Message;
|
13
|
+
//# sourceMappingURL=message.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"message.js","sourceRoot":"","sources":["../../../../../../libs/accelerator/src/lib/topic/message.ts"],"names":[],"mappings":";;;AAAA,MAAa,OAAO;IAGC;IAFnB,SAAS,CAAQ;IAEjB,YAAmB,IAAY;QAAZ,SAAI,GAAJ,IAAI,CAAQ;QAC7B,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,CAAA;IAC3C,CAAC;CACF;AAND,0BAMC"}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.TopicDataMessage = void 0;
|
4
|
+
const topic_message_1 = require("./topic-message");
|
5
|
+
class TopicDataMessage extends topic_message_1.TopicMessage {
|
6
|
+
data;
|
7
|
+
constructor(type, name, version, data) {
|
8
|
+
super(type, name, version);
|
9
|
+
this.data = data;
|
10
|
+
}
|
11
|
+
}
|
12
|
+
exports.TopicDataMessage = TopicDataMessage;
|
13
|
+
//# sourceMappingURL=topic-data-message.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"topic-data-message.js","sourceRoot":"","sources":["../../../../../../libs/accelerator/src/lib/topic/topic-data-message.ts"],"names":[],"mappings":";;;AAAA,mDAA8C;AAG9C,MAAa,gBAAoB,SAAQ,4BAAY;IACuB;IAA1E,YAAY,IAAsB,EAAE,IAAY,EAAE,OAAe,EAAS,IAAO;QAC/E,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;QAD8C,SAAI,GAAJ,IAAI,CAAG;IAEjF,CAAC;CACF;AAJD,4CAIC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"topic-message-type.js","sourceRoot":"","sources":["../../../../../../libs/accelerator/src/lib/topic/topic-message-type.ts"],"names":[],"mappings":""}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.TopicMessage = void 0;
|
4
|
+
const message_1 = require("./message");
|
5
|
+
class TopicMessage extends message_1.Message {
|
6
|
+
name;
|
7
|
+
version;
|
8
|
+
constructor(type, name, version) {
|
9
|
+
super(type);
|
10
|
+
this.name = name;
|
11
|
+
this.version = version;
|
12
|
+
}
|
13
|
+
}
|
14
|
+
exports.TopicMessage = TopicMessage;
|
15
|
+
//# sourceMappingURL=topic-message.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"topic-message.js","sourceRoot":"","sources":["../../../../../../libs/accelerator/src/lib/topic/topic-message.ts"],"names":[],"mappings":";;;AAAA,uCAAoC;AAGpC,MAAa,YAAa,SAAQ,iBAAO;IAG5B;IACA;IAHT,YACE,IAAsB,EACf,IAAY,EACZ,OAAe;QAEtB,KAAK,CAAC,IAAI,CAAC,CAAC;QAHL,SAAI,GAAJ,IAAI,CAAQ;QACZ,YAAO,GAAP,OAAO,CAAQ;IAGxB,CAAC;CACF;AARH,oCAQG"}
|
@@ -0,0 +1,35 @@
|
|
1
|
+
import { Observable, Observer, OperatorFunction, Subscribable, Subscription, UnaryFunction } from 'rxjs';
|
2
|
+
export declare class Topic<T> implements Subscribable<T> {
|
3
|
+
private name;
|
4
|
+
private version;
|
5
|
+
isInitialized: Promise<void>;
|
6
|
+
private data;
|
7
|
+
private isInit;
|
8
|
+
private resolveInitPromise;
|
9
|
+
private eventListener;
|
10
|
+
constructor(name: string, version: number);
|
11
|
+
asObservable(): Observable<T>;
|
12
|
+
subscribe(observerOrNext?: Partial<Observer<T>> | ((value: T) => void), error?: (error: any) => void, complete?: () => void): Subscription;
|
13
|
+
/**
|
14
|
+
* This function does not offer read after write consistency!
|
15
|
+
* This means you cannot call it directly after publish, because the new value will not be there yet!
|
16
|
+
* This function will return undefined unti the isInitialized promise is resolved.
|
17
|
+
* @returns the current value of the topic in a synchronous way
|
18
|
+
*/
|
19
|
+
getValue(): T | undefined;
|
20
|
+
pipe(): Observable<T>;
|
21
|
+
pipe<A>(op1: UnaryFunction<Observable<T>, A>): A;
|
22
|
+
pipe<A, B>(op1: UnaryFunction<Observable<T>, A>, op2: UnaryFunction<A, B>): B;
|
23
|
+
pipe<A, B, C>(op1: UnaryFunction<Observable<T>, A>, op2: UnaryFunction<A, B>, op3: UnaryFunction<B, C>): C;
|
24
|
+
pipe<A, B, C, D>(op1: UnaryFunction<Observable<T>, A>, op2: UnaryFunction<A, B>, op3: UnaryFunction<B, C>, op4: UnaryFunction<C, D>): D;
|
25
|
+
pipe<A, B, C, D, E>(op1: UnaryFunction<Observable<T>, A>, op2: UnaryFunction<A, B>, op3: UnaryFunction<B, C>, op4: UnaryFunction<C, D>, op5: UnaryFunction<D, E>): E;
|
26
|
+
pipe<A, B, C, D, E, F>(op1: UnaryFunction<Observable<T>, A>, op2: UnaryFunction<A, B>, op3: UnaryFunction<B, C>, op4: UnaryFunction<C, D>, op5: UnaryFunction<D, E>, op6: UnaryFunction<E, F>): F;
|
27
|
+
pipe<A, B, C, D, E, F, G>(op1: UnaryFunction<Observable<T>, A>, op2: UnaryFunction<A, B>, op3: UnaryFunction<B, C>, op4: UnaryFunction<C, D>, op5: UnaryFunction<D, E>, op6: UnaryFunction<E, F>, op7: UnaryFunction<F, G>): G;
|
28
|
+
pipe<A, B, C, D, E, F, G, H>(op1: UnaryFunction<Observable<T>, A>, op2: UnaryFunction<A, B>, op3: UnaryFunction<B, C>, op4: UnaryFunction<C, D>, op5: UnaryFunction<D, E>, op6: UnaryFunction<E, F>, op7: UnaryFunction<F, G>, op8: UnaryFunction<G, H>): H;
|
29
|
+
pipe<A, B, C, D, E, F, G, H, I>(op1: UnaryFunction<Observable<T>, A>, op2: UnaryFunction<A, B>, op3: UnaryFunction<B, C>, op4: UnaryFunction<C, D>, op5: UnaryFunction<D, E>, op6: UnaryFunction<E, F>, op7: UnaryFunction<F, G>, op8: UnaryFunction<G, H>, op9: UnaryFunction<H, I>): I;
|
30
|
+
pipe<A, B, C, D, E, F, G, H, I>(op1: UnaryFunction<Observable<T>, A>, op2: UnaryFunction<A, B>, op3: UnaryFunction<B, C>, op4: UnaryFunction<C, D>, op5: UnaryFunction<D, E>, op6: UnaryFunction<E, F>, op7: UnaryFunction<F, G>, op8: UnaryFunction<G, H>, op9: UnaryFunction<H, I>, ...operations: OperatorFunction<any, any>[]): Observable<unknown>;
|
31
|
+
pipe<A, B, C, D, E, F, G, H, I>(op1: UnaryFunction<Observable<T>, A>, op2: UnaryFunction<A, B>, op3: UnaryFunction<B, C>, op4: UnaryFunction<C, D>, op5: UnaryFunction<D, E>, op6: UnaryFunction<E, F>, op7: UnaryFunction<F, G>, op8: UnaryFunction<G, H>, op9: UnaryFunction<H, I>, ...operations: UnaryFunction<any, any>[]): unknown;
|
32
|
+
publish(value: T): void;
|
33
|
+
destroy(): void;
|
34
|
+
private onMessage;
|
35
|
+
}
|
@@ -0,0 +1,73 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.Topic = void 0;
|
4
|
+
const operators_1 = require("rxjs/operators");
|
5
|
+
const rxjs_1 = require("rxjs");
|
6
|
+
const topic_data_message_1 = require("./topic-data-message");
|
7
|
+
const topic_message_1 = require("./topic-message");
|
8
|
+
class Topic {
|
9
|
+
name;
|
10
|
+
version;
|
11
|
+
isInitialized;
|
12
|
+
data = new rxjs_1.BehaviorSubject(undefined);
|
13
|
+
isInit = false;
|
14
|
+
resolveInitPromise;
|
15
|
+
eventListener = (m) => this.onMessage(m);
|
16
|
+
constructor(name, version) {
|
17
|
+
this.name = name;
|
18
|
+
this.version = version;
|
19
|
+
this.isInitialized = new Promise((resolve) => {
|
20
|
+
this.resolveInitPromise = resolve;
|
21
|
+
});
|
22
|
+
window.addEventListener('message', this.eventListener);
|
23
|
+
const message = new topic_message_1.TopicMessage("TopicGet" /* TopicMessageType.TopicGet */, this.name, this.version);
|
24
|
+
window.postMessage(message, '*');
|
25
|
+
}
|
26
|
+
asObservable() {
|
27
|
+
return this.data.asObservable().pipe((0, operators_1.filter)(() => this.isInit), (0, operators_1.map)((d) => d.data));
|
28
|
+
}
|
29
|
+
subscribe(observerOrNext, error, complete) {
|
30
|
+
return this.asObservable().subscribe(observerOrNext, error, complete);
|
31
|
+
}
|
32
|
+
/**
|
33
|
+
* This function does not offer read after write consistency!
|
34
|
+
* This means you cannot call it directly after publish, because the new value will not be there yet!
|
35
|
+
* This function will return undefined unti the isInitialized promise is resolved.
|
36
|
+
* @returns the current value of the topic in a synchronous way
|
37
|
+
*/
|
38
|
+
getValue() {
|
39
|
+
return this.isInit ? this.data.value.data : undefined;
|
40
|
+
}
|
41
|
+
pipe(...operations) {
|
42
|
+
return this.asObservable().pipe(...operations);
|
43
|
+
}
|
44
|
+
publish(value) {
|
45
|
+
const message = new topic_data_message_1.TopicDataMessage("TopicNext" /* TopicMessageType.TopicNext */, this.name, this.version, value);
|
46
|
+
window.postMessage(message, '*');
|
47
|
+
}
|
48
|
+
destroy() {
|
49
|
+
window.removeEventListener('message', this.eventListener, true);
|
50
|
+
}
|
51
|
+
onMessage(m) {
|
52
|
+
switch (m.data.type) {
|
53
|
+
case "TopicNext" /* TopicMessageType.TopicNext */:
|
54
|
+
if (m.data.name === this.name &&
|
55
|
+
m.data.version === this.version &&
|
56
|
+
(!this.data.value || (this.isInit && m.data.timestamp > this.data.value.timestamp))) {
|
57
|
+
this.isInit = true;
|
58
|
+
this.data.next(m.data);
|
59
|
+
this.resolveInitPromise();
|
60
|
+
}
|
61
|
+
break;
|
62
|
+
case "TopicGet" /* TopicMessageType.TopicGet */:
|
63
|
+
if (m.data.name === this.name && m.data.version === this.version && this.isInit && this.data.value) {
|
64
|
+
window.postMessage(this.data.value, '*');
|
65
|
+
m.stopImmediatePropagation();
|
66
|
+
m.stopPropagation();
|
67
|
+
}
|
68
|
+
break;
|
69
|
+
}
|
70
|
+
}
|
71
|
+
}
|
72
|
+
exports.Topic = Topic;
|
73
|
+
//# sourceMappingURL=topic.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"topic.js","sourceRoot":"","sources":["../../../../../../libs/accelerator/src/lib/topic/topic.ts"],"names":[],"mappings":"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"}
|