@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/package.json +4 -3
- package/src/bit-array.ts +29 -18
- package/src/reduce-dimensionality.ts +40 -34
- package/src/sequence-encoder.ts +8 -7
- package/src/string-measure.ts +5 -5
- package/src/bit-array.js +0 -656
- package/src/operations.js +0 -144
- package/src/reduce-dimensionality.js +0 -233
- package/src/sequence-encoder.js +0 -116
- package/src/spe.js +0 -151
- package/src/string-measure.js +0 -46
- package/src/string-utils.js +0 -9
- package/src/table-validation.js +0 -47
- package/src/test-utils.js +0 -80
- package/src/type_declarations.js +0 -37
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==
|
package/src/string-measure.js
DELETED
|
@@ -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=
|
package/src/string-utils.js
DELETED
|
@@ -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==
|
package/src/table-validation.js
DELETED
|
@@ -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==
|
package/src/type_declarations.js
DELETED
|
@@ -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=
|