{"_id":"sspaf","_rev":"30-acc7009137f7df1cb95112fac9fe0bef","name":"sspaf","description":"Simple Single Page Application Framework","dist-tags":{"latest":"0.2.1"},"versions":{"0.0.0":{"name":"sspaf","description":"Simple Single Page Application Framework","author":{"name":"Gabriel Forti","email":"gnforti@gmail.com"},"version":"0.0.0","keywords":["app","api","framework","javascript","js","spa","web"],"main":"index.js","bin":{"sspaf":"./indexjs"},"devDependencies":{"commander":"^2.11.0","custom-template-generator":"^0.1.1"},"gitHead":"28974ceebe90c70779e32d27616a0ab59ee4c57b","_id":"sspaf@0.0.0","scripts":{},"_shasum":"8787ad43590af6ca7de3b397036065b50ea7a38f","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.11.4","_npmUser":{"name":"gforti","email":"gnforti@gmail.com"},"dist":{"shasum":"8787ad43590af6ca7de3b397036065b50ea7a38f","tarball":"https://registry.npmjs.org/sspaf/-/sspaf-0.0.0.tgz","integrity":"sha512-3LACgGt59A2pCUI4vdtOf7nc4vEKWBl71pMKgVaLvZ7jmTLvf36N/fPpd4wS876oKPIQdW4HVREQnxxJQadvnw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICkqr5G34gFlu46llNLbbSbNH4yKDLeNXAJcc7UfITsIAiEAvtU87kNcOD8YXFpo1v9RwRtNaAdOs65gbSqn0zQIjA4="}]},"maintainers":[{"name":"gforti","email":"gnforti@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sspaf-0.0.0.tgz_1509473608200_0.3153710763435811"}},"0.0.1":{"name":"sspaf","description":"Simple Single Page Application Framework","author":{"name":"Gabriel Forti","email":"gnforti@gmail.com"},"version":"0.0.1","keywords":["app","api","framework","javascript","js","spa","web"],"main":"index.js","bin":{"sspaf":"./indexjs"},"devDependencies":{"commander":"^2.11.0","custom-template-generator":"^0.1.1"},"gitHead":"e8f3e9f3930a4b5801b266d70691b1b2e4f2c12c","_id":"sspaf@0.0.1","scripts":{},"_shasum":"e8649f91f792dbbb264ae2002b4b36600db03c96","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.11.4","_npmUser":{"name":"gforti","email":"gnforti@gmail.com"},"dist":{"shasum":"e8649f91f792dbbb264ae2002b4b36600db03c96","tarball":"https://registry.npmjs.org/sspaf/-/sspaf-0.0.1.tgz","integrity":"sha512-VpLm09Fp8mGmPL/LySq51VDnWgH4W3szfI3hOViNPNldw15rXObPrw8rKFnWRfySjD8NaWF0XhFs9eaC+Nt9bg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDpag37J7iWn4/8DqJZYCqpSCEfsiVPpNyRR/vNa5syOgIhAMjgSwTVmDUi/JFHQS2S2Jhpz+/W5qvVpFGgT4TYhnML"}]},"maintainers":[{"name":"gforti","email":"gnforti@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sspaf-0.0.1.tgz_1509473992233_0.22084658057428896"}},"0.0.2":{"name":"sspaf","description":"Simple Single Page Application Framework","author":{"name":"Gabriel Forti","email":"gnforti@gmail.com"},"version":"0.0.2","keywords":["app","api","framework","javascript","js","spa","web"],"bin":{"sspaf":"indexjs"},"devDependencies":{"commander":"^2.11.0","custom-template-generator":"^0.1.1"},"gitHead":"c337cc13a5d2f71fd5cba5ec7cbfe7951fcaa003","_id":"sspaf@0.0.2","scripts":{},"_shasum":"2fb1c971867fbb14917727c48a9d3728e1827740","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.11.4","_npmUser":{"name":"gforti","email":"gnforti@gmail.com"},"dist":{"shasum":"2fb1c971867fbb14917727c48a9d3728e1827740","tarball":"https://registry.npmjs.org/sspaf/-/sspaf-0.0.2.tgz","integrity":"sha512-+N5nsaTrpzHZtwYUrOojk8Q8IQMWmCdnVAw3XQwE2iQAQnKlCzH0Y8H6Dv03YtWa1D03T1rVDskEKse6bHtshA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCLmnKQx6qM080hQiAjcY2t63uGkYkzjqnlQzeOHuBe4wIgRh/xkxQW6RkzSmjSs9Dv+pD19475pMZPlENe+s+UY2Q="}]},"maintainers":[{"name":"gforti","email":"gnforti@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sspaf-0.0.2.tgz_1509474592349_0.3716521877795458"}},"0.0.3":{"name":"sspaf","description":"Simple Single Page Application Framework","author":{"name":"Gabriel Forti","email":"gnforti@gmail.com"},"version":"0.0.3","keywords":["app","api","framework","javascript","js","spa","web"],"bin":{"sspaf":"index.js"},"devDependencies":{"commander":"^2.11.0","custom-template-generator":"^0.1.1"},"gitHead":"b94996e0c83cae783a4e2e86ba5a589ac0df5dc4","_id":"sspaf@0.0.3","scripts":{},"_shasum":"b19ef884e20459d50613f52ed2fd10ceec6e4972","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.11.4","_npmUser":{"name":"gforti","email":"gnforti@gmail.com"},"dist":{"shasum":"b19ef884e20459d50613f52ed2fd10ceec6e4972","tarball":"https://registry.npmjs.org/sspaf/-/sspaf-0.0.3.tgz","integrity":"sha512-jWZg97wT+NPP2+iuf6qVb6/DX1A2pqFgvX/MnpmwC5DxE2Go+47LeX7lLY5OE6/dtJaLhjl3YO2LzXLif+spiw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCPe++8c3EMT/rkyavdaWJtZ1kFnPHgTDchSFsN016XQgIgCvLZAoYzlWlppShGbM38hzbtMWBbW4wYiYsbkf6zkKY="}]},"maintainers":[{"name":"gforti","email":"gnforti@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sspaf-0.0.3.tgz_1509474696582_0.7280904408544302"}},"0.0.4":{"name":"sspaf","description":"Simple Single Page Application Framework","author":{"name":"Gabriel Forti","email":"gnforti@gmail.com"},"version":"0.0.4","keywords":["app","api","framework","javascript","js","spa","web"],"bin":{"sspaf":"index.js"},"dependencies":{"commander":"^2.11.0","custom-template-generator":"^0.1.1"},"gitHead":"7099ec21b6fc03cbf9bc5b01bf5910e5a8d0eba5","_id":"sspaf@0.0.4","scripts":{},"_shasum":"b2ca6b44f947e09072e54c30962776ff9cabd577","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.11.4","_npmUser":{"name":"gforti","email":"gnforti@gmail.com"},"dist":{"shasum":"b2ca6b44f947e09072e54c30962776ff9cabd577","tarball":"https://registry.npmjs.org/sspaf/-/sspaf-0.0.4.tgz","integrity":"sha512-1VPllBwBjQ25BvaBqiWFjC7CKHtOdA83MZ3VUF0BJRMocoXjscDH9mfzEYGU2FyTXfu5+MIoWxqmzMKkxbs48w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCy8YYeZQYanG0fru4d5vYF0t/cqEaNXzpGrqTZCYSLewIgboOK/laxDpaAO2rqLBUTp7JIdMYrsQbFGvRjS2+KElY="}]},"maintainers":[{"name":"gforti","email":"gnforti@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sspaf-0.0.4.tgz_1509474949170_0.2996131405234337"}},"0.0.5":{"name":"sspaf","description":"Simple Single Page Application Framework","author":{"name":"Gabriel Forti","email":"gnforti@gmail.com"},"version":"0.0.5","keywords":["app","api","framework","javascript","js","spa","web"],"repository":{"type":"git","url":"git+https://github.com/gforti/sspaf.git"},"bin":{"sspaf":"index.js"},"dependencies":{"commander":"^2.11.0","custom-template-generator":"^0.1.1"},"gitHead":"401766018763f6640464ca572d91f4858a69ec9f","bugs":{"url":"https://github.com/gforti/sspaf/issues"},"homepage":"https://github.com/gforti/sspaf#readme","_id":"sspaf@0.0.5","scripts":{},"_shasum":"d7d26d05492d2b2fc2828a4b89cb20d24065b622","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.11.4","_npmUser":{"name":"gforti","email":"gnforti@gmail.com"},"dist":{"shasum":"d7d26d05492d2b2fc2828a4b89cb20d24065b622","tarball":"https://registry.npmjs.org/sspaf/-/sspaf-0.0.5.tgz","integrity":"sha512-yGwcbEhSVVL2V2W8c06uzL4ABVB/3k/DFkME8pJ9MeSl1Aj7+j1WBofzWu/4q6Lx4KKicUEjEIZ1LZakxk9JOg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDjV76m9EXorx3HgR5EntAZXIsr5BoRjnR+UN5k0bOTJwIhANUwAuk0e2dxDkLu0n14KcUzfXgv6Kn95/xsygghSdSR"}]},"maintainers":[{"name":"gforti","email":"gnforti@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sspaf-0.0.5.tgz_1509475337899_0.09539350681006908"}},"0.0.6":{"name":"sspaf","description":"Simple Single Page Application Framework","author":{"name":"Gabriel Forti","email":"gnforti@gmail.com"},"version":"0.0.6","keywords":["app","api","framework","javascript","js","spa","web"],"repository":{"type":"git","url":"git+https://github.com/gforti/sspaf.git"},"bin":{"sspaf":"index.js"},"dependencies":{"commander":"^2.11.0","custom-template-generator":"^0.1.1"},"gitHead":"6d34c96b0ef1c140c31e8c966b10b445cd648522","bugs":{"url":"https://github.com/gforti/sspaf/issues"},"homepage":"https://github.com/gforti/sspaf#readme","_id":"sspaf@0.0.6","scripts":{},"_shasum":"ea726336566f655804dd5212b80f2c42d13028c6","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.11.4","_npmUser":{"name":"gforti","email":"gnforti@gmail.com"},"dist":{"shasum":"ea726336566f655804dd5212b80f2c42d13028c6","tarball":"https://registry.npmjs.org/sspaf/-/sspaf-0.0.6.tgz","integrity":"sha512-ntGcCVVyFQdCoA1vE43dze26RuhTH3iMk5o3LBWGsLiUP4N6samqQV46CfX3LQmggRgw/LNnEHA9BqwbRagWQw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD/1+iVNJ51Cp/VH8peDi0QmSDV6kWTQ+w7TEsO912srgIhAITSNESxQYN9YR75mJngaFDSzkIF7tquZ5WmX7lmoQKZ"}]},"maintainers":[{"name":"gforti","email":"gnforti@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sspaf-0.0.6.tgz_1509477347826_0.08037281548604369"}},"0.0.7":{"name":"sspaf","description":"Simple Single Page Application Framework","author":{"name":"Gabriel Forti","email":"gnforti@gmail.com"},"version":"0.0.7","keywords":["app","api","framework","javascript","js","spa","web"],"repository":{"type":"git","url":"git+https://github.com/gforti/sspaf.git"},"bin":{"sspaf":"index.js"},"dependencies":{"commander":"^2.11.0","custom-template-generator":"^0.1.1"},"gitHead":"a191536119e8ce441d1160fc9329f586d8723053","bugs":{"url":"https://github.com/gforti/sspaf/issues"},"homepage":"https://github.com/gforti/sspaf#readme","_id":"sspaf@0.0.7","scripts":{},"_shasum":"f82f22d947e6a20882251c4d3afe4d446e8bbf8f","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.11.4","_npmUser":{"name":"gforti","email":"gnforti@gmail.com"},"dist":{"shasum":"f82f22d947e6a20882251c4d3afe4d446e8bbf8f","tarball":"https://registry.npmjs.org/sspaf/-/sspaf-0.0.7.tgz","integrity":"sha512-qrp+//czmz7KXy5yx/a+07t/pcPE+xO/OLUFpoX4kBCax+cfZ9XuIH7EKXSvwcQExxTLwRIbmi18ogZEoa92XA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDGbog+Qc/eBklV/+KmVuQ6nwHM5g4LpPpRFqZhNsb1rAIhAK5xvXLb/mMuQdeRW/YGCe8wd0FDHl9+h+UfgupeRAvl"}]},"maintainers":[{"name":"gforti","email":"gnforti@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sspaf-0.0.7.tgz_1509477581532_0.02003781241364777"}},"0.0.8":{"name":"sspaf","description":"Simple Single Page Application Framework","author":{"name":"Gabriel Forti","email":"gnforti@gmail.com"},"version":"0.0.8","keywords":["app","api","framework","javascript","js","spa","web"],"repository":{"type":"git","url":"git+https://github.com/gforti/sspaf.git"},"bin":{"sspaf":"index.js"},"dependencies":{"commander":"^2.11.0","custom-template-generator":"^0.1.1"},"gitHead":"5d5595dd98f4c5d0aa89aebe79d1a2ef74a5eede","bugs":{"url":"https://github.com/gforti/sspaf/issues"},"homepage":"https://github.com/gforti/sspaf#readme","_id":"sspaf@0.0.8","scripts":{},"_shasum":"abd0f96a22f175d30d96c78fb9df9afd4dedd07e","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.11.4","_npmUser":{"name":"gforti","email":"gnforti@gmail.com"},"dist":{"shasum":"abd0f96a22f175d30d96c78fb9df9afd4dedd07e","tarball":"https://registry.npmjs.org/sspaf/-/sspaf-0.0.8.tgz","integrity":"sha512-uYN89DjQeiTdp+I4tLoksrnepOSMbVIF/RfsfpT8OPGa/s2AJZQr5jAppbjstElM3aJPqmilm0BF1H+udaFblQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCm6Us1boHQ2VOBveHks2FgYqgrRG7489Bp7jrmtcYHQQIgMcPAI+2KdLe2QTrGUhrLAn4DmXaQBDsWsRmCGQqA8tk="}]},"maintainers":[{"name":"gforti","email":"gnforti@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sspaf-0.0.8.tgz_1509477961234_0.7633642249274999"}},"0.0.9":{"name":"sspaf","description":"Simple Single Page Application Framework","author":{"name":"Gabriel Forti","email":"gnforti@gmail.com"},"version":"0.0.9","keywords":["app","api","framework","javascript","js","spa","web"],"repository":{"type":"git","url":"git+https://github.com/gforti/sspaf.git"},"bin":{"sspaf":"index.js"},"dependencies":{"commander":"^2.11.0","custom-template-generator":"^0.1.1"},"gitHead":"87dc517127c51036a24b97bb99704a414bdad061","bugs":{"url":"https://github.com/gforti/sspaf/issues"},"homepage":"https://github.com/gforti/sspaf#readme","_id":"sspaf@0.0.9","scripts":{},"_shasum":"dd2e52cd7e2c952a41b299a9bf5137fd2b054137","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.11.4","_npmUser":{"name":"gforti","email":"gnforti@gmail.com"},"dist":{"shasum":"dd2e52cd7e2c952a41b299a9bf5137fd2b054137","tarball":"https://registry.npmjs.org/sspaf/-/sspaf-0.0.9.tgz","integrity":"sha512-2jb/MxWNJ3rS8zxF4vJBcG9GNyfGqOsTZ37Rbjr5WBl02TCpLoXvCzulmSdRuaVqDiTfRMJ4ie5BA2o7AUOr2g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF2Ed/AxH9KqWR4MtGZBz6zaN2K7almxj8GRyH9Pvw4zAiB5RfBx1P2KKn/QV0bhT6AP2ULXJ9+OaKLtItlE2nqsUQ=="}]},"maintainers":[{"name":"gforti","email":"gnforti@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sspaf-0.0.9.tgz_1509510756156_0.6003884826786816"}},"0.0.10":{"name":"sspaf","description":"Simple Single Page Application Framework","author":{"name":"Gabriel Forti","email":"gnforti@gmail.com"},"version":"0.0.10","license":"MIT","keywords":["app","api","framework","javascript","js","spa","web"],"repository":{"type":"git","url":"git+https://github.com/gforti/sspaf.git"},"bin":{"sspaf":"index.js"},"dependencies":{"commander":"^2.11.0","graceful-copy":"^1.1.0","inquirer":"^3.3.0"},"gitHead":"a4d17b848148ff0f9afbbef48e063dd36ae33187","bugs":{"url":"https://github.com/gforti/sspaf/issues"},"homepage":"https://github.com/gforti/sspaf#readme","_id":"sspaf@0.0.10","scripts":{},"_shasum":"58d99949cc135bd4bcd00074a9673fa587ac5935","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.11.4","_npmUser":{"name":"gforti","email":"gnforti@gmail.com"},"dist":{"shasum":"58d99949cc135bd4bcd00074a9673fa587ac5935","tarball":"https://registry.npmjs.org/sspaf/-/sspaf-0.0.10.tgz","integrity":"sha512-ODUjyU01N5rgKGEoqJbnwEFcxoV4vF/KFctZOnXPrbm/Dhs1C+Uan+gJk9HexeaDG2xwhQvbe671Ygm/XN/ptQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBMcvwNTsaqX8t86263neRmpO/mVv71OTIQoyYIY/nGoAiEA79wcMZFJJOWQVD5jj7qr16DjnTtqFHzj51Y2+EoSK2k="}]},"maintainers":[{"name":"gforti","email":"gnforti@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sspaf-0.0.10.tgz_1509515140041_0.19937094068154693"}},"0.0.11":{"name":"sspaf","description":"Simple Single Page Application Framework","author":{"name":"Gabriel Forti","email":"gnforti@gmail.com"},"version":"0.0.11","license":"MIT","keywords":["app","api","framework","javascript","js","spa","web"],"repository":{"type":"git","url":"git+https://github.com/gforti/sspaf.git"},"bin":{"sspaf":"index.js"},"dependencies":{"commander":"^2.11.0","graceful-copy":"^1.1.0","inquirer":"^3.3.0"},"gitHead":"b504c0da086cc0bc21b990e5b117876531833836","bugs":{"url":"https://github.com/gforti/sspaf/issues"},"homepage":"https://github.com/gforti/sspaf#readme","_id":"sspaf@0.0.11","scripts":{},"_shasum":"53eca214ef1c6289deab23372f18b1ac3274b7ff","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.11.4","_npmUser":{"name":"gforti","email":"gnforti@gmail.com"},"dist":{"shasum":"53eca214ef1c6289deab23372f18b1ac3274b7ff","tarball":"https://registry.npmjs.org/sspaf/-/sspaf-0.0.11.tgz","integrity":"sha512-Y1qAdfrR3vdNrlf1C61M9j/Q4EHEFwFPrPvTM3bKUd6GhkQGCcpy3kuC1dl038AQAXBvXh6Ty2VqdJyjbojOWQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCEfScHuLmGRAGdppyoYVcCp2BXAVrpJqK28w4FAHon5wIhAMKQ5Wbsr4Lqj7U7N6I/Bp/E776u5yxw6+c41ey5aiw5"}]},"maintainers":[{"name":"gforti","email":"gnforti@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sspaf-0.0.11.tgz_1509516458336_0.13776597194373608"}},"0.0.12":{"name":"sspaf","description":"Simple Single Page Application Framework","author":{"name":"Gabriel Forti","email":"gnforti@gmail.com"},"version":"0.0.12","license":"MIT","keywords":["app","api","framework","javascript","js","spa","web"],"repository":{"type":"git","url":"git+https://github.com/gforti/sspaf.git"},"bin":{"sspaf":"index.js"},"dependencies":{"commander":"^2.11.0","graceful-copy":"^1.1.0","inquirer":"^3.3.0"},"gitHead":"d022bec3ffa75417ae65760394824e3ed1c49034","bugs":{"url":"https://github.com/gforti/sspaf/issues"},"homepage":"https://github.com/gforti/sspaf#readme","_id":"sspaf@0.0.12","scripts":{},"_shasum":"4c90bd8d431c1d03d51c2aae07bd812850bc27d1","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.11.4","_npmUser":{"name":"gforti","email":"gnforti@gmail.com"},"dist":{"shasum":"4c90bd8d431c1d03d51c2aae07bd812850bc27d1","tarball":"https://registry.npmjs.org/sspaf/-/sspaf-0.0.12.tgz","integrity":"sha512-QKFV3av22SAI4xnLmxqKpi5eKO+50/KpTv4luTPK8xeHAxV2qSm8poZi0XkIy5OWZltrrDap3ahntpsR3hP+cg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHzLAX0DC5yGI3/0s7uwSyEU7hYmzm05B/qdju8fihM6AiA/Rr8Lsz/cHCujsVRzv632muj5XTf/HlzmGvg56hEYjQ=="}]},"maintainers":[{"name":"gforti","email":"gnforti@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sspaf-0.0.12.tgz_1509517683105_0.7447309866547585"}},"0.0.13":{"name":"sspaf","description":"Simple Single Page Application Framework","author":{"name":"Gabriel Forti","email":"gnforti@gmail.com"},"version":"0.0.13","license":"MIT","keywords":["app","api","framework","javascript","js","spa","web"],"repository":{"type":"git","url":"git+https://github.com/gforti/sspaf.git"},"bin":{"sspaf":"index.js"},"dependencies":{"commander":"^2.11.0","graceful-copy":"^1.1.0","inquirer":"^3.3.0"},"gitHead":"c97fca51db4f1e785c1cb8cc052d129460f220b6","bugs":{"url":"https://github.com/gforti/sspaf/issues"},"homepage":"https://github.com/gforti/sspaf#readme","_id":"sspaf@0.0.13","scripts":{},"_shasum":"549b29935cf719187ac61dde2b90d4bfc244c339","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.11.4","_npmUser":{"name":"gforti","email":"gnforti@gmail.com"},"dist":{"shasum":"549b29935cf719187ac61dde2b90d4bfc244c339","tarball":"https://registry.npmjs.org/sspaf/-/sspaf-0.0.13.tgz","integrity":"sha512-bKUHV0RC5jGCwlJ1A3CkD78G5freHiNIHT1bImJs8t5osJJG0CF8p/u9S8dKnCTXfdTsz37v7rLLs2Kg+0MDNQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDxTA/jDPNivT17+bZA8l7iTVeKtKJ43XbH8SeHBG0D1wIgfCQ7y3vnbL8waID8NUf2WbSHpa8BDSUIZhYFOYFFPY0="}]},"maintainers":[{"name":"gforti","email":"gnforti@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sspaf-0.0.13.tgz_1509517948810_0.0180238566827029"}},"0.0.14":{"name":"sspaf","description":"Simple Single Page Application Framework","author":{"name":"Gabriel Forti","email":"gnforti@gmail.com"},"version":"0.0.14","license":"MIT","keywords":["app","api","framework","javascript","js","spa","web"],"repository":{"type":"git","url":"git+https://github.com/gforti/sspaf.git"},"bin":{"sspaf":"index.js"},"dependencies":{"commander":"^2.11.0","graceful-copy":"^1.1.0","inquirer":"^3.3.0"},"gitHead":"4b6f036ccf49eeb245aa67e35547ecb3cf336357","bugs":{"url":"https://github.com/gforti/sspaf/issues"},"homepage":"https://github.com/gforti/sspaf#readme","_id":"sspaf@0.0.14","scripts":{},"_shasum":"acd74d1b789a4d0d21ec95c0e45cb29fd30c913a","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.11.4","_npmUser":{"name":"gforti","email":"gnforti@gmail.com"},"dist":{"shasum":"acd74d1b789a4d0d21ec95c0e45cb29fd30c913a","tarball":"https://registry.npmjs.org/sspaf/-/sspaf-0.0.14.tgz","integrity":"sha512-y3v9KjW34ZjH97AqF89rwZnFzODBP5ATnfYGNvmLELLzQlPI7oyQpDDnDWzMazsX0awzUqX6/oWC2xqXiOv46g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDrk77UNCrmd2VY/EI5CAoHRLS0JNHWRhNetjpo2UekNQIhAKFJU0ATiMgZkt83IE8t1JliaVrqxlPY86wWx/tIWLxM"}]},"maintainers":[{"name":"gforti","email":"gnforti@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sspaf-0.0.14.tgz_1509518493930_0.8468458850402385"}},"0.0.15":{"name":"sspaf","description":"Simple Single Page Application Framework","author":{"name":"Gabriel Forti","email":"gnforti@gmail.com"},"version":"0.0.15","license":"MIT","keywords":["app","api","framework","javascript","js","spa","web"],"repository":{"type":"git","url":"git+https://github.com/gforti/sspaf.git"},"bin":{"sspaf":"index.js"},"dependencies":{"commander":"^2.11.0","graceful-copy":"^1.1.0","inquirer":"^3.3.0"},"gitHead":"0823616a365cf30ab9f919c8a7d762dd0f254ecf","bugs":{"url":"https://github.com/gforti/sspaf/issues"},"homepage":"https://github.com/gforti/sspaf#readme","_id":"sspaf@0.0.15","scripts":{},"_shasum":"46584c12416ff9eb9635c2c60a39b75a74910cc7","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.11.4","_npmUser":{"name":"gforti","email":"gnforti@gmail.com"},"dist":{"shasum":"46584c12416ff9eb9635c2c60a39b75a74910cc7","tarball":"https://registry.npmjs.org/sspaf/-/sspaf-0.0.15.tgz","integrity":"sha512-+WbBq34nHB/Bg0jUU24dC0J9m24UToGK3XSgEM7ap07NKaVAebLk2VcQGIW/SAfL+0NrXv/4c419lN7e0+PuiQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDydit7o3d6ZVdbgNa7i2WDqrxK1eMlV5ieKGSZBwDebQIhAII3l2LSVw6GvlOABZ1ERuG61BJVj5im81vCqNbhAUet"}]},"maintainers":[{"name":"gforti","email":"gnforti@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sspaf-0.0.15.tgz_1509520222633_0.5898077343590558"}},"0.0.16":{"name":"sspaf","description":"Simple Single Page Application Framework","author":{"name":"Gabriel Forti","email":"gnforti@gmail.com"},"version":"0.0.16","license":"MIT","keywords":["app","api","framework","javascript","js","spa","web"],"repository":{"type":"git","url":"git+https://github.com/gforti/sspaf.git"},"bin":{"sspaf":"index.js"},"dependencies":{"commander":"^2.11.0","graceful-copy":"^1.1.0","inquirer":"^3.3.0"},"gitHead":"b3c5c0feae3d5a6e3007432c69a9216318dc4dd1","bugs":{"url":"https://github.com/gforti/sspaf/issues"},"homepage":"https://github.com/gforti/sspaf#readme","_id":"sspaf@0.0.16","scripts":{},"_shasum":"b2e3104c1fb56e0cfef73861e44daaf7c4b2c291","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.11.4","_npmUser":{"name":"gforti","email":"gnforti@gmail.com"},"dist":{"shasum":"b2e3104c1fb56e0cfef73861e44daaf7c4b2c291","tarball":"https://registry.npmjs.org/sspaf/-/sspaf-0.0.16.tgz","integrity":"sha512-CnK9IxaMOehdLltKn/2maGnLjCP8IMiBb5elRP/ahzvfi8MtkOMb0/mfbdrxceyQ1Eyj/wXToBlCls5A2GIpkQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCoIk1Jpvu2YygOUgeeIef4ypx9HFou25akacZTHmVDSwIgUqwGpeTmp1jHFhhjqfJOjjA5RRRtc+bXpbhCV3a0YzQ="}]},"maintainers":[{"name":"gforti","email":"gnforti@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sspaf-0.0.16.tgz_1509520524354_0.7313653139863163"}},"0.0.17":{"name":"sspaf","description":"Simple Single Page Application Framework","author":{"name":"Gabriel Forti","email":"gnforti@gmail.com"},"version":"0.0.17","license":"MIT","keywords":["app","api","framework","javascript","js","spa","web"],"repository":{"type":"git","url":"git+https://github.com/gforti/sspaf.git"},"bin":{"sspaf":"index.js"},"dependencies":{"commander":"^2.11.0","graceful-copy":"^1.1.0","inquirer":"^3.3.0"},"gitHead":"681ccba6f484103fa4c2269d119bbd20a3248dc8","bugs":{"url":"https://github.com/gforti/sspaf/issues"},"homepage":"https://github.com/gforti/sspaf#readme","_id":"sspaf@0.0.17","scripts":{},"_shasum":"f39f47aacf7c7f80f84f0eb0426dd600a5510cea","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.11.4","_npmUser":{"name":"gforti","email":"gnforti@gmail.com"},"dist":{"shasum":"f39f47aacf7c7f80f84f0eb0426dd600a5510cea","tarball":"https://registry.npmjs.org/sspaf/-/sspaf-0.0.17.tgz","integrity":"sha512-dCEFlrCA14c839DkE8lh0r3GuQ+Py0C5RNcu+PTWDoDVmVwH7rncFi39GsXVN1Ns4qyRsxKpfdAbxIzIn8kmLg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCyqkQm6MYFF2iiIEL8Q4lFXsFgsJJSdo8ZzysP7DonJwIhAOW6Wp1tXuZT+MmdGd4Uh+jRzur3+vHGEY87yRN/oDnZ"}]},"maintainers":[{"name":"gforti","email":"gnforti@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sspaf-0.0.17.tgz_1509576558639_0.8066878241952509"}},"0.0.18":{"name":"sspaf","description":"Simple Single Page Application Framework","author":{"name":"Gabriel Forti","email":"gnforti@gmail.com"},"version":"0.0.18","license":"MIT","keywords":["app","api","framework","javascript","js","spa","web"],"repository":{"type":"git","url":"git+https://github.com/gforti/sspaf.git"},"bin":{"sspaf":"index.js"},"dependencies":{"commander":"^2.11.0","graceful-copy":"^1.1.0","inquirer":"^3.3.0"},"gitHead":"bf4bcc630efdc3d274e3fd4354cfa16f6b0299b5","bugs":{"url":"https://github.com/gforti/sspaf/issues"},"homepage":"https://github.com/gforti/sspaf#readme","_id":"sspaf@0.0.18","scripts":{},"_shasum":"1e5e566f8d71a6faa7fb1e794cdd645037eb2f7d","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.11.4","_npmUser":{"name":"gforti","email":"gnforti@gmail.com"},"dist":{"shasum":"1e5e566f8d71a6faa7fb1e794cdd645037eb2f7d","tarball":"https://registry.npmjs.org/sspaf/-/sspaf-0.0.18.tgz","integrity":"sha512-H7DV761uMjAeYzvC8Qu6MNQJQv/ujjQuQ4v8AHL0u2jCMMzE29K+KBkHLj7nZSSReGYAFvwMzA67edH9oLyCvQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC2HcRJgV3sg21wVvc4pVHa7OsGUysbB2fTdUUwTYKElgIhAObkTIRKQ93ouQH2d8HqZDA54jMS8h3Z2aI7n0JNjIfk"}]},"maintainers":[{"name":"gforti","email":"gnforti@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sspaf-0.0.18.tgz_1509735212293_0.7290541708935052"}},"0.0.19":{"name":"sspaf","description":"Simple Single Page Application Framework","author":{"name":"Gabriel Forti","email":"gnforti@gmail.com"},"version":"0.0.19","license":"MIT","keywords":["app","api","framework","javascript","js","spa","web"],"repository":{"type":"git","url":"git+https://github.com/gforti/sspaf.git"},"bin":{"sspaf":"index.js"},"dependencies":{"commander":"^2.11.0","graceful-copy":"^1.1.0","inquirer":"^3.3.0"},"gitHead":"6fc1fd848281d6a3ee6c067a0766680ff8d59e11","bugs":{"url":"https://github.com/gforti/sspaf/issues"},"homepage":"https://github.com/gforti/sspaf#readme","_id":"sspaf@0.0.19","scripts":{},"_shasum":"095010dab83ed3d5597cad0c3c4d5eb540248dd5","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.11.4","_npmUser":{"name":"gforti","email":"gnforti@gmail.com"},"dist":{"shasum":"095010dab83ed3d5597cad0c3c4d5eb540248dd5","tarball":"https://registry.npmjs.org/sspaf/-/sspaf-0.0.19.tgz","integrity":"sha512-vEI3fLrNKh5D2IbOMvhCtbszc1ly5Qka+f0Z3+mSF/iFeLmLFodnZDrgetzyaZFURTxWy9ENPCsXPW0g9lT74Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDPXN3xvVsWx76MWNRlWZq2Wy2X+Nb18ZDIvc63g5E1wQIhAKXC6336jTk8a41KzNz31NFM8RMjqIenNnUnCY7zp6tE"}]},"maintainers":[{"name":"gforti","email":"gnforti@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sspaf-0.0.19.tgz_1509812830165_0.951064076507464"}},"0.0.21":{"name":"sspaf","description":"Simple Single Page Application Framework","author":{"name":"Gabriel Forti","email":"gnforti@gmail.com"},"version":"0.0.21","license":"MIT","keywords":["app","api","framework","javascript","js","spa","web"],"repository":{"type":"git","url":"git+https://github.com/gforti/sspaf.git"},"bin":{"sspaf":"index.js"},"dependencies":{"commander":"^2.11.0","graceful-copy":"^1.1.0","inquirer":"^3.3.0"},"gitHead":"9d1854e12063eb45e8a03b725cbfff36f027ab7e","bugs":{"url":"https://github.com/gforti/sspaf/issues"},"homepage":"https://github.com/gforti/sspaf#readme","_id":"sspaf@0.0.21","scripts":{},"_shasum":"5883fe97bb21f5d85e61a801d94cbeafd5a1d8aa","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.11.4","_npmUser":{"name":"gforti","email":"gnforti@gmail.com"},"dist":{"shasum":"5883fe97bb21f5d85e61a801d94cbeafd5a1d8aa","tarball":"https://registry.npmjs.org/sspaf/-/sspaf-0.0.21.tgz","integrity":"sha512-y9kd0Nv/zPudfcXGoE1RY49Zf7kHfP4mLosAybUFnbWOhCPcUdoWWyrR8LqVwOb+2cm4ypi7NcRTGDfJvYwhSg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGv8utk9pHKsfK55QkS+AI+NBINFXZ6Z8J550AQayGgTAiEAqsfO4KXkQD9uu6y9CGwS6laE9e9AWIqm/OwbeDUYT8o="}]},"maintainers":[{"name":"gforti","email":"gnforti@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sspaf-0.0.21.tgz_1509890205051_0.5896586808376014"}},"0.0.22":{"name":"sspaf","description":"Simple Single Page Application Framework","author":{"name":"Gabriel Forti","email":"gnforti@gmail.com"},"version":"0.0.22","license":"MIT","keywords":["app","api","framework","javascript","js","spa","web"],"repository":{"type":"git","url":"git+https://github.com/gforti/sspaf.git"},"bin":{"sspaf":"index.js"},"dependencies":{"commander":"^2.11.0","graceful-copy":"^1.1.0","inquirer":"^3.3.0"},"gitHead":"753d18ff25a05377cdd9df5e24bcf55efe50a9c0","bugs":{"url":"https://github.com/gforti/sspaf/issues"},"homepage":"https://github.com/gforti/sspaf#readme","_id":"sspaf@0.0.22","scripts":{},"_shasum":"50b0755b3f29e09d207319d25bebab5a805d8d69","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.11.4","_npmUser":{"name":"gforti","email":"gnforti@gmail.com"},"dist":{"shasum":"50b0755b3f29e09d207319d25bebab5a805d8d69","tarball":"https://registry.npmjs.org/sspaf/-/sspaf-0.0.22.tgz","integrity":"sha512-hT/q/7dzeJNXkVHkBpXMPuDJiT25KSV9wLC34GNXUosmdGTWzNA+KNvGxoUAi5uqMv+gCHcFIAOeJjyXsvGy0w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEG1z0Bfb6AS0lksmuWbvJQl+juqC5ZFZ5Ls5P4wWMgFAiAeekmTHyFAUelC325YIwdfheSt2NBMg8s5JCHclErkig=="}]},"maintainers":[{"name":"gforti","email":"gnforti@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sspaf-0.0.22.tgz_1509890385049_0.2766234341543168"}},"0.0.23":{"name":"sspaf","description":"Simple Single Page Application Framework","author":{"name":"Gabriel Forti","email":"gnforti@gmail.com"},"version":"0.0.23","license":"MIT","keywords":["app","api","framework","javascript","js","spa","web"],"repository":{"type":"git","url":"git+https://github.com/gforti/sspaf.git"},"bin":{"sspaf":"index.js"},"dependencies":{"commander":"^2.11.0","graceful-copy":"^1.1.0","inquirer":"^3.3.0"},"gitHead":"d896a4a77e6a664f133d3e9e0d15c7bf8244b503","bugs":{"url":"https://github.com/gforti/sspaf/issues"},"homepage":"https://github.com/gforti/sspaf#readme","_id":"sspaf@0.0.23","scripts":{},"_shasum":"25d38c86cf6ff40b62a49e87bfb411a1d1ada5d8","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.11.4","_npmUser":{"name":"gforti","email":"gnforti@gmail.com"},"dist":{"shasum":"25d38c86cf6ff40b62a49e87bfb411a1d1ada5d8","tarball":"https://registry.npmjs.org/sspaf/-/sspaf-0.0.23.tgz","integrity":"sha512-K7SUubbiZL2IMTeyDiBaYp3SsPS+PFwmE0qKBgEHeIxXUn9YhL5i8HI/5IiXUnJQVgtndbWbPIOTsx9fuuksXg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFhuXKACK0cbOWypYfTfE4x13vPRaSEZY0HKXkF9UahIAiEAy7Jo2x6Y5w/fFWfDyUzOGkWLHQ7qoooN10RivOJjkyA="}]},"maintainers":[{"name":"gforti","email":"gnforti@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sspaf-0.0.23.tgz_1509890725238_0.5034750930499285"}},"0.0.24":{"name":"sspaf","description":"Simple Single Page Application Framework","author":{"name":"Gabriel Forti","email":"gnforti@gmail.com"},"version":"0.0.24","license":"MIT","keywords":["app","api","framework","javascript","js","spa","web"],"repository":{"type":"git","url":"git+https://github.com/gforti/sspaf.git"},"bin":{"sspaf":"index.js"},"dependencies":{"commander":"^2.11.0","graceful-copy":"^1.1.0","inquirer":"^3.3.0"},"gitHead":"4216eae109e8dec5bba8722299bf02bc9856d92a","bugs":{"url":"https://github.com/gforti/sspaf/issues"},"homepage":"https://github.com/gforti/sspaf#readme","_id":"sspaf@0.0.24","scripts":{},"_shasum":"1bb957f8a78f00fbc520bcdd362225125579a1eb","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.11.4","_npmUser":{"name":"gforti","email":"gnforti@gmail.com"},"dist":{"shasum":"1bb957f8a78f00fbc520bcdd362225125579a1eb","tarball":"https://registry.npmjs.org/sspaf/-/sspaf-0.0.24.tgz","integrity":"sha512-L28L4BlqmicRxLGxD14PpZChgrVg+5UDzTBuWp5DT7SJAf4RHKpX5u0RtOqEskZK6p8qFEhjcFEZ5E1qGIZkIA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHhTT01Ain8C/poRcEvB2nFciv8XJalcVl2zY5JuAFfiAiBUHxxjXqZqPYiLTzMciNkeM1q+K8PVqarvdThx2swlog=="}]},"maintainers":[{"name":"gforti","email":"gnforti@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sspaf-0.0.24.tgz_1509955330306_0.3774791758041829"}},"0.0.25":{"name":"sspaf","description":"Simple Single Page Application Framework","author":{"name":"Gabriel Forti","email":"gnforti@gmail.com"},"version":"0.0.25","license":"MIT","keywords":["app","api","framework","javascript","js","spa","web"],"repository":{"type":"git","url":"git+https://github.com/gforti/sspaf.git"},"bin":{"sspaf":"index.js"},"dependencies":{"commander":"^2.11.0","graceful-copy":"^1.1.0","inquirer":"^3.3.0"},"gitHead":"50f1c38ce52788cc3db95e69892aee75d866a54d","bugs":{"url":"https://github.com/gforti/sspaf/issues"},"homepage":"https://github.com/gforti/sspaf#readme","_id":"sspaf@0.0.25","scripts":{},"_shasum":"0657836c348914eb2e1e7249dbd889469889b41f","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.11.4","_npmUser":{"name":"gforti","email":"gnforti@gmail.com"},"dist":{"shasum":"0657836c348914eb2e1e7249dbd889469889b41f","tarball":"https://registry.npmjs.org/sspaf/-/sspaf-0.0.25.tgz","integrity":"sha512-lENnrNAgjtrwPZ+U3v5TAT0okZFxp4OCAJgGjUc4+6oWXBo3PYsBNcTeo+Q9l9jMI1Vj3G+z5rMpUYPI9PXq1g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDlw1JBtjosyL6m5Ry0zlwzoPkrLgPe6/ixeL1JVIqU4AiEA6c9tgIUFx60hAryUYyMKosDbl8/aVMKNQlvNO9NRhMk="}]},"maintainers":[{"name":"gforti","email":"gnforti@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sspaf-0.0.25.tgz_1509955854519_0.39515184704214334"}},"0.1.0":{"name":"sspaf","description":"Simple Single Page Application Framework","author":{"name":"Gabriel Forti","email":"gnforti@gmail.com"},"version":"0.1.0","license":"MIT","keywords":["app","api","framework","javascript","js","spa","web"],"repository":{"type":"git","url":"git+https://github.com/gforti/sspaf.git"},"bin":{"sspaf":"index.js"},"dependencies":{"commander":"^2.11.0","graceful-copy":"^1.1.0","inquirer":"^3.3.0"},"gitHead":"b8501d703d797df52cde12b283a4c8600426c61b","bugs":{"url":"https://github.com/gforti/sspaf/issues"},"homepage":"https://github.com/gforti/sspaf#readme","_id":"sspaf@0.1.0","scripts":{},"_shasum":"46c566c5ef96a7d3bdd97c2217b21318490ddb8d","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.11.4","_npmUser":{"name":"gforti","email":"gnforti@gmail.com"},"dist":{"shasum":"46c566c5ef96a7d3bdd97c2217b21318490ddb8d","tarball":"https://registry.npmjs.org/sspaf/-/sspaf-0.1.0.tgz","integrity":"sha512-YuHxNX3p2h/O+G4FoPCuNcA2I4WE/xDx0NhTWYa/itgmYk9e4DOsp/CoHnSUOPzBhTZi6s7Up5n8xbYAuIISCw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDg567naxZGb6u57RLrXzC1uHQF68GN9jTCyhjZQJ2Q/AIhAL5hNPC/YJcVs8Yu70Q1ORcOj/1Iz1Zu+REhZw+D7fpb"}]},"maintainers":[{"name":"gforti","email":"gnforti@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sspaf-0.1.0.tgz_1510149311188_0.5499449090566486"}},"0.1.1":{"name":"sspaf","description":"Simple Single Page Application Framework","author":{"name":"Gabriel Forti","email":"gnforti@gmail.com"},"version":"0.1.1","license":"MIT","keywords":["app","api","framework","javascript","js","spa","web"],"repository":{"type":"git","url":"git+https://github.com/gforti/sspaf.git"},"bin":{"sspaf":"index.js"},"dependencies":{"commander":"^2.11.0","graceful-copy":"^1.1.0","inquirer":"^3.3.0"},"gitHead":"7c60d2427974ea24555e80535c8743ab7ee06677","bugs":{"url":"https://github.com/gforti/sspaf/issues"},"homepage":"https://github.com/gforti/sspaf#readme","_id":"sspaf@0.1.1","scripts":{},"_shasum":"1edbf8cab59ef30c81ce40e7079ca1922a949d76","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.11.4","_npmUser":{"name":"gforti","email":"gnforti@gmail.com"},"dist":{"shasum":"1edbf8cab59ef30c81ce40e7079ca1922a949d76","tarball":"https://registry.npmjs.org/sspaf/-/sspaf-0.1.1.tgz","integrity":"sha512-fyWiJSEPh02H5oWs6fTtSDhoKy6LVF883sODMuyssnTxSW551Tw/cI5J9CcpedyvSQc4HsmEHdMDOOH4Iy499A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCit3D75x3su9UYIZRLWBGnzxTlK2yshssrSnz67LWBzgIhAI2l9s+JLsdphofUJxI+lcwLLkxGAJhtcQMxrkC19tMY"}]},"maintainers":[{"name":"gforti","email":"gnforti@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sspaf-0.1.1.tgz_1510150337908_0.6584289334714413"}},"0.2.0":{"name":"sspaf","description":"Simple Single Page Application Framework","author":{"name":"Gabriel Forti","email":"gnforti@gmail.com"},"version":"0.2.0","license":"MIT","keywords":["app","api","framework","javascript","js","spa","web"],"repository":{"type":"git","url":"git+https://github.com/gforti/sspaf.git"},"bin":{"sspaf":"index.js"},"dependencies":{"commander":"^2.11.0","graceful-copy":"^1.1.0","inquirer":"^3.3.0"},"gitHead":"ef9ee341ad116f6e0a683344c3c6073957c540ae","bugs":{"url":"https://github.com/gforti/sspaf/issues"},"homepage":"https://github.com/gforti/sspaf#readme","_id":"sspaf@0.2.0","scripts":{},"_shasum":"254614c18c94c28b6e4900f857b7aeb717a98c89","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.11.4","_npmUser":{"name":"gforti","email":"gnforti@gmail.com"},"dist":{"shasum":"254614c18c94c28b6e4900f857b7aeb717a98c89","tarball":"https://registry.npmjs.org/sspaf/-/sspaf-0.2.0.tgz","integrity":"sha512-1316B6EXcKoqqlQrDLaQG+3CKWe/rUIfDGYZAf36XnIcGAmqwDcvVICUzFy97zF8MV+evTPopV67urcSZpu39A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH/VRKYmgUkeo151P/a1GFG0Vmr4pmT5eRm4oJLCtX34AiAEkWyaVoEyjyMk5n/5lRsUGgGs2gTQJI5m9HQqNp5anQ=="}]},"maintainers":[{"name":"gforti","email":"gnforti@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sspaf-0.2.0.tgz_1510412659844_0.8305054663214833"}},"0.2.1":{"name":"sspaf","description":"Simple Single Page Application Framework","author":{"name":"Gabriel Forti","email":"gnforti@gmail.com"},"version":"0.2.1","license":"MIT","keywords":["app","api","framework","javascript","js","spa","web"],"repository":{"type":"git","url":"git+https://github.com/gforti/sspaf.git"},"bin":{"sspaf":"index.js"},"dependencies":{"commander":"^2.11.0","graceful-copy":"^1.1.0","inquirer":"^3.3.0"},"gitHead":"c7ac3d6674a14e8604369c7faed07c69c5ac3ec8","bugs":{"url":"https://github.com/gforti/sspaf/issues"},"homepage":"https://github.com/gforti/sspaf#readme","_id":"sspaf@0.2.1","scripts":{},"_shasum":"f341db51ee0414de91fc3fb5364e64b7cc9f57d9","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.11.4","_npmUser":{"name":"gforti","email":"gnforti@gmail.com"},"dist":{"shasum":"f341db51ee0414de91fc3fb5364e64b7cc9f57d9","tarball":"https://registry.npmjs.org/sspaf/-/sspaf-0.2.1.tgz","integrity":"sha512-QYtn/1mfHvDH7k1GogMqp+Je+74q9IifkVYgkK3BsP2CqqDNBOP+AkKhwOt+VwQM9FhgN78xLSb9uBFS+O8VSg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBza4/RzuaZOD/+NlDhAnhI2CCB0yhG1mmL7+chE90VCAiEA/1ktarDma0MD/pOfPJJ1ETPge3VRzAT1UFqJ4kkTzBM="}]},"maintainers":[{"name":"gforti","email":"gnforti@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sspaf-0.2.1.tgz_1510598213940_0.019964885665103793"}}},"readme":"# SSPAF \r\n\r\n## Simple Single Page Application Framework\r\n\r\nThe idea here is to create a single page app with modern JavaScript.  This is not a full featured framework but is a front end framework.  There is no security and is intended for school, sample projects or quick prototypes.\r\n\r\n> Note this framework will only work on modern browsers\r\n\r\nSSPAF is a CLI that will generate the files needed for a node based dev environment.\r\n\r\n\r\n## Installation\r\n\r\n```sh\r\n$ npm install -g sspaf\r\n```\r\n\r\n## Quick Start\r\n\r\nGenerate the app by running `sspaf` followed by the folder name of your choice:\r\n\r\n```bash\r\n$ sspaf foo\r\n```\r\n\r\n> Do not forget to enter the folder that was just created\r\n\r\n```bash\r\n$ cd foo\r\n```\r\n\r\n### Quick Start Options\r\n\r\nThe command `$ sspaf <file_name>` will generate the base files needed to get started.\r\n\r\n> If no file name is entered it will just generate the files in the current folder\r\n\r\nUse this command for more template options\r\n\r\n```sh\r\n$ sspaf --help\r\n```\r\n\r\n| Option | Short Command | Full Command | Uses |\r\n| ------ | ------ | ------ | ------ |\r\n| Base Template | -b | --base | Base code no implementation |\r\n| Crud Template | -c | --crud | Crud base code with no endpoint |\r\n| Crud with json server Template | -j | --json | Crud base code with json server module(Working endpoint) |\r\n| Full Demo Template | -d | --demo | Code with highlighted features and examples |\r\n\r\n> The base template is the default option\r\n\r\nTo use a command just enter \r\n\r\n```sh\r\n$ sspaf -d foo\r\n```\r\n\r\n### Project Start Guide\r\n\r\nOnce generated you can quickly begin development with the steps below.\r\n\r\n> Make sure to run the command that will install the dependencies\r\n\r\n```bash\r\n$ npm install\r\n```\r\n\r\nNow we can start the server with the following command to begin development\r\n\r\n```bash\r\n$ npm start\r\n```\r\n\r\nAll changes made in `app_client` will picked up and update to the `spa.min.js` file.\r\n\r\n> `index.html` will run on `http://localhost:3000/`\r\n\r\n\r\n# Documentation\r\n\r\n## spa.js\r\n\r\nThis file is the core of the SPA.  It's the director and manages the page.  Nothing needs to be updated or added unless you would like to add or fix the functionality.\r\n\r\n`SSPAF` supports\r\n\r\n- Simple hash navigation\r\n- Query Param handling\r\n- Two way binding\r\n- Auto Form two way binding when changes are made\r\n- Http calls\r\n- Http template calls **NEW**\r\n- Event Listener binding\r\n- Loading Screen\r\n- Promise based\r\n- Modern use of JavaScript (es6+)\r\n- CSS class binding **NEW**\r\n\r\n> After each page is finished loading the `spaRouteReady` Event is dispatched\r\n\r\n\r\n\r\n## spa.views.js\r\n\r\nThe views are your page templates.  When a hash triggers a page the view will be loaded.\r\n\r\nThe hash name must match the view name.\r\n\r\n> location `#test` must have \r\n\r\n```js\r\nget home() {\r\n    return Promise.resolve(html)\r\n}\r\n```\r\n\r\nwith the mixin extention **fetch-html.js** there is a feature to call in template HTML files\r\n\r\njust the location of the html file\r\n\r\n```js\r\nget form() {\r\n    return this.fetchHTML('public/templates/form.html')\r\n} \r\n```\r\n\r\n\r\n### Adding Links\r\n\r\nBe sure to update the nav links on `index.html` for global navigation\r\n\r\n\r\n### Bind Info\r\n\r\nAdding a `data-bind-*` attribute to html tags allows the simple framework to maintain the state of your page elements\r\n\r\nHere is a list of bind attributes you can add\r\n\r\n| Attribute | Use |\r\n| ------ | ------ |\r\n| data-bind-model | Model key name |\r\n| data-bind-callback | Model function called after bind-model update |\r\n| data-bind-safe | Escape HTML before bind-model |\r\n| data-bind-input=\"false\" | Ignore two way binding for form fields |\r\n| data-bind-event | Attach an event listener |\r\n| data-bind-class | Add or remove class names based on a condition |\r\n\r\nThese are reserved by the framework\r\n\r\n| Attribute | Use |\r\n| ------ | ------ |\r\n| data-bind-ready | framework has setup watch for element |\r\n| data-bind-display | Element bind-model value is empty or not empty (visible or hidden)  |\r\n\r\n\r\n\r\n### Bind HTML (data-bind-model)\r\n\r\nYou can add the `data-bind-model` attribute to a tag to inject html from the model.\r\n\r\nThe value of the custom attribute will be tied to the `model.dataBindModel` object\r\n\r\n```html\r\n<p data-bind-model=\"reviews\"></p>\r\n```\r\n\r\nInside of `spa.model.js`\r\n\r\n```js\r\nthis.dataBindModel.reviews = `<strong>Hello World</strong>`\r\n```\r\n\r\nIf you would like to do a safe bind just include the attribute `data-safe` along with the `data-bind-model` attribute \r\n\r\n```html\r\n<p data-bind-model=\"reviews\" data-bind-safe></p>\r\n```\r\n\r\n### Display State (data-bind-display)\r\n\r\nwhen you bind HTML to a DOM element it will manage a custom attribute called `data-bind-display`.\r\nThis gives you the flexibility to decide how empty DOM elements waiting for a value should be displayed\r\n\r\nThis attribute can be managed by `CSS` to either always display or use the `visibility: hidden` | `display: none` properties.\r\n\r\nThe default CSS used in `public/style.css`\r\n\r\n```css\r\n*[data-bind-display=hidden]:not(input):not(select):not(textarea) {    \r\n    opacity: 0;\r\n    transition: opacity 0.3s, visibility 0.3s;\r\n    visibility: hidden;\r\n}\r\n*[data-bind-display=visible]:not(input):not(select):not(textarea) {    \r\n    opacity: 1;\r\n    transition: opacity 0.3s, visibility 0.3s;\r\n    visibility: visible;\r\n}\r\n```\r\n\r\n### DOM Events (data-bind-event)\r\n\r\nEvents can also be binded to html tags with the custom attribute `data-bind-event` like so\r\n\r\n```html\r\n<input type=\"text\" name=\"author\" data-bind-event=\"keyup:updateAuthor\" />\r\n```\r\nor \r\n```html\r\n<input type=\"button\" value=\"submit\" data-bind-event=\"click:saveReviews\" />\r\n```\r\n\r\nThe first value is the event followed by the function to be called from the `Model class`\r\n\r\n> data-bind-event=\"`event`:`function`\"\r\n\r\nMust be a supported event in JavaScript. The function cannot pass any custom paramters but does pass the event object.\r\n\r\nYou can access the event object to get the target DOM Element.\r\n\r\n```html\r\n<button data-id=\"${row._id}\" data-bind-event=\"click:updatePage\">Update</button>\r\n```\r\n\r\nIn the `spa.model.js` file you can write the event like so\r\n\r\n```js\r\nupdatePage(evt){       \r\n    const params = this.generateUrlParams({id: evt.target.dataset.id})\r\n    window.location.href = `${params}#update` \r\n    return Promise.resolve()\r\n}\r\n```\r\n\r\n### Auto Bind for Input fields on change\r\n\r\nAll fields with a `name` attribute will auto bind the name as the key with the changed value to the `model.dataBindModel` object\r\n\r\nCurrently only `input`, `select` and `textarea` fields are supported\r\n\r\n> Other fields can easily be supported by updating the `lib/spa.js` file; function `bindModelText()` selectors and update `twoWayFormBind()` target.matches\r\n\r\n```html\r\n<input type=\"text\" name=\"reviewText\" />\r\n```\r\n\r\n```js\r\nmodel.dataBindModel.reviewText // this value is available by the input[name] attribute\r\n```\r\n\r\nIf you wish to ignore this bind either remove the name attribute or the data-bind-model. \r\nIf it must have a name attribute you may add the following attribute\r\n\r\n```html\r\n<input type=\"text\" name=\"reviewText\" data-bind-input=\"false\" />\r\n```\r\n\r\n\r\n### data-bind-callback\r\n\r\nA callback can be used after element bind model has been updated.\r\n\r\nThe function must be in the `Model` class.  It passes the element as the first parameter\r\n\r\n```html\r\n<p data-bind-model=\"date\" data-bind-callback=\"formatHTML\"></p>\r\n```\r\n\r\n> Not that the `formatDate` function is a mixin addon\r\n\r\n```js\r\nformatHTML(elem) {\r\n    const data = this.dataBindModel[elem.dataset.bindModel] \r\n    if ( data && data.length )\r\n    elem.innerHTML = `<p data-bind-model=\"reviews3\"></p> ${this.formatDate(data)}`\r\n    return Promise.resolve()\r\n}\r\n```\r\n\r\n\r\n### data-bind-class\r\n\r\nThis allows you to add or remove a class based on a condition.  All keys and values must have a single qoute(').\r\n\r\n```html\r\ndata-bind-class=\"{'class name' : 'condition'}\"\r\n```\r\n\r\nThe condition also allows for false states too by adding **!** to the condition\r\n\r\n```html\r\ndata-bind-class=\"{'class name' : '!condition'}\"\r\n```\r\n\r\n```html\r\n<p data-bind-class=\"{'is-info':'condition', 'is-warning':'!condition'}\">Testing</p>\r\n```\r\n\r\nFull example\r\n\r\n```html\r\n<p>  <input id=\"field_terms\" type=\"checkbox\" required name=\"terms\">\r\n    <label for=\"field_terms\">I accept the <u>Terms and Conditions</u></label>\r\n</p>\r\n\r\n<p data-bind-class=\"{'is-info':'condition', 'is-warning':'!condition'}\" class=\"is-spaced\">Class change when the checkbox is checked</p>\r\n```\r\n\r\nThe function in the Model class must return a boolean and must be a get variable not a function\r\n\r\n```js\r\nget condition() {\r\n    return this.dataBindModel.terms\r\n}\r\n```\r\n\r\n\r\n## spa.components.js\r\n\r\nThis file is to place component views that are injected after the page is loaded.\r\n\r\n> All functions should be `static and must return a Promise`\r\n\r\nData can be passed and processed to return the html for the view.  To be properly injected you must update the `dataBindModel` from the `Model class`\r\nand also bind the text into the html view.\r\n\r\n**spa.views.js**\r\n```html\r\n<tbody data-bind-model=\"reviewTable\"></tbody>\r\n```\r\n\r\n**spa.components.js**\r\n```js\r\nstatic resultsData(data){\r\n    if ( ! Array.isArray(data) ) return Promise.resolve('')\r\n    return Promise.resolve(`${data.map(row=>                                         \r\n                `<tr>\r\n                    <td>${row.author}</td>\r\n                    <td>${row.rating}</td>\r\n                    <td>${row.reviewText}</td>\r\n                    <td><button data-id=\"${row._id}\" data-event=\"click:deleteReview\">Delete</button></td>\r\n                    <td><button data-id=\"${row._id}\" data-event=\"click:updatePage\">Update</button></td>\r\n                </tr>`\r\n            ).join('')}`)\r\n}\r\n```\r\n\r\n**spa.model.js**\r\n```js\r\ngetTodoList() {\r\n        return this.http.get(this.APIS.Todo)\r\n                .then( data => {\r\n                   return Components.todoTable(data).then(html => { return this.dataBindModel.todoTable = html })\r\n                })\r\n    }\r\n```\r\n\r\n\r\n## spa.model.js\r\n\r\nThe Model is where all your business logic should be. Functions that will be executed from `data-event`s or values that will be binded \r\nwith `this.dataBindModel` are to be handled within the `Model class`.\r\n\r\n> Note the `this.dataBindModel` object resets after a new page is loaded\r\n\r\nThe Base Model comes with code to store API endpoints, the dataBindModel object, http calls with fetch, and support for url query/search params\r\n\r\n### Fetch calls\r\n\r\nAll Fetch calls return the data as a JSON object.  The data passed in must be a json object.  It will be converted to a payload\r\nfor a backend service.\r\n\r\n**Payload Data**\r\n```js\r\nconst data = {\r\n    author : this.dataBindModel.author,\r\n    rating : this.dataBindModel.rating,\r\n    reviewText : this.dataBindModel.reviewText\r\n}\r\n```\r\n**Functions available**\r\n- this.http.get(url)\r\n- this.http.post(url, data)\r\n- this.http.put(url, data)\r\n- this.http.delete(url)\r\n\r\n### Endpoints\r\n\r\nYou can add a list of endpoints or json files to the variable `this.APIS`.  Since the endpints are normally static\r\nthey can be added in the constructor function of `spa.model.js`\r\n\r\n```js\r\nconstructor() {\r\n    super()\r\n    this.APIS = {\r\n        Reviews : 'http://localhost:3001/api/v1/reviews/',\r\n        Todo : 'public/todo.json'\r\n    }\r\n}\r\n```\r\n\r\nI recommend if you want to resolve a url with different ports on localhost to use this method instead.\r\n\r\n```js\r\nthis.APIS = {\r\n    Reviews : `//${window.location.hostname}:3001/api/v1/reviews/`\r\n}\r\n```\r\n\r\n> Don't forget to use the back-tick instead of the single quote\r\n\r\n### URL Query(Search) Params\r\n\r\n\r\nSearch params are known to be ?id=123 that is added to the url. \r\nUse the function `this.urlParams` to get a JS standard `new URLSearchParams()` object\r\n\r\n```js\r\nthis.urlParams().get('id')\r\n```\r\nFor more info: https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams\r\n\r\n\r\nTo build query/search params use the function `this.generateUrlParams(params = {})`.  \r\nThe function takes in a json object of key value pairs.\r\n\r\n```js\r\nconst params = this.generateUrlParams({id: '123'})\r\n```\r\n\r\n> Note that the nav links that are on the `index.html` page have the query/search params removed on each view update.\r\n\r\n\r\n### Working with dataBindModel\r\n\r\nThe data model is maintained by each page.  So the #home page and the #form page has its own data. \r\n\r\nYou can set a key with a value like so\r\n\r\n```js\r\nthis.dataBindModel.author = 'Gabriel'\r\n```\r\n\r\nYou can also set multipule values too\r\n\r\n```js\r\nthis.dataBindModel = {author: 'Gabriel', review: 'Cool Guy'}\r\n```\r\n\r\nif you want to clear all the keys for a page you use the `clearDataBindModel()` function\r\n\r\n> The function will know what page you are on and only clear the bind model data on the current page only\r\n\r\n```js\r\nadd() { \r\n    this.Model.clearDataBindModel()\r\n    return window.Promise.resolve()\r\n}\r\n```\r\n\r\n\r\n\r\n### Here are some samples on how to create functions.\r\n\r\n> You can chain your promise functions by returning a value. \r\n\r\n> Add a `.then()` after a catch to act as a `try, catch, finally`\r\n\r\n```js\r\ndeleteReview(evt) {\r\n    const url = `${this.APIS.Reviews}${evt.target.dataset.id}`\r\n    return this.http.delete(url)\r\n           .then( ()=>{\r\n               return this.dataBindModel.deleteResultMsg = 'Review Deleted'                                \r\n           }).catch( err => {\r\n                return this.dataBindModel.deleteResultMsg = 'Review NOT Deleted'                                 \r\n           }).then( () => {\r\n               return this.getReviews()\r\n           })\r\n}\r\n```\r\n\r\n## spa.controller.js\r\n\r\nLike the view, each controller function must match the hash name used to generate the page.\r\n\r\n> location `#test` must have `test() { return Promise }`\r\n\r\n```js\r\nhome() {\r\n    return this.model.getReviews()\r\n}\r\n```\r\n\r\nIf the page does not need to process any data from the model before the view is rendered you can simply just do\r\n\r\n```js\r\nadd() {                   \r\n    return Promise.resolve()\r\n}\r\n``` \r\n\r\n> A `promise` must be returned\r\n\r\n## Mixins\r\n\r\nYou can extend the functionality of this framework. \r\n\r\n To add a function to the framework prototype you can simply do the following:\r\n\r\n```js\r\nObject.assign(BaseModel.prototype, {\r\n    redirect(route = window.location.hash.slice(1).split('?')[0], params = {}) {\r\n        const query = this.generateUrlParams(params)\r\n        window.location.assign(`${query}#${route}`)\r\n    }\r\n})\r\n```\r\n\r\nAny files added to the `mixins` folder of the project will be packed within `spa.min.js`\r\nThis should allow for drop n use functionality.  With the above example we are extending the Model class.\r\nThe redirect function will be available within the Model class\r\n\r\n> Mixins may become a point of conflict if they overwrite native class methods\r\n\r\n```js\r\nthis.redirect('home')\r\n```\r\n\r\nso this updatePage function:\r\n\r\n```js\r\nupdatePage(evt){\r\n    const params = this.generateUrlParams({id: evt.target.dataset.id})\r\n    window.location.href = `${params}#update`\r\n    return Promise.resolve()\r\n}\r\n```\r\n\r\ncan be rewritten like so\r\n```js\r\nupdatePage(evt){\r\n    this.redirect('update',{id: evt.target.dataset.id})\r\n    return Promise.resolve()\r\n}\r\n```\r\n\r\n> If you want to skip a default paramater in JS just pass `undefined` in its place\r\n\r\n```js\r\nthis.redirect(undefined,{id: evt.target.dataset.id})\r\n``` \r\n\r\n## More JavaScript Guides\r\n\r\nhttps://developer.mozilla.org/en-US/docs/Learn/HTML/Forms/Form_validation\r\n","maintainers":[{"name":"gforti","email":"gnforti@gmail.com"}],"time":{"modified":"2022-06-26T23:35:21.296Z","created":"2017-10-31T18:13:29.193Z","0.0.0":"2017-10-31T18:13:29.193Z","0.0.1":"2017-10-31T18:19:53.579Z","0.0.2":"2017-10-31T18:29:53.386Z","0.0.3":"2017-10-31T18:31:37.567Z","0.0.4":"2017-10-31T18:35:50.157Z","0.0.5":"2017-10-31T18:42:19.072Z","0.0.6":"2017-10-31T19:15:48.839Z","0.0.7":"2017-10-31T19:19:43.200Z","0.0.8":"2017-10-31T19:26:02.272Z","0.0.9":"2017-11-01T04:32:37.187Z","0.0.10":"2017-11-01T05:45:41.104Z","0.0.11":"2017-11-01T06:07:39.379Z","0.0.12":"2017-11-01T06:28:04.102Z","0.0.13":"2017-11-01T06:32:29.848Z","0.0.14":"2017-11-01T06:41:34.906Z","0.0.15":"2017-11-01T07:10:23.581Z","0.0.16":"2017-11-01T07:15:25.295Z","0.0.17":"2017-11-01T22:49:19.885Z","0.0.18":"2017-11-03T18:53:33.877Z","0.0.19":"2017-11-04T16:27:11.212Z","0.0.21":"2017-11-05T13:56:46.098Z","0.0.22":"2017-11-05T13:59:46.083Z","0.0.23":"2017-11-05T14:05:26.269Z","0.0.24":"2017-11-06T08:02:11.350Z","0.0.25":"2017-11-06T08:10:55.470Z","0.1.0":"2017-11-08T13:55:12.241Z","0.1.1":"2017-11-08T14:12:19.001Z","0.2.0":"2017-11-11T15:04:21.116Z","0.2.1":"2017-11-13T18:36:55.057Z"},"keywords":["app","api","framework","javascript","js","spa","web"],"author":{"name":"Gabriel Forti","email":"gnforti@gmail.com"},"readmeFilename":"README.md","homepage":"https://github.com/gforti/sspaf#readme","repository":{"type":"git","url":"git+https://github.com/gforti/sspaf.git"},"bugs":{"url":"https://github.com/gforti/sspaf/issues"},"license":"MIT"}