{"_id":"@csyakamoz/excel-schema","_rev":"4-976c5edc19881696d4696eb0071e96f6","name":"@csyakamoz/excel-schema","dist-tags":{"latest":"0.1.3"},"versions":{"0.1.0":{"name":"@csyakamoz/excel-schema","version":"0.1.0","description":"read excel in a lazy way","main":"index.js","repository":{"type":"git","url":"git+https://github.com/CsYakamoz/excel-schema.git"},"author":{"name":"CsYakamoz"},"license":"MIT","scripts":{"test":"mocha test"},"devDependencies":{"eslint":"^6.0.1","mocha":"^6.1.4"},"dependencies":{"ramda":"^0.26.1","xlsx":"^0.14.3"},"bugs":{"url":"https://github.com/CsYakamoz/excel-schema/issues"},"homepage":"https://github.com/CsYakamoz/excel-schema#readme","directories":{"test":"test"},"keywords":["excel","schema"],"gitHead":"efa15425cc7c9cd882eaf53e57c836cc49372d5a","_id":"@csyakamoz/excel-schema@0.1.0","_nodeVersion":"12.6.0","_npmVersion":"6.10.1","dist":{"integrity":"sha512-9N6xRnHmwCn6SFOnj7OL7ON5KCyiaSgca+3G9tzw+VGZuhkXzxZmoCGql4LSmnkV353b3IAJNvGv1zUcxcsV1Q==","shasum":"a4024b945dca7a2f165c259207f2697828dddf24","tarball":"https://registry.npmjs.org/@csyakamoz/excel-schema/-/excel-schema-0.1.0.tgz","fileCount":21,"unpackedSize":32258,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdPSnACRA9TVsSAnZWagAAtZcP/1JUy/V/lHoiM6yXU+N5\nrwg9INfG9X0bNL/o4A3MvnPiP5xZr2JL9qjzraD6q9Ae0Zf29gR2bjOt+RTN\njZhhwLLDNN7sMPeF+tkf/K0Z4V2RgR3mgsPkFgSuiWx3UL1v065phVcVJtND\nT1/vTyRx5cMXhKt7sbrxfXW5rOX0XfHDxKAGCjcDf8Dbo+CWP/sLNhkD53LV\ntLLJ8vfAgRMyIh8gp6N3yr47Iz2l7Tco2btMEqHwrv+MwGVJdb1HNQVGH4Yr\nVhZVBHY05z+X1AOX/+FcZeQxUdvW7d2g+bNaBIa0ANdhI32j+NY6nASlUGoZ\nN0cB/RnPf/Psny5pHbneaumgJFXHTB6zJgua5bPjM1RuG6FSuQ7wMz0WaofJ\n2bEj2qa8Ifm9ngigD7Xahl+CQyS2TDit7M+hW1ZsbdNDopNwNpLFzKmGAdLP\narQ5Z0ay3QOXoy42fUtjSMeAbUyTXJwHN+Idb1w/IxBQRFRCxTnlThcabVum\n0UTZ+GgXr/pxAj2jcOtNRMj9ygcCQXGuZ2ONcB5cY50ADxgdnho+3sfY7Hlk\nuuBiN01QZK3hsWZcDZQNL4YGOADzu5QkcGFzkobT+a/3R5Zwc+S/P/8haemO\n2zJHFVhekyKBRiZuNeD2qMSq3kSVzwYXihar1KeexrdFNp5REr4ydk08mbNm\nHGky\r\n=WFYI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHywaZVT56QtWNL3Ydq0cUNT+x1j3XZRQZdAw6mr+9OfAiEAyyBubB5xzy2a4cLKfS2JCjijtzYMStvDKn8TvUv20co="}]},"maintainers":[{"name":"csyakamoz","email":"532609418@qq.com"}],"_npmUser":{"name":"csyakamoz","email":"532609418@qq.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/excel-schema_0.1.0_1564289471747_0.22629214837376033"},"_hasShrinkwrap":false},"0.1.1":{"name":"@csyakamoz/excel-schema","version":"0.1.1","description":"read excel in a lazy way","main":"index.js","types":"./index.d.ts","repository":{"type":"git","url":"git+https://github.com/CsYakamoz/excel-schema.git"},"author":{"name":"CsYakamoz"},"license":"MIT","scripts":{"test":"mocha test"},"devDependencies":{"eslint":"^6.0.1","mocha":"^6.1.4"},"dependencies":{"ramda":"^0.26.1","xlsx":"^0.14.3"},"bugs":{"url":"https://github.com/CsYakamoz/excel-schema/issues"},"homepage":"https://github.com/CsYakamoz/excel-schema#readme","directories":{"test":"test"},"keywords":["excel","schema"],"gitHead":"6969edd09617beb651dddfc90be40c3ef86d7ecd","_id":"@csyakamoz/excel-schema@0.1.1","_nodeVersion":"12.6.0","_npmVersion":"6.10.1","dist":{"integrity":"sha512-L4w9ME+WCLKFmRIYLmDZI17ob1coTe3kObaGKba7cmepY/DqXQvJ1zYWNWa0Ctne2u+ciQUZEVkBJS9HvcQm/g==","shasum":"b9dbb9ffe144e0be505eedf7cbe2a8b45fd4e1d4","tarball":"https://registry.npmjs.org/@csyakamoz/excel-schema/-/excel-schema-0.1.1.tgz","fileCount":22,"unpackedSize":38215,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdTAFdCRA9TVsSAnZWagAAO68P/0TgWAw6q+EDT4nrrZOt\nKay+Px+tmLJTYhTJtHvuuVTIkTZBOD4RKywx9ZqVXO7TRS8m+c0Xq5DRMdjc\nnzRs+42Ssheny/Hx8Go0iSbvrJqLyOGd5X6qtvlbGwwY96r72Yw95YNj33SQ\nbBwYAvHA8cgDXpNqE/NUxeF2UAYo1aKpu/DEmFOKNZ07wNvcui7SUgusz8iO\nHluCPPtY2gX1YlbgbJjcIZRACXAtBlKXyOEIDfX5d0gvBRT/yJ+GTJmn5ref\n5vUAa+gGUYQTQPDlHwv9Z7TJZO4AL1sEHT6SnuSMocdLAnXAHoHLCsx90IDy\nk6ZysBZkVaMtvno3/ECCknSTaqQfzC4Y9YnlhAjX6EoMzjzeNw+bB/2IGGJA\nYm8JkLPfy+p0z4Qqs0/WikRn5b9+4q+wtSpBXzcI06D7yABhuABLQT0kExE/\ncvEf0jttLpxek3PaG/CHmM/nxaoqIO84MGHWR6CRg5N6s3ejb/0tFiCSWLa4\npvEvf5roWhdGbwOMyiKLMhG8Ux4DazbYy7dQD3raqCRARH3GmjszXjtCjVnO\nSTNZ4+Bo6B2xAmB2B1aMWqxUR/GdsheLiYy5dRJ7nHZuCZqeWW6kl872LTRa\n8jPGcNKwoSRP+dXnfjHEvVFGJob58jtr4vFECTGXLE2eXeVhFP44m7pwIVx0\nBHaq\r\n=vBc/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAWE1S4xwx3+zAsdvHvhhG37kbu6X5hPJPKg0XpcDIHUAiEAqX+maBle/0sTTXfU7SwzkdhGodsARGQRkmq4D43NMCI="}]},"maintainers":[{"name":"csyakamoz","email":"532609418@qq.com"}],"_npmUser":{"name":"csyakamoz","email":"532609418@qq.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/excel-schema_0.1.1_1565262172203_0.5209944363660532"},"_hasShrinkwrap":false},"0.1.2":{"name":"@csyakamoz/excel-schema","version":"0.1.2","description":"read excel in a lazy way","main":"index.js","types":"./index.d.ts","repository":{"type":"git","url":"git+https://github.com/CsYakamoz/excel-schema.git"},"author":{"name":"CsYakamoz"},"license":"MIT","scripts":{"test":"mocha test"},"devDependencies":{"eslint":"^6.0.1","mocha":"^6.1.4"},"dependencies":{"ramda":"^0.26.1","xlsx":"^0.14.3"},"bugs":{"url":"https://github.com/CsYakamoz/excel-schema/issues"},"homepage":"https://github.com/CsYakamoz/excel-schema#readme","directories":{"test":"test"},"keywords":["excel","schema"],"gitHead":"2c7a057c01bfb4ed28fd8dacd0ab616dd7a6fd28","_id":"@csyakamoz/excel-schema@0.1.2","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-KoSxUN/M0G0X6tWS3JU9YDwuL7ulvLy5Azf8zmz2/jQjRmaEDk8o6uNgiIewNC81iMc0v2jwHNmCLF36PVubgg==","shasum":"7528d6f6879ab7019815371cfc76711f5923e51f","tarball":"https://registry.npmjs.org/@csyakamoz/excel-schema/-/excel-schema-0.1.2.tgz","fileCount":26,"unpackedSize":139500,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdTV81CRA9TVsSAnZWagAAdrEQAI78y5QYTd4M2gKY2g82\nmBkJQev+GdhEXEsrxuOwmOFf2sXoCce/bPlqyOTb/mzftdpDfE2faUH9DX2n\nsPfbIcq8eD6Un9DcNrR84KtA1bui8QDFmOb2MYicClj2jyuTeWyFGFkr35q4\npeHDY3uEjW4lIHhhb05Rv8sb2L3z9MamSQIvoE88ZxwQqeghV7MGPX9x1kcX\nkTLKam8t5tQdVoDXjTBTtnOZNcnNTCr31+SbQE09fFzKKClCLKZlLBPbmpCn\ny/2xjygKRCWqMShg37ga5TCmJiwIFL38NxTXtoIHA3WozjGlUIZ/Jw+DjOin\n5bC8LaTjqtcixDXULqOcwVTdjjH7gou52H6Qfi24NlMoAX0pU3pmwbu1aMfW\nObwMHhpFWhY7nnV636rpZYv4KCltQVKpisk+Ibyt66AGe9kzviagp3JOX3pE\noafhsHSYCC1lNO2mTIDuge4mNvY6M1Q0h/r/g3zjDB7oLUOXg7rvTYu8vnxp\nq878VeyTL9g0AXfdW/dHpZMxpPhDUDUHIthWx/PV65qww9nye50ZpNpiPg8U\n5jKp4Nc+0G0HODkcg0poz3hbTd3Ea/6dyILLdK4LIgHtDjLpTJiNigLBCBZu\nnTgGfVKBJkSd+SR/7EJy3n0sRbpqpg/CcAjKuVcxZBl3TSSSRayKejVwPriY\n1Tkj\r\n=kmX0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGJJk1M1O1bVdoFFHIyWojdBmP5emlTP9D95ZwfF26ThAiBpN6sTjQTo0N6mCLlcqQHx4NgafMJkFzWiiyOfR5RxsA=="}]},"maintainers":[{"name":"csyakamoz","email":"532609418@qq.com"}],"_npmUser":{"name":"csyakamoz","email":"532609418@qq.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/excel-schema_0.1.2_1565351733178_0.5298815578176426"},"_hasShrinkwrap":false},"0.1.3":{"name":"@csyakamoz/excel-schema","version":"0.1.3","description":"read excel in a lazy way","main":"index.js","types":"./index.d.ts","repository":{"type":"git","url":"git+https://github.com/CsYakamoz/excel-schema.git"},"author":{"name":"CsYakamoz"},"license":"MIT","scripts":{"test":"mocha test"},"devDependencies":{"eslint":"^6.0.1","mocha":"^6.1.4"},"dependencies":{"ramda":"^0.26.1","xlsx":"^0.14.3"},"bugs":{"url":"https://github.com/CsYakamoz/excel-schema/issues"},"homepage":"https://github.com/CsYakamoz/excel-schema#readme","directories":{"test":"test"},"keywords":["excel","schema"],"gitHead":"0026c4c228ca64bbc05cda05c306184a53a88068","_id":"@csyakamoz/excel-schema@0.1.3","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-O5zp/O4u+l2iEEwe4dQal/0NWlDKZaIxLxZjz3L+gl7lKSRDswYJZsCu8o0HxPtD40zcIzEqtNGIDmG97h2c4w==","shasum":"5c9259dedbba3084a859aacd950453ed2c104c7f","tarball":"https://registry.npmjs.org/@csyakamoz/excel-schema/-/excel-schema-0.1.3.tgz","fileCount":26,"unpackedSize":139758,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdbIarCRA9TVsSAnZWagAAesMQAJloJnMkETBjAMmWbzAV\nRJJIGV/yw0CXvdgVV+qIXTd8Q3bdikSeEVhMALpcw/A9jIKjgOtRoY4yGJ5C\nDRaew8uhcgvI/9+3lGehSXvgCw0INsCJxa23WQocyraHx/CPAu23bMRHRt73\nH87Dl0bqou3h0PhFWLiGrnjWokC8HCtXL6NudFTsw5BwMAwnmlu3GLWF3QJc\nWFXQBCukecNSiG5RYc6PJI3H0fjvoNTHB5OVqKyh9k16GP6eZyupib9EyL9d\nVSbzAdcLNlmi9pEIWKSH02ZypfqeyV78A4Anw+TJ7WSxR24b3cpTe2RRrNZO\n81+mc9XqlW54cOO3K5T2nbmrF0Db2QYinwauhwNTm2/LXjVaCo9eVJls04ap\nXNlA42VYnWtYI8UwcXWuwjymgVITXbt+AGkt0+fylrL+D++59cEVFlg4aBHi\nsrHDsxisVlcIVeWocxZI+yra13WSVWNUX0yE+YNmdT1j3Up2JfhZHWXkzUDZ\nn9tAkVNWmPJAB7U3UIsiZVdY44iwoeC0IanQ1PwuR7Ma0PqUDgl6MBm3mbvI\na3tKZimbsYm8Uc7nz8PKGIQJQw10RlSnAyPuAmRG4CUa9IDc005f/T05+Jul\nM+Kvnujywod46m5+p+FtoiVPIbxMDik7iOfpRNHA7AFeAkY0Rtn3fr3an1S4\nJTMI\r\n=DGDr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCQNhk2gcmR+Hb2fiOLrpBH1PDHP4mKWDnWQOpENgAwjwIgVCP6Wb1PhQiLPlLtvWiRc0dyF9+7eZhD9MF16Scz1yI="}]},"maintainers":[{"name":"csyakamoz","email":"532609418@qq.com"}],"_npmUser":{"name":"csyakamoz","email":"532609418@qq.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/excel-schema_0.1.3_1567393450577_0.7242107924101451"},"_hasShrinkwrap":false}},"time":{"created":"2019-07-28T04:51:11.523Z","0.1.0":"2019-07-28T04:51:11.846Z","modified":"2022-04-05T02:03:43.888Z","0.1.1":"2019-08-08T11:02:52.323Z","0.1.2":"2019-08-09T11:55:33.323Z","0.1.3":"2019-09-02T03:04:10.804Z"},"maintainers":[{"name":"csyakamoz","email":"532609418@qq.com"}],"description":"read excel in a lazy way","homepage":"https://github.com/CsYakamoz/excel-schema#readme","keywords":["excel","schema"],"repository":{"type":"git","url":"git+https://github.com/CsYakamoz/excel-schema.git"},"author":{"name":"CsYakamoz"},"bugs":{"url":"https://github.com/CsYakamoz/excel-schema/issues"},"license":"MIT","readme":"# Excel Schema\n\nRead excel in a lazy way😑.\n\n## Installation\n\n```bash\nnpm install @csyakamoz/excel-schema\n# or\nyarn add @csyakamoz/excel-schema\n```\n\n## Usage\n\n### Single Data\n\nIf your sheet like the image:\n\n![single-data](./images/single.png)\n\nThen, you can read it like the code below:\n\n```javascript\nconst {\n  Schema: { array, date, boolean, custom, number, string },\n  Executor,\n} = require('@csyakamoz/excel-schema');\n\nconst data = Executor(\n  // excel file\n  file,\n  // your schema\n  {\n    no: number().point('A2'),\n    firstName: string().point('B2'),\n    lastName: string().point('C2'),\n    gender: string().point('D2'),\n    country: string().point('E2'),\n    age: number().point('F2'),\n    date: date().point('G2'),\n    id: string().point('H2'),\n  },\n  /**\n   * sheet index or sheet name\n   * this is optional, the default is 0\n   */\n  { sheet: 0 }\n);\n\n// JSON.stringify(data, null, 4)\n{\n    \"no\": 1,\n    \"firstName\": \"Dulce\",\n    \"lastName\": \"Abril\",\n    \"gender\": \"Female\",\n    \"country\": \"United States\",\n    \"age\": 32,\n    \"date\": \"2017-08-01T00:00:00.000Z\",\n    \"id\": \"1562\"\n}\n```\n\n### Array Data\n\n![array-data](./images/array.png)\n\n```javascript\nconst data = Executor(\n    file,\n    array()\n        .range('A2', 'H10')\n        .interval(1, 8)\n        .item({\n            no: number().point('A2'),\n            firstName: string().point('B2'),\n            lastName: string().point('C2'),\n            gender: string().point('D2'),\n            country: string().point('E2'),\n            age: number().point('F2'),\n            date: date().point('G2'),\n            id: string().point('H2'),\n        }),\n);\n\n// JSON.stringify(data, null, 4)\n[\n    {\n        \"no\": 1,\n        \"firstName\": \"Dulce\",\n        \"lastName\": \"Abril\",\n        \"gender\": \"Female\",\n        \"country\": \"United States\",\n        \"age\": 32,\n        \"date\": \"2017-08-01T00:00:00.000Z\",\n        \"id\": \"1562\"\n    },\n    /* ... */\n    {\n        \"no\": 9,\n        \"firstName\": \"Vincenza\",\n        \"lastName\": \"Weiland\",\n        \"gender\": \"Female\",\n        \"country\": \"United States\",\n        \"age\": 40,\n        \"date\": \"2017-08-09T00:00:00.000Z\",\n        \"id\": \"6548\"\n    }\n]\n```\n\n### Array In Array Data\n\n![array-in-array](./images/array-in-array.png)\n\n```javascript\nconst data = Executor(\n    file,\n    array()\n        .range('A2', 'E10')\n        .interval(1, 5)\n        .item({\n            no: number().point('A2'),\n            name: string().point('B2'),\n            favoriteFruits: array()\n                .range('C2', 'E2')\n                .interval(1, 1) // this line is optional\n                .item(string().point('C2')),\n        }),\n);\n\n// JSON.stringify(data, null, 4)\n[\n    {\n        \"no\": 1,\n        \"name\": \"Dulce\",\n        \"favoriteFruits\": [\n            \"apple\",\n            \"durian\",\n            \"pear\"\n        ]\n    },\n    /* ... */\n    {\n        \"no\": 9,\n        \"name\": \"Vincenza\",\n        \"favoriteFruits\": [\n            \"mulberry\",\n            \"peach\",\n            \"grape\"\n        ]\n    }\n]\n```\n\n### Custom Data\n\nIt supports customizing parsers.\n\n![custom-data](./images/custom.png)\n\n```javascript\nconst intervalSchema = custom(intervalStr => {\n    const pattern = /([([]{1})(\\d+),\\s*(\\d+)([)\\]]{1})/;\n    const [, leftBracket, begin, end, rightBracket] = intervalStr.match(\n        pattern\n    );\n    const getBoundary = (value, bracket) => {\n        const includedList = ['[', ']'];\n        return {\n            value: Number(value),\n            includes: includedList.includes(bracket),\n        };\n    };\n\n    return [\n        getBoundary(begin, leftBracket),\n        getBoundary(end, rightBracket),\n    ];\n});\n\nconst data = Executor(\n    file,\n    array()\n        .range('A2', 'B5')\n        .interval(1, 2)\n        .item({\n            interval: intervalSchema().point('A2'),\n            discount: number().point('B2'),\n        }),\n);\n\n// JSON.stringify(data, null, 4)\n[\n    {\n        \"interval\": [\n            {\n                \"value\": 0,\n                \"includes\": true\n            },\n            {\n                \"value\": 100,\n                \"includes\": false\n            }\n        ],\n        \"discount\": 0\n    },\n    /* ... */\n    {\n        \"interval\": [\n            {\n                \"value\": 10000,\n                \"includes\": true\n            },\n            {\n                \"value\": 99999999999,\n                \"includes\": false\n            }\n        ],\n        \"discount\": 0.7\n    }\n]\n```\n\n## License\n\n[MIT](./LICENSE)\n","readmeFilename":"README.md"}