{"version":3,"file":"index.mjs","sources":["../src/index.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable no-var */\n/* eslint-disable prefer-spread */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { type } from '@jsmini/type';\nimport { extend } from '@jsmini/extend';\nimport { parse } from '@templatejs/parser';\nimport runtime, { Option } from '@templatejs/runtime';\n\nconst { encodeHTML, compress, handelError, o, functionMap, modifierMap } =\n  runtime;\n\nfunction clone(...args: any[]): object {\n  return extend.apply(null, [{}].concat(args) as any);\n}\n\nfunction compiler(tpl: string, opt: Option = o): Function {\n  var mainCode = parse(tpl, opt);\n\n  var headerCode =\n    '\\n' +\n    '    var html = (function (__data__, __modifierMap__) {\\n' +\n    '        var __str__ = \"\", __code__ = \"\";\\n' +\n    '        for(var key in __data__) {\\n' +\n    '            __str__+=(\"var \" + key + \"=__data__[\\'\" + key + \"\\'];\");\\n' +\n    '        }\\n' +\n    '        eval(__str__);\\n\\n';\n\n  var footerCode =\n    '\\n' +\n    '        ;return __code__;\\n' +\n    '    }(__data__, __modifierMap__));\\n' +\n    '    return html;\\n';\n\n  var code = headerCode + mainCode + footerCode;\n  code = code.replace(/[\\r]/g, ' '); // ie 7 8 会报错，不知道为什么\n  try {\n    var Render = new Function('__data__', '__modifierMap__', code);\n    Render.toString = function () {\n      return mainCode;\n    };\n    return Render;\n  } catch (e: any) {\n    e.temp = 'function anonymous(__data__, __modifierMap__) {' + code + '}';\n    throw e;\n  }\n}\n\nfunction compile(tpl: string, opt: Option = o) {\n  opt = clone(o, opt);\n\n  try {\n    var Render = compiler(tpl, opt);\n  } catch (e: any) {\n    e.name = 'CompileError';\n    e.tpl = tpl;\n    e.render = e.temp;\n    delete e.temp;\n    return handelError(e);\n  }\n\n  function render(data: object): string {\n    data = clone(functionMap, data);\n    try {\n      var html = Render(data, modifierMap);\n      html = opt.compress ? compress(html) : html;\n      return html;\n    } catch (e: any) {\n      e.name = 'RenderError';\n      e.tpl = tpl;\n      e.render = Render.toString();\n      return handelError(e)();\n    }\n  }\n\n  render.toString = function () {\n    return Render.toString();\n  };\n  return render;\n}\n\nfunction template(tpl: string, data: object): string;\nfunction template(tpl: string): (data: object) => string;\nfunction template(tpl: string, data?: object) {\n  if (typeof tpl !== 'string') {\n    return '';\n  }\n\n  var fn = compile(tpl);\n  if (type(data) !== 'object') {\n    return fn;\n  }\n\n  return fn(data!);\n}\n\ntemplate.config = function (option: Option) {\n  return runtime.config(option);\n};\n\ntemplate.registerFunction = function (name: string, fn: (param: any) => any) {\n  return runtime.registerFunction(name, fn);\n};\ntemplate.unregisterFunction = function (name: string) {\n  return runtime.unregisterFunction(name);\n};\n\ntemplate.registerModifier = function (name: string, fn: (param: any) => any) {\n  return runtime.registerModifier(name, fn);\n};\ntemplate.unregisterModifier = function (name: string) {\n  return runtime.unregisterModifier(name);\n};\n\n// 兼容runtime, 预编译插件可以引用runtime，也可以引用template\ntemplate.encodeHTML = encodeHTML;\ntemplate.compress = compress;\ntemplate.handelError = handelError;\ntemplate.functionMap = functionMap;\ntemplate.modifierMap = modifierMap;\n\n// 兼容旧版本\ntemplate.__encodeHTML = encodeHTML;\ntemplate.__compress = compress;\ntemplate.__handelError = handelError;\ntemplate.__compile = compile;\n// template.version = '0.7.1';\n\nexport default template;\n"],"names":["encodeHTML","runtime","compress","handelError","o","functionMap","modifierMap","clone","_len","arguments","length","args","Array","_key","extend","apply","concat","compiler","tpl","opt","mainCode","parse","headerCode","footerCode","code","replace","Render","Function","toString","e","temp","compile","name","render","data","html","template","fn","type","config","option","registerFunction","unregisterFunction","registerModifier","unregisterModifier","__encodeHTML","__compress","__handelError","__compile"],"mappings":"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"}