feat: initial commit
This commit is contained in:
124
node_modules/rxjs/_esm2015/internal/observable/generate.js
generated
vendored
Normal file
124
node_modules/rxjs/_esm2015/internal/observable/generate.js
generated
vendored
Normal file
@ -0,0 +1,124 @@
|
||||
import { Observable } from '../Observable';
|
||||
import { identity } from '../util/identity';
|
||||
import { isScheduler } from '../util/isScheduler';
|
||||
export function generate(initialStateOrOptions, condition, iterate, resultSelectorOrObservable, scheduler) {
|
||||
let resultSelector;
|
||||
let initialState;
|
||||
if (arguments.length == 1) {
|
||||
const options = initialStateOrOptions;
|
||||
initialState = options.initialState;
|
||||
condition = options.condition;
|
||||
iterate = options.iterate;
|
||||
resultSelector = options.resultSelector || identity;
|
||||
scheduler = options.scheduler;
|
||||
}
|
||||
else if (resultSelectorOrObservable === undefined || isScheduler(resultSelectorOrObservable)) {
|
||||
initialState = initialStateOrOptions;
|
||||
resultSelector = identity;
|
||||
scheduler = resultSelectorOrObservable;
|
||||
}
|
||||
else {
|
||||
initialState = initialStateOrOptions;
|
||||
resultSelector = resultSelectorOrObservable;
|
||||
}
|
||||
return new Observable(subscriber => {
|
||||
let state = initialState;
|
||||
if (scheduler) {
|
||||
return scheduler.schedule(dispatch, 0, {
|
||||
subscriber,
|
||||
iterate,
|
||||
condition,
|
||||
resultSelector,
|
||||
state
|
||||
});
|
||||
}
|
||||
do {
|
||||
if (condition) {
|
||||
let conditionResult;
|
||||
try {
|
||||
conditionResult = condition(state);
|
||||
}
|
||||
catch (err) {
|
||||
subscriber.error(err);
|
||||
return undefined;
|
||||
}
|
||||
if (!conditionResult) {
|
||||
subscriber.complete();
|
||||
break;
|
||||
}
|
||||
}
|
||||
let value;
|
||||
try {
|
||||
value = resultSelector(state);
|
||||
}
|
||||
catch (err) {
|
||||
subscriber.error(err);
|
||||
return undefined;
|
||||
}
|
||||
subscriber.next(value);
|
||||
if (subscriber.closed) {
|
||||
break;
|
||||
}
|
||||
try {
|
||||
state = iterate(state);
|
||||
}
|
||||
catch (err) {
|
||||
subscriber.error(err);
|
||||
return undefined;
|
||||
}
|
||||
} while (true);
|
||||
return undefined;
|
||||
});
|
||||
}
|
||||
function dispatch(state) {
|
||||
const { subscriber, condition } = state;
|
||||
if (subscriber.closed) {
|
||||
return undefined;
|
||||
}
|
||||
if (state.needIterate) {
|
||||
try {
|
||||
state.state = state.iterate(state.state);
|
||||
}
|
||||
catch (err) {
|
||||
subscriber.error(err);
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
else {
|
||||
state.needIterate = true;
|
||||
}
|
||||
if (condition) {
|
||||
let conditionResult;
|
||||
try {
|
||||
conditionResult = condition(state.state);
|
||||
}
|
||||
catch (err) {
|
||||
subscriber.error(err);
|
||||
return undefined;
|
||||
}
|
||||
if (!conditionResult) {
|
||||
subscriber.complete();
|
||||
return undefined;
|
||||
}
|
||||
if (subscriber.closed) {
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
let value;
|
||||
try {
|
||||
value = state.resultSelector(state.state);
|
||||
}
|
||||
catch (err) {
|
||||
subscriber.error(err);
|
||||
return undefined;
|
||||
}
|
||||
if (subscriber.closed) {
|
||||
return undefined;
|
||||
}
|
||||
subscriber.next(value);
|
||||
if (subscriber.closed) {
|
||||
return undefined;
|
||||
}
|
||||
return this.schedule(state);
|
||||
}
|
||||
//# sourceMappingURL=generate.js.map
|
Reference in New Issue
Block a user