const Errs = { 'ctx-key-exist': 'Contenxt with key: {0} is exist. Pass third argument forceOverride=true to override it.', 'dup-render': 'component has already been rendered.', 'setctx-after-render': "Can't setContext after component has been rendered. Try put setContext code into constructor.", 'bind-attr-not-pub-prop': 'attrName of __bindAttr() requires public property.', 'switch-miss-slot': 'Slot {0} or [DEFAULT_SLOT] of not found.', 'hook-miss-component': 'Unexpect error, global component not found.', 'transition-require-element': 'Children of component must be one and only one html element', 'fc-render-empty': 'Assert failed: function component render result is empty', // 'assert-failed': 'Assert failed, contact developer to report this error.', }; export function throwErr(id: keyof typeof Errs, ...args: unknown[]): never { if (import.meta.env.MODE === 'production') { throw new Error( `Production min error: ${id}. Use development mode or visit https://[todo]/error/${id} for more detail.`, ); } else { let err = Errs[id]; args.forEach((arg, i) => { err = err.replace(new RegExp(`\\{${i}\\}`, 'g'), `${arg}`); }); throw new Error(`${err} Visit https://[todo]/error/${id} for more detail.`); } }