(name: string, state: any)
| 222 | env.addGlobal('templateExists', (name) => !!that.registry[name]); |
| 223 | |
| 224 | const render = (name: string, state: any) => new Promise<string>((resolve, reject) => { |
| 225 | const start = Date.now(); |
| 226 | env.render(name, { |
| 227 | page_name: name.split('.')[0], |
| 228 | ...state, |
| 229 | formatJudgeTexts: (texts) => texts.map((text) => { |
| 230 | if (typeof text === 'string') return text; |
| 231 | return state._(text.message).format(...text.params || []) + ((process.env.DEV && text.stack) ? `\n${text.stack}` : ''); |
| 232 | }).join('\n'), |
| 233 | datetimeSpan: (arg0, arg1, arg2) => misc.datetimeSpan(arg0, arg1, arg2, state.handler.user?.timeZone), |
| 234 | ctx: state.handler?.ctx, |
| 235 | perm: PERM, |
| 236 | PRIV, |
| 237 | STATUS, |
| 238 | UiContext: state.handler?.UiContext || {}, |
| 239 | }, (err, res) => { |
| 240 | const end = Date.now(); |
| 241 | if (end - start > 5000) console.error(`Render of ${name} took ${end - start}ms`); |
| 242 | if (err) reject(err); |
| 243 | else resolve(res || ''); |
| 244 | }); |
| 245 | }); |
| 246 | |
| 247 | ctx.server.registerRenderer('ui-default', { |
| 248 | name: 'ui-default', |
no test coverage detected