Fix StartOS 0.4 TypeScript packaging to match SDK API
This commit is contained in:
+47
@@ -0,0 +1,47 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.setupInit = setupInit;
|
||||
exports.setupOnInit = setupOnInit;
|
||||
const util_1 = require("../util");
|
||||
/**
|
||||
* Composes multiple init handlers into a single `ExpectedExports.init`-compatible function.
|
||||
* Handlers are executed sequentially in the order provided.
|
||||
*
|
||||
* @param inits - One or more init handlers to compose
|
||||
*/
|
||||
function setupInit(...inits) {
|
||||
return async (opts) => {
|
||||
for (const idx in inits) {
|
||||
const init = inits[idx];
|
||||
const fn = async () => {
|
||||
let res = () => { };
|
||||
const complete = new Promise((resolve) => {
|
||||
res = resolve;
|
||||
});
|
||||
const e = opts.effects.child(`init_${idx}`);
|
||||
e.constRetry = (0, util_1.once)(() => complete.then(() => fn()).catch(console.error));
|
||||
try {
|
||||
if ('init' in init)
|
||||
await init.init(e, opts.kind);
|
||||
else
|
||||
await init(e, opts.kind);
|
||||
}
|
||||
finally {
|
||||
res();
|
||||
}
|
||||
};
|
||||
await fn();
|
||||
}
|
||||
};
|
||||
}
|
||||
/** Normalizes an {@link InitScriptOrFn} into an {@link InitScript} object. */
|
||||
function setupOnInit(onInit) {
|
||||
return 'init' in onInit
|
||||
? onInit
|
||||
: {
|
||||
init: async (effects, kind) => {
|
||||
await onInit(effects, kind);
|
||||
},
|
||||
};
|
||||
}
|
||||
//# sourceMappingURL=setupInit.js.map
|
||||
Reference in New Issue
Block a user