@datagrok-libraries/utils 0.0.5 → 0.0.6

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/src/spe.js DELETED
@@ -1,151 +0,0 @@
1
- import { calculateEuclideanDistance, calcDistanceMatrix, fillRandomMatrix, vectorAdd, randomInt } from './operations';
2
- /**
3
- * Implements stochastic proximity embedding.
4
- *
5
- * @export
6
- * @class SPEBase
7
- * @link doi:10.1016/S1093-3263(03)00155-4
8
- */
9
- export class SPEBase {
10
- /**
11
- * Creates an instance of SPEBase.
12
- * @param {Options} [options] Options to pass to the constructor.
13
- * @memberof SPEBase
14
- */
15
- constructor(options) {
16
- var _a, _b, _c, _d, _e, _f, _g;
17
- this.steps = (_a = options === null || options === void 0 ? void 0 : options.steps) !== null && _a !== void 0 ? _a : 0;
18
- this.cycles = (_b = options === null || options === void 0 ? void 0 : options.cycles) !== null && _b !== void 0 ? _b : 1e6;
19
- // Select a cutoff distance {cutoff} and ...
20
- this.cutoff = (_c = options === null || options === void 0 ? void 0 : options.cutoff) !== null && _c !== void 0 ? _c : 0;
21
- // ... an initial learning rate {lambda} > 0
22
- this.lambda = (_d = options === null || options === void 0 ? void 0 : options.lambda) !== null && _d !== void 0 ? _d : 2.0;
23
- this.dlambda = (_e = options === null || options === void 0 ? void 0 : options.dlambda) !== null && _e !== void 0 ? _e : 0.01;
24
- this.lambda2 = this.lambda / 2.;
25
- this.dlambda2 = this.dlambda / 2.;
26
- this.epsilon = (_f = options === null || options === void 0 ? void 0 : options.epsilon) !== null && _f !== void 0 ? _f : 1e-10;
27
- // eslint-disable-next-line brace-style
28
- this.distanceFunction = (_g = options === null || options === void 0 ? void 0 : options.distance) !== null && _g !== void 0 ? _g : calculateEuclideanDistance;
29
- this.distance = [];
30
- }
31
- /**
32
- * Initializes distance matrix.
33
- *
34
- * @protected
35
- * @param {Vectors} vectors Input vectors to calculate distance between.
36
- * @memberof SPEBase
37
- */
38
- initDistance(vectors) {
39
- this.distance = calcDistanceMatrix(vectors, this.distanceFunction);
40
- }
41
- /**
42
- * Calculates distance between the two vectors given.
43
- *
44
- * @param {Vectors} vectors Set of vectors to calculate distances between.
45
- * @param {number} index1 Index of the first vector of the pair.
46
- * @param {number} index2 Index of the second vector of the pair.
47
- * @return {number} Distance between these two vectors.
48
- */
49
- calcDistance(vectors, index1, index2) {
50
- return this.distance[index1][index2];
51
- }
52
- /**
53
- * Embeds the vectors given into a two-dimensional space.
54
- *
55
- * @param {Vectors} vectors D-dimensional coordinates.
56
- * @return {Coordinates} SPE coordinates in D space.
57
- */
58
- embed(vectors) {
59
- const nItems = vectors.length;
60
- const areaWidth = 40;
61
- // Initialize the D-dimensional coordinates of the N points.
62
- const coordinates = fillRandomMatrix(nItems, SPEBase.dimension, areaWidth);
63
- let lambda2 = this.lambda2;
64
- if (this.steps == 0) {
65
- this.steps = vectors.length - 1;
66
- }
67
- this.initDistance(vectors);
68
- for (let cycle = 0; cycle < this.cycles; ++cycle) {
69
- for (let step = 0; step < this.steps; ++step) {
70
- // Select two points, i and j, at random, ...
71
- const i = randomInt(nItems);
72
- let j = randomInt(nItems);
73
- while (i == j)
74
- j = randomInt(nItems);
75
- const rowi = coordinates[i];
76
- const rowj = coordinates[j];
77
- // ... retrieve (or evaluate) their proximity in the input space, rij and ...
78
- const r = this.calcDistance(vectors, i, j);
79
- // ... compute their Euclidean distance on the D-dimensional map, dij.
80
- const d = calculateEuclideanDistance(rowi, rowj);
81
- // If rij <= rc, or if rij > rc and dij < rij ...
82
- if ((this.cutoff == 0) || (r <= this.cutoff) || (d < r)) {
83
- const multiplier = lambda2 * (r - d) / (d + this.epsilon);
84
- // ... update the coordinates xi and xj.
85
- const diffIJ = vectorAdd(rowi, rowj, -1);
86
- coordinates[i] = vectorAdd(rowi, diffIJ, multiplier);
87
- coordinates[j] = vectorAdd(rowj, diffIJ, -multiplier);
88
- }
89
- }
90
- // Decrease the learning rate {lambda} by a prescribed {dlambda}.
91
- lambda2 -= this.dlambda2;
92
- if (lambda2 <= 0.) {
93
- break;
94
- }
95
- }
96
- return coordinates;
97
- }
98
- }
99
- SPEBase.dimension = 2;
100
- /**
101
- * Implements modified stochastic proximity embedding.
102
- *
103
- * @export
104
- * @class PSPEBase
105
- * @link doi:10.1016/S1093-3263(03)00155-4
106
- */
107
- export class PSPEBase extends SPEBase {
108
- /**
109
- * Embeds the vectors given into a two-dimensional space using a modified update rule.
110
- *
111
- * @param {Vectors} vectors D-dimensional coordinates.
112
- * @return {Coordinates} SPE coordinates in D space.
113
- */
114
- embed(vectors) {
115
- const nItems = vectors.length;
116
- const areaWidth = 40;
117
- // Initialize the D-dimensional coordinates of the N points.
118
- const coordinates = fillRandomMatrix(nItems, PSPEBase.dimension, areaWidth);
119
- let lambda = this.lambda;
120
- this.initDistance(vectors);
121
- for (let cycle = 0; cycle < this.cycles; ++cycle) {
122
- // Select a point, i, at random (pivot).
123
- const i = randomInt(nItems);
124
- const rowi = coordinates[i];
125
- // For every point j != i ...
126
- for (let j = 0; j < nItems; ++j) {
127
- if (i == j)
128
- continue;
129
- const rowj = coordinates[j];
130
- // ... retrieve (or evaluate) its proximity to i in the input space, rij ...
131
- const r = this.calcDistance(vectors, i, j);
132
- // ... and compute their Euclidean distance on the D-dimensional map, dij.
133
- const d = calculateEuclideanDistance(rowi, rowj);
134
- // If rij <= rc, or if rij > rc and dij < rij ...
135
- if ((this.cutoff == 0) || (r <= this.cutoff) || (d < r)) {
136
- const multiplier = lambda * (r - d) / (d + this.epsilon);
137
- const diffIJ = vectorAdd(rowi, rowj, -1);
138
- // ... update the coordinates xj.
139
- coordinates[j] = vectorAdd(rowj, diffIJ, -multiplier);
140
- }
141
- }
142
- // Decrease the learning rate {lambda} by a prescribed {dlambda}.
143
- lambda -= this.dlambda;
144
- if (lambda <= 0.) {
145
- break;
146
- }
147
- }
148
- return coordinates;
149
- }
150
- }
151
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3BlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQywwQkFBMEIsRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBRXBIOzs7Ozs7R0FNRztBQUNILE1BQU0sT0FBTyxPQUFPO0lBYWxCOzs7O09BSUc7SUFDSCxZQUFZLE9BQWlCOztRQUMzQixJQUFJLENBQUMsS0FBSyxTQUFHLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxLQUFLLG1DQUFJLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsTUFBTSxTQUFHLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxNQUFNLG1DQUFJLEdBQUcsQ0FBQztRQUNyQyw0Q0FBNEM7UUFDNUMsSUFBSSxDQUFDLE1BQU0sU0FBRyxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsTUFBTSxtQ0FBSSxDQUFDLENBQUM7UUFDbkMsNENBQTRDO1FBQzVDLElBQUksQ0FBQyxNQUFNLFNBQUcsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLE1BQU0sbUNBQUksR0FBRyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxPQUFPLFNBQUcsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLE9BQU8sbUNBQUksSUFBSSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBQyxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxHQUFDLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsT0FBTyxTQUFHLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxPQUFPLG1DQUFJLEtBQUssQ0FBQztRQUN6Qyx1Q0FBdUM7UUFDdkMsSUFBSSxDQUFDLGdCQUFnQixTQUFHLE9BQU8sYUFBUCxP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QyxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDM0MsMEVBQTBFO2dCQUMxRSxNQUFNLENBQUMsR0FBRywwQkFBMEIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ2pELGlEQUFpRDtnQkFDakQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO29CQUN2RCxNQUFNLFVBQVUsR0FBRyxNQUFNLEdBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEdBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUNqRCxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUN6QyxpQ0FBaUM7b0JBQ2pDLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2lCQUN2RDthQUNGO1lBQ0QsaUVBQWlFO1lBQ2pFLE1BQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQ3ZCLElBQUksTUFBTSxJQUFJLEVBQUUsRUFBRTtnQkFDaEIsTUFBTTthQUNQO1NBQ0Y7UUFDRCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge09wdGlvbnMsIENvb3JkaW5hdGVzLCBWZWN0b3JzLCBEaXN0YW5jZU1ldHJpY30gZnJvbSAnLi90eXBlX2RlY2xhcmF0aW9ucyc7XHJcbmltcG9ydCB7Y2FsY3VsYXRlRXVjbGlkZWFuRGlzdGFuY2UsIGNhbGNEaXN0YW5jZU1hdHJpeCwgZmlsbFJhbmRvbU1hdHJpeCwgdmVjdG9yQWRkLCByYW5kb21JbnR9IGZyb20gJy4vb3BlcmF0aW9ucyc7XHJcblxyXG4vKipcclxuICogSW1wbGVtZW50cyBzdG9jaGFzdGljIHByb3hpbWl0eSBlbWJlZGRpbmcuXHJcbiAqXHJcbiAqIEBleHBvcnRcclxuICogQGNsYXNzIFNQRUJhc2VcclxuICogQGxpbmsgZG9pOjEwLjEwMTYvUzEwOTMtMzI2MygwMykwMDE1NS00XHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgU1BFQmFzZSB7XHJcbiAgcHJvdGVjdGVkIHN0YXRpYyBkaW1lbnNpb24gPSAyO1xyXG4gIHByb3RlY3RlZCBzdGVwczogbnVtYmVyO1xyXG4gIHByb3RlY3RlZCBjeWNsZXM6IG51bWJlcjtcclxuICBwcm90ZWN0ZWQgY3V0b2ZmOiBudW1iZXI7XHJcbiAgcHJvdGVjdGVkIGxhbWJkYTogbnVtYmVyO1xyXG4gIHByb3RlY3RlZCBkbGFtYmRhOiBudW1iZXI7XHJcbiAgcHJvdGVjdGVkIGxhbWJkYTI6IG51bWJlcjtcclxuICBwcm90ZWN0ZWQgZGxhbWJkYTI6IG51bWJlcjtcclxuICBwcm90ZWN0ZWQgZXBzaWxvbjogbnVtYmVyO1xyXG4gIHByb3RlY3RlZCBkaXN0YW5jZUZ1bmN0aW9uOiBEaXN0YW5jZU1ldHJpYztcclxuICBwcm90ZWN0ZWQgZGlzdGFuY2U6IENvb3JkaW5hdGVzO1xyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIFNQRUJhc2UuXHJcbiAgICogQHBhcmFtIHtPcHRpb25zfSBbb3B0aW9uc10gT3B0aW9ucyB0byBwYXNzIHRvIHRoZSBjb25zdHJ1Y3Rvci5cclxuICAgKiBAbWVtYmVyb2YgU1BFQmFzZVxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM/OiBPcHRpb25zKSB7XHJcbiAgICB0aGlzLnN0ZXBzID0gb3B0aW9ucz8uc3RlcHMgPz8gMDtcclxuICAgIHRoaXMuY3ljbGVzID0gb3B0aW9ucz8uY3ljbGVzID8/IDFlNjtcclxuICAgIC8vIFNlbGVjdCBhIGN1dG9mZiBkaXN0YW5jZSB7Y3V0b2ZmfSBhbmQgLi4uXHJcbiAgICB0aGlzLmN1dG9mZiA9IG9wdGlvbnM/LmN1dG9mZiA/PyAwO1xyXG4gICAgLy8gLi4uIGFuIGluaXRpYWwgbGVhcm5pbmcgcmF0ZSB7bGFtYmRhfSA+IDBcclxuICAgIHRoaXMubGFtYmRhID0gb3B0aW9ucz8ubGFtYmRhID8/IDIuMDtcclxuICAgIHRoaXMuZGxhbWJkYSA9IG9wdGlvbnM/LmRsYW1iZGEgPz8gMC4wMTtcclxuICAgIHRoaXMubGFtYmRhMiA9IHRoaXMubGFtYmRhLzIuO1xyXG4gICAgdGhpcy5kbGFtYmRhMiA9IHRoaXMuZGxhbWJkYS8yLjtcclxuICAgIHRoaXMuZXBzaWxvbiA9IG9wdGlvbnM/LmVwc2lsb24gPz8gMWUtMTA7XHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgYnJhY2Utc3R5bGVcclxuICAgIHRoaXMuZGlzdGFuY2VGdW5jdGlvbiA9IG9wdGlvbnM/LmRpc3RhbmNlID8/IGNhbGN1bGF0ZUV1Y2xpZGVhbkRpc3RhbmNlO1xyXG4gICAgdGhpcy5kaXN0YW5jZSA9IFtdO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6ZXMgZGlzdGFuY2UgbWF0cml4LlxyXG4gICAqXHJcbiAgICogQHByb3RlY3RlZFxyXG4gICAqIEBwYXJhbSB7VmVjdG9yc30gdmVjdG9ycyBJbnB1dCB2ZWN0b3JzIHRvIGNhbGN1bGF0ZSBkaXN0YW5jZSBiZXR3ZWVuLlxyXG4gICAqIEBtZW1iZXJvZiBTUEVCYXNlXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGluaXREaXN0YW5jZSh2ZWN0b3JzOiBWZWN0b3JzKSB7XHJcbiAgICB0aGlzLmRpc3RhbmNlID0gY2FsY0Rpc3RhbmNlTWF0cml4KHZlY3RvcnMsIHRoaXMuZGlzdGFuY2VGdW5jdGlvbik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDYWxjdWxhdGVzIGRpc3RhbmNlIGJldHdlZW4gdGhlIHR3byB2ZWN0b3JzIGdpdmVuLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7VmVjdG9yc30gdmVjdG9ycyBTZXQgb2YgdmVjdG9ycyB0byBjYWxjdWxhdGUgZGlzdGFuY2VzIGJldHdlZW4uXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4MSBJbmRleCBvZiB0aGUgZmlyc3QgdmVjdG9yIG9mIHRoZSBwYWlyLlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleDIgSW5kZXggb2YgdGhlIHNlY29uZCB2ZWN0b3Igb2YgdGhlIHBhaXIuXHJcbiAgICogQHJldHVybiB7bnVtYmVyfSBEaXN0YW5jZSBiZXR3ZWVuIHRoZXNlIHR3byB2ZWN0b3JzLlxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBjYWxjRGlzdGFuY2UodmVjdG9yczogVmVjdG9ycywgaW5kZXgxOiBudW1iZXIsIGluZGV4MjogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLmRpc3RhbmNlW2luZGV4MV1baW5kZXgyXTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEVtYmVkcyB0aGUgdmVjdG9ycyBnaXZlbiBpbnRvIGEgdHdvLWRpbWVuc2lvbmFsIHNwYWNlLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7VmVjdG9yc30gdmVjdG9ycyBELWRpbWVuc2lvbmFsIGNvb3JkaW5hdGVzLlxyXG4gICAqIEByZXR1cm4ge0Nvb3JkaW5hdGVzfSBTUEUgY29vcmRpbmF0ZXMgaW4gRCBzcGFjZS5cclxuICAgKi9cclxuICBwdWJsaWMgZW1iZWQodmVjdG9yczogVmVjdG9ycyk6IENvb3JkaW5hdGVzIHtcclxuICAgIGNvbnN0IG5JdGVtcyA9IHZlY3RvcnMubGVuZ3RoO1xyXG4gICAgY29uc3QgYXJlYVdpZHRoID0gNDA7XHJcbiAgICAvLyBJbml0aWFsaXplIHRoZSBELWRpbWVuc2lvbmFsIGNvb3JkaW5hdGVzIG9mIHRoZSBOIHBvaW50cy5cclxuICAgIGNvbnN0IGNvb3JkaW5hdGVzID0gZmlsbFJhbmRvbU1hdHJpeChuSXRlbXMsIFNQRUJhc2UuZGltZW5zaW9uLCBhcmVhV2lkdGgpO1xyXG5cclxuICAgIGxldCBsYW1iZGEyID0gdGhpcy5sYW1iZGEyO1xyXG5cclxuICAgIGlmICh0aGlzLnN0ZXBzID09IDApIHtcclxuICAgICAgdGhpcy5zdGVwcyA9IHZlY3RvcnMubGVuZ3RoLTE7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pbml0RGlzdGFuY2UodmVjdG9ycyk7XHJcblxyXG4gICAgZm9yIChsZXQgY3ljbGUgPSAwOyBjeWNsZSA8IHRoaXMuY3ljbGVzOyArK2N5Y2xlKSB7XHJcbiAgICAgIGZvciAobGV0IHN0ZXAgPSAwOyBzdGVwIDwgdGhpcy5zdGVwczsgKytzdGVwKSB7XHJcbiAgICAgICAgLy8gU2VsZWN0IHR3byBwb2ludHMsIGkgYW5kIGosIGF0IHJhbmRvbSwgLi4uXHJcbiAgICAgICAgY29uc3QgaSA9IHJhbmRvbUludChuSXRlbXMpOyBsZXQgaiA9IHJhbmRvbUludChuSXRlbXMpO1xyXG4gICAgICAgIHdoaWxlIChpID09IGopIGogPSByYW5kb21JbnQobkl0ZW1zKTtcclxuXHJcbiAgICAgICAgY29uc3Qgcm93aSA9IGNvb3JkaW5hdGVzW2ldOyBjb25zdCByb3dqID0gY29vcmRpbmF0ZXNbal07XHJcblxyXG4gICAgICAgIC8vIC4uLiByZXRyaWV2ZSAob3IgZXZhbHVhdGUpIHRoZWlyIHByb3hpbWl0eSBpbiB0aGUgaW5wdXQgc3BhY2UsIHJpaiBhbmQgLi4uXHJcbiAgICAgICAgY29uc3QgciA9IHRoaXMuY2FsY0Rpc3RhbmNlKHZlY3RvcnMsIGksIGopO1xyXG4gICAgICAgIC8vIC4uLiBjb21wdXRlIHRoZWlyIEV1Y2xpZGVhbiBkaXN0YW5jZSBvbiB0aGUgRC1kaW1lbnNpb25hbCBtYXAsIGRpai5cclxuICAgICAgICBjb25zdCBkID0gY2FsY3VsYXRlRXVjbGlkZWFuRGlzdGFuY2Uocm93aSwgcm93aik7XHJcblxyXG4gICAgICAgIC8vIElmIHJpaiA8PSByYywgb3IgaWYgcmlqID4gcmMgYW5kIGRpaiA8IHJpaiAuLi5cclxuICAgICAgICBpZiAoKHRoaXMuY3V0b2ZmID09IDApIHx8IChyIDw9IHRoaXMuY3V0b2ZmKSB8fCAoZCA8IHIpKSB7XHJcbiAgICAgICAgICBjb25zdCBtdWx0aXBsaWVyID0gbGFtYmRhMiooci1kKS8oZCt0aGlzLmVwc2lsb24pO1xyXG4gICAgICAgICAgLy8gLi4uIHVwZGF0ZSB0aGUgY29vcmRpbmF0ZXMgeGkgYW5kIHhqLlxyXG4gICAgICAgICAgY29uc3QgZGlmZklKID0gdmVjdG9yQWRkKHJvd2ksIHJvd2osIC0xKTtcclxuICAgICAgICAgIGNvb3JkaW5hdGVzW2ldID0gdmVjdG9yQWRkKHJvd2ksIGRpZmZJSiwgbXVsdGlwbGllcik7XHJcbiAgICAgICAgICBjb29yZGluYXRlc1tqXSA9IHZlY3RvckFkZChyb3dqLCBkaWZmSUosIC1tdWx0aXBsaWVyKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgLy8gRGVjcmVhc2UgdGhlIGxlYXJuaW5nIHJhdGUge2xhbWJkYX0gYnkgYSBwcmVzY3JpYmVkIHtkbGFtYmRhfS5cclxuICAgICAgbGFtYmRhMiAtPSB0aGlzLmRsYW1iZGEyO1xyXG4gICAgICBpZiAobGFtYmRhMiA8PSAwLikge1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY29vcmRpbmF0ZXM7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogSW1wbGVtZW50cyBtb2RpZmllZCBzdG9jaGFzdGljIHByb3hpbWl0eSBlbWJlZGRpbmcuXHJcbiAqXHJcbiAqIEBleHBvcnRcclxuICogQGNsYXNzIFBTUEVCYXNlXHJcbiAqIEBsaW5rIGRvaToxMC4xMDE2L1MxMDkzLTMyNjMoMDMpMDAxNTUtNFxyXG4gKi9cclxuIGV4cG9ydCBjbGFzcyBQU1BFQmFzZSBleHRlbmRzIFNQRUJhc2Uge1xyXG4gIC8qKlxyXG4gICAqIEVtYmVkcyB0aGUgdmVjdG9ycyBnaXZlbiBpbnRvIGEgdHdvLWRpbWVuc2lvbmFsIHNwYWNlIHVzaW5nIGEgbW9kaWZpZWQgdXBkYXRlIHJ1bGUuXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtWZWN0b3JzfSB2ZWN0b3JzIEQtZGltZW5zaW9uYWwgY29vcmRpbmF0ZXMuXHJcbiAgICogQHJldHVybiB7Q29vcmRpbmF0ZXN9IFNQRSBjb29yZGluYXRlcyBpbiBEIHNwYWNlLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBlbWJlZCh2ZWN0b3JzOiBWZWN0b3JzKTogQ29vcmRpbmF0ZXMge1xyXG4gICAgY29uc3Qgbkl0ZW1zID0gdmVjdG9ycy5sZW5ndGg7XHJcbiAgICBjb25zdCBhcmVhV2lkdGggPSA0MDtcclxuICAgIC8vICBJbml0aWFsaXplIHRoZSBELWRpbWVuc2lvbmFsIGNvb3JkaW5hdGVzIG9mIHRoZSBOIHBvaW50cy5cclxuICAgIGNvbnN0IGNvb3JkaW5hdGVzID0gZmlsbFJhbmRvbU1hdHJpeChuSXRlbXMsIFBTUEVCYXNlLmRpbWVuc2lvbiwgYXJlYVdpZHRoKTtcclxuICAgIGxldCBsYW1iZGEgPSB0aGlzLmxhbWJkYTtcclxuXHJcbiAgICB0aGlzLmluaXREaXN0YW5jZSh2ZWN0b3JzKTtcclxuXHJcbiAgICBmb3IgKGxldCBjeWNsZSA9IDA7IGN5Y2xlIDwgdGhpcy5jeWNsZXM7ICsrY3ljbGUpIHtcclxuICAgICAgLy8gU2VsZWN0IGEgcG9pbnQsIGksIGF0IHJhbmRvbSAocGl2b3QpLlxyXG4gICAgICBjb25zdCBpOiBudW1iZXIgPSByYW5kb21JbnQobkl0ZW1zKTtcclxuICAgICAgY29uc3Qgcm93aSA9IGNvb3JkaW5hdGVzW2ldO1xyXG5cclxuICAgICAgLy8gRm9yIGV2ZXJ5IHBvaW50IGogIT0gaSAuLi5cclxuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBuSXRlbXM7ICsraikge1xyXG4gICAgICAgIGlmIChpID09IGopIGNvbnRpbnVlO1xyXG4gICAgICAgIGNvbnN0IHJvd2ogPSBjb29yZGluYXRlc1tqXTtcclxuICAgICAgICAvLyAuLi4gcmV0cmlldmUgKG9yIGV2YWx1YXRlKSBpdHMgcHJveGltaXR5IHRvIGkgaW4gdGhlIGlucHV0IHNwYWNlLCByaWogLi4uXHJcbiAgICAgICAgY29uc3QgciA9IHRoaXMuY2FsY0Rpc3RhbmNlKHZlY3RvcnMsIGksIGopO1xyXG4gICAgICAgIC8vIC4uLiBhbmQgY29tcHV0ZSB0aGVpciBFdWNsaWRlYW4gZGlzdGFuY2Ugb24gdGhlIEQtZGltZW5zaW9uYWwgbWFwLCBkaWouXHJcbiAgICAgICAgY29uc3QgZCA9IGNhbGN1bGF0ZUV1Y2xpZGVhbkRpc3RhbmNlKHJvd2ksIHJvd2opO1xyXG4gICAgICAgIC8vIElmIHJpaiA8PSByYywgb3IgaWYgcmlqID4gcmMgYW5kIGRpaiA8IHJpaiAuLi5cclxuICAgICAgICBpZiAoKHRoaXMuY3V0b2ZmID09IDApIHx8IChyIDw9IHRoaXMuY3V0b2ZmKSB8fCAoZCA8IHIpKSB7XHJcbiAgICAgICAgICBjb25zdCBtdWx0aXBsaWVyID0gbGFtYmRhKihyLWQpLyhkK3RoaXMuZXBzaWxvbik7XHJcbiAgICAgICAgICBjb25zdCBkaWZmSUogPSB2ZWN0b3JBZGQocm93aSwgcm93aiwgLTEpO1xyXG4gICAgICAgICAgLy8gLi4uIHVwZGF0ZSB0aGUgY29vcmRpbmF0ZXMgeGouXHJcbiAgICAgICAgICBjb29yZGluYXRlc1tqXSA9IHZlY3RvckFkZChyb3dqLCBkaWZmSUosIC1tdWx0aXBsaWVyKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgLy8gRGVjcmVhc2UgdGhlIGxlYXJuaW5nIHJhdGUge2xhbWJkYX0gYnkgYSBwcmVzY3JpYmVkIHtkbGFtYmRhfS5cclxuICAgICAgbGFtYmRhIC09IHRoaXMuZGxhbWJkYTtcclxuICAgICAgaWYgKGxhbWJkYSA8PSAwLikge1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY29vcmRpbmF0ZXM7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,46 +0,0 @@
1
- import * as fl from 'fastest-levenshtein';
2
- import { jaroWinkler } from 'jaro-winkler-typescript';
3
- import { assert } from './operations';
4
- /**
5
- * Unified class implementing the different string measures.
6
- *
7
- * @export
8
- * @class Measurer
9
- */
10
- export class Measurer {
11
- /**
12
- * Creates an instance of Measurer.
13
- * @param {string} method Method to calculate distance between strings.
14
- * @memberof Measurer
15
- */
16
- constructor(method) {
17
- this.receipt = {
18
- 'Levenshtein': fl.distance,
19
- 'Jaro-Winkler': jaroWinkler,
20
- };
21
- assert(this.availableMeasures.includes(method), 'The ${method} was not found.');
22
- this.method = method;
23
- }
24
- /**
25
- * Returns custom string distance function specified.
26
- * @return {DistanceMetric} Callback of the measure chosen.
27
- */
28
- getMeasure() {
29
- return this.receipt[this.method];
30
- }
31
- /**
32
- * Returns available string distance metrics.
33
- *
34
- * @readonly
35
- * @type {string[]}
36
- * @memberof Measurer
37
- */
38
- get availableMeasures() {
39
- let keys = [];
40
- for (let key in this.receipt) {
41
- keys.push(key);
42
- }
43
- return keys;
44
- }
45
- }
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLW1lYXN1cmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzdHJpbmctbWVhc3VyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUdwRCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBRXBDOzs7OztHQUtHO0FBQ0gsTUFBTSxPQUFPLFFBQVE7SUFPakI7Ozs7T0FJRztJQUNILFlBQVksTUFBYztRQVZoQixZQUFPLEdBQXFDO1lBQ3BELGFBQWEsRUFBRSxFQUFFLENBQUMsUUFBUTtZQUMxQixjQUFjLEVBQUUsV0FBVztTQUM1QixDQUFDO1FBUUEsTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsOEJBQThCLENBQUMsQ0FBQTtRQUMvRSxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksVUFBVTtRQUNmLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILElBQVcsaUJBQWlCO1FBQzFCLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUVkLEtBQUssSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ2hCO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0NBRUoiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmbCBmcm9tICdmYXN0ZXN0LWxldmVuc2h0ZWluJztcclxuaW1wb3J0IHtqYXJvV2lua2xlcn0gZnJvbSAnamFyby13aW5rbGVyLXR5cGVzY3JpcHQnO1xyXG5cclxuaW1wb3J0IHtEaXN0YW5jZU1ldHJpY30gZnJvbSAnLi90eXBlX2RlY2xhcmF0aW9ucyc7XHJcbmltcG9ydCB7YXNzZXJ0fSBmcm9tICcuL29wZXJhdGlvbnMnO1xyXG5cclxuLyoqXHJcbiAqIFVuaWZpZWQgY2xhc3MgaW1wbGVtZW50aW5nIHRoZSBkaWZmZXJlbnQgc3RyaW5nIG1lYXN1cmVzLlxyXG4gKlxyXG4gKiBAZXhwb3J0XHJcbiAqIEBjbGFzcyBNZWFzdXJlclxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIE1lYXN1cmVyIHtcclxuICAgIHByb3RlY3RlZCBtZXRob2Q6IHN0cmluZztcclxuICAgIHByb3RlY3RlZCByZWNlaXB0OiB7W25hbWU6IHN0cmluZ106IERpc3RhbmNlTWV0cmljfSA9IHtcclxuICAgICAgJ0xldmVuc2h0ZWluJzogZmwuZGlzdGFuY2UsXHJcbiAgICAgICdKYXJvLVdpbmtsZXInOiBqYXJvV2lua2xlcixcclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIE1lYXN1cmVyLlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG1ldGhvZCBNZXRob2QgdG8gY2FsY3VsYXRlIGRpc3RhbmNlIGJldHdlZW4gc3RyaW5ncy5cclxuICAgICAqIEBtZW1iZXJvZiBNZWFzdXJlclxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcihtZXRob2Q6IHN0cmluZykge1xyXG4gICAgICBhc3NlcnQodGhpcy5hdmFpbGFibGVNZWFzdXJlcy5pbmNsdWRlcyhtZXRob2QpLCAnVGhlICR7bWV0aG9kfSB3YXMgbm90IGZvdW5kLicpXHJcbiAgICAgIHRoaXMubWV0aG9kID0gbWV0aG9kO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyBjdXN0b20gc3RyaW5nIGRpc3RhbmNlIGZ1bmN0aW9uIHNwZWNpZmllZC5cclxuICAgICAqIEByZXR1cm4ge0Rpc3RhbmNlTWV0cmljfSBDYWxsYmFjayBvZiB0aGUgbWVhc3VyZSBjaG9zZW4uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXRNZWFzdXJlKCk6IERpc3RhbmNlTWV0cmljIHtcclxuICAgICAgcmV0dXJuIHRoaXMucmVjZWlwdFt0aGlzLm1ldGhvZF07XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIGF2YWlsYWJsZSBzdHJpbmcgZGlzdGFuY2UgbWV0cmljcy5cclxuICAgICAqXHJcbiAgICAgKiBAcmVhZG9ubHlcclxuICAgICAqIEB0eXBlIHtzdHJpbmdbXX1cclxuICAgICAqIEBtZW1iZXJvZiBNZWFzdXJlclxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IGF2YWlsYWJsZU1lYXN1cmVzKCkgOiBzdHJpbmdbXSB7XHJcbiAgICAgIGxldCBrZXlzID0gW107XHJcblxyXG4gICAgICBmb3IgKGxldCBrZXkgaW4gdGhpcy5yZWNlaXB0KSB7XHJcbiAgICAgICAga2V5cy5wdXNoKGtleSk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGtleXM7XHJcbiAgICB9XHJcbiAgICBcclxufVxyXG4iXX0=
@@ -1,9 +0,0 @@
1
- export function tryParseJson(s) {
2
- try {
3
- return JSON.parse(s);
4
- }
5
- catch (_) {
6
- return null;
7
- }
8
- }
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3RyaW5nLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxZQUFZLENBQUMsQ0FBUztJQUNsQyxJQUFJO1FBQ0EsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ3hCO0lBQ0QsT0FBTyxDQUFDLEVBQUU7UUFDTixPQUFPLElBQUksQ0FBQztLQUNmO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiB0cnlQYXJzZUpzb24oczogc3RyaW5nKSA6IGFueSB7XHJcbiAgICB0cnkge1xyXG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKHMpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKF8pIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxufSJdfQ==
@@ -1,47 +0,0 @@
1
- import * as DG from "datagrok-api/dg";
2
- // @ts-ignore
3
- let ruleSet = {
4
- name: 'SDTM DM rules',
5
- rules: [
6
- {
7
- column: 'age',
8
- type: 'int',
9
- pattern: '18-90'
10
- },
11
- {
12
- column: 'height',
13
- type: 'numerical',
14
- pattern: '18-90'
15
- },
16
- {
17
- column: 'sex',
18
- type: 'string',
19
- pattern: 'in (F, M)'
20
- },
21
- {
22
- column: 'started',
23
- type: 'datetime',
24
- pattern: '> 1/1/1900'
25
- }
26
- ]
27
- };
28
- /** Returns error message, or null if valid. */
29
- function validateCell(cell, ruleset) {
30
- var _a;
31
- let name = cell.column.name.toLowerCase();
32
- for (let rule of ruleset.rules)
33
- if (rule.column == name) {
34
- rule.matcher = (_a = rule.matcher) !== null && _a !== void 0 ? _a : DG.ValueMatcher.forColumn(cell.column, rule.pattern);
35
- let error = rule.matcher.validate(cell.value);
36
- if (error !== null)
37
- return error;
38
- }
39
- return null;
40
- }
41
- function main() {
42
- console.log('foo');
43
- }
44
- let cell = { column: { name: 'age' }, value: 999 };
45
- validateCell(cell, ruleSet);
46
- console.log('ddd');
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtdmFsaWRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRhYmxlLXZhbGlkYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQWN0QyxhQUFhO0FBQ2IsSUFBSSxPQUFPLEdBQVk7SUFDckIsSUFBSSxFQUFFLGVBQWU7SUFDckIsS0FBSyxFQUFFO1FBQ0w7WUFDRSxNQUFNLEVBQUUsS0FBSztZQUNiLElBQUksRUFBRSxLQUFLO1lBQ1gsT0FBTyxFQUFFLE9BQU87U0FDakI7UUFDRDtZQUNFLE1BQU0sRUFBRSxRQUFRO1lBQ2hCLElBQUksRUFBRSxXQUFXO1lBQ2pCLE9BQU8sRUFBRSxPQUFPO1NBQ2pCO1FBQ0Q7WUFDRSxNQUFNLEVBQUUsS0FBSztZQUNiLElBQUksRUFBRSxRQUFRO1lBQ2QsT0FBTyxFQUFFLFdBQVc7U0FDckI7UUFDRDtZQUNFLE1BQU0sRUFBRSxTQUFTO1lBQ2pCLElBQUksRUFBRSxVQUFVO1lBQ2hCLE9BQU8sRUFBRSxZQUFZO1NBQ3RCO0tBQ0Y7Q0FDRixDQUFDO0FBRUYsK0NBQStDO0FBQy9DLFNBQVMsWUFBWSxDQUFDLElBQVMsRUFBRSxPQUFnQjs7SUFDL0MsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFFMUMsS0FBSyxJQUFJLElBQUksSUFBSSxPQUFPLENBQUMsS0FBSztRQUM1QixJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxPQUFPLFNBQUcsSUFBSSxDQUFDLE9BQU8sbUNBQUksRUFBRSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDcEYsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzlDLElBQUksS0FBSyxLQUFLLElBQUk7Z0JBQ2hCLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO0lBRUgsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQsU0FBUyxJQUFJO0lBQ1gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNyQixDQUFDO0FBRUQsSUFBSSxJQUFJLEdBQUcsRUFBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBQ2xELFlBQVksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFFNUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIERvIG5vdCBjaGFuZ2UgdGhlc2UgaW1wb3J0IGxpbmVzLiBEYXRhZ3JvayB3aWxsIGltcG9ydCBBUEkgbGlicmFyeSBpbiBleGFjdGx5IHRoZSBzYW1lIG1hbm5lciAqL1xyXG5pbXBvcnQgKiBhcyBncm9rIGZyb20gJ2RhdGFncm9rLWFwaS9ncm9rJztcclxuaW1wb3J0ICogYXMgdWkgZnJvbSAnZGF0YWdyb2stYXBpL3VpJztcclxuaW1wb3J0ICogYXMgREcgZnJvbSBcImRhdGFncm9rLWFwaS9kZ1wiO1xyXG5cclxuaW50ZXJmYWNlIFJ1bGUge1xyXG4gIGNvbHVtbjogc3RyaW5nO1xyXG4gIHR5cGU6IHN0cmluZztcclxuICBwYXR0ZXJuOiBzdHJpbmc7XHJcbiAgbWF0Y2hlcj86IGFueTtcclxufVxyXG5cclxuaW50ZXJmYWNlIFJ1bGVTZXQge1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBydWxlczogUnVsZVtdO1xyXG59XHJcblxyXG4vLyBAdHMtaWdub3JlXHJcbmxldCBydWxlU2V0OiBSdWxlU2V0ID0ge1xyXG4gIG5hbWU6ICdTRFRNIERNIHJ1bGVzJyxcclxuICBydWxlczogW1xyXG4gICAge1xyXG4gICAgICBjb2x1bW46ICdhZ2UnLFxyXG4gICAgICB0eXBlOiAnaW50JyxcclxuICAgICAgcGF0dGVybjogJzE4LTkwJ1xyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgY29sdW1uOiAnaGVpZ2h0JyxcclxuICAgICAgdHlwZTogJ251bWVyaWNhbCcsXHJcbiAgICAgIHBhdHRlcm46ICcxOC05MCdcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGNvbHVtbjogJ3NleCcsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBwYXR0ZXJuOiAnaW4gKEYsIE0pJ1xyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgY29sdW1uOiAnc3RhcnRlZCcsXHJcbiAgICAgIHR5cGU6ICdkYXRldGltZScsXHJcbiAgICAgIHBhdHRlcm46ICc+IDEvMS8xOTAwJ1xyXG4gICAgfVxyXG4gIF1cclxufTtcclxuXHJcbi8qKiBSZXR1cm5zIGVycm9yIG1lc3NhZ2UsIG9yIG51bGwgaWYgdmFsaWQuICovXHJcbmZ1bmN0aW9uIHZhbGlkYXRlQ2VsbChjZWxsOiBhbnksIHJ1bGVzZXQ6IFJ1bGVTZXQpIDogc3RyaW5nIHwgbnVsbCB7XHJcbiAgbGV0IG5hbWUgPSBjZWxsLmNvbHVtbi5uYW1lLnRvTG93ZXJDYXNlKCk7XHJcblxyXG4gIGZvciAobGV0IHJ1bGUgb2YgcnVsZXNldC5ydWxlcylcclxuICAgIGlmIChydWxlLmNvbHVtbiA9PSBuYW1lKSB7XHJcbiAgICAgIHJ1bGUubWF0Y2hlciA9IHJ1bGUubWF0Y2hlciA/PyBERy5WYWx1ZU1hdGNoZXIuZm9yQ29sdW1uKGNlbGwuY29sdW1uLCBydWxlLnBhdHRlcm4pO1xyXG4gICAgICBsZXQgZXJyb3IgPSBydWxlLm1hdGNoZXIudmFsaWRhdGUoY2VsbC52YWx1ZSk7XHJcbiAgICAgIGlmIChlcnJvciAhPT0gbnVsbClcclxuICAgICAgICByZXR1cm4gZXJyb3I7XHJcbiAgICB9XHJcblxyXG4gIHJldHVybiBudWxsO1xyXG59XHJcblxyXG5mdW5jdGlvbiBtYWluKCkgOiB2b2lkIHtcclxuICBjb25zb2xlLmxvZygnZm9vJyk7XHJcbn1cclxuXHJcbmxldCBjZWxsID0ge2NvbHVtbjogeyBuYW1lOiAnYWdlJyB9LCB2YWx1ZTogOTk5IH07XHJcbnZhbGlkYXRlQ2VsbChjZWxsLCBydWxlU2V0KTtcclxuXHJcbmNvbnNvbGUubG9nKCdkZGQnKTsiXX0=
package/src/test-utils.js DELETED
@@ -1,80 +0,0 @@
1
- import * as path from "path";
2
- import * as os from "os";
3
- import * as fs from "fs";
4
- import * as yaml from 'js-yaml';
5
- const fetch = require('node-fetch');
6
- export async function getToken(url, key) {
7
- let response = await fetch(`${url}/users/login/dev/${key}`, { method: 'POST' });
8
- let json = await response.json();
9
- if (json.isSuccess == true)
10
- return json.token;
11
- else
12
- throw 'Unable to login to server. Check your dev key';
13
- }
14
- export async function getWebUrl(url, token) {
15
- let response = await fetch(`${url}/admin/plugins/admin/settings`, { headers: { Authorization: token } });
16
- let json = await response.json();
17
- return json.settings.webRoot;
18
- }
19
- const grokDir = path.join(os.homedir(), '.grok');
20
- const confPath = path.join(grokDir, 'config.yaml');
21
- function mapURL(conf) {
22
- let urls = {};
23
- for (let server in conf.servers) {
24
- urls[conf['servers'][server]['url']] = conf['servers'][server];
25
- }
26
- return urls;
27
- }
28
- export function getDevKey(hostKey) {
29
- let config = yaml.load(fs.readFileSync(confPath, 'utf8'));
30
- let host = hostKey == '' ? config.default : hostKey;
31
- host = host.trim();
32
- let urls = mapURL(config);
33
- let key = '';
34
- let url = '';
35
- try {
36
- let url = new URL(host).href;
37
- if (url.endsWith('/'))
38
- url = url.slice(0, -1);
39
- if (url in urls)
40
- key = config['servers'][urls[url]]['key'];
41
- }
42
- catch (error) {
43
- if (config['servers'][host] == null)
44
- throw `Unknown server alias. Please add it to ${confPath}`;
45
- url = config['servers'][host]['url'];
46
- key = config['servers'][host]['key'];
47
- }
48
- return { url, key };
49
- }
50
- export async function getBrowserPage(puppeteer) {
51
- var _a;
52
- let url = (_a = process.env.HOST) !== null && _a !== void 0 ? _a : '';
53
- let cfg = getDevKey(url);
54
- url = cfg.url;
55
- let key = cfg.key;
56
- let token = await getToken(url, key);
57
- url = await getWebUrl(url, token);
58
- console.log(`Using web root: ${url}`);
59
- let browser = await puppeteer.launch({
60
- args: ['--disable-dev-shm-usage', '--disable-features=site-per-process'],
61
- ignoreHTTPSErrors: true,
62
- });
63
- let page = await browser.newPage();
64
- await page.goto(`${url}/oauth/`);
65
- await page.setCookie({ name: 'auth', value: token });
66
- await page.evaluate((token) => {
67
- window.localStorage.setItem('auth', token);
68
- }, token);
69
- await page.goto(url);
70
- try {
71
- await page.waitForSelector('.grok-preloader');
72
- console.log('got preloader');
73
- await page.waitForFunction(() => document.querySelector('.grok-preloader') == null, { timeout: 100000 });
74
- }
75
- catch (error) {
76
- throw error;
77
- }
78
- return { browser, page };
79
- }
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlc3QtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDekIsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDekIsT0FBTyxLQUFLLElBQUksTUFBTSxTQUFTLENBQUM7QUFFaEMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBRXBDLE1BQU0sQ0FBQyxLQUFLLFVBQVUsUUFBUSxDQUFDLEdBQVcsRUFBRSxHQUFXO0lBQ3JELElBQUksUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLEdBQUcsR0FBRyxvQkFBb0IsR0FBRyxFQUFFLEVBQUUsRUFBQyxNQUFNLEVBQUUsTUFBTSxFQUFDLENBQUMsQ0FBQztJQUM5RSxJQUFJLElBQUksR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNqQyxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSTtRQUN4QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7O1FBRWxCLE1BQU0sK0NBQStDLENBQUM7QUFDMUQsQ0FBQztBQUVELE1BQU0sQ0FBQyxLQUFLLFVBQVUsU0FBUyxDQUFDLEdBQVcsRUFBRSxLQUFhO0lBQ3hELElBQUksUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLEdBQUcsR0FBRywrQkFBK0IsRUFBRSxFQUFDLE9BQU8sRUFBRSxFQUFDLGFBQWEsRUFBRSxLQUFLLEVBQUMsRUFBQyxDQUFDLENBQUM7SUFDckcsSUFBSSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDakMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztBQUMvQixDQUFDO0FBRUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUks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cUNBQXFDLENBQUM7UUFDeEUsaUJBQWlCLEVBQUUsSUFBSTtLQUN4QixDQUFDLENBQUM7SUFFSCxJQUFJLElBQUksR0FBRyxNQUFNLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNuQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLFNBQVMsQ0FBQyxDQUFDO0lBQ2pDLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUM7SUFDbkQsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUU7UUFDakMsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzdDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNWLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyQixJQUFJO1FBQ0YsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDOUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUM3QixNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLElBQUksRUFBRSxFQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUMsQ0FBQyxDQUFDO0tBQ3hHO0lBQUMsT0FBTyxLQUFLLEVBQUU7UUFDZCxNQUFNLEtBQUssQ0FBQztLQUNiO0lBQ0QsT0FBTyxFQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUMsQ0FBQztBQUN6QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xyXG5pbXBvcnQgKiBhcyBvcyBmcm9tIFwib3NcIjtcclxuaW1wb3J0ICogYXMgZnMgZnJvbSBcImZzXCI7XHJcbmltcG9ydCAqIGFzIHlhbWwgZnJvbSAnanMteWFtbCc7XHJcbmltcG9ydCB7IENvbmZpZywgSW5kZXhhYmxlIH0gZnJvbSBcIi4uL2Jpbi91dGlscy91dGlsc1wiO1xyXG5jb25zdCBmZXRjaCA9IHJlcXVpcmUoJ25vZGUtZmV0Y2gnKTtcclxuXHJcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRUb2tlbih1cmw6IHN0cmluZywga2V5OiBzdHJpbmcpIHtcclxuICBsZXQgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHt1cmx9L3VzZXJzL2xvZ2luL2Rldi8ke2tleX1gLCB7bWV0aG9kOiAnUE9TVCd9KTtcclxuICBsZXQganNvbiA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcclxuICBpZiAoanNvbi5pc1N1Y2Nlc3MgPT0gdHJ1ZSlcclxuICAgIHJldHVybiBqc29uLnRva2VuO1xyXG4gIGVsc2VcclxuICAgIHRocm93ICdVbmFibGUgdG8gbG9naW4gdG8gc2VydmVyLiBDaGVjayB5b3VyIGRldiBrZXknO1xyXG59XHJcblxyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0V2ViVXJsKHVybDogc3RyaW5nLCB0b2tlbjogc3RyaW5nKSB7XHJcbiAgbGV0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYCR7dXJsfS9hZG1pbi9wbHVnaW5zL2FkbWluL3NldHRpbmdzYCwge2hlYWRlcnM6IHtBdXRob3JpemF0aW9uOiB0b2tlbn19KTtcclxuICBsZXQganNvbiA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcclxuICByZXR1cm4ganNvbi5zZXR0aW5ncy53ZWJSb290O1xyXG59XHJcblxyXG5jb25zdCBncm9rRGlyID0gcGF0aC5qb2luKG9zLmhvbWVkaXIoKSwgJy5ncm9rJyk7XHJcbmNvbnN0IGNvbmZQYXRoID0gcGF0aC5qb2luKGdyb2tEaXIsICdjb25maWcueWFtbCcpO1xyXG5cclxuZnVuY3Rpb24gbWFwVVJMKGNvbmY6IENvbmZpZyk6IEluZGV4YWJsZSB7XHJcbiAgbGV0IHVybHM6IEluZGV4YWJsZSA9IHt9O1xyXG4gIGZvciAobGV0IHNlcnZlciBpbiBjb25mLnNlcnZlcnMpIHtcclxuICAgIHVybHNbY29uZlsnc2VydmVycyddW3NlcnZlcl1bJ3VybCddXSA9IGNvbmZbJ3NlcnZlcnMnXVtzZXJ2ZXJdO1xyXG4gIH1cclxuICByZXR1cm4gdXJscztcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldERldktleShob3N0S2V5OiBzdHJpbmcpOiB7dXJsOiBzdHJpbmcsIGtleTogc3RyaW5nfSB7XHJcbiAgbGV0IGNvbmZpZyA9IHlhbWwubG9hZChmcy5yZWFkRmlsZVN5bmMoY29uZlBhdGgsICd1dGY4JykpIGFzIGFueTtcclxuICBsZXQgaG9zdCA9IGhvc3RLZXkgPT0gJycgPyBjb25maWcuZGVmYXVsdCA6IGhvc3RLZXk7XHJcbiAgaG9zdCA9IGhvc3QudHJpbSgpO1xyXG4gIGxldCB1cmxzID0gbWFwVVJMKGNvbmZpZyk7XHJcbiAgbGV0IGtleSA9ICcnO1xyXG4gIGxldCB1cmwgPSAnJztcclxuICB0cnkge1xyXG4gICAgbGV0IHVybCA9IG5ldyBVUkwoaG9zdCkuaHJlZjtcclxuICAgIGlmICh1cmwuZW5kc1dpdGgoJy8nKSkgdXJsID0gdXJsLnNsaWNlKDAsIC0xKTtcclxuICAgIGlmICh1cmwgaW4gdXJscykga2V5ID0gY29uZmlnWydzZXJ2ZXJzJ11bdXJsc1t1cmxdXVsna2V5J107XHJcbiAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgIGlmIChjb25maWdbJ3NlcnZlcnMnXVtob3N0XSA9PSBudWxsKVxyXG4gICAgICB0aHJvdyBgVW5rbm93biBzZXJ2ZXIgYWxpYXMuIFBsZWFzZSBhZGQgaXQgdG8gJHtjb25mUGF0aH1gO1xyXG4gICAgdXJsID0gY29uZmlnWydzZXJ2ZXJzJ11baG9zdF1bJ3VybCddO1xyXG4gICAga2V5ID0gY29uZmlnWydzZXJ2ZXJzJ11baG9zdF1bJ2tleSddO1xyXG4gIH1cclxuICByZXR1cm4ge3VybCwga2V5fTtcclxufVxyXG5cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEJyb3dzZXJQYWdlKHB1cHBldGVlcjogYW55KTogUHJvbWlzZTx7YnJvd3NlcjogYW55LCBwYWdlOiBhbnl9PiB7XHJcbiAgbGV0IHVybDpzdHJpbmcgPSBwcm9jZXNzLmVudi5IT1NUID8/ICcnO1xyXG4gIGxldCBjZmcgPSBnZXREZXZLZXkodXJsKTtcclxuICB1cmwgPSBjZmcudXJsO1xyXG5cclxuICBsZXQga2V5ID0gY2ZnLmtleTtcclxuICBsZXQgdG9rZW4gPSBhd2FpdCBnZXRUb2tlbih1cmwsIGtleSk7XHJcbiAgdXJsID0gYXdhaXQgZ2V0V2ViVXJsKHVybCwgdG9rZW4pO1xyXG4gIGNvbnNvbGUubG9nKGBVc2luZyB3ZWIgcm9vdDogJHt1cmx9YCk7XHJcblxyXG4gIGxldCBicm93c2VyID0gYXdhaXQgcHVwcGV0ZWVyLmxhdW5jaCh7XHJcbiAgICBhcmdzOiBbJy0tZGlzYWJsZS1kZXYtc2htLXVzYWdlJywgJy0tZGlzYWJsZS1mZWF0dXJlcz1zaXRlLXBlci1wcm9jZXNzJ10sXHJcbiAgICBpZ25vcmVIVFRQU0Vycm9yczogdHJ1ZSxcclxuICB9KTtcclxuXHJcbiAgbGV0IHBhZ2UgPSBhd2FpdCBicm93c2VyLm5ld1BhZ2UoKTtcclxuICBhd2FpdCBwYWdlLmdvdG8oYCR7dXJsfS9vYXV0aC9gKTtcclxuICBhd2FpdCBwYWdlLnNldENvb2tpZSh7bmFtZTogJ2F1dGgnLCB2YWx1ZTogdG9rZW59KTtcclxuICBhd2FpdCBwYWdlLmV2YWx1YXRlKCh0b2tlbjogYW55KSA9PiB7XHJcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2F1dGgnLCB0b2tlbik7XHJcbiAgfSwgdG9rZW4pO1xyXG4gIGF3YWl0IHBhZ2UuZ290byh1cmwpO1xyXG4gIHRyeSB7XHJcbiAgICBhd2FpdCBwYWdlLndhaXRGb3JTZWxlY3RvcignLmdyb2stcHJlbG9hZGVyJyk7XHJcbiAgICBjb25zb2xlLmxvZygnZ290IHByZWxvYWRlcicpO1xyXG4gICAgYXdhaXQgcGFnZS53YWl0Rm9yRnVuY3Rpb24oKCkgPT4gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmdyb2stcHJlbG9hZGVyJykgPT0gbnVsbCwge3RpbWVvdXQ6IDEwMDAwMH0pO1xyXG4gIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICB0aHJvdyBlcnJvcjtcclxuICB9XHJcbiAgcmV0dXJuIHticm93c2VyLCBwYWdlfTtcclxufSJdfQ==
@@ -1,37 +0,0 @@
1
- /**
2
- * Denotes a vector of floating poit values.
3
- *
4
- * @export
5
- * @class Vector
6
- * @extends {Float32Array}
7
- */
8
- export class Vector extends Float32Array {
9
- }
10
- /**
11
- * Denotes a two-dimensional matrix.
12
- *
13
- * @export
14
- * @class Matrix
15
- * @extends {Array<Vector>}
16
- */
17
- export class Matrix extends Array {
18
- }
19
- /**
20
- * Denotes cartesian coordinates.
21
- *
22
- * @export
23
- * @class Coordinates
24
- * @extends {Matrix}
25
- */
26
- export class Coordinates extends Matrix {
27
- }
28
- /**
29
- * Denotes an array of arbitrary-typed vectors.
30
- *
31
- * @export
32
- * @class Vectors
33
- * @extends {Array<any>}
34
- */
35
- export class Vectors extends Array {
36
- }
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZV9kZWNsYXJhdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0eXBlX2RlY2xhcmF0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFDSCxNQUFNLE9BQU8sTUFBTyxTQUFRLFlBQVk7Q0FBRztBQUUzQzs7Ozs7O0dBTUc7QUFDSCxNQUFNLE9BQU8sTUFBTyxTQUFRLEtBQWE7Q0FBRztBQUU1Qzs7Ozs7O0dBTUc7QUFDSCxNQUFNLE9BQU8sV0FBWSxTQUFRLE1BQU07Q0FBRztBQUUxQzs7Ozs7O0dBTUc7QUFDSCxNQUFNLE9BQU8sT0FBUSxTQUFRLEtBQVU7Q0FBRyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBEZW5vdGVzIGEgdmVjdG9yIG9mIGZsb2F0aW5nIHBvaXQgdmFsdWVzLlxyXG4gKlxyXG4gKiBAZXhwb3J0XHJcbiAqIEBjbGFzcyBWZWN0b3JcclxuICogQGV4dGVuZHMge0Zsb2F0MzJBcnJheX1cclxuICovXHJcbmV4cG9ydCBjbGFzcyBWZWN0b3IgZXh0ZW5kcyBGbG9hdDMyQXJyYXkge31cclxuXHJcbi8qKlxyXG4gKiBEZW5vdGVzIGEgdHdvLWRpbWVuc2lvbmFsIG1hdHJpeC5cclxuICpcclxuICogQGV4cG9ydFxyXG4gKiBAY2xhc3MgTWF0cml4XHJcbiAqIEBleHRlbmRzIHtBcnJheTxWZWN0b3I+fVxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIE1hdHJpeCBleHRlbmRzIEFycmF5PFZlY3Rvcj4ge31cclxuXHJcbi8qKlxyXG4gKiBEZW5vdGVzIGNhcnRlc2lhbiBjb29yZGluYXRlcy5cclxuICpcclxuICogQGV4cG9ydFxyXG4gKiBAY2xhc3MgQ29vcmRpbmF0ZXNcclxuICogQGV4dGVuZHMge01hdHJpeH1cclxuICovXHJcbmV4cG9ydCBjbGFzcyBDb29yZGluYXRlcyBleHRlbmRzIE1hdHJpeCB7fVxyXG5cclxuLyoqXHJcbiAqIERlbm90ZXMgYW4gYXJyYXkgb2YgYXJiaXRyYXJ5LXR5cGVkIHZlY3RvcnMuXHJcbiAqXHJcbiAqIEBleHBvcnRcclxuICogQGNsYXNzIFZlY3RvcnNcclxuICogQGV4dGVuZHMge0FycmF5PGFueT59XHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgVmVjdG9ycyBleHRlbmRzIEFycmF5PGFueT4ge31cclxuXHJcbi8qKlxyXG4gKiBEZW5vdGVzIGEgZGljdGlvbmFyeSBjb250YWluaW5nIGZ1bmN0aW9uIG9wdGlvbnMuXHJcbiAqXHJcbiAqIEBleHBvcnRcclxuICogQHR5cGUgT3B0aW9uc1xyXG4gKi9cclxuZXhwb3J0IHR5cGUgT3B0aW9ucyA9IHtbbmFtZTogc3RyaW5nXTogYW55fTtcclxuXHJcbi8qKlxyXG4gKiBEZW5vdGVzIGN1c3RvbSBkaXN0YW5jZSBtZXRyaWMgYmV0d2VlbiB0aGUgdHdvIGdpdmVuIHZlY3RvcnMuXHJcbiAqXHJcbiAqIEBleHBvcnRcclxuICogQHR5cGUgRGlzdGFuY2VNZXRyaWNcclxuICogQHBhcmFtIHthbnl9IHYxIFRoZSBmaXJzdCB2ZWN0b3IuXHJcbiAqIEBwYXJhbSB7YW55fSB2MiBUaGUgc2Vjb25kIHZlY3Rvci5cclxuICogQHJldHVybiB7bnVtYmVyfSBEaXN0YW5jZSBiZXR3ZWVuIHRoZXNlIHR3byB2ZWN0b3JzLlxyXG4gKi9cclxuIGV4cG9ydCB0eXBlIERpc3RhbmNlTWV0cmljID0gKHYxOiBhbnksIHYyOiBhbnkpID0+IChudW1iZXIpO1xyXG4iXX0=