@forge/bridge 5.0.0-next.1 → 5.0.0-next.2
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/CHANGELOG.md
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/events/events.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/events/events.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AA8BxC,eAAO,MAAM,MAAM;kBApBQ,MAAM,YAAY,GAAG,KAAG,QAAQ,IAAI,CAAC;gBAQ7C,MAAM,uBAAuB,GAAG,KAAK,GAAG,KAAG,QAAQ,YAAY,CAAC;CAelF,CAAC"}
|
package/out/events/events.js
CHANGED
|
@@ -2,12 +2,24 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.events = void 0;
|
|
4
4
|
const bridge_1 = require("../bridge");
|
|
5
|
+
const serialiseBlob_1 = require("./serialiseBlob");
|
|
5
6
|
const callBridge = (0, bridge_1.getCallBridge)();
|
|
6
|
-
const emit = (event, payload) => {
|
|
7
|
-
|
|
7
|
+
const emit = async (event, payload) => {
|
|
8
|
+
let newPayload = payload;
|
|
9
|
+
if ((0, serialiseBlob_1.containsBlobs)(payload)) {
|
|
10
|
+
newPayload = await (0, serialiseBlob_1.serialiseBlobsInPayload)(payload);
|
|
11
|
+
}
|
|
12
|
+
return callBridge('emit', { event, payload: newPayload });
|
|
8
13
|
};
|
|
9
14
|
const on = (event, callback) => {
|
|
10
|
-
|
|
15
|
+
const wrappedCallback = (payload) => {
|
|
16
|
+
let newPayload = payload;
|
|
17
|
+
if ((0, serialiseBlob_1.containsSerialisedBlobs)(payload)) {
|
|
18
|
+
newPayload = (0, serialiseBlob_1.deserialiseBlobsInPayload)(payload);
|
|
19
|
+
}
|
|
20
|
+
return callback(newPayload);
|
|
21
|
+
};
|
|
22
|
+
return callBridge('on', { event, callback: wrappedCallback });
|
|
11
23
|
};
|
|
12
24
|
exports.events = {
|
|
13
25
|
emit,
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare const serialiseBlobsInPayload: (payload: unknown) => Promise<unknown>;
|
|
2
|
+
export declare const deserialiseBlobsInPayload: (payload: unknown) => unknown;
|
|
3
|
+
export declare const containsBlobs: (payload: unknown) => boolean;
|
|
4
|
+
export declare const containsSerialisedBlobs: (payload: unknown) => boolean;
|
|
5
|
+
//# sourceMappingURL=serialiseBlob.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serialiseBlob.d.ts","sourceRoot":"","sources":["../../src/events/serialiseBlob.ts"],"names":[],"mappings":"AAsCA,eAAO,MAAM,uBAAuB,YAAmB,OAAO,KAAG,QAAQ,OAAO,CAyB/E,CAAC;AAGF,eAAO,MAAM,yBAAyB,YAAa,OAAO,KAAG,OAyB5D,CAAC;AAEF,eAAO,MAAM,aAAa,YAAa,OAAO,KAAG,OAchD,CAAC;AAEF,eAAO,MAAM,uBAAuB,YAAa,OAAO,KAAG,OAc1D,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.containsSerialisedBlobs = exports.containsBlobs = exports.deserialiseBlobsInPayload = exports.serialiseBlobsInPayload = void 0;
|
|
4
|
+
const blobParser_1 = require("../utils/blobParser");
|
|
5
|
+
const isPlainObject = (value) => {
|
|
6
|
+
if (typeof value !== 'object' || value === null)
|
|
7
|
+
return false;
|
|
8
|
+
if (Object.prototype.toString.call(value) !== '[object Object]')
|
|
9
|
+
return false;
|
|
10
|
+
const proto = Object.getPrototypeOf(value);
|
|
11
|
+
if (proto === null)
|
|
12
|
+
return true;
|
|
13
|
+
const Ctor = Object.prototype.hasOwnProperty.call(proto, 'constructor') && proto.constructor;
|
|
14
|
+
return (typeof Ctor === 'function' &&
|
|
15
|
+
Ctor instanceof Ctor &&
|
|
16
|
+
Function.prototype.call(Ctor) === Function.prototype.call(value));
|
|
17
|
+
};
|
|
18
|
+
const blobToBase64WithMetadata = async (blob) => {
|
|
19
|
+
const base64Data = await (0, blobParser_1.blobToBase64)(blob);
|
|
20
|
+
return {
|
|
21
|
+
data: base64Data,
|
|
22
|
+
type: blob.type
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
const base64WithMetadataToBlob = (metadata) => {
|
|
26
|
+
return (0, blobParser_1.base64ToBlob)(metadata.data, metadata.type);
|
|
27
|
+
};
|
|
28
|
+
const serialiseBlobsInPayload = async (payload) => {
|
|
29
|
+
if (payload instanceof Blob) {
|
|
30
|
+
const blobData = await blobToBase64WithMetadata(payload);
|
|
31
|
+
return {
|
|
32
|
+
...blobData,
|
|
33
|
+
__isBlobData: true
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
if (Array.isArray(payload)) {
|
|
37
|
+
return Promise.all(payload.map((item) => (0, exports.serialiseBlobsInPayload)(item)));
|
|
38
|
+
}
|
|
39
|
+
if (payload && isPlainObject(payload)) {
|
|
40
|
+
const entries = await Promise.all(Object.entries(payload).map(async ([key, value]) => [key, await (0, exports.serialiseBlobsInPayload)(value)]));
|
|
41
|
+
return Object.fromEntries(entries);
|
|
42
|
+
}
|
|
43
|
+
return payload;
|
|
44
|
+
};
|
|
45
|
+
exports.serialiseBlobsInPayload = serialiseBlobsInPayload;
|
|
46
|
+
const deserialiseBlobsInPayload = (payload) => {
|
|
47
|
+
if (payload && isPlainObject(payload) && '__isBlobData' in payload) {
|
|
48
|
+
const typedData = payload;
|
|
49
|
+
return base64WithMetadataToBlob({
|
|
50
|
+
data: typedData.data,
|
|
51
|
+
type: typedData.type
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
if (Array.isArray(payload)) {
|
|
55
|
+
return payload.map((item) => (0, exports.deserialiseBlobsInPayload)(item));
|
|
56
|
+
}
|
|
57
|
+
if (payload && isPlainObject(payload)) {
|
|
58
|
+
const result = {};
|
|
59
|
+
for (const [key, value] of Object.entries(payload)) {
|
|
60
|
+
result[key] = (0, exports.deserialiseBlobsInPayload)(value);
|
|
61
|
+
}
|
|
62
|
+
return result;
|
|
63
|
+
}
|
|
64
|
+
return payload;
|
|
65
|
+
};
|
|
66
|
+
exports.deserialiseBlobsInPayload = deserialiseBlobsInPayload;
|
|
67
|
+
const containsBlobs = (payload) => {
|
|
68
|
+
if (payload instanceof Blob) {
|
|
69
|
+
return true;
|
|
70
|
+
}
|
|
71
|
+
if (Array.isArray(payload)) {
|
|
72
|
+
return payload.some((item) => (0, exports.containsBlobs)(item));
|
|
73
|
+
}
|
|
74
|
+
if (payload && isPlainObject(payload)) {
|
|
75
|
+
return Object.values(payload).some((value) => (0, exports.containsBlobs)(value));
|
|
76
|
+
}
|
|
77
|
+
return false;
|
|
78
|
+
};
|
|
79
|
+
exports.containsBlobs = containsBlobs;
|
|
80
|
+
const containsSerialisedBlobs = (payload) => {
|
|
81
|
+
if (payload && isPlainObject(payload) && '__isBlobData' in payload) {
|
|
82
|
+
return true;
|
|
83
|
+
}
|
|
84
|
+
if (Array.isArray(payload)) {
|
|
85
|
+
return payload.some((item) => (0, exports.containsSerialisedBlobs)(item));
|
|
86
|
+
}
|
|
87
|
+
if (payload && isPlainObject(payload)) {
|
|
88
|
+
return Object.values(payload).some((value) => (0, exports.containsSerialisedBlobs)(value));
|
|
89
|
+
}
|
|
90
|
+
return false;
|
|
91
|
+
};
|
|
92
|
+
exports.containsSerialisedBlobs = containsSerialisedBlobs;
|