jsf.js_next_gen 4.1.0-beta.6 → 4.1.0-beta.7
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/dist/window/faces-development.js +1121 -17
- package/dist/window/faces-development.js.map +1 -1
- package/dist/window/faces.js +1 -1
- package/dist/window/faces.js.map +1 -1
- package/dist/window/jsf-development.js +1121 -17
- package/dist/window/jsf-development.js.map +1 -1
- package/dist/window/jsf.js +1 -1
- package/dist/window/jsf.js.map +1 -1
- package/package.json +2 -2
|
@@ -3338,6 +3338,313 @@ class ValueEmbedder extends Optional {
|
|
|
3338
3338
|
ValueEmbedder.absent = ValueEmbedder.fromNullable(null);
|
|
3339
3339
|
|
|
3340
3340
|
|
|
3341
|
+
/***/ },
|
|
3342
|
+
|
|
3343
|
+
/***/ "./node_modules/mona-dish/src/main/typescript/Promise.ts"
|
|
3344
|
+
/*!***************************************************************!*\
|
|
3345
|
+
!*** ./node_modules/mona-dish/src/main/typescript/Promise.ts ***!
|
|
3346
|
+
\***************************************************************/
|
|
3347
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
3348
|
+
|
|
3349
|
+
__webpack_require__.r(__webpack_exports__);
|
|
3350
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
3351
|
+
/* harmony export */ CancellablePromise: () => (/* binding */ CancellablePromise),
|
|
3352
|
+
/* harmony export */ Promise: () => (/* binding */ Promise),
|
|
3353
|
+
/* harmony export */ PromiseStatus: () => (/* binding */ PromiseStatus),
|
|
3354
|
+
/* harmony export */ interval: () => (/* binding */ interval),
|
|
3355
|
+
/* harmony export */ timeout: () => (/* binding */ timeout)
|
|
3356
|
+
/* harmony export */ });
|
|
3357
|
+
/* harmony import */ var _Monad__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Monad */ "./node_modules/mona-dish/src/main/typescript/Monad.ts");
|
|
3358
|
+
/*!
|
|
3359
|
+
* Licensed to the Apache Software Foundation (ASF) under one
|
|
3360
|
+
* or more contributor license agreements. See the NOTICE file
|
|
3361
|
+
* distributed with this work for additional information
|
|
3362
|
+
* regarding copyright ownership. The ASF licenses this file
|
|
3363
|
+
* to you under the Apache License, Version 2.0 (the
|
|
3364
|
+
* "License"); you may not use this file except in compliance
|
|
3365
|
+
* with the License. You may obtain a copy of the License at
|
|
3366
|
+
*
|
|
3367
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
3368
|
+
*
|
|
3369
|
+
* Unless required by applicable law or agreed to in writing,
|
|
3370
|
+
* software distributed under the License is distributed on an
|
|
3371
|
+
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
3372
|
+
* KIND, either express or implied. See the License for the
|
|
3373
|
+
* specific language governing permissions and limitations
|
|
3374
|
+
* under the License.
|
|
3375
|
+
*/
|
|
3376
|
+
|
|
3377
|
+
var PromiseStatus;
|
|
3378
|
+
(function (PromiseStatus) {
|
|
3379
|
+
PromiseStatus[PromiseStatus["PENDING"] = 0] = "PENDING";
|
|
3380
|
+
PromiseStatus[PromiseStatus["FULFILLED"] = 1] = "FULFILLED";
|
|
3381
|
+
PromiseStatus[PromiseStatus["REJECTED"] = 2] = "REJECTED";
|
|
3382
|
+
})(PromiseStatus || (PromiseStatus = {}));
|
|
3383
|
+
/*
|
|
3384
|
+
* Promise wrappers for timeout and interval
|
|
3385
|
+
*/
|
|
3386
|
+
function timeout(timeout) {
|
|
3387
|
+
let handler = null;
|
|
3388
|
+
return new CancellablePromise((apply, reject) => {
|
|
3389
|
+
handler = setTimeout(() => apply(), timeout);
|
|
3390
|
+
}, () => {
|
|
3391
|
+
if (handler) {
|
|
3392
|
+
clearTimeout(handler);
|
|
3393
|
+
handler = null;
|
|
3394
|
+
}
|
|
3395
|
+
});
|
|
3396
|
+
}
|
|
3397
|
+
function interval(timeout) {
|
|
3398
|
+
let handler = null;
|
|
3399
|
+
return new CancellablePromise((apply, reject) => {
|
|
3400
|
+
handler = setInterval(() => {
|
|
3401
|
+
apply();
|
|
3402
|
+
}, timeout);
|
|
3403
|
+
}, () => {
|
|
3404
|
+
if (handler) {
|
|
3405
|
+
clearInterval(handler);
|
|
3406
|
+
handler = null;
|
|
3407
|
+
}
|
|
3408
|
+
});
|
|
3409
|
+
}
|
|
3410
|
+
/**
|
|
3411
|
+
* a small (probably not 100% correct, although I tried to be correct as possible) Promise implementation
|
|
3412
|
+
* for systems which do not have a promise implemented
|
|
3413
|
+
* Note, although an internal state is kept, this is sideffect free since
|
|
3414
|
+
* is value is a function to operate on, hence no real state is kept internally, except for the then
|
|
3415
|
+
* and catch calling order
|
|
3416
|
+
*/
|
|
3417
|
+
class Promise {
|
|
3418
|
+
constructor(executor) {
|
|
3419
|
+
this.status = PromiseStatus.PENDING;
|
|
3420
|
+
this.allFuncs = [];
|
|
3421
|
+
//super(executor);
|
|
3422
|
+
this.value = executor;
|
|
3423
|
+
this.value((data) => this.resolve(data), (data) => this.reject(data));
|
|
3424
|
+
}
|
|
3425
|
+
static all(...promises) {
|
|
3426
|
+
let promiseCnt = 0;
|
|
3427
|
+
let myapply;
|
|
3428
|
+
let myPromise = new Promise((apply, reject) => {
|
|
3429
|
+
myapply = apply;
|
|
3430
|
+
});
|
|
3431
|
+
let executor = () => {
|
|
3432
|
+
promiseCnt++;
|
|
3433
|
+
if (promises.length == promiseCnt) {
|
|
3434
|
+
myapply();
|
|
3435
|
+
}
|
|
3436
|
+
};
|
|
3437
|
+
executor.__last__ = true;
|
|
3438
|
+
for (let cnt = 0; cnt < promises.length; cnt++) {
|
|
3439
|
+
promises[cnt].finally(executor);
|
|
3440
|
+
}
|
|
3441
|
+
return myPromise;
|
|
3442
|
+
}
|
|
3443
|
+
static race(...promises) {
|
|
3444
|
+
let promiseCnt = 0;
|
|
3445
|
+
let myapply;
|
|
3446
|
+
let myreject;
|
|
3447
|
+
let myPromise = new Promise((apply, reject) => {
|
|
3448
|
+
myapply = apply;
|
|
3449
|
+
myreject = reject;
|
|
3450
|
+
});
|
|
3451
|
+
let thenexecutor = () => {
|
|
3452
|
+
if (!!myapply) {
|
|
3453
|
+
myapply();
|
|
3454
|
+
}
|
|
3455
|
+
myapply = null;
|
|
3456
|
+
myreject = null;
|
|
3457
|
+
return null;
|
|
3458
|
+
};
|
|
3459
|
+
thenexecutor.__last__ = true;
|
|
3460
|
+
let catchexeutor = () => {
|
|
3461
|
+
if (!!myreject) {
|
|
3462
|
+
myreject();
|
|
3463
|
+
}
|
|
3464
|
+
myreject = null;
|
|
3465
|
+
myapply = null;
|
|
3466
|
+
return null;
|
|
3467
|
+
};
|
|
3468
|
+
catchexeutor.__last__ = true;
|
|
3469
|
+
for (let cnt = 0; cnt < promises.length; cnt++) {
|
|
3470
|
+
promises[cnt].then(thenexecutor);
|
|
3471
|
+
promises[cnt].catch(catchexeutor);
|
|
3472
|
+
}
|
|
3473
|
+
return myPromise;
|
|
3474
|
+
}
|
|
3475
|
+
static reject(reason) {
|
|
3476
|
+
let retVal = new Promise((resolve, reject) => {
|
|
3477
|
+
//not really doable without a hack
|
|
3478
|
+
if (reason instanceof Promise) {
|
|
3479
|
+
reason.then((val) => {
|
|
3480
|
+
reject(val);
|
|
3481
|
+
});
|
|
3482
|
+
}
|
|
3483
|
+
else {
|
|
3484
|
+
setTimeout(() => {
|
|
3485
|
+
reject(reason);
|
|
3486
|
+
}, 1);
|
|
3487
|
+
}
|
|
3488
|
+
});
|
|
3489
|
+
return retVal;
|
|
3490
|
+
}
|
|
3491
|
+
static resolve(reason) {
|
|
3492
|
+
let retVal = new Promise((resolve, reject) => {
|
|
3493
|
+
//not really doable without a hack
|
|
3494
|
+
if (reason instanceof Promise) {
|
|
3495
|
+
reason.then((val) => resolve(val));
|
|
3496
|
+
}
|
|
3497
|
+
else {
|
|
3498
|
+
setTimeout(() => {
|
|
3499
|
+
resolve(reason);
|
|
3500
|
+
}, 1);
|
|
3501
|
+
}
|
|
3502
|
+
});
|
|
3503
|
+
return retVal;
|
|
3504
|
+
}
|
|
3505
|
+
then(executorFunc, catchfunc) {
|
|
3506
|
+
this.allFuncs.push({ "then": executorFunc });
|
|
3507
|
+
if (catchfunc) {
|
|
3508
|
+
this.allFuncs.push({ "catch": catchfunc });
|
|
3509
|
+
}
|
|
3510
|
+
this.spliceLastFuncs();
|
|
3511
|
+
return this;
|
|
3512
|
+
}
|
|
3513
|
+
catch(executorFunc) {
|
|
3514
|
+
this.allFuncs.push({ "catch": executorFunc });
|
|
3515
|
+
this.spliceLastFuncs();
|
|
3516
|
+
return this;
|
|
3517
|
+
}
|
|
3518
|
+
finally(executorFunc) {
|
|
3519
|
+
if (this.__reason__) {
|
|
3520
|
+
this.__reason__.finally(executorFunc);
|
|
3521
|
+
return undefined;
|
|
3522
|
+
}
|
|
3523
|
+
this.allFuncs.push({ "finally": executorFunc });
|
|
3524
|
+
this.spliceLastFuncs();
|
|
3525
|
+
return this;
|
|
3526
|
+
}
|
|
3527
|
+
resolve(val) {
|
|
3528
|
+
while (this.allFuncs.length) {
|
|
3529
|
+
if (!this.allFuncs[0].then) {
|
|
3530
|
+
break;
|
|
3531
|
+
}
|
|
3532
|
+
let fn = this.allFuncs.shift();
|
|
3533
|
+
let funcResult = _Monad__WEBPACK_IMPORTED_MODULE_0__.Optional.fromNullable(fn.then(val));
|
|
3534
|
+
if (funcResult.isPresent()) {
|
|
3535
|
+
funcResult = funcResult.flatMap();
|
|
3536
|
+
val = funcResult.value;
|
|
3537
|
+
if (val instanceof Promise) {
|
|
3538
|
+
//let func = (newVal: any) => {this.resolve(newVal)};
|
|
3539
|
+
//func.__last__ = true;
|
|
3540
|
+
//val.then(func);
|
|
3541
|
+
this.transferIntoNewPromise(val);
|
|
3542
|
+
return;
|
|
3543
|
+
}
|
|
3544
|
+
}
|
|
3545
|
+
else {
|
|
3546
|
+
break;
|
|
3547
|
+
}
|
|
3548
|
+
}
|
|
3549
|
+
this.appyFinally();
|
|
3550
|
+
this.status = PromiseStatus.FULFILLED;
|
|
3551
|
+
}
|
|
3552
|
+
reject(val) {
|
|
3553
|
+
while (this.allFuncs.length) {
|
|
3554
|
+
if (this.allFuncs[0].finally) {
|
|
3555
|
+
break;
|
|
3556
|
+
}
|
|
3557
|
+
let fn = this.allFuncs.shift();
|
|
3558
|
+
if (fn.catch) {
|
|
3559
|
+
let funcResult = _Monad__WEBPACK_IMPORTED_MODULE_0__.Optional.fromNullable(fn.catch(val));
|
|
3560
|
+
if (funcResult.isPresent()) {
|
|
3561
|
+
funcResult = funcResult.flatMap();
|
|
3562
|
+
val = funcResult.value;
|
|
3563
|
+
if (val instanceof Promise) {
|
|
3564
|
+
//val.then((newVal: any) => {this.resolve(newVal)});
|
|
3565
|
+
this.transferIntoNewPromise(val);
|
|
3566
|
+
return;
|
|
3567
|
+
}
|
|
3568
|
+
this.status = PromiseStatus.REJECTED;
|
|
3569
|
+
break;
|
|
3570
|
+
}
|
|
3571
|
+
else {
|
|
3572
|
+
break;
|
|
3573
|
+
}
|
|
3574
|
+
}
|
|
3575
|
+
}
|
|
3576
|
+
this.status = PromiseStatus.REJECTED;
|
|
3577
|
+
this.appyFinally();
|
|
3578
|
+
}
|
|
3579
|
+
appyFinally() {
|
|
3580
|
+
while (this.allFuncs.length) {
|
|
3581
|
+
let fn = this.allFuncs.shift();
|
|
3582
|
+
if (fn.finally) {
|
|
3583
|
+
fn.finally();
|
|
3584
|
+
}
|
|
3585
|
+
}
|
|
3586
|
+
}
|
|
3587
|
+
spliceLastFuncs() {
|
|
3588
|
+
let lastFuncs = [];
|
|
3589
|
+
let rest = [];
|
|
3590
|
+
for (let cnt = 0; cnt < this.allFuncs.length; cnt++) {
|
|
3591
|
+
for (let key in this.allFuncs[cnt]) {
|
|
3592
|
+
if (this.allFuncs[cnt][key].__last__) {
|
|
3593
|
+
lastFuncs.push(this.allFuncs[cnt]);
|
|
3594
|
+
}
|
|
3595
|
+
else {
|
|
3596
|
+
rest.push(this.allFuncs[cnt]);
|
|
3597
|
+
}
|
|
3598
|
+
}
|
|
3599
|
+
}
|
|
3600
|
+
this.allFuncs = rest.concat(lastFuncs);
|
|
3601
|
+
}
|
|
3602
|
+
transferIntoNewPromise(val) {
|
|
3603
|
+
for (let cnt = 0; cnt < this.allFuncs.length; cnt++) {
|
|
3604
|
+
for (let key in this.allFuncs[cnt]) {
|
|
3605
|
+
val[key](this.allFuncs[cnt][key]);
|
|
3606
|
+
}
|
|
3607
|
+
}
|
|
3608
|
+
}
|
|
3609
|
+
}
|
|
3610
|
+
/**
|
|
3611
|
+
* a cancellable promise
|
|
3612
|
+
* a Promise with a cancel function, which can be cancellend any time
|
|
3613
|
+
* this is useful for promises which use cancellable asynchronous operations
|
|
3614
|
+
* note, even in a cancel state, the finally of the promise is executed, however
|
|
3615
|
+
* subsequent thens are not anymore.
|
|
3616
|
+
* The current then however is fished or a catch is called depending on how the outer
|
|
3617
|
+
* operation reacts to a cancel order.
|
|
3618
|
+
*/
|
|
3619
|
+
class CancellablePromise extends Promise {
|
|
3620
|
+
/**
|
|
3621
|
+
* @param executor asynchronous callback operation which triggers the callback
|
|
3622
|
+
* @param cancellator cancel operation, separate from the trigger operation
|
|
3623
|
+
*/
|
|
3624
|
+
constructor(executor, cancellator) {
|
|
3625
|
+
super(executor);
|
|
3626
|
+
this.cancellator = () => {
|
|
3627
|
+
};
|
|
3628
|
+
this.cancellator = cancellator;
|
|
3629
|
+
}
|
|
3630
|
+
cancel() {
|
|
3631
|
+
this.status = PromiseStatus.REJECTED;
|
|
3632
|
+
this.appyFinally();
|
|
3633
|
+
//lets terminate it once and for all, the finally has been applied
|
|
3634
|
+
this.allFuncs = [];
|
|
3635
|
+
}
|
|
3636
|
+
then(executorFunc, catchfunc) {
|
|
3637
|
+
return super.then(executorFunc, catchfunc);
|
|
3638
|
+
}
|
|
3639
|
+
catch(executorFunc) {
|
|
3640
|
+
return super.catch(executorFunc);
|
|
3641
|
+
}
|
|
3642
|
+
finally(executorFunc) {
|
|
3643
|
+
return super.finally(executorFunc);
|
|
3644
|
+
}
|
|
3645
|
+
}
|
|
3646
|
+
|
|
3647
|
+
|
|
3341
3648
|
/***/ },
|
|
3342
3649
|
|
|
3343
3650
|
/***/ "./node_modules/mona-dish/src/main/typescript/SourcesCollectors.ts"
|
|
@@ -3794,6 +4101,778 @@ class ArrayCollector {
|
|
|
3794
4101
|
}
|
|
3795
4102
|
|
|
3796
4103
|
|
|
4104
|
+
/***/ },
|
|
4105
|
+
|
|
4106
|
+
/***/ "./node_modules/mona-dish/src/main/typescript/Stream.ts"
|
|
4107
|
+
/*!**************************************************************!*\
|
|
4108
|
+
!*** ./node_modules/mona-dish/src/main/typescript/Stream.ts ***!
|
|
4109
|
+
\**************************************************************/
|
|
4110
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
4111
|
+
|
|
4112
|
+
__webpack_require__.r(__webpack_exports__);
|
|
4113
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
4114
|
+
/* harmony export */ FlatMapStreamDataSource: () => (/* binding */ FlatMapStreamDataSource),
|
|
4115
|
+
/* harmony export */ LazyStream: () => (/* binding */ LazyStream),
|
|
4116
|
+
/* harmony export */ Stream: () => (/* binding */ Stream)
|
|
4117
|
+
/* harmony export */ });
|
|
4118
|
+
/* harmony import */ var _Monad__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Monad */ "./node_modules/mona-dish/src/main/typescript/Monad.ts");
|
|
4119
|
+
/* harmony import */ var _SourcesCollectors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SourcesCollectors */ "./node_modules/mona-dish/src/main/typescript/SourcesCollectors.ts");
|
|
4120
|
+
/* harmony import */ var _DomQuery__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./DomQuery */ "./node_modules/mona-dish/src/main/typescript/DomQuery.ts");
|
|
4121
|
+
/*!
|
|
4122
|
+
* Licensed to the Apache Software Foundation (ASF) under one or more
|
|
4123
|
+
* contributor license agreements. See the NOTICE file distributed with
|
|
4124
|
+
* this work for additional information regarding copyright ownership.
|
|
4125
|
+
* The ASF licenses this file to you under the Apache License, Version 2.0
|
|
4126
|
+
* (the "License"); you may not use this file except in compliance with
|
|
4127
|
+
* the License. You may obtain a copy of the License at
|
|
4128
|
+
*
|
|
4129
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
4130
|
+
*
|
|
4131
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
4132
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
4133
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
4134
|
+
* See the License for the specific language governing permissions and
|
|
4135
|
+
* limitations under the License.
|
|
4136
|
+
*/
|
|
4137
|
+
/*
|
|
4138
|
+
* A small stream implementation
|
|
4139
|
+
*/
|
|
4140
|
+
|
|
4141
|
+
|
|
4142
|
+
|
|
4143
|
+
/**
|
|
4144
|
+
* Same for flatmap to deal with element -> stream mappings
|
|
4145
|
+
*/
|
|
4146
|
+
class FlatMapStreamDataSource {
|
|
4147
|
+
constructor(func, parent) {
|
|
4148
|
+
/**
|
|
4149
|
+
* the currently active stream
|
|
4150
|
+
* coming from an incoming element
|
|
4151
|
+
* once the end of this one is reached
|
|
4152
|
+
* it is swapped out by another one
|
|
4153
|
+
* from the next element
|
|
4154
|
+
*/
|
|
4155
|
+
this.activeDataSource = null;
|
|
4156
|
+
this.walkedDataSources = [];
|
|
4157
|
+
this._currPos = 0;
|
|
4158
|
+
this.mapFunc = func;
|
|
4159
|
+
this.inputDataSource = parent;
|
|
4160
|
+
}
|
|
4161
|
+
hasNext() {
|
|
4162
|
+
return this.resolveActiveHasNext() || this.resolveNextHasNext();
|
|
4163
|
+
}
|
|
4164
|
+
resolveActiveHasNext() {
|
|
4165
|
+
let next = false;
|
|
4166
|
+
if (this.activeDataSource) {
|
|
4167
|
+
next = this.activeDataSource.hasNext();
|
|
4168
|
+
}
|
|
4169
|
+
return next;
|
|
4170
|
+
}
|
|
4171
|
+
lookAhead(cnt = 1) {
|
|
4172
|
+
var _a;
|
|
4173
|
+
let lookAhead = (_a = this === null || this === void 0 ? void 0 : this.activeDataSource) === null || _a === void 0 ? void 0 : _a.lookAhead(cnt);
|
|
4174
|
+
if ((this === null || this === void 0 ? void 0 : this.activeDataSource) && lookAhead != _SourcesCollectors__WEBPACK_IMPORTED_MODULE_1__.ITERATION_STATUS.EO_STRM) {
|
|
4175
|
+
//this should cover 95% of all cases
|
|
4176
|
+
return lookAhead;
|
|
4177
|
+
}
|
|
4178
|
+
if (this.activeDataSource) {
|
|
4179
|
+
cnt -= (0,_SourcesCollectors__WEBPACK_IMPORTED_MODULE_1__.calculateSkips)(this.activeDataSource);
|
|
4180
|
+
}
|
|
4181
|
+
//the idea is basically to look into the streams sub-sequentially for a match
|
|
4182
|
+
//after each stream we have to take into consideration that the skipCnt is
|
|
4183
|
+
//reduced by the number of datasets we already have looked into in the previous stream/datasource
|
|
4184
|
+
//unfortunately for now we have to loop into them, so we introduce a small o2 here
|
|
4185
|
+
for (let dsLoop = 1; true; dsLoop++) {
|
|
4186
|
+
let datasourceData = this.inputDataSource.lookAhead(dsLoop);
|
|
4187
|
+
//we have looped out
|
|
4188
|
+
//no embedded data anymore? we are done, data
|
|
4189
|
+
//can either be a scalar an array or another datasource
|
|
4190
|
+
if (datasourceData === _SourcesCollectors__WEBPACK_IMPORTED_MODULE_1__.ITERATION_STATUS.EO_STRM) {
|
|
4191
|
+
return _SourcesCollectors__WEBPACK_IMPORTED_MODULE_1__.ITERATION_STATUS.EO_STRM;
|
|
4192
|
+
}
|
|
4193
|
+
let mappedData = this.mapFunc(datasourceData);
|
|
4194
|
+
//it either comes in as datasource or as array
|
|
4195
|
+
//both cases must be unified into a datasource
|
|
4196
|
+
let currentDataSource = this.toDatasource(mappedData);
|
|
4197
|
+
//we now run again a lookahead
|
|
4198
|
+
let ret = currentDataSource.lookAhead(cnt);
|
|
4199
|
+
//if the value is found then we are set
|
|
4200
|
+
if (ret != _SourcesCollectors__WEBPACK_IMPORTED_MODULE_1__.ITERATION_STATUS.EO_STRM) {
|
|
4201
|
+
return ret;
|
|
4202
|
+
}
|
|
4203
|
+
//reduce the next lookahead by the number of elements
|
|
4204
|
+
//we are now skipping in the current data source
|
|
4205
|
+
cnt -= (0,_SourcesCollectors__WEBPACK_IMPORTED_MODULE_1__.calculateSkips)(currentDataSource);
|
|
4206
|
+
}
|
|
4207
|
+
}
|
|
4208
|
+
toDatasource(mapped) {
|
|
4209
|
+
let ds = Array.isArray(mapped) ? new _SourcesCollectors__WEBPACK_IMPORTED_MODULE_1__.ArrayStreamDataSource(...mapped) : mapped;
|
|
4210
|
+
this.walkedDataSources.push(ds);
|
|
4211
|
+
return ds;
|
|
4212
|
+
}
|
|
4213
|
+
resolveNextHasNext() {
|
|
4214
|
+
let next = false;
|
|
4215
|
+
while (!next && this.inputDataSource.hasNext()) {
|
|
4216
|
+
let mapped = this.mapFunc(this.inputDataSource.next());
|
|
4217
|
+
this.activeDataSource = this.toDatasource(mapped);
|
|
4218
|
+
next = this.activeDataSource.hasNext();
|
|
4219
|
+
}
|
|
4220
|
+
return next;
|
|
4221
|
+
}
|
|
4222
|
+
next() {
|
|
4223
|
+
if (this.hasNext()) {
|
|
4224
|
+
this._currPos++;
|
|
4225
|
+
return this.activeDataSource.next();
|
|
4226
|
+
}
|
|
4227
|
+
return undefined;
|
|
4228
|
+
}
|
|
4229
|
+
reset() {
|
|
4230
|
+
this.inputDataSource.reset();
|
|
4231
|
+
this.walkedDataSources.forEach(ds => ds.reset());
|
|
4232
|
+
this.walkedDataSources = [];
|
|
4233
|
+
this._currPos = 0;
|
|
4234
|
+
this.activeDataSource = null;
|
|
4235
|
+
}
|
|
4236
|
+
current() {
|
|
4237
|
+
if (!this.activeDataSource) {
|
|
4238
|
+
this.hasNext();
|
|
4239
|
+
}
|
|
4240
|
+
return this.activeDataSource.current();
|
|
4241
|
+
}
|
|
4242
|
+
}
|
|
4243
|
+
/**
|
|
4244
|
+
* A simple typescript based reimplementation of streams
|
|
4245
|
+
*
|
|
4246
|
+
* This is the early eval version
|
|
4247
|
+
* for a lazy eval version check, LazyStream, which is api compatible
|
|
4248
|
+
* to this implementation, however with the benefit of being able
|
|
4249
|
+
* to provide infinite data sources and generic data providers, the downside
|
|
4250
|
+
* is, it might be a tad slower in some situations
|
|
4251
|
+
*/
|
|
4252
|
+
class Stream {
|
|
4253
|
+
constructor(...value) {
|
|
4254
|
+
this._limits = -1;
|
|
4255
|
+
this.pos = -1;
|
|
4256
|
+
this.value = value;
|
|
4257
|
+
}
|
|
4258
|
+
static of(...data) {
|
|
4259
|
+
return new Stream(...data);
|
|
4260
|
+
}
|
|
4261
|
+
static ofAssoc(data) {
|
|
4262
|
+
return this.of(...Object.keys(data)).map(key => [key, data[key]]);
|
|
4263
|
+
}
|
|
4264
|
+
static ofDataSource(dataSource) {
|
|
4265
|
+
let value = [];
|
|
4266
|
+
while (dataSource.hasNext()) {
|
|
4267
|
+
value.push(dataSource.next());
|
|
4268
|
+
}
|
|
4269
|
+
return new Stream(...value);
|
|
4270
|
+
}
|
|
4271
|
+
static ofDomQuery(value) {
|
|
4272
|
+
return Stream.of(...value.asArray);
|
|
4273
|
+
}
|
|
4274
|
+
static ofConfig(value) {
|
|
4275
|
+
return Stream.of(...Object.keys(value.value)).map(key => [key, value.value[key]]);
|
|
4276
|
+
}
|
|
4277
|
+
current() {
|
|
4278
|
+
if (this.pos == -1) {
|
|
4279
|
+
return _SourcesCollectors__WEBPACK_IMPORTED_MODULE_1__.ITERATION_STATUS.BEF_STRM;
|
|
4280
|
+
}
|
|
4281
|
+
if (this.pos >= this.value.length) {
|
|
4282
|
+
return _SourcesCollectors__WEBPACK_IMPORTED_MODULE_1__.ITERATION_STATUS.EO_STRM;
|
|
4283
|
+
}
|
|
4284
|
+
return this.value[this.pos];
|
|
4285
|
+
}
|
|
4286
|
+
limits(end) {
|
|
4287
|
+
this._limits = end;
|
|
4288
|
+
return this;
|
|
4289
|
+
}
|
|
4290
|
+
/**
|
|
4291
|
+
* concat for streams, so that you can concat two streams together
|
|
4292
|
+
* @param toAppend
|
|
4293
|
+
*/
|
|
4294
|
+
concat(...toAppend) {
|
|
4295
|
+
let toConcat = [this].concat(toAppend);
|
|
4296
|
+
return Stream.of(...toConcat).flatMap(item => item);
|
|
4297
|
+
}
|
|
4298
|
+
onElem(fn) {
|
|
4299
|
+
for (let cnt = 0; cnt < this.value.length && (this._limits == -1 || cnt < this._limits); cnt++) {
|
|
4300
|
+
if (fn(this.value[cnt], cnt) === false) {
|
|
4301
|
+
break;
|
|
4302
|
+
}
|
|
4303
|
+
}
|
|
4304
|
+
return this;
|
|
4305
|
+
}
|
|
4306
|
+
each(fn) {
|
|
4307
|
+
this.onElem(fn);
|
|
4308
|
+
this.reset();
|
|
4309
|
+
}
|
|
4310
|
+
map(fn) {
|
|
4311
|
+
if (!fn) {
|
|
4312
|
+
fn = (inval) => inval;
|
|
4313
|
+
}
|
|
4314
|
+
let res = [];
|
|
4315
|
+
this.each((item) => {
|
|
4316
|
+
res.push(fn(item));
|
|
4317
|
+
});
|
|
4318
|
+
return new Stream(...res);
|
|
4319
|
+
}
|
|
4320
|
+
/*
|
|
4321
|
+
* we need to implement it to fulfill the contract, although it is used only internally
|
|
4322
|
+
* all values are flattened when accessed anyway, so there is no need to call this method
|
|
4323
|
+
*/
|
|
4324
|
+
flatMap(fn) {
|
|
4325
|
+
let ret = [];
|
|
4326
|
+
this.each(item => {
|
|
4327
|
+
let strmR = fn(item);
|
|
4328
|
+
ret = Array.isArray(strmR) ? ret.concat(strmR) : ret.concat(strmR.value);
|
|
4329
|
+
});
|
|
4330
|
+
return Stream.of(...ret);
|
|
4331
|
+
}
|
|
4332
|
+
filter(fn) {
|
|
4333
|
+
let res = [];
|
|
4334
|
+
this.each((data) => {
|
|
4335
|
+
if (fn(data)) {
|
|
4336
|
+
res.push(data);
|
|
4337
|
+
}
|
|
4338
|
+
});
|
|
4339
|
+
return new Stream(...res);
|
|
4340
|
+
}
|
|
4341
|
+
reduce(fn, startVal = null) {
|
|
4342
|
+
let offset = startVal != null ? 0 : 1;
|
|
4343
|
+
let val1 = startVal != null ? startVal : this.value.length ? this.value[0] : null;
|
|
4344
|
+
for (let cnt = offset; cnt < this.value.length && (this._limits == -1 || cnt < this._limits); cnt++) {
|
|
4345
|
+
val1 = fn(val1, this.value[cnt]);
|
|
4346
|
+
}
|
|
4347
|
+
this.reset();
|
|
4348
|
+
return _Monad__WEBPACK_IMPORTED_MODULE_0__.Optional.fromNullable(val1);
|
|
4349
|
+
}
|
|
4350
|
+
first() {
|
|
4351
|
+
this.reset();
|
|
4352
|
+
return this.value && this.value.length ? _Monad__WEBPACK_IMPORTED_MODULE_0__.Optional.fromNullable(this.value[0]) : _Monad__WEBPACK_IMPORTED_MODULE_0__.Optional.absent;
|
|
4353
|
+
}
|
|
4354
|
+
last() {
|
|
4355
|
+
//could be done via reduce, but is faster this way
|
|
4356
|
+
let length = this._limits > 0 ? Math.min(this._limits, this.value.length) : this.value.length;
|
|
4357
|
+
this.reset();
|
|
4358
|
+
return _Monad__WEBPACK_IMPORTED_MODULE_0__.Optional.fromNullable(length ? this.value[length - 1] : null);
|
|
4359
|
+
}
|
|
4360
|
+
anyMatch(fn) {
|
|
4361
|
+
for (let cnt = 0; cnt < this.value.length && (this._limits == -1 || cnt < this._limits); cnt++) {
|
|
4362
|
+
if (fn(this.value[cnt])) {
|
|
4363
|
+
return true;
|
|
4364
|
+
}
|
|
4365
|
+
}
|
|
4366
|
+
this.reset();
|
|
4367
|
+
return false;
|
|
4368
|
+
}
|
|
4369
|
+
allMatch(fn) {
|
|
4370
|
+
if (!this.value.length) {
|
|
4371
|
+
return false;
|
|
4372
|
+
}
|
|
4373
|
+
let matches = 0;
|
|
4374
|
+
for (let cnt = 0; cnt < this.value.length; cnt++) {
|
|
4375
|
+
if (fn(this.value[cnt])) {
|
|
4376
|
+
matches++;
|
|
4377
|
+
}
|
|
4378
|
+
}
|
|
4379
|
+
this.reset();
|
|
4380
|
+
return matches == this.value.length;
|
|
4381
|
+
}
|
|
4382
|
+
noneMatch(fn) {
|
|
4383
|
+
let matches = 0;
|
|
4384
|
+
for (let cnt = 0; cnt < this.value.length; cnt++) {
|
|
4385
|
+
if (!fn(this.value[cnt])) {
|
|
4386
|
+
matches++;
|
|
4387
|
+
}
|
|
4388
|
+
}
|
|
4389
|
+
this.reset();
|
|
4390
|
+
return matches == this.value.length;
|
|
4391
|
+
}
|
|
4392
|
+
sort(comparator) {
|
|
4393
|
+
let newArr = this.value.slice().sort(comparator);
|
|
4394
|
+
return Stream.of(...newArr);
|
|
4395
|
+
}
|
|
4396
|
+
collect(collector) {
|
|
4397
|
+
this.each(data => collector.collect(data));
|
|
4398
|
+
this.reset();
|
|
4399
|
+
return collector.finalValue;
|
|
4400
|
+
}
|
|
4401
|
+
//-- internally exposed methods needed for the interconnectivity
|
|
4402
|
+
hasNext() {
|
|
4403
|
+
let isLimitsReached = this._limits != -1 && this.pos >= this._limits - 1;
|
|
4404
|
+
let isEndOfArray = this.pos >= this.value.length - 1;
|
|
4405
|
+
return !(isLimitsReached || isEndOfArray);
|
|
4406
|
+
}
|
|
4407
|
+
next() {
|
|
4408
|
+
if (!this.hasNext()) {
|
|
4409
|
+
return null;
|
|
4410
|
+
}
|
|
4411
|
+
this.pos++;
|
|
4412
|
+
return this.value[this.pos];
|
|
4413
|
+
}
|
|
4414
|
+
lookAhead(cnt = 1) {
|
|
4415
|
+
if ((this.pos + cnt) >= this.value.length) {
|
|
4416
|
+
return _SourcesCollectors__WEBPACK_IMPORTED_MODULE_1__.ITERATION_STATUS.EO_STRM;
|
|
4417
|
+
}
|
|
4418
|
+
return this.value[this.pos + cnt];
|
|
4419
|
+
}
|
|
4420
|
+
[Symbol.iterator]() {
|
|
4421
|
+
return {
|
|
4422
|
+
next: () => {
|
|
4423
|
+
let done = !this.hasNext();
|
|
4424
|
+
let val = this.next();
|
|
4425
|
+
return {
|
|
4426
|
+
done: done,
|
|
4427
|
+
value: val
|
|
4428
|
+
};
|
|
4429
|
+
}
|
|
4430
|
+
};
|
|
4431
|
+
}
|
|
4432
|
+
/*get observable(): Observable<T> {
|
|
4433
|
+
return from(this);
|
|
4434
|
+
}*/
|
|
4435
|
+
reset() {
|
|
4436
|
+
this.pos = -1;
|
|
4437
|
+
}
|
|
4438
|
+
}
|
|
4439
|
+
/**
|
|
4440
|
+
* Lazy implementation of a Stream
|
|
4441
|
+
* The idea is to connect the intermediate
|
|
4442
|
+
* streams as datasources like a linked list
|
|
4443
|
+
* with reverse referencing and for special
|
|
4444
|
+
* operations like filtering flatmapping
|
|
4445
|
+
* have intermediate datasources in the list
|
|
4446
|
+
* with specialized functions.
|
|
4447
|
+
*
|
|
4448
|
+
* Sort of a modified pipe valve pattern
|
|
4449
|
+
* the streams are the pipes the intermediate
|
|
4450
|
+
* data sources are the valves
|
|
4451
|
+
*
|
|
4452
|
+
* We then can use passed in functions to control
|
|
4453
|
+
* the flow in the valves
|
|
4454
|
+
*
|
|
4455
|
+
* That way we can have a lazy evaluating stream
|
|
4456
|
+
*
|
|
4457
|
+
* So if an endpoint requests data
|
|
4458
|
+
* a callback trace goes back the stream list
|
|
4459
|
+
* which triggers an operation upwards
|
|
4460
|
+
* which sends data down the drain which then is processed
|
|
4461
|
+
* and filtered until one element hits the endpoint.
|
|
4462
|
+
*
|
|
4463
|
+
* That is repeated, until all elements are processed
|
|
4464
|
+
* or an internal limit is hit.
|
|
4465
|
+
*
|
|
4466
|
+
*/
|
|
4467
|
+
class LazyStream {
|
|
4468
|
+
static of(...values) {
|
|
4469
|
+
return new LazyStream(new _SourcesCollectors__WEBPACK_IMPORTED_MODULE_1__.ArrayStreamDataSource(...values));
|
|
4470
|
+
}
|
|
4471
|
+
static ofAssoc(data) {
|
|
4472
|
+
return this.of(...Object.keys(data)).map(key => [key, data[key]]);
|
|
4473
|
+
}
|
|
4474
|
+
static ofStreamDataSource(value) {
|
|
4475
|
+
return new LazyStream(value);
|
|
4476
|
+
}
|
|
4477
|
+
static ofDomQuery(value) {
|
|
4478
|
+
return LazyStream.of(...value.asArray);
|
|
4479
|
+
}
|
|
4480
|
+
static ofConfig(value) {
|
|
4481
|
+
return LazyStream.of(...Object.keys(value.value)).map(key => [key, value.value[key]]);
|
|
4482
|
+
}
|
|
4483
|
+
constructor(parent) {
|
|
4484
|
+
this._limits = -1;
|
|
4485
|
+
/*
|
|
4486
|
+
* needed to have the limits check working
|
|
4487
|
+
* we need to keep track of the current position
|
|
4488
|
+
* in the stream
|
|
4489
|
+
*/
|
|
4490
|
+
this.pos = -1;
|
|
4491
|
+
this.dataSource = parent;
|
|
4492
|
+
}
|
|
4493
|
+
hasNext() {
|
|
4494
|
+
if (this.isOverLimits()) {
|
|
4495
|
+
return false;
|
|
4496
|
+
}
|
|
4497
|
+
return this.dataSource.hasNext();
|
|
4498
|
+
}
|
|
4499
|
+
next() {
|
|
4500
|
+
let next = this.dataSource.next();
|
|
4501
|
+
// @ts-ignore
|
|
4502
|
+
this.pos++;
|
|
4503
|
+
return next;
|
|
4504
|
+
}
|
|
4505
|
+
lookAhead(cnt = 1) {
|
|
4506
|
+
return this.dataSource.lookAhead(cnt);
|
|
4507
|
+
}
|
|
4508
|
+
current() {
|
|
4509
|
+
return this.dataSource.current();
|
|
4510
|
+
}
|
|
4511
|
+
reset() {
|
|
4512
|
+
this.dataSource.reset();
|
|
4513
|
+
this.pos = -1;
|
|
4514
|
+
this._limits = -1;
|
|
4515
|
+
}
|
|
4516
|
+
/**
|
|
4517
|
+
* concat for streams, so that you can concat two streams together
|
|
4518
|
+
* @param toAppend
|
|
4519
|
+
*/
|
|
4520
|
+
concat(...toAppend) {
|
|
4521
|
+
//this.dataSource = new MultiStreamDatasource<T>(this, ... toAppend);
|
|
4522
|
+
//return this;
|
|
4523
|
+
return LazyStream.ofStreamDataSource(new _SourcesCollectors__WEBPACK_IMPORTED_MODULE_1__.MultiStreamDatasource(this, toAppend));
|
|
4524
|
+
//return LazyStream.of(<IStream<T>>this, ...toAppend).flatMap(item => item);
|
|
4525
|
+
}
|
|
4526
|
+
nextFilter(fn) {
|
|
4527
|
+
if (this.hasNext()) {
|
|
4528
|
+
let newVal = this.next();
|
|
4529
|
+
if (!fn(newVal)) {
|
|
4530
|
+
return this.nextFilter(fn);
|
|
4531
|
+
}
|
|
4532
|
+
return newVal;
|
|
4533
|
+
}
|
|
4534
|
+
return null;
|
|
4535
|
+
}
|
|
4536
|
+
limits(max) {
|
|
4537
|
+
this._limits = max;
|
|
4538
|
+
return this;
|
|
4539
|
+
}
|
|
4540
|
+
//main stream methods
|
|
4541
|
+
collect(collector) {
|
|
4542
|
+
while (this.hasNext()) {
|
|
4543
|
+
let t = this.next();
|
|
4544
|
+
collector.collect(t);
|
|
4545
|
+
}
|
|
4546
|
+
this.reset();
|
|
4547
|
+
return collector.finalValue;
|
|
4548
|
+
}
|
|
4549
|
+
onElem(fn) {
|
|
4550
|
+
return new LazyStream(new _SourcesCollectors__WEBPACK_IMPORTED_MODULE_1__.MappedStreamDataSource((el) => {
|
|
4551
|
+
if (fn(el, this.pos) === false) {
|
|
4552
|
+
this.stop();
|
|
4553
|
+
}
|
|
4554
|
+
return el;
|
|
4555
|
+
}, this));
|
|
4556
|
+
}
|
|
4557
|
+
filter(fn) {
|
|
4558
|
+
return new LazyStream(new _SourcesCollectors__WEBPACK_IMPORTED_MODULE_1__.FilteredStreamDatasource(fn, this));
|
|
4559
|
+
}
|
|
4560
|
+
map(fn) {
|
|
4561
|
+
return new LazyStream(new _SourcesCollectors__WEBPACK_IMPORTED_MODULE_1__.MappedStreamDataSource(fn, this));
|
|
4562
|
+
}
|
|
4563
|
+
flatMap(fn) {
|
|
4564
|
+
return new LazyStream(new FlatMapStreamDataSource(fn, this));
|
|
4565
|
+
}
|
|
4566
|
+
//endpoint
|
|
4567
|
+
each(fn) {
|
|
4568
|
+
while (this.hasNext()) {
|
|
4569
|
+
if (fn(this.next()) === false) {
|
|
4570
|
+
this.stop();
|
|
4571
|
+
}
|
|
4572
|
+
}
|
|
4573
|
+
this.reset();
|
|
4574
|
+
}
|
|
4575
|
+
reduce(fn, startVal = null) {
|
|
4576
|
+
if (!this.hasNext()) {
|
|
4577
|
+
return _Monad__WEBPACK_IMPORTED_MODULE_0__.Optional.absent;
|
|
4578
|
+
}
|
|
4579
|
+
let value1;
|
|
4580
|
+
let value2 = _SourcesCollectors__WEBPACK_IMPORTED_MODULE_1__.ITERATION_STATUS.EO_STRM;
|
|
4581
|
+
if (startVal != null) {
|
|
4582
|
+
value1 = startVal;
|
|
4583
|
+
value2 = this.next();
|
|
4584
|
+
}
|
|
4585
|
+
else {
|
|
4586
|
+
value1 = this.next();
|
|
4587
|
+
if (!this.hasNext()) {
|
|
4588
|
+
return _Monad__WEBPACK_IMPORTED_MODULE_0__.Optional.fromNullable(value1);
|
|
4589
|
+
}
|
|
4590
|
+
value2 = this.next();
|
|
4591
|
+
}
|
|
4592
|
+
value1 = fn(value1, value2);
|
|
4593
|
+
while (this.hasNext()) {
|
|
4594
|
+
value2 = this.next();
|
|
4595
|
+
value1 = fn(value1, value2);
|
|
4596
|
+
}
|
|
4597
|
+
this.reset();
|
|
4598
|
+
return _Monad__WEBPACK_IMPORTED_MODULE_0__.Optional.fromNullable(value1);
|
|
4599
|
+
}
|
|
4600
|
+
last() {
|
|
4601
|
+
if (!this.hasNext()) {
|
|
4602
|
+
return _Monad__WEBPACK_IMPORTED_MODULE_0__.Optional.absent;
|
|
4603
|
+
}
|
|
4604
|
+
return this.reduce((el1, el2) => el2);
|
|
4605
|
+
}
|
|
4606
|
+
first() {
|
|
4607
|
+
this.reset();
|
|
4608
|
+
if (!this.hasNext()) {
|
|
4609
|
+
return _Monad__WEBPACK_IMPORTED_MODULE_0__.Optional.absent;
|
|
4610
|
+
}
|
|
4611
|
+
return _Monad__WEBPACK_IMPORTED_MODULE_0__.Optional.fromNullable(this.next());
|
|
4612
|
+
}
|
|
4613
|
+
anyMatch(fn) {
|
|
4614
|
+
while (this.hasNext()) {
|
|
4615
|
+
if (fn(this.next())) {
|
|
4616
|
+
return true;
|
|
4617
|
+
}
|
|
4618
|
+
}
|
|
4619
|
+
return false;
|
|
4620
|
+
}
|
|
4621
|
+
allMatch(fn) {
|
|
4622
|
+
while (this.hasNext()) {
|
|
4623
|
+
if (!fn(this.next())) {
|
|
4624
|
+
return false;
|
|
4625
|
+
}
|
|
4626
|
+
}
|
|
4627
|
+
return true;
|
|
4628
|
+
}
|
|
4629
|
+
noneMatch(fn) {
|
|
4630
|
+
while (this.hasNext()) {
|
|
4631
|
+
if (fn(this.next())) {
|
|
4632
|
+
return false;
|
|
4633
|
+
}
|
|
4634
|
+
}
|
|
4635
|
+
return true;
|
|
4636
|
+
}
|
|
4637
|
+
sort(comparator) {
|
|
4638
|
+
let arr = this.collect(new _SourcesCollectors__WEBPACK_IMPORTED_MODULE_1__.ArrayCollector());
|
|
4639
|
+
arr = arr.sort(comparator);
|
|
4640
|
+
return LazyStream.of(...arr);
|
|
4641
|
+
}
|
|
4642
|
+
get value() {
|
|
4643
|
+
return this.collect(new _SourcesCollectors__WEBPACK_IMPORTED_MODULE_1__.ArrayCollector());
|
|
4644
|
+
}
|
|
4645
|
+
[Symbol.iterator]() {
|
|
4646
|
+
return {
|
|
4647
|
+
next: () => {
|
|
4648
|
+
let done = !this.hasNext();
|
|
4649
|
+
let val = this.next();
|
|
4650
|
+
return {
|
|
4651
|
+
done: done,
|
|
4652
|
+
value: val
|
|
4653
|
+
};
|
|
4654
|
+
}
|
|
4655
|
+
};
|
|
4656
|
+
}
|
|
4657
|
+
/*get observable(): Observable<T> {
|
|
4658
|
+
return from(this);
|
|
4659
|
+
}*/
|
|
4660
|
+
stop() {
|
|
4661
|
+
this.pos = this._limits + 1000000000;
|
|
4662
|
+
this._limits = 0;
|
|
4663
|
+
}
|
|
4664
|
+
isOverLimits() {
|
|
4665
|
+
return this._limits != -1 && this.pos >= this._limits - 1;
|
|
4666
|
+
}
|
|
4667
|
+
}
|
|
4668
|
+
/**
|
|
4669
|
+
* 1.0 backwards compatibility functions
|
|
4670
|
+
*
|
|
4671
|
+
* this restores the stream and lazy stream
|
|
4672
|
+
* property on DomQuery on prototype level
|
|
4673
|
+
*
|
|
4674
|
+
*/
|
|
4675
|
+
Object.defineProperty(_DomQuery__WEBPACK_IMPORTED_MODULE_2__.DomQuery.prototype, "stream", {
|
|
4676
|
+
get: function stream() {
|
|
4677
|
+
return Stream.ofDomQuery(this);
|
|
4678
|
+
}
|
|
4679
|
+
});
|
|
4680
|
+
Object.defineProperty(_DomQuery__WEBPACK_IMPORTED_MODULE_2__.DomQuery.prototype, "lazyStream", {
|
|
4681
|
+
get: function lazyStream() {
|
|
4682
|
+
return LazyStream.ofDomQuery(this);
|
|
4683
|
+
}
|
|
4684
|
+
});
|
|
4685
|
+
|
|
4686
|
+
|
|
4687
|
+
/***/ },
|
|
4688
|
+
|
|
4689
|
+
/***/ "./node_modules/mona-dish/src/main/typescript/TagBuilder.ts"
|
|
4690
|
+
/*!******************************************************************!*\
|
|
4691
|
+
!*** ./node_modules/mona-dish/src/main/typescript/TagBuilder.ts ***!
|
|
4692
|
+
\******************************************************************/
|
|
4693
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
4694
|
+
|
|
4695
|
+
__webpack_require__.r(__webpack_exports__);
|
|
4696
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
4697
|
+
/* harmony export */ TagBuilder: () => (/* binding */ TagBuilder)
|
|
4698
|
+
/* harmony export */ });
|
|
4699
|
+
/* harmony import */ var _DomQuery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./DomQuery */ "./node_modules/mona-dish/src/main/typescript/DomQuery.ts");
|
|
4700
|
+
/* harmony import */ var _Global__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Global */ "./node_modules/mona-dish/src/main/typescript/Global.ts");
|
|
4701
|
+
/*!
|
|
4702
|
+
* Licensed to the Apache Software Foundation (ASF) under one or more
|
|
4703
|
+
* contributor license agreements. See the NOTICE file distributed with
|
|
4704
|
+
* this work for additional information regarding copyright ownership.
|
|
4705
|
+
* The ASF licenses this file to you under the Apache License, Version 2.0
|
|
4706
|
+
* (the "License"); you may not use this file except in compliance with
|
|
4707
|
+
* the License. You may obtain a copy of the License at
|
|
4708
|
+
*
|
|
4709
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
4710
|
+
*
|
|
4711
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
4712
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
4713
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
4714
|
+
* See the License for the specific language governing permissions and
|
|
4715
|
+
* limitations under the License.
|
|
4716
|
+
*/
|
|
4717
|
+
//poliyfill from @webcomponents/webcomponentsjs
|
|
4718
|
+
|
|
4719
|
+
|
|
4720
|
+
if ("undefined" != typeof _Global__WEBPACK_IMPORTED_MODULE_1__._global$) {
|
|
4721
|
+
(function () {
|
|
4722
|
+
if (void 0 === (0,_Global__WEBPACK_IMPORTED_MODULE_1__._global$)().Reflect || void 0 === (0,_Global__WEBPACK_IMPORTED_MODULE_1__._global$)().customElements || ((0,_Global__WEBPACK_IMPORTED_MODULE_1__._global$)().customElements).polyfillWrapFlushCallback)
|
|
4723
|
+
return;
|
|
4724
|
+
const a = HTMLElement;
|
|
4725
|
+
(0,_Global__WEBPACK_IMPORTED_MODULE_1__._global$)().HTMLElement = {
|
|
4726
|
+
HTMLElement: function HTMLElement() {
|
|
4727
|
+
return Reflect.construct(a, [], this.constructor);
|
|
4728
|
+
}
|
|
4729
|
+
}.HTMLElement, HTMLElement.prototype = a.prototype, HTMLElement.prototype.constructor = HTMLElement, Object.setPrototypeOf(HTMLElement, a);
|
|
4730
|
+
})();
|
|
4731
|
+
}
|
|
4732
|
+
/**
|
|
4733
|
+
* beginning custom tag support
|
|
4734
|
+
*
|
|
4735
|
+
* This api is still experimental
|
|
4736
|
+
* and might be interwoven with DomQuery
|
|
4737
|
+
* so it is bound to change
|
|
4738
|
+
*
|
|
4739
|
+
* it follows a builder pattern to allow easier creations
|
|
4740
|
+
* with less code of custom tags
|
|
4741
|
+
*/
|
|
4742
|
+
class TagBuilder {
|
|
4743
|
+
// noinspection JSUnusedGlobalSymbols
|
|
4744
|
+
static withTagName(tagName) {
|
|
4745
|
+
return new TagBuilder(tagName);
|
|
4746
|
+
}
|
|
4747
|
+
// noinspection JSUnusedGlobalSymbols
|
|
4748
|
+
constructor(tagName) {
|
|
4749
|
+
this.extendsType = HTMLElement;
|
|
4750
|
+
this.observedAttrs = [];
|
|
4751
|
+
this.tagName = tagName;
|
|
4752
|
+
}
|
|
4753
|
+
// noinspection JSUnusedGlobalSymbols
|
|
4754
|
+
withObservedAttributes(...oAttrs) {
|
|
4755
|
+
this.observedAttrs = oAttrs;
|
|
4756
|
+
}
|
|
4757
|
+
// noinspection JSUnusedGlobalSymbols
|
|
4758
|
+
withConnectedCallback(callback) {
|
|
4759
|
+
this.connectedCallback = callback;
|
|
4760
|
+
return this;
|
|
4761
|
+
}
|
|
4762
|
+
// noinspection JSUnusedGlobalSymbols
|
|
4763
|
+
withDisconnectedCallback(callback) {
|
|
4764
|
+
this.disconnectedCallback = callback;
|
|
4765
|
+
return this;
|
|
4766
|
+
}
|
|
4767
|
+
// noinspection JSUnusedGlobalSymbols
|
|
4768
|
+
withAdoptedCallback(callback) {
|
|
4769
|
+
this.adoptedCallback = callback;
|
|
4770
|
+
return this;
|
|
4771
|
+
}
|
|
4772
|
+
// noinspection JSUnusedGlobalSymbols
|
|
4773
|
+
withAttributeChangedCallback(callback) {
|
|
4774
|
+
this.attributeChangedCallback = callback;
|
|
4775
|
+
return this;
|
|
4776
|
+
}
|
|
4777
|
+
// noinspection JSUnusedGlobalSymbols
|
|
4778
|
+
withExtendsType(extendsType) {
|
|
4779
|
+
this.extendsType = extendsType;
|
|
4780
|
+
return this;
|
|
4781
|
+
}
|
|
4782
|
+
// noinspection JSUnusedGlobalSymbols
|
|
4783
|
+
withOptions(theOptions) {
|
|
4784
|
+
this.theOptions = theOptions;
|
|
4785
|
+
return this;
|
|
4786
|
+
}
|
|
4787
|
+
// noinspection JSUnusedGlobalSymbols
|
|
4788
|
+
withClass(clazz) {
|
|
4789
|
+
if (this.markup) {
|
|
4790
|
+
throw Error("Markup already defined, markup must be set in the class");
|
|
4791
|
+
}
|
|
4792
|
+
this.clazz = clazz;
|
|
4793
|
+
return this;
|
|
4794
|
+
}
|
|
4795
|
+
// noinspection JSUnusedGlobalSymbols
|
|
4796
|
+
withMarkup(markup) {
|
|
4797
|
+
if (this.clazz) {
|
|
4798
|
+
throw Error("Class already defined, markup must be set in the class");
|
|
4799
|
+
}
|
|
4800
|
+
this.markup = markup;
|
|
4801
|
+
return this;
|
|
4802
|
+
}
|
|
4803
|
+
// noinspection JSUnusedGlobalSymbols
|
|
4804
|
+
register() {
|
|
4805
|
+
if (!this.clazz && !this.markup) {
|
|
4806
|
+
throw Error("Class or markup must be defined");
|
|
4807
|
+
}
|
|
4808
|
+
if (this.clazz) {
|
|
4809
|
+
let applyCallback = (name) => {
|
|
4810
|
+
let outerCallback = this[name];
|
|
4811
|
+
let protoCallback = this.clazz.prototype[name];
|
|
4812
|
+
let finalCallback = outerCallback || protoCallback;
|
|
4813
|
+
if (finalCallback) {
|
|
4814
|
+
this.clazz.prototype[name] = function () {
|
|
4815
|
+
if (outerCallback) {
|
|
4816
|
+
finalCallback.apply(_DomQuery__WEBPACK_IMPORTED_MODULE_0__.DomQuery.byId(this));
|
|
4817
|
+
}
|
|
4818
|
+
else {
|
|
4819
|
+
protoCallback.apply(this);
|
|
4820
|
+
}
|
|
4821
|
+
};
|
|
4822
|
+
}
|
|
4823
|
+
};
|
|
4824
|
+
applyCallback("connectedCallback");
|
|
4825
|
+
applyCallback("disconnectedCallback");
|
|
4826
|
+
applyCallback("adoptedCallback");
|
|
4827
|
+
applyCallback("attributeChangedCallback");
|
|
4828
|
+
//TODO how do we handle the oAttrs?
|
|
4829
|
+
if (this.observedAttrs.length) {
|
|
4830
|
+
Object.defineProperty(this.clazz.prototype, "observedAttributes", {
|
|
4831
|
+
get() {
|
|
4832
|
+
return this.observedAttrs;
|
|
4833
|
+
}
|
|
4834
|
+
});
|
|
4835
|
+
}
|
|
4836
|
+
(0,_Global__WEBPACK_IMPORTED_MODULE_1__._global$)().customElements.define(this.tagName, this.clazz, this.theOptions || null);
|
|
4837
|
+
}
|
|
4838
|
+
else {
|
|
4839
|
+
let _t_ = this;
|
|
4840
|
+
let applyCallback = (name, scope) => {
|
|
4841
|
+
if (_t_[name]) {
|
|
4842
|
+
_t_[name].apply(_DomQuery__WEBPACK_IMPORTED_MODULE_0__.DomQuery.byId(scope));
|
|
4843
|
+
}
|
|
4844
|
+
};
|
|
4845
|
+
(0,_Global__WEBPACK_IMPORTED_MODULE_1__._global$)().customElements.define(this.tagName, class extends this.extendsType {
|
|
4846
|
+
constructor() {
|
|
4847
|
+
super();
|
|
4848
|
+
this.innerHTML = _t_.markup;
|
|
4849
|
+
}
|
|
4850
|
+
// noinspection JSUnusedGlobalSymbols
|
|
4851
|
+
static get observedAttributes() {
|
|
4852
|
+
return _t_.observedAttrs;
|
|
4853
|
+
}
|
|
4854
|
+
// noinspection JSUnusedGlobalSymbols
|
|
4855
|
+
connectedCallback() {
|
|
4856
|
+
applyCallback("connectedCallback", this);
|
|
4857
|
+
}
|
|
4858
|
+
// noinspection JSUnusedGlobalSymbols
|
|
4859
|
+
disconnectedCallback() {
|
|
4860
|
+
applyCallback("disconnectedCallback", this);
|
|
4861
|
+
}
|
|
4862
|
+
// noinspection JSUnusedGlobalSymbols
|
|
4863
|
+
adoptedCallback() {
|
|
4864
|
+
applyCallback("adoptedCallback", this);
|
|
4865
|
+
}
|
|
4866
|
+
// noinspection JSUnusedGlobalSymbols
|
|
4867
|
+
attributeChangedCallback() {
|
|
4868
|
+
applyCallback("attributeChangedCallback", this);
|
|
4869
|
+
}
|
|
4870
|
+
}, this.theOptions || null);
|
|
4871
|
+
}
|
|
4872
|
+
}
|
|
4873
|
+
}
|
|
4874
|
+
|
|
4875
|
+
|
|
3797
4876
|
/***/ },
|
|
3798
4877
|
|
|
3799
4878
|
/***/ "./node_modules/mona-dish/src/main/typescript/XmlQuery.ts"
|
|
@@ -3901,36 +4980,57 @@ const XQ = XMLQuery;
|
|
|
3901
4980
|
|
|
3902
4981
|
__webpack_require__.r(__webpack_exports__);
|
|
3903
4982
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
3904
|
-
/* harmony export */
|
|
3905
|
-
/* harmony export */
|
|
3906
|
-
/* harmony export */
|
|
3907
|
-
/* harmony export */
|
|
4983
|
+
/* harmony export */ ArrayCollector: () => (/* reexport safe */ _SourcesCollectors__WEBPACK_IMPORTED_MODULE_6__.ArrayCollector),
|
|
4984
|
+
/* harmony export */ ArrayStreamDataSource: () => (/* reexport safe */ _SourcesCollectors__WEBPACK_IMPORTED_MODULE_6__.ArrayStreamDataSource),
|
|
4985
|
+
/* harmony export */ Assoc: () => (/* reexport module object */ _AssocArray__WEBPACK_IMPORTED_MODULE_7__),
|
|
4986
|
+
/* harmony export */ AssocArrayCollector: () => (/* reexport safe */ _SourcesCollectors__WEBPACK_IMPORTED_MODULE_6__.AssocArrayCollector),
|
|
4987
|
+
/* harmony export */ CONFIG_ANY: () => (/* reexport safe */ _Config__WEBPACK_IMPORTED_MODULE_8__.CONFIG_ANY),
|
|
4988
|
+
/* harmony export */ CONFIG_VALUE: () => (/* reexport safe */ _Config__WEBPACK_IMPORTED_MODULE_8__.CONFIG_VALUE),
|
|
4989
|
+
/* harmony export */ CancellablePromise: () => (/* reexport safe */ _Promise__WEBPACK_IMPORTED_MODULE_3__.CancellablePromise),
|
|
4990
|
+
/* harmony export */ Config: () => (/* reexport safe */ _Config__WEBPACK_IMPORTED_MODULE_8__.Config),
|
|
4991
|
+
/* harmony export */ ConfigCollector: () => (/* reexport safe */ _SourcesCollectors__WEBPACK_IMPORTED_MODULE_6__.ConfigCollector),
|
|
3908
4992
|
/* harmony export */ DQ: () => (/* reexport safe */ _DomQuery__WEBPACK_IMPORTED_MODULE_0__.DQ),
|
|
3909
4993
|
/* harmony export */ DQ$: () => (/* reexport safe */ _DomQuery__WEBPACK_IMPORTED_MODULE_0__.DQ$),
|
|
3910
4994
|
/* harmony export */ DomQuery: () => (/* reexport safe */ _DomQuery__WEBPACK_IMPORTED_MODULE_0__.DomQuery),
|
|
3911
4995
|
/* harmony export */ DomQueryCollector: () => (/* reexport safe */ _DomQuery__WEBPACK_IMPORTED_MODULE_0__.DomQueryCollector),
|
|
3912
4996
|
/* harmony export */ ElementAttribute: () => (/* reexport safe */ _DomQuery__WEBPACK_IMPORTED_MODULE_0__.ElementAttribute),
|
|
3913
|
-
/* harmony export */ Es2019Array: () => (/* reexport safe */
|
|
4997
|
+
/* harmony export */ Es2019Array: () => (/* reexport safe */ _Es2019Array__WEBPACK_IMPORTED_MODULE_9__.Es2019Array),
|
|
4998
|
+
/* harmony export */ FilteredStreamDatasource: () => (/* reexport safe */ _SourcesCollectors__WEBPACK_IMPORTED_MODULE_6__.FilteredStreamDatasource),
|
|
4999
|
+
/* harmony export */ FlatMapStreamDataSource: () => (/* reexport safe */ _Stream__WEBPACK_IMPORTED_MODULE_5__.FlatMapStreamDataSource),
|
|
5000
|
+
/* harmony export */ FormDataCollector: () => (/* reexport safe */ _SourcesCollectors__WEBPACK_IMPORTED_MODULE_6__.FormDataCollector),
|
|
3914
5001
|
/* harmony export */ Lang: () => (/* reexport safe */ _Lang__WEBPACK_IMPORTED_MODULE_1__.Lang),
|
|
5002
|
+
/* harmony export */ LazyStream: () => (/* reexport safe */ _Stream__WEBPACK_IMPORTED_MODULE_5__.LazyStream),
|
|
5003
|
+
/* harmony export */ MappedStreamDataSource: () => (/* reexport safe */ _SourcesCollectors__WEBPACK_IMPORTED_MODULE_6__.MappedStreamDataSource),
|
|
3915
5004
|
/* harmony export */ Monad: () => (/* reexport safe */ _Monad__WEBPACK_IMPORTED_MODULE_2__.Monad),
|
|
5005
|
+
/* harmony export */ MultiStreamDatasource: () => (/* reexport safe */ _SourcesCollectors__WEBPACK_IMPORTED_MODULE_6__.MultiStreamDatasource),
|
|
3916
5006
|
/* harmony export */ Optional: () => (/* reexport safe */ _Monad__WEBPACK_IMPORTED_MODULE_2__.Optional),
|
|
5007
|
+
/* harmony export */ PromiseStatus: () => (/* reexport safe */ _Promise__WEBPACK_IMPORTED_MODULE_3__.PromiseStatus),
|
|
5008
|
+
/* harmony export */ QueryFormDataCollector: () => (/* reexport safe */ _SourcesCollectors__WEBPACK_IMPORTED_MODULE_6__.QueryFormDataCollector),
|
|
5009
|
+
/* harmony export */ QueryFormStringCollector: () => (/* reexport safe */ _SourcesCollectors__WEBPACK_IMPORTED_MODULE_6__.QueryFormStringCollector),
|
|
5010
|
+
/* harmony export */ SequenceDataSource: () => (/* reexport safe */ _SourcesCollectors__WEBPACK_IMPORTED_MODULE_6__.SequenceDataSource),
|
|
5011
|
+
/* harmony export */ Stream: () => (/* reexport safe */ _Stream__WEBPACK_IMPORTED_MODULE_5__.Stream),
|
|
5012
|
+
/* harmony export */ TagBuilder: () => (/* reexport safe */ _TagBuilder__WEBPACK_IMPORTED_MODULE_10__.TagBuilder),
|
|
3917
5013
|
/* harmony export */ ValueEmbedder: () => (/* reexport safe */ _Monad__WEBPACK_IMPORTED_MODULE_2__.ValueEmbedder),
|
|
3918
|
-
/* harmony export */ XMLQuery: () => (/* reexport safe */
|
|
3919
|
-
/* harmony export */ XQ: () => (/* reexport safe */
|
|
3920
|
-
/* harmony export */ _Es2019Array: () => (/* reexport safe */
|
|
3921
|
-
/* harmony export */ append: () => (/* reexport safe */
|
|
3922
|
-
/* harmony export */ assign: () => (/* reexport safe */
|
|
3923
|
-
/* harmony export */ assignIf: () => (/* reexport safe */
|
|
3924
|
-
/* harmony export */ shallowMerge: () => (/* reexport safe */
|
|
3925
|
-
/* harmony export */ simpleShallowMerge: () => (/* reexport safe */
|
|
5014
|
+
/* harmony export */ XMLQuery: () => (/* reexport safe */ _XmlQuery__WEBPACK_IMPORTED_MODULE_4__.XMLQuery),
|
|
5015
|
+
/* harmony export */ XQ: () => (/* reexport safe */ _XmlQuery__WEBPACK_IMPORTED_MODULE_4__.XQ),
|
|
5016
|
+
/* harmony export */ _Es2019Array: () => (/* reexport safe */ _Es2019Array__WEBPACK_IMPORTED_MODULE_9__._Es2019Array),
|
|
5017
|
+
/* harmony export */ append: () => (/* reexport safe */ _AssocArray__WEBPACK_IMPORTED_MODULE_7__.append),
|
|
5018
|
+
/* harmony export */ assign: () => (/* reexport safe */ _AssocArray__WEBPACK_IMPORTED_MODULE_7__.assign),
|
|
5019
|
+
/* harmony export */ assignIf: () => (/* reexport safe */ _AssocArray__WEBPACK_IMPORTED_MODULE_7__.assignIf),
|
|
5020
|
+
/* harmony export */ shallowMerge: () => (/* reexport safe */ _AssocArray__WEBPACK_IMPORTED_MODULE_7__.shallowMerge),
|
|
5021
|
+
/* harmony export */ simpleShallowMerge: () => (/* reexport safe */ _AssocArray__WEBPACK_IMPORTED_MODULE_7__.simpleShallowMerge)
|
|
3926
5022
|
/* harmony export */ });
|
|
3927
5023
|
/* harmony import */ var _DomQuery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./DomQuery */ "./node_modules/mona-dish/src/main/typescript/DomQuery.ts");
|
|
3928
5024
|
/* harmony import */ var _Lang__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Lang */ "./node_modules/mona-dish/src/main/typescript/Lang.ts");
|
|
3929
5025
|
/* harmony import */ var _Monad__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Monad */ "./node_modules/mona-dish/src/main/typescript/Monad.ts");
|
|
3930
|
-
/* harmony import */ var
|
|
3931
|
-
/* harmony import */ var
|
|
3932
|
-
/* harmony import */ var
|
|
3933
|
-
/* harmony import */ var
|
|
5026
|
+
/* harmony import */ var _Promise__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Promise */ "./node_modules/mona-dish/src/main/typescript/Promise.ts");
|
|
5027
|
+
/* harmony import */ var _XmlQuery__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./XmlQuery */ "./node_modules/mona-dish/src/main/typescript/XmlQuery.ts");
|
|
5028
|
+
/* harmony import */ var _Stream__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Stream */ "./node_modules/mona-dish/src/main/typescript/Stream.ts");
|
|
5029
|
+
/* harmony import */ var _SourcesCollectors__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./SourcesCollectors */ "./node_modules/mona-dish/src/main/typescript/SourcesCollectors.ts");
|
|
5030
|
+
/* harmony import */ var _AssocArray__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./AssocArray */ "./node_modules/mona-dish/src/main/typescript/AssocArray.ts");
|
|
5031
|
+
/* harmony import */ var _Config__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Config */ "./node_modules/mona-dish/src/main/typescript/Config.ts");
|
|
5032
|
+
/* harmony import */ var _Es2019Array__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./Es2019Array */ "./node_modules/mona-dish/src/main/typescript/Es2019Array.ts");
|
|
5033
|
+
/* harmony import */ var _TagBuilder__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./TagBuilder */ "./node_modules/mona-dish/src/main/typescript/TagBuilder.ts");
|
|
3934
5034
|
/*!
|
|
3935
5035
|
* Licensed to the Apache Software Foundation (ASF) under one
|
|
3936
5036
|
* or more contributor license agreements. See the NOTICE file
|
|
@@ -3961,6 +5061,10 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
3961
5061
|
|
|
3962
5062
|
|
|
3963
5063
|
|
|
5064
|
+
|
|
5065
|
+
|
|
5066
|
+
|
|
5067
|
+
|
|
3964
5068
|
/***/ },
|
|
3965
5069
|
|
|
3966
5070
|
/***/ "./src/main/typescript/api/_api.ts"
|