@ipp/cli
Version:
An image build orchestrator for the modern web
49 lines (48 loc) • 1.61 kB
JavaScript
;
/**
* Image Processing Pipeline - Copyright (c) Marcus Cemes
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.createStateContext = exports.Status = void 0;
const immer_1 = __importDefault(require("immer"));
const rxjs_1 = require("rxjs");
var Status;
(function (Status) {
Status[Status["READY"] = 0] = "READY";
Status[Status["PROCESSING"] = 1] = "PROCESSING";
Status[Status["COMPLETE"] = 2] = "COMPLETE";
Status[Status["ERROR"] = 3] = "ERROR";
Status[Status["INTERRUPT"] = 4] = "INTERRUPT";
})(Status = exports.Status || (exports.Status = {}));
function createStateContext(concurrency, manifest, clean) {
const subject = new rxjs_1.BehaviorSubject({
status: Status.READY,
concurrency,
clean,
manifest,
images: {
found: 0,
completed: 0,
failed: 0,
},
});
return {
observable: subject.asObservable(),
getValue: () => subject.getValue(),
update: (fn) => subject.next((0, immer_1.default)(subject.getValue(), (state) => {
fn(state);
})),
complete: () => {
const lastValue = subject.getValue();
subject.complete();
return lastValue;
},
};
}
exports.createStateContext = createStateContext;