| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- (function attachBackgroundStepRegistry(root, factory) {
- root.MultiPageBackgroundStepRegistry = factory();
- })(typeof self !== 'undefined' ? self : globalThis, function createBackgroundStepRegistryModule() {
- function createStepRegistry(definitions = []) {
- const ordered = (Array.isArray(definitions) ? definitions : [])
- .map((definition) => ({
- id: Number(definition?.id),
- order: Number(definition?.order),
- key: String(definition?.key || '').trim(),
- title: String(definition?.title || '').trim(),
- execute: definition?.execute,
- }))
- .filter((definition) => Number.isFinite(definition.id) && typeof definition.execute === 'function')
- .sort((left, right) => {
- const leftOrder = Number.isFinite(left.order) ? left.order : left.id;
- const rightOrder = Number.isFinite(right.order) ? right.order : right.id;
- return leftOrder - rightOrder;
- });
- const byId = new Map(ordered.map((definition) => [definition.id, definition]));
- function getStepDefinition(step) {
- return byId.get(Number(step)) || null;
- }
- function getOrderedSteps() {
- return ordered.slice();
- }
- function executeStep(step, state) {
- const definition = getStepDefinition(step);
- if (!definition) {
- throw new Error(`未知步骤:${step}`);
- }
- return definition.execute(state);
- }
- return {
- executeStep,
- getOrderedSteps,
- getStepDefinition,
- };
- }
- return {
- createStepRegistry,
- };
- });
|