diff --git a/.prettierrc b/.prettierrc deleted file mode 100644 index 222861c..0000000 --- a/.prettierrc +++ /dev/null @@ -1,4 +0,0 @@ -{ - "tabWidth": 2, - "useTabs": false -} diff --git a/bitmap/package.json b/bitmap/package.json new file mode 100644 index 0000000..c6178db --- /dev/null +++ b/bitmap/package.json @@ -0,0 +1,26 @@ +{ + "name": "apple_cursor_bitmap", + "version": "1.0.7", + "main": "index.js", + "scripts": { + "watch": "nodemon --inspect src/index.ts", + "render": "yarn ts-node src/index.ts" + }, + "repository": "git@github.com:ful1e5/apple_cursor.git", + "author": "Kaiz Khatri", + "license": "GPL-3.0", + "private": true, + "devDependencies": { + "@types/pixelmatch": "^5.2.2", + "@types/pngjs": "^3.4.2", + "@types/puppeteer": "^5.4.2", + "nodemon": "^2.0.7", + "ts-node": "^9.1.1", + "typescript": "^4.1.3" + }, + "dependencies": { + "pixelmatch": "^5.2.1", + "pngjs": "^6.0.0", + "puppeteer": "^5.5.0" + } +} diff --git a/bitmap/src/config.ts b/bitmap/src/config.ts new file mode 100644 index 0000000..b4d523f --- /dev/null +++ b/bitmap/src/config.ts @@ -0,0 +1,23 @@ +import path from "path"; +import { readdirSync, existsSync } from "fs"; + +// Directory resolve +const projectRoot = path.resolve(__dirname, "../../"); + +const outDir = path.resolve(projectRoot, "pngs"); +const staticSvgDir = path.resolve(projectRoot, "svg", "static"); +const animatedSvgDir = path.resolve(projectRoot, "svg", "animated"); + +// Generate a svg list +if (!existsSync(staticSvgDir) || !existsSync(animatedSvgDir)) { + throw new Error("svg directory not found"); +} + +const staticCursors = readdirSync(staticSvgDir).map((f) => + path.resolve(staticSvgDir, f) +); +const animatedCursors = readdirSync(animatedSvgDir).map((f) => + path.resolve(animatedSvgDir, f) +); + +export { staticCursors, animatedCursors, outDir }; diff --git a/src/index.ts b/bitmap/src/index.ts similarity index 90% rename from src/index.ts rename to bitmap/src/index.ts index c08db83..c914757 100644 --- a/src/index.ts +++ b/bitmap/src/index.ts @@ -5,7 +5,7 @@ import Pixelmatch from "pixelmatch"; import { PNG } from "pngjs"; import puppeteer, { ElementHandle, Page } from "puppeteer"; -import { animatedCursors, bitmapsDir, staticCursors } from "./config"; +import { animatedCursors, outDir, staticCursors } from "./config"; import { getFrameName } from "./utils/getFrameName"; import { toHTML } from "./utils/toHTML"; @@ -26,7 +26,7 @@ const screenshot = async (element: ElementHandle): Promise => { }; const saveFrame = (key: string, frame: Buffer) => { - const out_path = path.resolve(bitmapsDir, key); + const out_path = path.resolve(outDir, key); fs.writeFileSync(out_path, frame, { encoding: "binary" }); }; @@ -36,8 +36,10 @@ const main = async () => { headless: true, }); - if (!fs.existsSync(bitmapsDir)) { - fs.mkdirSync(bitmapsDir); + if (!fs.existsSync(outDir)) { + fs.mkdirSync(outDir); + } else { + throw new Error(`out directory '${outDir}' already exists.`); } for (const svgFilePath of staticCursors) { @@ -53,7 +55,7 @@ const main = async () => { const svg = await getSVGElement(page); const key = `${path.basename(svgFilePath, ".svg")}.png`; - const out = path.join(bitmapsDir, key); + const out = path.join(outDir, key); console.log("Saving", key, "..."); await svg.screenshot({ omitBackground: true, path: out }); diff --git a/src/utils/getFrameName.ts b/bitmap/src/utils/getFrameName.ts similarity index 100% rename from src/utils/getFrameName.ts rename to bitmap/src/utils/getFrameName.ts diff --git a/src/utils/toHTML.ts b/bitmap/src/utils/toHTML.ts similarity index 100% rename from src/utils/toHTML.ts rename to bitmap/src/utils/toHTML.ts diff --git a/bitmap/tsconfig.json b/bitmap/tsconfig.json new file mode 100644 index 0000000..9bb0cc5 --- /dev/null +++ b/bitmap/tsconfig.json @@ -0,0 +1,12 @@ +{ + "compilerOptions": { + "strict": true, + "noUnusedLocals": true, + "strictNullChecks": true, + "esModuleInterop": true, + "target": "ES2015", + "module": "commonjs", + "lib": ["es2015", "dom"], + "noUnusedParameters": true + } +} diff --git a/yarn.lock b/bitmap/yarn.lock similarity index 86% rename from yarn.lock rename to bitmap/yarn.lock index 08595e3..df97966 100644 --- a/yarn.lock +++ b/bitmap/yarn.lock @@ -2,27 +2,6 @@ # yarn lockfile v1 -"@babel/code-frame@^7.0.0": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" - integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== - dependencies: - "@babel/highlight" "^7.10.4" - -"@babel/helper-validator-identifier@^7.10.4": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" - integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== - -"@babel/highlight@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" - integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== - dependencies: - "@babel/helper-validator-identifier" "^7.10.4" - chalk "^2.0.0" - js-tokens "^4.0.0" - "@sindresorhus/is@^0.14.0": version "0.14.0" resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" @@ -54,10 +33,10 @@ dependencies: "@types/node" "*" -"@types/puppeteer@^3.0.1": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@types/puppeteer/-/puppeteer-3.0.5.tgz#5ef5d023f45c0dfcc82e97548891b11b6ce868fb" - integrity sha512-NkphUMkpbr/us6hp1AqUh/UxX5Tf2UJU94MvaF8OOgIUPBipYodql+yRjcysJKqwnDkchp+cD/8jntI/C9StzA== +"@types/puppeteer@^5.4.2": + version "5.4.2" + resolved "https://registry.yarnpkg.com/@types/puppeteer/-/puppeteer-5.4.2.tgz#80f3a1f54dedbbf750779716de81401549062072" + integrity sha512-yjbHoKjZFOGqA6bIEI2dfBE5UPqU0YGWzP+ipDVP1iGzmlhksVKTBVZfT3Aj3wnvmcJ2PQ9zcncwOwyavmafBw== dependencies: "@types/node" "*" @@ -95,13 +74,6 @@ ansi-regex@^5.0.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - ansi-styles@^4.1.0: version "4.3.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" @@ -122,13 +94,6 @@ arg@^4.1.0: resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" @@ -200,11 +165,6 @@ buffer@^5.2.1, buffer@^5.5.0: base64-js "^1.3.1" ieee754 "^1.1.13" -builtin-modules@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" - integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= - cacheable-request@^6.0.0: version "6.1.0" resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" @@ -223,15 +183,6 @@ camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -chalk@^2.0.0, chalk@^2.3.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - chalk@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" @@ -277,13 +228,6 @@ clone-response@^1.0.2: dependencies: mimic-response "^1.0.0" -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - color-convert@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" @@ -291,21 +235,11 @@ color-convert@^2.0.1: dependencies: color-name "~1.1.4" -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -commander@^2.12.1: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -323,6 +257,11 @@ configstore@^5.0.1: write-file-atomic "^3.0.0" xdg-basedir "^4.0.0" +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + crypto-random-string@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" @@ -410,16 +349,6 @@ escape-goat@^2.0.0: resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675" integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -esprima@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - extract-zip@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" @@ -468,11 +397,6 @@ fsevents@~2.3.1: resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.1.tgz#b209ab14c61012636c8863507edf7fb68cc54e9f" integrity sha512-YR47Eg4hChJGAB1O3yEAOkGO+rlzutoICGqGo9EZ4lKWokzZRSyIW1QmTzqjtw8MJdj9srP869CuWw/hyzSiBw== -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - get-stream@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" @@ -494,7 +418,7 @@ glob-parent@~5.1.0: dependencies: is-glob "^4.0.1" -glob@^7.1.1, glob@^7.1.3: +glob@^7.1.3: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== @@ -550,13 +474,6 @@ has-yarn@^2.1.0: resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== -has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - http-cache-semantics@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" @@ -627,13 +544,6 @@ is-ci@^2.0.0: dependencies: ci-info "^2.0.0" -is-core-module@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" - integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== - dependencies: - has "^1.0.3" - is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" @@ -694,19 +604,6 @@ is-yarn-global@^0.3.0: resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232" integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^3.13.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - json-buffer@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" @@ -767,7 +664,7 @@ minimatch@^3.0.4: dependencies: brace-expansion "^1.1.7" -minimist@^1.2.0, minimist@^1.2.5: +minimist@^1.2.0: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== @@ -777,13 +674,6 @@ mkdirp-classic@^0.5.2: resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== -mkdirp@^0.5.3: - version "0.5.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== - dependencies: - minimist "^1.2.5" - ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -804,7 +694,7 @@ node-fetch@^2.6.1: resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== -nodemon@^2.0.4: +nodemon@^2.0.7: version "2.0.7" resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.7.tgz#6f030a0a0ebe3ea1ba2a38f71bf9bab4841ced32" integrity sha512-XHzK69Awgnec9UzHr1kc8EomQh4sjTQ8oRf8TsGrSmHDx9/UmiGG9E/mM3BuTfNeFwdNBvrqQq/RHL0xIeyFOA== @@ -888,11 +778,6 @@ path-is-absolute@^1.0.0: resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= -path-parse@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" - integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== - pend@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" @@ -962,7 +847,7 @@ pupa@^2.0.1: dependencies: escape-goat "^2.0.0" -puppeteer@^5.2.1: +puppeteer@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-5.5.0.tgz#331a7edd212ca06b4a556156435f58cbae08af00" integrity sha512-OM8ZvTXAhfgFA7wBIIGlPQzvyEETzDjeRa4mZRCRHxYL+GNH5WAuYUQdja3rpWZvkX/JKqmuVgbsxDNsDFjMEg== @@ -1020,14 +905,6 @@ registry-url@^5.0.0: dependencies: rc "^1.2.8" -resolve@^1.3.2: - version "1.19.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" - integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== - dependencies: - is-core-module "^2.1.0" - path-parse "^1.0.6" - responselike@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" @@ -1054,7 +931,7 @@ semver-diff@^3.1.1: dependencies: semver "^6.3.0" -semver@^5.3.0, semver@^5.7.1: +semver@^5.7.1: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -1082,11 +959,6 @@ source-map@^0.6.0: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= - string-width@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" @@ -1131,7 +1003,7 @@ strip-json-comments@~2.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= -supports-color@^5.3.0, supports-color@^5.5.0: +supports-color@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== @@ -1195,48 +1067,18 @@ touch@^3.1.0: dependencies: nopt "~1.0.10" -ts-node@^8.10.2: - version "8.10.2" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-8.10.2.tgz#eee03764633b1234ddd37f8db9ec10b75ec7fb8d" - integrity sha512-ISJJGgkIpDdBhWVu3jufsWpK3Rzo7bdiIXJjQc0ynKxVOVcg2oIrf2H2cejminGrptVc6q6/uynAHNCuWGbpVA== +ts-node@^9.1.1: + version "9.1.1" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-9.1.1.tgz#51a9a450a3e959401bda5f004a72d54b936d376d" + integrity sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg== dependencies: arg "^4.1.0" + create-require "^1.1.0" diff "^4.0.1" make-error "^1.1.1" source-map-support "^0.5.17" yn "3.1.1" -tslib@^1.13.0, tslib@^1.8.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tslint@^6.1.2: - version "6.1.3" - resolved "https://registry.yarnpkg.com/tslint/-/tslint-6.1.3.tgz#5c23b2eccc32487d5523bd3a470e9aa31789d904" - integrity sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg== - dependencies: - "@babel/code-frame" "^7.0.0" - builtin-modules "^1.1.1" - chalk "^2.3.0" - commander "^2.12.1" - diff "^4.0.1" - glob "^7.1.1" - js-yaml "^3.13.1" - minimatch "^3.0.4" - mkdirp "^0.5.3" - resolve "^1.3.2" - semver "^5.3.0" - tslib "^1.13.0" - tsutils "^2.29.0" - -tsutils@^2.29.0: - version "2.29.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.29.0.tgz#32b488501467acbedd4b85498673a0812aca0b99" - integrity sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA== - dependencies: - tslib "^1.8.1" - type-fest@^0.8.1: version "0.8.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" @@ -1249,10 +1091,10 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" -typescript@^3.9.7: - version "3.9.7" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.7.tgz#98d600a5ebdc38f40cb277522f12dc800e9e25fa" - integrity sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw== +typescript@^4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.1.3.tgz#519d582bd94cba0cf8934c7d8e8467e473f53bb7" + integrity sha512-B3ZIOf1IKeH2ixgHhj6la6xdwR9QrLC5d1VKeCSY4tvkqhF2eqd9O7txNlS0PO3GrBAFIdr3L1ndNwteUbZLYg== unbzip2-stream@^1.3.3: version "1.4.3" diff --git a/nodemon.json b/nodemon.json deleted file mode 100644 index cde9605..0000000 --- a/nodemon.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "restartable": "rs", - "ignore": [".git", "node_modules/**/node_modules"], - "verbose": true, - "execMap": { - "ts": "node --require ts-node/register" - }, - "watch": ["src/"], - "env": { - "NODE_ENV": "development" - }, - "ext": "js,json,ts" -} diff --git a/package.json b/package.json deleted file mode 100644 index 1ddaefa..0000000 --- a/package.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "apple_cursor", - "version": "1.0.6", - "description": "🍎 macOS Cursor Theme", - "main": "index.js", - "scripts": { - "clean": "rm -rf bitmaps themes", - "dev": "nodemon src/index.ts", - "watch": "nodemon --inspect src/index.ts", - "py_install": "pip install -r requirements.txt", - "render": "yarn ts-node src/index.ts", - "build": "python build.py", - "compile": "yarn clean && yarn render && yarn build" - }, - "repository": "git@github.com:ful1e5/apple_cursor.git", - "author": "Kaiz Khatri", - "license": "GPL-3.0", - "private": true, - "devDependencies": { - "@types/pixelmatch": "^5.2.2", - "@types/pngjs": "^3.4.2", - "@types/puppeteer": "^3.0.1", - "nodemon": "^2.0.4", - "ts-node": "^8.10.2", - "tslint": "^6.1.2", - "typescript": "^3.9.7" - }, - "dependencies": { - "pixelmatch": "^5.2.1", - "pngjs": "^6.0.0", - "puppeteer": "^5.2.1" - } -} diff --git a/src/config.ts b/src/config.ts deleted file mode 100644 index 3aa67cc..0000000 --- a/src/config.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { resolve } from "path"; -import { readdirSync, existsSync } from "fs"; - -// Source Directory -const staticCursorsDir = resolve(__dirname, "svg", "static"); -const animatedCursorsDir = resolve(__dirname, "svg", "animated"); - -if (!existsSync(staticCursorsDir) || !existsSync(animatedCursorsDir)) { - throw new Error("svg directory not found"); -} - -// Out Directory -const bitmapsDir = resolve(__dirname, "../", "bitmaps"); - -// Cursors -const staticCursors = readdirSync(staticCursorsDir).map((f) => - resolve(staticCursorsDir, f) -); -const animatedCursors = readdirSync(animatedCursorsDir).map((f) => - resolve(animatedCursorsDir, f) -); - -export { staticCursors, animatedCursors, bitmapsDir }; diff --git a/src/svg/README.md b/svg/README.md similarity index 100% rename from src/svg/README.md rename to svg/README.md diff --git a/src/svg/animated/left_ptr_watch.svg b/svg/animated/left_ptr_watch.svg similarity index 100% rename from src/svg/animated/left_ptr_watch.svg rename to svg/animated/left_ptr_watch.svg diff --git a/src/svg/animated/wait.svg b/svg/animated/wait.svg similarity index 100% rename from src/svg/animated/wait.svg rename to svg/animated/wait.svg diff --git a/src/svg/static/all_scroll.svg b/svg/static/all_scroll.svg similarity index 100% rename from src/svg/static/all_scroll.svg rename to svg/static/all_scroll.svg diff --git a/src/svg/static/bd_double_arrow.svg b/svg/static/bd_double_arrow.svg similarity index 100% rename from src/svg/static/bd_double_arrow.svg rename to svg/static/bd_double_arrow.svg diff --git a/src/svg/static/bottom_left_corner.svg b/svg/static/bottom_left_corner.svg similarity index 100% rename from src/svg/static/bottom_left_corner.svg rename to svg/static/bottom_left_corner.svg diff --git a/src/svg/static/bottom_right_corner.svg b/svg/static/bottom_right_corner.svg similarity index 100% rename from src/svg/static/bottom_right_corner.svg rename to svg/static/bottom_right_corner.svg diff --git a/src/svg/static/bottom_side.svg b/svg/static/bottom_side.svg similarity index 100% rename from src/svg/static/bottom_side.svg rename to svg/static/bottom_side.svg diff --git a/src/svg/static/bottom_tee.svg b/svg/static/bottom_tee.svg similarity index 100% rename from src/svg/static/bottom_tee.svg rename to svg/static/bottom_tee.svg diff --git a/src/svg/static/center_ptr.svg b/svg/static/center_ptr.svg similarity index 100% rename from src/svg/static/center_ptr.svg rename to svg/static/center_ptr.svg diff --git a/src/svg/static/circle.svg b/svg/static/circle.svg similarity index 100% rename from src/svg/static/circle.svg rename to svg/static/circle.svg diff --git a/src/svg/static/context_menu.svg b/svg/static/context_menu.svg similarity index 100% rename from src/svg/static/context_menu.svg rename to svg/static/context_menu.svg diff --git a/src/svg/static/copy.svg b/svg/static/copy.svg similarity index 100% rename from src/svg/static/copy.svg rename to svg/static/copy.svg diff --git a/src/svg/static/cross.svg b/svg/static/cross.svg similarity index 100% rename from src/svg/static/cross.svg rename to svg/static/cross.svg diff --git a/src/svg/static/crossed_circle.svg b/svg/static/crossed_circle.svg similarity index 100% rename from src/svg/static/crossed_circle.svg rename to svg/static/crossed_circle.svg diff --git a/src/svg/static/crosshair.svg b/svg/static/crosshair.svg similarity index 100% rename from src/svg/static/crosshair.svg rename to svg/static/crosshair.svg diff --git a/src/svg/static/dnd_ask.svg b/svg/static/dnd_ask.svg similarity index 100% rename from src/svg/static/dnd_ask.svg rename to svg/static/dnd_ask.svg diff --git a/src/svg/static/dnd_copy.svg b/svg/static/dnd_copy.svg similarity index 100% rename from src/svg/static/dnd_copy.svg rename to svg/static/dnd_copy.svg diff --git a/src/svg/static/dnd_link.svg b/svg/static/dnd_link.svg similarity index 100% rename from src/svg/static/dnd_link.svg rename to svg/static/dnd_link.svg diff --git a/src/svg/static/dnd_move.svg b/svg/static/dnd_move.svg similarity index 100% rename from src/svg/static/dnd_move.svg rename to svg/static/dnd_move.svg diff --git a/src/svg/static/dnd_no_drop.svg b/svg/static/dnd_no_drop.svg similarity index 100% rename from src/svg/static/dnd_no_drop.svg rename to svg/static/dnd_no_drop.svg diff --git a/src/svg/static/dnd_none.svg b/svg/static/dnd_none.svg similarity index 100% rename from src/svg/static/dnd_none.svg rename to svg/static/dnd_none.svg diff --git a/src/svg/static/dotbox.svg b/svg/static/dotbox.svg similarity index 100% rename from src/svg/static/dotbox.svg rename to svg/static/dotbox.svg diff --git a/src/svg/static/fd_double_arrow.svg b/svg/static/fd_double_arrow.svg similarity index 100% rename from src/svg/static/fd_double_arrow.svg rename to svg/static/fd_double_arrow.svg diff --git a/src/svg/static/grabbing.svg b/svg/static/grabbing.svg similarity index 100% rename from src/svg/static/grabbing.svg rename to svg/static/grabbing.svg diff --git a/src/svg/static/hand1.svg b/svg/static/hand1.svg similarity index 100% rename from src/svg/static/hand1.svg rename to svg/static/hand1.svg diff --git a/src/svg/static/hand2.svg b/svg/static/hand2.svg similarity index 100% rename from src/svg/static/hand2.svg rename to svg/static/hand2.svg diff --git a/src/svg/static/left_ptr.svg b/svg/static/left_ptr.svg similarity index 100% rename from src/svg/static/left_ptr.svg rename to svg/static/left_ptr.svg diff --git a/src/svg/static/left_side.svg b/svg/static/left_side.svg similarity index 100% rename from src/svg/static/left_side.svg rename to svg/static/left_side.svg diff --git a/src/svg/static/left_tee.svg b/svg/static/left_tee.svg similarity index 100% rename from src/svg/static/left_tee.svg rename to svg/static/left_tee.svg diff --git a/src/svg/static/link.svg b/svg/static/link.svg similarity index 100% rename from src/svg/static/link.svg rename to svg/static/link.svg diff --git a/src/svg/static/ll_angle.svg b/svg/static/ll_angle.svg similarity index 100% rename from src/svg/static/ll_angle.svg rename to svg/static/ll_angle.svg diff --git a/src/svg/static/lr_angle.svg b/svg/static/lr_angle.svg similarity index 100% rename from src/svg/static/lr_angle.svg rename to svg/static/lr_angle.svg diff --git a/src/svg/static/move.svg b/svg/static/move.svg similarity index 100% rename from src/svg/static/move.svg rename to svg/static/move.svg diff --git a/src/svg/static/pencil.svg b/svg/static/pencil.svg similarity index 100% rename from src/svg/static/pencil.svg rename to svg/static/pencil.svg diff --git a/src/svg/static/plus.svg b/svg/static/plus.svg similarity index 100% rename from src/svg/static/plus.svg rename to svg/static/plus.svg diff --git a/src/svg/static/pointer_move.svg b/svg/static/pointer_move.svg similarity index 100% rename from src/svg/static/pointer_move.svg rename to svg/static/pointer_move.svg diff --git a/src/svg/static/question_arrow.svg b/svg/static/question_arrow.svg similarity index 100% rename from src/svg/static/question_arrow.svg rename to svg/static/question_arrow.svg diff --git a/src/svg/static/right_ptr.svg b/svg/static/right_ptr.svg similarity index 100% rename from src/svg/static/right_ptr.svg rename to svg/static/right_ptr.svg diff --git a/src/svg/static/right_side.svg b/svg/static/right_side.svg similarity index 100% rename from src/svg/static/right_side.svg rename to svg/static/right_side.svg diff --git a/src/svg/static/right_tee.svg b/svg/static/right_tee.svg similarity index 100% rename from src/svg/static/right_tee.svg rename to svg/static/right_tee.svg diff --git a/src/svg/static/sb_down_arrow.svg b/svg/static/sb_down_arrow.svg similarity index 100% rename from src/svg/static/sb_down_arrow.svg rename to svg/static/sb_down_arrow.svg diff --git a/src/svg/static/sb_h_double_arrow.svg b/svg/static/sb_h_double_arrow.svg similarity index 100% rename from src/svg/static/sb_h_double_arrow.svg rename to svg/static/sb_h_double_arrow.svg diff --git a/src/svg/static/sb_left_arrow.svg b/svg/static/sb_left_arrow.svg similarity index 100% rename from src/svg/static/sb_left_arrow.svg rename to svg/static/sb_left_arrow.svg diff --git a/src/svg/static/sb_right_arrow.svg b/svg/static/sb_right_arrow.svg similarity index 100% rename from src/svg/static/sb_right_arrow.svg rename to svg/static/sb_right_arrow.svg diff --git a/src/svg/static/sb_up_arrow.svg b/svg/static/sb_up_arrow.svg similarity index 100% rename from src/svg/static/sb_up_arrow.svg rename to svg/static/sb_up_arrow.svg diff --git a/src/svg/static/sb_v_double_arrow.svg b/svg/static/sb_v_double_arrow.svg similarity index 100% rename from src/svg/static/sb_v_double_arrow.svg rename to svg/static/sb_v_double_arrow.svg diff --git a/src/svg/static/tcross.svg b/svg/static/tcross.svg similarity index 100% rename from src/svg/static/tcross.svg rename to svg/static/tcross.svg diff --git a/src/svg/static/top_left_corner.svg b/svg/static/top_left_corner.svg similarity index 100% rename from src/svg/static/top_left_corner.svg rename to svg/static/top_left_corner.svg diff --git a/src/svg/static/top_right_corner.svg b/svg/static/top_right_corner.svg similarity index 100% rename from src/svg/static/top_right_corner.svg rename to svg/static/top_right_corner.svg diff --git a/src/svg/static/top_side.svg b/svg/static/top_side.svg similarity index 100% rename from src/svg/static/top_side.svg rename to svg/static/top_side.svg diff --git a/src/svg/static/top_tee.svg b/svg/static/top_tee.svg similarity index 100% rename from src/svg/static/top_tee.svg rename to svg/static/top_tee.svg diff --git a/src/svg/static/ul_angle.svg b/svg/static/ul_angle.svg similarity index 100% rename from src/svg/static/ul_angle.svg rename to svg/static/ul_angle.svg diff --git a/src/svg/static/ur_angle.svg b/svg/static/ur_angle.svg similarity index 100% rename from src/svg/static/ur_angle.svg rename to svg/static/ur_angle.svg diff --git a/src/svg/static/vertical_text.svg b/svg/static/vertical_text.svg similarity index 100% rename from src/svg/static/vertical_text.svg rename to svg/static/vertical_text.svg diff --git a/src/svg/static/wayland_cursor.svg b/svg/static/wayland_cursor.svg similarity index 100% rename from src/svg/static/wayland_cursor.svg rename to svg/static/wayland_cursor.svg diff --git a/src/svg/static/x_cursor.svg b/svg/static/x_cursor.svg similarity index 100% rename from src/svg/static/x_cursor.svg rename to svg/static/x_cursor.svg diff --git a/src/svg/static/xterm.svg b/svg/static/xterm.svg similarity index 100% rename from src/svg/static/xterm.svg rename to svg/static/xterm.svg diff --git a/src/svg/static/zoom_in.svg b/svg/static/zoom_in.svg similarity index 100% rename from src/svg/static/zoom_in.svg rename to svg/static/zoom_in.svg diff --git a/src/svg/static/zoom_out.svg b/svg/static/zoom_out.svg similarity index 100% rename from src/svg/static/zoom_out.svg rename to svg/static/zoom_out.svg