├── .gitignore ├── .vscode └── settings.json ├── README.md ├── app ├── css │ ├── app.css │ └── bootstrap.min.css ├── fonts │ ├── glyphicons-halflings-regular.eot │ ├── glyphicons-halflings-regular.svg │ ├── glyphicons-halflings-regular.ttf │ ├── glyphicons-halflings-regular.woff │ └── glyphicons-halflings-regular.woff2 ├── index.html ├── index.js ├── js │ ├── bmfont-writer.js │ └── index.js ├── package-lock.json └── package.json ├── build ├── background.tiff ├── icon.icns ├── icon.ico └── icons │ ├── 1024x1024.png │ ├── 128x128.png │ ├── 16x16.png │ ├── 24x24.png │ ├── 256x256.png │ ├── 32x32.png │ ├── 48x48.png │ ├── 512x512.png │ ├── 64x64.png │ └── 96x96.png └── package.json /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | dist/ 3 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "files.exclude": { 3 | "**/.git": true, 4 | "**/.svn": true, 5 | "**/.hg": true, 6 | "**/CVS": true, 7 | "**/.DS_Store": true, 8 | "**/node_modules": true 9 | } 10 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 使用 Electron 重写了这个工具, 你可以在 [Release Page][1] 下载. 2 | -------------------------------------------------------------------------------- /app/css/app.css: -------------------------------------------------------------------------------- 1 | .table > tbody > tr > td { 2 | vertical-align: middle; 3 | } 4 | 5 | /* 6 | * STYLE 4 7 | */ 8 | 9 | .style-4::-webkit-scrollbar-track 10 | { 11 | -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3); 12 | background-color: #F5F5F5; 13 | } 14 | 15 | .style-4::-webkit-scrollbar 16 | { 17 | width: 10px; 18 | background-color: #F5F5F5; 19 | } 20 | 21 | .style-4::-webkit-scrollbar-thumb 22 | { 23 | background-color: #000000; 24 | border: 2px solid #555555; 25 | } 26 | 27 | 28 | 29 | 30 | 31 | .header-fixed { 32 | width: 100% 33 | } 34 | 35 | .header-fixed > thead, 36 | .header-fixed > tbody, 37 | .header-fixed > thead > tr, 38 | .header-fixed > tbody > tr, 39 | .header-fixed > thead > tr > th, 40 | .header-fixed > tbody > tr > td { 41 | display: block; 42 | } 43 | 44 | .header-fixed > tbody > tr:after, 45 | .header-fixed > thead > tr:after { 46 | content: ' '; 47 | display: block; 48 | visibility: hidden; 49 | clear: both; 50 | } 51 | 52 | .header-fixed > tbody { 53 | overflow-y: auto; 54 | height: 500px; 55 | } 56 | 57 | .header-fixed > tbody > tr > td, 58 | .header-fixed > thead > tr > th { 59 | width: 20%; 60 | float: left; 61 | } -------------------------------------------------------------------------------- /app/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justbilt/convert2fnt/3bee424d3bd9bb5c63c9f544a101c5983ebdc504/app/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /app/fonts/glyphicons-halflings-regular.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | -------------------------------------------------------------------------------- /app/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justbilt/convert2fnt/3bee424d3bd9bb5c63c9f544a101c5983ebdc504/app/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /app/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justbilt/convert2fnt/3bee424d3bd9bb5c63c9f544a101c5983ebdc504/app/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /app/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justbilt/convert2fnt/3bee424d3bd9bb5c63c9f544a101c5983ebdc504/app/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /app/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |
文件名图片尺寸字符操作
27 |
28 |
29 | 30 |
31 |
32 | 33 |
34 |
35 |
36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /app/index.js: -------------------------------------------------------------------------------- 1 | const {app, BrowserWindow, Menu} = require('electron') 2 | const path = require('path') 3 | const url = require('url') 4 | 5 | // 保持一个对于 window 对象的全局引用,如果你不这样做, 6 | // 当 JavaScript 对象被垃圾回收, window 会被自动地关闭 7 | let win 8 | 9 | function createWindow () { 10 | // 创建浏览器窗口。 11 | win = new BrowserWindow({width: 400, height: 670, titleBarStyle: "hiddend-inset", title: app.getName()+"@"+app.getVersion()}); 12 | 13 | win.setMenu(null); 14 | 15 | // 加载应用的 index.html。 16 | win.loadURL(url.format({ 17 | pathname: path.join(__dirname, 'index.html'), 18 | protocol: 'file:', 19 | slashes: true 20 | })) 21 | 22 | // 打开开发者工具。 23 | // win.webContents.openDevTools() 24 | 25 | // 当 window 被关闭,这个事件会被触发。 26 | win.on('closed', () => { 27 | // 取消引用 window 对象,如果你的应用支持多窗口的话, 28 | // 通常会把多个 window 对象存放在一个数组里面, 29 | // 与此同时,你应该删除相应的元素。 30 | win = null 31 | }) 32 | } 33 | 34 | 35 | // Electron 会在初始化后并准备 36 | // 创建浏览器窗口时,调用这个函数。 37 | // 部分 API 在 ready 事件触发后才能使用。 38 | app.on('ready', createWindow) 39 | 40 | // 当全部窗口关闭时退出。 41 | app.on('window-all-closed', () => { 42 | // 在 macOS 上,除非用户用 Cmd + Q 确定地退出, 43 | // 否则绝大部分应用及其菜单栏会保持激活。 44 | if (process.platform !== 'darwin') { 45 | app.quit() 46 | } 47 | }) 48 | 49 | app.on('activate', () => { 50 | console.log("activate") 51 | 52 | // 在这文件,你可以续写应用剩下主进程代码。 53 | // 也可以拆分成几个文件,然后用 require 导入。 54 | if (win === null) { 55 | createWindow() 56 | } 57 | }) 58 | 59 | // 在这文件,你可以续写应用剩下主进程代码。 60 | // 也可以拆分成几个文件,然后用 require 导入。 -------------------------------------------------------------------------------- /app/js/bmfont-writer.js: -------------------------------------------------------------------------------- 1 | // 2 | // info face="Arial-Black" size=30 bold=0 italic=0 charset="" unicode=0 stretchH=100 smooth=1 aa=1 padding=0,0,0,0 spacing=2,2 3 | // common lineHeight=54 base=30 scaleW=319 scaleH=54 pages=1 packed=0 4 | // page id=0 file="attack_num.png" 5 | // chars count=11 6 | // char id=45 x=0 y=0 width=30 height=54 xoffset=0 yoffset=0 xadvance=30 page=0 chnl=0 letter="-" 7 | // char id=48 x=30 y=0 width=30 height=54 xoffset=0 yoffset=0 xadvance=30 page=0 chnl=0 letter="0" 8 | // char id=49 x=60 y=0 width=19 height=54 xoffset=0 yoffset=0 xadvance=19 page=0 chnl=0 letter="1" 9 | // char id=50 x=79 y=0 width=30 height=54 xoffset=0 yoffset=0 xadvance=30 page=0 chnl=0 letter="2" 10 | // char id=51 x=109 y=0 width=30 height=54 xoffset=0 yoffset=0 xadvance=30 page=0 chnl=0 letter="3" 11 | // char id=52 x=139 y=0 width=30 height=54 xoffset=0 yoffset=0 xadvance=30 page=0 chnl=0 letter="4" 12 | // char id=53 x=169 y=0 width=30 height=54 xoffset=0 yoffset=0 xadvance=30 page=0 chnl=0 letter="5" 13 | // char id=54 x=199 y=0 width=30 height=54 xoffset=0 yoffset=0 xadvance=30 page=0 chnl=0 letter="6" 14 | // char id=55 x=229 y=0 width=30 height=54 xoffset=0 yoffset=0 xadvance=30 page=0 chnl=0 letter="7" 15 | // char id=56 x=259 y=0 width=30 height=54 xoffset=0 yoffset=0 xadvance=30 page=0 chnl=0 letter="8" 16 | // char id=57 x=289 y=0 width=30 height=54 xoffset=0 yoffset=0 xadvance=30 page=0 chnl=0 letter="9" 17 | 18 | const fs = require("fs") 19 | const path = require("path"); 20 | const nativeImage = require('electron').nativeImage; 21 | var Jimp = require("jimp"); 22 | 23 | class BMFontWriter { 24 | constructor(){ 25 | this._charList = Array(); 26 | this._font = "Arial" 27 | this._fontSize = 10 28 | } 29 | 30 | setFont(_name, _size) { 31 | this._font = _name; 32 | this._size = _size; 33 | } 34 | 35 | appendItem(_image, _char) { 36 | this._charList.push({image: _image, char: _char}); 37 | } 38 | 39 | _appendLine(_config, _image, _charcode, _char) { 40 | var line = Array(); 41 | 42 | line.push("char"); 43 | line.push("id=" + _charcode); 44 | line.push("x=" + _config.x); 45 | line.push("y=" + _config.y); 46 | line.push("width=" + _image.width); 47 | line.push("height=" + _image.height); 48 | line.push("xoffset=" + 0); 49 | line.push("yoffset=" + 0); 50 | line.push("xadvance=" + _image.width); 51 | line.push("page=" + 0); 52 | line.push("chnl=" + 0); 53 | line.push("page=" + 0); 54 | line.push(String.format("letter=\"{0}\"", _char)); 55 | 56 | _config.lines.push(line.join(" ")); 57 | 58 | _config.x = _config.x + _image.width; 59 | _config.max_h = Math.max(_config.max_h, _image.height); 60 | _config.min_w = Math.max(_config.min_w, _image.width); 61 | _config.w = _config.w + _image.width; 62 | } 63 | 64 | save(_file) { 65 | 66 | if (path.extname(_file) != ".fnt") { 67 | return 68 | } 69 | 70 | var lines = Array() 71 | var imageName = path.basename(_file, path.extname(_file)) + ".png"; 72 | var imagePathName = path.join(path.dirname(_file), imageName); 73 | 74 | var config = { 75 | x: 0, 76 | y: 0, 77 | w: 0, 78 | max_h: this._charList[0].image.bitmap.height, 79 | min_w: this._charList[0].image.bitmap.width, 80 | lines: Array() 81 | } 82 | 83 | for (var index = 0; index < this._charList.length; index++) { 84 | var element = this._charList[index]; 85 | var bmp = element.image.bitmap; 86 | 87 | this._appendLine(config, bmp, element.char.charCodeAt(0), element.char); 88 | } 89 | 90 | var space = {width: config.min_w, height: config.max_h}; 91 | this._appendLine(config, space, " ".charCodeAt(0), "space"); 92 | 93 | config.lines.splice( 94 | 0, 95 | 0, 96 | String.format("info face=\"{0}\" size={1} bold=0 italic=0 charset=\"\" unicode=0 stretchH=100 smooth=1 aa=1 padding=0,0,0,0 spacing=2,2", this._font, this._fontSize), 97 | String.format("common lineHeight={0} base={2} scaleW={1} scaleH={0} pages=1 packed=0", config.max_h, config.w, this._fontSize), 98 | String.format("page id=0 file=\"{0}\"", imageName), 99 | String.format("chars count={0}", config.lines.length) 100 | ) 101 | 102 | fs.writeFileSync(_file, config.lines.join("\n")); 103 | 104 | config.x = 0; 105 | config.y = 0; 106 | var image = new Jimp(config.w, config.max_h, function (err, image) { 107 | for (var index = 0; index < this._charList.length; index++) { 108 | var element = this._charList[index]; 109 | var bmp = element.image.bitmap; 110 | 111 | image.composite(element.image, config.x, config.y); 112 | config.x = config.x + bmp.width; 113 | } 114 | image.write(imagePathName); 115 | }.bind(this)); 116 | } 117 | } 118 | 119 | exports.BMFontWriter = BMFontWriter; -------------------------------------------------------------------------------- /app/js/index.js: -------------------------------------------------------------------------------- 1 | const path = require("path"); 2 | const nativeImage = require('electron').nativeImage; 3 | const remote = require("electron").remote; 4 | const BMFontWriter = require("./js/bmfont-writer").BMFontWriter; 5 | const Jimp = require("jimp"); 6 | 7 | var ITEM_PARENT = document.getElementById("item-list"); 8 | var FNTITEMARRAY = Array(); 9 | var UID = 0; 10 | var CURRENTFONT = { 11 | name: "Arial", 12 | size: 10 13 | } 14 | 15 | function onClickTableItemRemove(o) { 16 | var id = Number(o.id); 17 | for (var index = 0; index < FNTITEMARRAY.length; index++) { 18 | var element = FNTITEMARRAY[index]; 19 | if(element.uid == id) 20 | { 21 | FNTITEMARRAY.splice(index, 1); 22 | var p = o.parentNode.parentNode; 23 | p.parentNode.removeChild(p); 24 | break; 25 | } 26 | } 27 | 28 | } 29 | 30 | function onClickSaveFnt(event) { 31 | remote.dialog.showSaveDialog({ title: "untitle.fnt" }, function (filename) { 32 | if (!filename) { 33 | return; 34 | } 35 | 36 | if (path.extname(filename) != ".fnt") { 37 | filename = filename + ".fnt"; 38 | } 39 | 40 | var writer = new BMFontWriter(); 41 | 42 | writer.setFont(CURRENTFONT.name, CURRENTFONT.size); 43 | 44 | for (var index = 0; index < FNTITEMARRAY.length; index++) { 45 | var element = FNTITEMARRAY[index]; 46 | writer.appendItem(element.image, element.input.value); 47 | } 48 | 49 | writer.save(filename); 50 | }); 51 | } 52 | 53 | function onClickClear(event) { 54 | UID = 0; 55 | FNTITEMARRAY = Array(); 56 | while (ITEM_PARENT.firstChild) { 57 | ITEM_PARENT.removeChild(ITEM_PARENT.firstChild); 58 | } 59 | } 60 | 61 | if (!String.format) { 62 | String.format = function (format) { 63 | var args = Array.prototype.slice.call(arguments, 1); 64 | return format.replace(/{(\d+)}/g, function (match, number) { 65 | return typeof args[number] != 'undefined' 66 | ? args[number] 67 | : match 68 | ; 69 | }); 70 | }; 71 | } 72 | 73 | function calcImageKey(imagePath) { 74 | var char = path.basename(imagePath, path.extname(imagePath)); 75 | var split = char.split("_") 76 | if (split.length >= 2) { 77 | var temp = Number(split[split.length-1]); 78 | if (temp) { 79 | char = String.fromCharCode(temp) 80 | } 81 | } 82 | return char 83 | } 84 | 85 | function appendFntItem(imagePath, char) { 86 | if (!char) { 87 | char = calcImageKey(imagePath); 88 | } 89 | var basename = path.basename(imagePath); 90 | 91 | var text1 = document.createTextNode(basename); 92 | var image = document.createElement("img"); 93 | var text3 = document.createTextNode(""); 94 | var input = document.createElement("input"); 95 | input.className = "form-control input-sm"; 96 | input.value = char[0]; 97 | input.maxLength = 1; 98 | 99 | var index = FNTITEMARRAY.push({ input: input, uid: UID }) - 1; 100 | 101 | Jimp.read(imagePath, function (err, lenna) { 102 | if (err) { throw err }; 103 | FNTITEMARRAY[index].image = lenna; 104 | text3.nodeValue = String.format("{0}x{1}", lenna.bitmap.width, lenna.bitmap.height); 105 | 106 | var baseW = 50; 107 | var baseH = 50; 108 | 109 | var scacle = Math.min(baseW / lenna.bitmap.width, baseH / lenna.bitmap.height); 110 | image.src = imagePath; 111 | image.width = lenna.bitmap.width * scacle; 112 | image.height = lenna.bitmap.height * scacle; 113 | }) 114 | 115 | var tr = document.createElement('tr'); 116 | var tdList = Array(); 117 | 118 | tdList[0] = document.createElement('td'); 119 | tdList[0].appendChild(text1); 120 | 121 | tdList[1] = document.createElement('td'); 122 | tdList[1].appendChild(image); 123 | 124 | tdList[2] = document.createElement('td'); 125 | tdList[2].appendChild(text3); 126 | 127 | tdList[3] = document.createElement('td'); 128 | tdList[3].appendChild(input); 129 | 130 | tdList[4] = document.createElement('td'); 131 | tdList[4].innerHTML = String.format("", UID); 132 | 133 | tdList.forEach(function (element) { 134 | element.className = "text-center"; 135 | tr.appendChild(element); 136 | }, this); 137 | 138 | ITEM_PARENT.appendChild(tr); 139 | 140 | UID = UID + 1; 141 | } 142 | 143 | document.ondragover = document.ondrop = (ev) => { 144 | ev.preventDefault() 145 | } 146 | 147 | document.body.ondrop = (ev) => { 148 | for (var i = 0; i < ev.dataTransfer.files.length; i++) { 149 | var filePath = ev.dataTransfer.files[i].path; 150 | if (path.extname(filePath) == ".png") { 151 | appendFntItem(filePath) 152 | } 153 | } 154 | ev.preventDefault() 155 | } 156 | 157 | document.getElementById("btn-save").addEventListener("click", onClickSaveFnt); 158 | document.getElementById("btn-clear").addEventListener("click", onClickClear); 159 | -------------------------------------------------------------------------------- /app/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "convert2fnt", 3 | "version": "0.0.1", 4 | "lockfileVersion": 1, 5 | "dependencies": { 6 | "ajv": { 7 | "version": "5.2.3", 8 | "resolved": "http://registry.npm.taobao.org/ajv/download/ajv-5.2.3.tgz", 9 | "integrity": "sha1-wG9Zh3jETGsWGrr+NGa4GtGBTtI=", 10 | "requires": { 11 | "co": "4.6.0", 12 | "fast-deep-equal": "1.0.0", 13 | "json-schema-traverse": "0.3.1", 14 | "json-stable-stringify": "1.0.1" 15 | } 16 | }, 17 | "asn1": { 18 | "version": "0.2.3", 19 | "resolved": "http://registry.npm.taobao.org/asn1/download/asn1-0.2.3.tgz", 20 | "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" 21 | }, 22 | "assert-plus": { 23 | "version": "1.0.0", 24 | "resolved": "http://registry.npm.taobao.org/assert-plus/download/assert-plus-1.0.0.tgz", 25 | "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" 26 | }, 27 | "asynckit": { 28 | "version": "0.4.0", 29 | "resolved": "http://registry.npm.taobao.org/asynckit/download/asynckit-0.4.0.tgz", 30 | "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" 31 | }, 32 | "aws-sign2": { 33 | "version": "0.7.0", 34 | "resolved": "http://registry.npm.taobao.org/aws-sign2/download/aws-sign2-0.7.0.tgz", 35 | "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" 36 | }, 37 | "aws4": { 38 | "version": "1.6.0", 39 | "resolved": "http://registry.npm.taobao.org/aws4/download/aws4-1.6.0.tgz", 40 | "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=" 41 | }, 42 | "bcrypt-pbkdf": { 43 | "version": "1.0.1", 44 | "resolved": "http://registry.npm.taobao.org/bcrypt-pbkdf/download/bcrypt-pbkdf-1.0.1.tgz", 45 | "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", 46 | "optional": true, 47 | "requires": { 48 | "tweetnacl": "0.14.5" 49 | } 50 | }, 51 | "bignumber.js": { 52 | "version": "2.4.0", 53 | "resolved": "http://registry.npm.taobao.org/bignumber.js/download/bignumber.js-2.4.0.tgz", 54 | "integrity": "sha1-g4qZLan51zfg9LLbC+YrsJ3Qxeg=" 55 | }, 56 | "bmp-js": { 57 | "version": "0.0.3", 58 | "resolved": "http://registry.npm.taobao.org/bmp-js/download/bmp-js-0.0.3.tgz", 59 | "integrity": "sha1-ZBE+nHzxICs3btYHvzBibr5XsYo=" 60 | }, 61 | "boom": { 62 | "version": "4.3.1", 63 | "resolved": "http://registry.npm.taobao.org/boom/download/boom-4.3.1.tgz", 64 | "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", 65 | "requires": { 66 | "hoek": "4.2.0" 67 | } 68 | }, 69 | "buffer-equal": { 70 | "version": "0.0.1", 71 | "resolved": "http://registry.npm.taobao.org/buffer-equal/download/buffer-equal-0.0.1.tgz", 72 | "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=" 73 | }, 74 | "caseless": { 75 | "version": "0.12.0", 76 | "resolved": "http://registry.npm.taobao.org/caseless/download/caseless-0.12.0.tgz", 77 | "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" 78 | }, 79 | "co": { 80 | "version": "4.6.0", 81 | "resolved": "http://registry.npm.taobao.org/co/download/co-4.6.0.tgz", 82 | "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" 83 | }, 84 | "combined-stream": { 85 | "version": "1.0.5", 86 | "resolved": "http://registry.npm.taobao.org/combined-stream/download/combined-stream-1.0.5.tgz", 87 | "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", 88 | "requires": { 89 | "delayed-stream": "1.0.0" 90 | } 91 | }, 92 | "core-util-is": { 93 | "version": "1.0.2", 94 | "resolved": "http://registry.npm.taobao.org/core-util-is/download/core-util-is-1.0.2.tgz", 95 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" 96 | }, 97 | "cryptiles": { 98 | "version": "3.1.2", 99 | "resolved": "http://registry.npm.taobao.org/cryptiles/download/cryptiles-3.1.2.tgz", 100 | "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", 101 | "requires": { 102 | "boom": "5.2.0" 103 | }, 104 | "dependencies": { 105 | "boom": { 106 | "version": "5.2.0", 107 | "resolved": "http://registry.npm.taobao.org/boom/download/boom-5.2.0.tgz", 108 | "integrity": "sha1-XdnabuOl8wIHdDYpDLcX0/SlTgI=", 109 | "requires": { 110 | "hoek": "4.2.0" 111 | } 112 | } 113 | } 114 | }, 115 | "dashdash": { 116 | "version": "1.14.1", 117 | "resolved": "http://registry.npm.taobao.org/dashdash/download/dashdash-1.14.1.tgz", 118 | "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", 119 | "requires": { 120 | "assert-plus": "1.0.0" 121 | } 122 | }, 123 | "delayed-stream": { 124 | "version": "1.0.0", 125 | "resolved": "http://registry.npm.taobao.org/delayed-stream/download/delayed-stream-1.0.0.tgz", 126 | "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" 127 | }, 128 | "dom-walk": { 129 | "version": "0.1.1", 130 | "resolved": "http://registry.npm.taobao.org/dom-walk/download/dom-walk-0.1.1.tgz", 131 | "integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg=" 132 | }, 133 | "ecc-jsbn": { 134 | "version": "0.1.1", 135 | "resolved": "http://registry.npm.taobao.org/ecc-jsbn/download/ecc-jsbn-0.1.1.tgz", 136 | "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", 137 | "optional": true, 138 | "requires": { 139 | "jsbn": "0.1.1" 140 | } 141 | }, 142 | "es6-promise": { 143 | "version": "3.3.1", 144 | "resolved": "http://registry.npm.taobao.org/es6-promise/download/es6-promise-3.3.1.tgz", 145 | "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=" 146 | }, 147 | "exif-parser": { 148 | "version": "0.1.12", 149 | "resolved": "http://registry.npm.taobao.org/exif-parser/download/exif-parser-0.1.12.tgz", 150 | "integrity": "sha1-WKnS1ywCwfbwKg70qRZicrd2CSI=" 151 | }, 152 | "extend": { 153 | "version": "3.0.1", 154 | "resolved": "http://registry.npm.taobao.org/extend/download/extend-3.0.1.tgz", 155 | "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" 156 | }, 157 | "extsprintf": { 158 | "version": "1.3.0", 159 | "resolved": "http://registry.npm.taobao.org/extsprintf/download/extsprintf-1.3.0.tgz", 160 | "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" 161 | }, 162 | "fast-deep-equal": { 163 | "version": "1.0.0", 164 | "resolved": "http://registry.npm.taobao.org/fast-deep-equal/download/fast-deep-equal-1.0.0.tgz", 165 | "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=" 166 | }, 167 | "file-type": { 168 | "version": "3.9.0", 169 | "resolved": "http://registry.npm.taobao.org/file-type/download/file-type-3.9.0.tgz", 170 | "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=" 171 | }, 172 | "for-each": { 173 | "version": "0.3.2", 174 | "resolved": "http://registry.npm.taobao.org/for-each/download/for-each-0.3.2.tgz", 175 | "integrity": "sha1-LEBFC5NI6X8oEyJZO6lnBLmr1NQ=", 176 | "requires": { 177 | "is-function": "1.0.1" 178 | } 179 | }, 180 | "forever-agent": { 181 | "version": "0.6.1", 182 | "resolved": "http://registry.npm.taobao.org/forever-agent/download/forever-agent-0.6.1.tgz", 183 | "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" 184 | }, 185 | "form-data": { 186 | "version": "2.3.1", 187 | "resolved": "http://registry.npm.taobao.org/form-data/download/form-data-2.3.1.tgz", 188 | "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", 189 | "requires": { 190 | "asynckit": "0.4.0", 191 | "combined-stream": "1.0.5", 192 | "mime-types": "2.1.17" 193 | } 194 | }, 195 | "getpass": { 196 | "version": "0.1.7", 197 | "resolved": "http://registry.npm.taobao.org/getpass/download/getpass-0.1.7.tgz", 198 | "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", 199 | "requires": { 200 | "assert-plus": "1.0.0" 201 | } 202 | }, 203 | "global": { 204 | "version": "4.3.2", 205 | "resolved": "http://registry.npm.taobao.org/global/download/global-4.3.2.tgz", 206 | "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=", 207 | "requires": { 208 | "min-document": "2.19.0", 209 | "process": "0.5.2" 210 | } 211 | }, 212 | "har-schema": { 213 | "version": "2.0.0", 214 | "resolved": "http://registry.npm.taobao.org/har-schema/download/har-schema-2.0.0.tgz", 215 | "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" 216 | }, 217 | "har-validator": { 218 | "version": "5.0.3", 219 | "resolved": "http://registry.npm.taobao.org/har-validator/download/har-validator-5.0.3.tgz", 220 | "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", 221 | "requires": { 222 | "ajv": "5.2.3", 223 | "har-schema": "2.0.0" 224 | } 225 | }, 226 | "hawk": { 227 | "version": "6.0.2", 228 | "resolved": "http://registry.npm.taobao.org/hawk/download/hawk-6.0.2.tgz", 229 | "integrity": "sha1-r02RTrBl+bXOTZ0RwcshJu7MMDg=", 230 | "requires": { 231 | "boom": "4.3.1", 232 | "cryptiles": "3.1.2", 233 | "hoek": "4.2.0", 234 | "sntp": "2.0.2" 235 | } 236 | }, 237 | "hoek": { 238 | "version": "4.2.0", 239 | "resolved": "http://registry.npm.taobao.org/hoek/download/hoek-4.2.0.tgz", 240 | "integrity": "sha1-ctnQdU9/4lyi0BrY+PmpRJqJUm0=" 241 | }, 242 | "http-signature": { 243 | "version": "1.2.0", 244 | "resolved": "http://registry.npm.taobao.org/http-signature/download/http-signature-1.2.0.tgz", 245 | "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", 246 | "requires": { 247 | "assert-plus": "1.0.0", 248 | "jsprim": "1.4.1", 249 | "sshpk": "1.13.1" 250 | } 251 | }, 252 | "ip-regex": { 253 | "version": "1.0.3", 254 | "resolved": "http://registry.npm.taobao.org/ip-regex/download/ip-regex-1.0.3.tgz", 255 | "integrity": "sha1-3FiQdvZZ9BnCIgOaMzFvHHOH7/0=" 256 | }, 257 | "is-function": { 258 | "version": "1.0.1", 259 | "resolved": "http://registry.npm.taobao.org/is-function/download/is-function-1.0.1.tgz", 260 | "integrity": "sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU=" 261 | }, 262 | "is-typedarray": { 263 | "version": "1.0.0", 264 | "resolved": "http://registry.npm.taobao.org/is-typedarray/download/is-typedarray-1.0.0.tgz", 265 | "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" 266 | }, 267 | "isstream": { 268 | "version": "0.1.2", 269 | "resolved": "http://registry.npm.taobao.org/isstream/download/isstream-0.1.2.tgz", 270 | "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" 271 | }, 272 | "jimp": { 273 | "version": "0.2.28", 274 | "resolved": "http://registry.npm.taobao.org/jimp/download/jimp-0.2.28.tgz", 275 | "integrity": "sha1-3VKak3GQ9ClXp5N9Gsw6d2KZbqI=", 276 | "requires": { 277 | "bignumber.js": "2.4.0", 278 | "bmp-js": "0.0.3", 279 | "es6-promise": "3.3.1", 280 | "exif-parser": "0.1.12", 281 | "file-type": "3.9.0", 282 | "jpeg-js": "0.2.0", 283 | "load-bmfont": "1.3.0", 284 | "mime": "1.4.1", 285 | "mkdirp": "0.5.1", 286 | "pixelmatch": "4.0.2", 287 | "pngjs": "3.3.0", 288 | "read-chunk": "1.0.1", 289 | "request": "2.83.0", 290 | "stream-to-buffer": "0.1.0", 291 | "tinycolor2": "1.4.1", 292 | "url-regex": "3.2.0" 293 | } 294 | }, 295 | "jpeg-js": { 296 | "version": "0.2.0", 297 | "resolved": "http://registry.npm.taobao.org/jpeg-js/download/jpeg-js-0.2.0.tgz", 298 | "integrity": "sha1-U+RI7J0mPmgyZkZ+lELSxaLvVII=" 299 | }, 300 | "jsbn": { 301 | "version": "0.1.1", 302 | "resolved": "http://registry.npm.taobao.org/jsbn/download/jsbn-0.1.1.tgz", 303 | "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", 304 | "optional": true 305 | }, 306 | "json-schema": { 307 | "version": "0.2.3", 308 | "resolved": "http://registry.npm.taobao.org/json-schema/download/json-schema-0.2.3.tgz", 309 | "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" 310 | }, 311 | "json-schema-traverse": { 312 | "version": "0.3.1", 313 | "resolved": "http://registry.npm.taobao.org/json-schema-traverse/download/json-schema-traverse-0.3.1.tgz", 314 | "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" 315 | }, 316 | "json-stable-stringify": { 317 | "version": "1.0.1", 318 | "resolved": "http://registry.npm.taobao.org/json-stable-stringify/download/json-stable-stringify-1.0.1.tgz", 319 | "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", 320 | "requires": { 321 | "jsonify": "0.0.0" 322 | } 323 | }, 324 | "json-stringify-safe": { 325 | "version": "5.0.1", 326 | "resolved": "http://registry.npm.taobao.org/json-stringify-safe/download/json-stringify-safe-5.0.1.tgz", 327 | "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" 328 | }, 329 | "jsonify": { 330 | "version": "0.0.0", 331 | "resolved": "http://registry.npm.taobao.org/jsonify/download/jsonify-0.0.0.tgz", 332 | "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" 333 | }, 334 | "jsprim": { 335 | "version": "1.4.1", 336 | "resolved": "http://registry.npm.taobao.org/jsprim/download/jsprim-1.4.1.tgz", 337 | "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", 338 | "requires": { 339 | "assert-plus": "1.0.0", 340 | "extsprintf": "1.3.0", 341 | "json-schema": "0.2.3", 342 | "verror": "1.10.0" 343 | } 344 | }, 345 | "load-bmfont": { 346 | "version": "1.3.0", 347 | "resolved": "http://registry.npm.taobao.org/load-bmfont/download/load-bmfont-1.3.0.tgz", 348 | "integrity": "sha1-u358cQ3mvK/LE8s7jIHgwBMey8k=", 349 | "requires": { 350 | "buffer-equal": "0.0.1", 351 | "mime": "1.4.1", 352 | "parse-bmfont-ascii": "1.0.6", 353 | "parse-bmfont-binary": "1.0.6", 354 | "parse-bmfont-xml": "1.1.3", 355 | "xhr": "2.4.0", 356 | "xtend": "4.0.1" 357 | } 358 | }, 359 | "mime": { 360 | "version": "1.4.1", 361 | "resolved": "http://registry.npm.taobao.org/mime/download/mime-1.4.1.tgz", 362 | "integrity": "sha1-Eh+evEnjdm8xGnbh+hyAA8SwOqY=" 363 | }, 364 | "mime-db": { 365 | "version": "1.30.0", 366 | "resolved": "http://registry.npm.taobao.org/mime-db/download/mime-db-1.30.0.tgz", 367 | "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=" 368 | }, 369 | "mime-types": { 370 | "version": "2.1.17", 371 | "resolved": "http://registry.npm.taobao.org/mime-types/download/mime-types-2.1.17.tgz", 372 | "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", 373 | "requires": { 374 | "mime-db": "1.30.0" 375 | } 376 | }, 377 | "min-document": { 378 | "version": "2.19.0", 379 | "resolved": "http://registry.npm.taobao.org/min-document/download/min-document-2.19.0.tgz", 380 | "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", 381 | "requires": { 382 | "dom-walk": "0.1.1" 383 | } 384 | }, 385 | "minimist": { 386 | "version": "0.0.8", 387 | "resolved": "http://registry.npm.taobao.org/minimist/download/minimist-0.0.8.tgz", 388 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" 389 | }, 390 | "mkdirp": { 391 | "version": "0.5.1", 392 | "resolved": "http://registry.npm.taobao.org/mkdirp/download/mkdirp-0.5.1.tgz", 393 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 394 | "requires": { 395 | "minimist": "0.0.8" 396 | } 397 | }, 398 | "oauth-sign": { 399 | "version": "0.8.2", 400 | "resolved": "http://registry.npm.taobao.org/oauth-sign/download/oauth-sign-0.8.2.tgz", 401 | "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=" 402 | }, 403 | "parse-bmfont-ascii": { 404 | "version": "1.0.6", 405 | "resolved": "http://registry.npm.taobao.org/parse-bmfont-ascii/download/parse-bmfont-ascii-1.0.6.tgz", 406 | "integrity": "sha1-Eaw8P/WPfCAgqyJ2kHkQjU36AoU=" 407 | }, 408 | "parse-bmfont-binary": { 409 | "version": "1.0.6", 410 | "resolved": "http://registry.npm.taobao.org/parse-bmfont-binary/download/parse-bmfont-binary-1.0.6.tgz", 411 | "integrity": "sha1-0Di0dtPp3Z2x4RoLDlOiJ5K2kAY=" 412 | }, 413 | "parse-bmfont-xml": { 414 | "version": "1.1.3", 415 | "resolved": "http://registry.npm.taobao.org/parse-bmfont-xml/download/parse-bmfont-xml-1.1.3.tgz", 416 | "integrity": "sha1-1rZqNxr9OcUAfZ8O6yYqTyzOe3w=", 417 | "requires": { 418 | "xml-parse-from-string": "1.0.1", 419 | "xml2js": "0.4.19" 420 | } 421 | }, 422 | "parse-headers": { 423 | "version": "2.0.1", 424 | "resolved": "http://registry.npm.taobao.org/parse-headers/download/parse-headers-2.0.1.tgz", 425 | "integrity": "sha1-aug6eqJanZtwCswoaYzR8e1+lTY=", 426 | "requires": { 427 | "for-each": "0.3.2", 428 | "trim": "0.0.1" 429 | } 430 | }, 431 | "performance-now": { 432 | "version": "2.1.0", 433 | "resolved": "http://registry.npm.taobao.org/performance-now/download/performance-now-2.1.0.tgz", 434 | "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" 435 | }, 436 | "pixelmatch": { 437 | "version": "4.0.2", 438 | "resolved": "http://registry.npm.taobao.org/pixelmatch/download/pixelmatch-4.0.2.tgz", 439 | "integrity": "sha1-j0fc7FARtHe2fbA8JDvB8wheiFQ=", 440 | "requires": { 441 | "pngjs": "3.3.0" 442 | } 443 | }, 444 | "pngjs": { 445 | "version": "3.3.0", 446 | "resolved": "http://registry.npm.taobao.org/pngjs/download/pngjs-3.3.0.tgz", 447 | "integrity": "sha1-H1cwwYnJSTO4G+2iqy+OKFUmOo8=" 448 | }, 449 | "process": { 450 | "version": "0.5.2", 451 | "resolved": "http://registry.npm.taobao.org/process/download/process-0.5.2.tgz", 452 | "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=" 453 | }, 454 | "punycode": { 455 | "version": "1.4.1", 456 | "resolved": "http://registry.npm.taobao.org/punycode/download/punycode-1.4.1.tgz", 457 | "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" 458 | }, 459 | "qs": { 460 | "version": "6.5.1", 461 | "resolved": "http://registry.npm.taobao.org/qs/download/qs-6.5.1.tgz", 462 | "integrity": "sha1-NJzfbu+J7EXBLX1es/wMhwNDptg=" 463 | }, 464 | "read-chunk": { 465 | "version": "1.0.1", 466 | "resolved": "http://registry.npm.taobao.org/read-chunk/download/read-chunk-1.0.1.tgz", 467 | "integrity": "sha1-X2jKswfmY/GZk1J9m1icrORmEZQ=" 468 | }, 469 | "request": { 470 | "version": "2.83.0", 471 | "resolved": "http://registry.npm.taobao.org/request/download/request-2.83.0.tgz", 472 | "integrity": "sha1-ygtl2gLtYpNYh4COb1EDgQNOM1Y=", 473 | "requires": { 474 | "aws-sign2": "0.7.0", 475 | "aws4": "1.6.0", 476 | "caseless": "0.12.0", 477 | "combined-stream": "1.0.5", 478 | "extend": "3.0.1", 479 | "forever-agent": "0.6.1", 480 | "form-data": "2.3.1", 481 | "har-validator": "5.0.3", 482 | "hawk": "6.0.2", 483 | "http-signature": "1.2.0", 484 | "is-typedarray": "1.0.0", 485 | "isstream": "0.1.2", 486 | "json-stringify-safe": "5.0.1", 487 | "mime-types": "2.1.17", 488 | "oauth-sign": "0.8.2", 489 | "performance-now": "2.1.0", 490 | "qs": "6.5.1", 491 | "safe-buffer": "5.1.1", 492 | "stringstream": "0.0.5", 493 | "tough-cookie": "2.3.3", 494 | "tunnel-agent": "0.6.0", 495 | "uuid": "3.1.0" 496 | } 497 | }, 498 | "safe-buffer": { 499 | "version": "5.1.1", 500 | "resolved": "http://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.1.tgz", 501 | "integrity": "sha1-iTMSr2myEj3vcfV4iQAWce6yyFM=" 502 | }, 503 | "sax": { 504 | "version": "1.2.4", 505 | "resolved": "http://registry.npm.taobao.org/sax/download/sax-1.2.4.tgz", 506 | "integrity": "sha1-KBYjTiN4vdxOU1T6tcqold9xANk=" 507 | }, 508 | "sntp": { 509 | "version": "2.0.2", 510 | "resolved": "http://registry.npm.taobao.org/sntp/download/sntp-2.0.2.tgz", 511 | "integrity": "sha1-UGQRDwr4X3z9t9a2ekACjOUrSys=", 512 | "requires": { 513 | "hoek": "4.2.0" 514 | } 515 | }, 516 | "sshpk": { 517 | "version": "1.13.1", 518 | "resolved": "http://registry.npm.taobao.org/sshpk/download/sshpk-1.13.1.tgz", 519 | "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", 520 | "requires": { 521 | "asn1": "0.2.3", 522 | "assert-plus": "1.0.0", 523 | "bcrypt-pbkdf": "1.0.1", 524 | "dashdash": "1.14.1", 525 | "ecc-jsbn": "0.1.1", 526 | "getpass": "0.1.7", 527 | "jsbn": "0.1.1", 528 | "tweetnacl": "0.14.5" 529 | } 530 | }, 531 | "stream-to": { 532 | "version": "0.2.2", 533 | "resolved": "http://registry.npm.taobao.org/stream-to/download/stream-to-0.2.2.tgz", 534 | "integrity": "sha1-hDBgmNhf25kLn6MAsbPM9V6O8B0=" 535 | }, 536 | "stream-to-buffer": { 537 | "version": "0.1.0", 538 | "resolved": "http://registry.npm.taobao.org/stream-to-buffer/download/stream-to-buffer-0.1.0.tgz", 539 | "integrity": "sha1-JnmdkDqyAlyb1VCsRxcbAPjdgKk=", 540 | "requires": { 541 | "stream-to": "0.2.2" 542 | } 543 | }, 544 | "stringstream": { 545 | "version": "0.0.5", 546 | "resolved": "http://registry.npm.taobao.org/stringstream/download/stringstream-0.0.5.tgz", 547 | "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=" 548 | }, 549 | "tinycolor2": { 550 | "version": "1.4.1", 551 | "resolved": "http://registry.npm.taobao.org/tinycolor2/download/tinycolor2-1.4.1.tgz", 552 | "integrity": "sha1-9PrTM0R7wLB9TcjpIJ2POaisd+g=" 553 | }, 554 | "tough-cookie": { 555 | "version": "2.3.3", 556 | "resolved": "http://registry.npm.taobao.org/tough-cookie/download/tough-cookie-2.3.3.tgz", 557 | "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", 558 | "requires": { 559 | "punycode": "1.4.1" 560 | } 561 | }, 562 | "trim": { 563 | "version": "0.0.1", 564 | "resolved": "http://registry.npm.taobao.org/trim/download/trim-0.0.1.tgz", 565 | "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=" 566 | }, 567 | "tunnel-agent": { 568 | "version": "0.6.0", 569 | "resolved": "http://registry.npm.taobao.org/tunnel-agent/download/tunnel-agent-0.6.0.tgz", 570 | "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", 571 | "requires": { 572 | "safe-buffer": "5.1.1" 573 | } 574 | }, 575 | "tweetnacl": { 576 | "version": "0.14.5", 577 | "resolved": "http://registry.npm.taobao.org/tweetnacl/download/tweetnacl-0.14.5.tgz", 578 | "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", 579 | "optional": true 580 | }, 581 | "url-regex": { 582 | "version": "3.2.0", 583 | "resolved": "http://registry.npm.taobao.org/url-regex/download/url-regex-3.2.0.tgz", 584 | "integrity": "sha1-260eDJ4p4QXdCx8J9oYvf9tIJyQ=", 585 | "requires": { 586 | "ip-regex": "1.0.3" 587 | } 588 | }, 589 | "uuid": { 590 | "version": "3.1.0", 591 | "resolved": "http://registry.npm.taobao.org/uuid/download/uuid-3.1.0.tgz", 592 | "integrity": "sha1-PdPT55Crwk17DToDT/q6vijrvAQ=" 593 | }, 594 | "verror": { 595 | "version": "1.10.0", 596 | "resolved": "http://registry.npm.taobao.org/verror/download/verror-1.10.0.tgz", 597 | "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", 598 | "requires": { 599 | "assert-plus": "1.0.0", 600 | "core-util-is": "1.0.2", 601 | "extsprintf": "1.3.0" 602 | } 603 | }, 604 | "xhr": { 605 | "version": "2.4.0", 606 | "resolved": "http://registry.npm.taobao.org/xhr/download/xhr-2.4.0.tgz", 607 | "integrity": "sha1-4W5mpF+GmGHu76tBbV7/ci3ECZM=", 608 | "requires": { 609 | "global": "4.3.2", 610 | "is-function": "1.0.1", 611 | "parse-headers": "2.0.1", 612 | "xtend": "4.0.1" 613 | } 614 | }, 615 | "xml-parse-from-string": { 616 | "version": "1.0.1", 617 | "resolved": "http://registry.npm.taobao.org/xml-parse-from-string/download/xml-parse-from-string-1.0.1.tgz", 618 | "integrity": "sha1-qQKekp09vN7RafPG4oI42VpdWig=" 619 | }, 620 | "xml2js": { 621 | "version": "0.4.19", 622 | "resolved": "http://registry.npm.taobao.org/xml2js/download/xml2js-0.4.19.tgz", 623 | "integrity": "sha1-aGwg8hMgnpSr8NG88e+qKRx4J6c=", 624 | "requires": { 625 | "sax": "1.2.4", 626 | "xmlbuilder": "9.0.4" 627 | } 628 | }, 629 | "xmlbuilder": { 630 | "version": "9.0.4", 631 | "resolved": "http://registry.npm.taobao.org/xmlbuilder/download/xmlbuilder-9.0.4.tgz", 632 | "integrity": "sha1-UZy0ymhtAFqEINNJbz8MruzKWA8=" 633 | }, 634 | "xtend": { 635 | "version": "4.0.1", 636 | "resolved": "http://registry.npm.taobao.org/xtend/download/xtend-4.0.1.tgz", 637 | "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" 638 | } 639 | } 640 | } 641 | -------------------------------------------------------------------------------- /app/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "convert2fnt", 3 | "version": "0.0.2", 4 | "description": "Convert images to fnt file.", 5 | "main": "index.js", 6 | "author": "justbilt", 7 | "license": "ISC", 8 | "dependencies": { 9 | "jimp": "^0.2.28" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /build/background.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justbilt/convert2fnt/3bee424d3bd9bb5c63c9f544a101c5983ebdc504/build/background.tiff -------------------------------------------------------------------------------- /build/icon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justbilt/convert2fnt/3bee424d3bd9bb5c63c9f544a101c5983ebdc504/build/icon.icns -------------------------------------------------------------------------------- /build/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justbilt/convert2fnt/3bee424d3bd9bb5c63c9f544a101c5983ebdc504/build/icon.ico -------------------------------------------------------------------------------- /build/icons/1024x1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justbilt/convert2fnt/3bee424d3bd9bb5c63c9f544a101c5983ebdc504/build/icons/1024x1024.png -------------------------------------------------------------------------------- /build/icons/128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justbilt/convert2fnt/3bee424d3bd9bb5c63c9f544a101c5983ebdc504/build/icons/128x128.png -------------------------------------------------------------------------------- /build/icons/16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justbilt/convert2fnt/3bee424d3bd9bb5c63c9f544a101c5983ebdc504/build/icons/16x16.png -------------------------------------------------------------------------------- /build/icons/24x24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justbilt/convert2fnt/3bee424d3bd9bb5c63c9f544a101c5983ebdc504/build/icons/24x24.png -------------------------------------------------------------------------------- /build/icons/256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justbilt/convert2fnt/3bee424d3bd9bb5c63c9f544a101c5983ebdc504/build/icons/256x256.png -------------------------------------------------------------------------------- /build/icons/32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justbilt/convert2fnt/3bee424d3bd9bb5c63c9f544a101c5983ebdc504/build/icons/32x32.png -------------------------------------------------------------------------------- /build/icons/48x48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justbilt/convert2fnt/3bee424d3bd9bb5c63c9f544a101c5983ebdc504/build/icons/48x48.png -------------------------------------------------------------------------------- /build/icons/512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justbilt/convert2fnt/3bee424d3bd9bb5c63c9f544a101c5983ebdc504/build/icons/512x512.png -------------------------------------------------------------------------------- /build/icons/64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justbilt/convert2fnt/3bee424d3bd9bb5c63c9f544a101c5983ebdc504/build/icons/64x64.png -------------------------------------------------------------------------------- /build/icons/96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justbilt/convert2fnt/3bee424d3bd9bb5c63c9f544a101c5983ebdc504/build/icons/96x96.png -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "repository": "justbilt/convert2fnt", 3 | "author": "justbilt", 4 | "license": "ISC", 5 | "scripts": { 6 | "start": "electron app", 7 | "test": "echo \"Error: no test specified\" && exit 1", 8 | "postinstall": "electron-builder install-app-deps", 9 | "pack": "electron-builder --dir", 10 | "dist": "electron-builder" 11 | }, 12 | "devDependencies": { 13 | "electron-builder": "^19.33.0", 14 | "electron": "^1.7.8", 15 | "jimp": "^0.2.28" 16 | }, 17 | "build": { 18 | "asar": false, 19 | "appId": "com.justbilt.convert2fnt", 20 | "mac": { 21 | "category": "your.app.category.type", 22 | "identity": null, 23 | "target": "zip" 24 | }, 25 | "win": { 26 | "target": "zip" 27 | } 28 | } 29 | } 30 | --------------------------------------------------------------------------------