Fetch stars from Gitlab

This commit is contained in:
Ambar Mutha
2021-09-07 16:17:36 +05:30
parent be73ba9f2a
commit 308158ec22
6 changed files with 278 additions and 331 deletions

244
package-lock.json generated
View File

@@ -5,12 +5,12 @@
"requires": true,
"packages": {
"": {
"name": "sveltesociety.dev",
"version": "0.0.1",
"dependencies": {
"svelte-highlight": "^3.2.0"
},
"devDependencies": {
"@octokit/graphql": "^4.7.0",
"@sveltejs/adapter-static": "next",
"@sveltejs/kit": "next",
"@types/jest": "^27.0.1",
@@ -19,6 +19,7 @@
"eslint": "^7.22.0",
"eslint-config-prettier": "^8.1.0",
"eslint-plugin-svelte3": "^3.2.0",
"graphql-request": "^3.5.0",
"jest": "^27.1.0",
"mdsvex": "^0.9.3",
"prettier": "~2.2.1",
@@ -1026,68 +1027,6 @@
"node": ">= 8"
}
},
"node_modules/@octokit/endpoint": {
"version": "6.0.12",
"resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz",
"integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==",
"dev": true,
"dependencies": {
"@octokit/types": "^6.0.3",
"is-plain-object": "^5.0.0",
"universal-user-agent": "^6.0.0"
}
},
"node_modules/@octokit/graphql": {
"version": "4.8.0",
"resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz",
"integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==",
"dev": true,
"dependencies": {
"@octokit/request": "^5.6.0",
"@octokit/types": "^6.0.3",
"universal-user-agent": "^6.0.0"
}
},
"node_modules/@octokit/openapi-types": {
"version": "10.1.0",
"resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-10.1.0.tgz",
"integrity": "sha512-Nq5TMBwijRXco+Bm/Rq1n5maxxXsHLwd/Cm3lyNeOxbjyzAOSD0qmr4TwKCD4TN4rHZ7lq/tARuqSv/WJHF7IA==",
"dev": true
},
"node_modules/@octokit/request": {
"version": "5.6.1",
"resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.1.tgz",
"integrity": "sha512-Ls2cfs1OfXaOKzkcxnqw5MR6drMA/zWX/LIS/p8Yjdz7QKTPQLMsB3R+OvoxE6XnXeXEE2X7xe4G4l4X0gRiKQ==",
"dev": true,
"dependencies": {
"@octokit/endpoint": "^6.0.1",
"@octokit/request-error": "^2.1.0",
"@octokit/types": "^6.16.1",
"is-plain-object": "^5.0.0",
"node-fetch": "^2.6.1",
"universal-user-agent": "^6.0.0"
}
},
"node_modules/@octokit/request-error": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz",
"integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==",
"dev": true,
"dependencies": {
"@octokit/types": "^6.0.3",
"deprecation": "^2.0.0",
"once": "^1.4.0"
}
},
"node_modules/@octokit/types": {
"version": "6.27.0",
"resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.27.0.tgz",
"integrity": "sha512-ha27f8DToxXBPEJdzHCCuqpw7AgKfjhWGdNf3yIlBAhAsaexBXTfWw36zNSsncALXGvJq4EjLy1p3Wz45Aqb4A==",
"dev": true,
"dependencies": {
"@octokit/openapi-types": "^10.1.0"
}
},
"node_modules/@rollup/pluginutils": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.1.1.tgz",
@@ -1999,6 +1938,15 @@
"safe-buffer": "~5.1.1"
}
},
"node_modules/cross-fetch": {
"version": "3.1.4",
"resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.4.tgz",
"integrity": "sha512-1eAtFWdIubi6T4XPy6ei9iUFoKpUkIF971QLN8lIvvvwueI65+Nw5haMNKUwfJxabqlIIDODJKGrQ66gxC0PbQ==",
"dev": true,
"dependencies": {
"node-fetch": "2.6.1"
}
},
"node_modules/cross-spawn": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
@@ -2104,12 +2052,6 @@
"node": ">=0.4.0"
}
},
"node_modules/deprecation": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz",
"integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==",
"dev": true
},
"node_modules/detect-indent": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz",
@@ -2646,6 +2588,18 @@
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
"node_modules/extract-files": {
"version": "9.0.0",
"resolved": "https://registry.npmjs.org/extract-files/-/extract-files-9.0.0.tgz",
"integrity": "sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ==",
"dev": true,
"engines": {
"node": "^10.17.0 || ^12.0.0 || >= 13.7.0"
},
"funding": {
"url": "https://github.com/sponsors/jaydenseric"
}
},
"node_modules/fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
@@ -2921,6 +2875,30 @@
"integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==",
"dev": true
},
"node_modules/graphql": {
"version": "15.5.3",
"resolved": "https://registry.npmjs.org/graphql/-/graphql-15.5.3.tgz",
"integrity": "sha512-sM+jXaO5KinTui6lbK/7b7H/Knj9BpjGxZ+Ki35v7YbUJxxdBCUqNM0h3CRVU1ZF9t5lNiBzvBCSYPvIwxPOQA==",
"dev": true,
"peer": true,
"engines": {
"node": ">= 10.x"
}
},
"node_modules/graphql-request": {
"version": "3.5.0",
"resolved": "https://registry.npmjs.org/graphql-request/-/graphql-request-3.5.0.tgz",
"integrity": "sha512-Io89QpfU4rqiMbqM/KwMBzKaDLOppi8FU8sEccCE4JqCgz95W9Q8bvxQ4NfPALLSMvg9nafgg8AkYRmgKSlukA==",
"dev": true,
"dependencies": {
"cross-fetch": "^3.0.6",
"extract-files": "^9.0.0",
"form-data": "^3.0.0"
},
"peerDependencies": {
"graphql": "14.x || 15.x"
}
},
"node_modules/has": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
@@ -3154,15 +3132,6 @@
"node": ">=0.12.0"
}
},
"node_modules/is-plain-object": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
"integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/is-potential-custom-element-name": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz",
@@ -5519,12 +5488,6 @@
"url": "https://opencollective.com/unified"
}
},
"node_modules/universal-user-agent": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz",
"integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==",
"dev": true
},
"node_modules/universalify": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
@@ -6584,68 +6547,6 @@
"fastq": "^1.6.0"
}
},
"@octokit/endpoint": {
"version": "6.0.12",
"resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz",
"integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==",
"dev": true,
"requires": {
"@octokit/types": "^6.0.3",
"is-plain-object": "^5.0.0",
"universal-user-agent": "^6.0.0"
}
},
"@octokit/graphql": {
"version": "4.8.0",
"resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz",
"integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==",
"dev": true,
"requires": {
"@octokit/request": "^5.6.0",
"@octokit/types": "^6.0.3",
"universal-user-agent": "^6.0.0"
}
},
"@octokit/openapi-types": {
"version": "10.1.0",
"resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-10.1.0.tgz",
"integrity": "sha512-Nq5TMBwijRXco+Bm/Rq1n5maxxXsHLwd/Cm3lyNeOxbjyzAOSD0qmr4TwKCD4TN4rHZ7lq/tARuqSv/WJHF7IA==",
"dev": true
},
"@octokit/request": {
"version": "5.6.1",
"resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.1.tgz",
"integrity": "sha512-Ls2cfs1OfXaOKzkcxnqw5MR6drMA/zWX/LIS/p8Yjdz7QKTPQLMsB3R+OvoxE6XnXeXEE2X7xe4G4l4X0gRiKQ==",
"dev": true,
"requires": {
"@octokit/endpoint": "^6.0.1",
"@octokit/request-error": "^2.1.0",
"@octokit/types": "^6.16.1",
"is-plain-object": "^5.0.0",
"node-fetch": "^2.6.1",
"universal-user-agent": "^6.0.0"
}
},
"@octokit/request-error": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz",
"integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==",
"dev": true,
"requires": {
"@octokit/types": "^6.0.3",
"deprecation": "^2.0.0",
"once": "^1.4.0"
}
},
"@octokit/types": {
"version": "6.27.0",
"resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.27.0.tgz",
"integrity": "sha512-ha27f8DToxXBPEJdzHCCuqpw7AgKfjhWGdNf3yIlBAhAsaexBXTfWw36zNSsncALXGvJq4EjLy1p3Wz45Aqb4A==",
"dev": true,
"requires": {
"@octokit/openapi-types": "^10.1.0"
}
},
"@rollup/pluginutils": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.1.1.tgz",
@@ -7334,6 +7235,15 @@
"safe-buffer": "~5.1.1"
}
},
"cross-fetch": {
"version": "3.1.4",
"resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.4.tgz",
"integrity": "sha512-1eAtFWdIubi6T4XPy6ei9iUFoKpUkIF971QLN8lIvvvwueI65+Nw5haMNKUwfJxabqlIIDODJKGrQ66gxC0PbQ==",
"dev": true,
"requires": {
"node-fetch": "2.6.1"
}
},
"cross-spawn": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
@@ -7418,12 +7328,6 @@
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
"dev": true
},
"deprecation": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz",
"integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==",
"dev": true
},
"detect-indent": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz",
@@ -7816,6 +7720,12 @@
}
}
},
"extract-files": {
"version": "9.0.0",
"resolved": "https://registry.npmjs.org/extract-files/-/extract-files-9.0.0.tgz",
"integrity": "sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ==",
"dev": true
},
"fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
@@ -8029,6 +7939,24 @@
"integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==",
"dev": true
},
"graphql": {
"version": "15.5.3",
"resolved": "https://registry.npmjs.org/graphql/-/graphql-15.5.3.tgz",
"integrity": "sha512-sM+jXaO5KinTui6lbK/7b7H/Knj9BpjGxZ+Ki35v7YbUJxxdBCUqNM0h3CRVU1ZF9t5lNiBzvBCSYPvIwxPOQA==",
"dev": true,
"peer": true
},
"graphql-request": {
"version": "3.5.0",
"resolved": "https://registry.npmjs.org/graphql-request/-/graphql-request-3.5.0.tgz",
"integrity": "sha512-Io89QpfU4rqiMbqM/KwMBzKaDLOppi8FU8sEccCE4JqCgz95W9Q8bvxQ4NfPALLSMvg9nafgg8AkYRmgKSlukA==",
"dev": true,
"requires": {
"cross-fetch": "^3.0.6",
"extract-files": "^9.0.0",
"form-data": "^3.0.0"
}
},
"has": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
@@ -8199,12 +8127,6 @@
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
"dev": true
},
"is-plain-object": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
"integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
"dev": true
},
"is-potential-custom-element-name": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz",
@@ -9943,12 +9865,6 @@
"@types/unist": "^2.0.2"
}
},
"universal-user-agent": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz",
"integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==",
"dev": true
},
"universalify": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",

View File

@@ -11,7 +11,6 @@
"test": "jest"
},
"devDependencies": {
"@octokit/graphql": "^4.7.0",
"@sveltejs/adapter-static": "next",
"@sveltejs/kit": "next",
"@types/jest": "^27.0.1",
@@ -20,6 +19,7 @@
"eslint": "^7.22.0",
"eslint-config-prettier": "^8.1.0",
"eslint-plugin-svelte3": "^3.2.0",
"graphql-request": "^3.5.0",
"jest": "^27.1.0",
"mdsvex": "^0.9.3",
"prettier": "~2.2.1",

View File

@@ -6,7 +6,7 @@
*/
import fs from 'fs';
import { graphql } from '@octokit/graphql';
import { request, gql } from 'graphql-request';
import prettier from 'prettier';
const files = [
@@ -20,62 +20,83 @@ if (!process.env.GH_TOKEN) {
process.exit(1);
}
const getGithubRepo = ({ url }) => {
const match = url.match(/github.com\/([^#/]+)\/([^#/]+)/);
const getRepo = ({ url }) => {
const match = url.match(/(github.com|gitlab.com)\/([^#/]+)\/([^#/]+)/);
if (match) {
const [, owner, name] = match;
return `${owner}/${name}`;
const [, site, owner, name] = match;
const id = `${site}/${owner}/${name}`;
return { site, owner, name, id };
}
};
const repos = files.flatMap(
const reposWithDuplicates = files.flatMap(
(file) =>
JSON.parse(fs.readFileSync(file))
.map(getGithubRepo)
.map(getRepo)
.filter((x) => x) // filter undefined
);
const repos = getUnique(reposWithDuplicates);
const uniqueRepos = [...new Set(repos)].map((repo) => {
const [owner, name] = repo.split('/');
return { owner, name };
});
const githubRepos = repos.filter((repo) => repo.site === 'github.com');
const gitlabRepos = repos.filter((repo) => repo.site === 'gitlab.com');
const repoQuery = (repo, id) => `
r${id}: repository(owner: "${repo.owner}", name: "${repo.name}") {
const gitlabRepoQuery = (repo, idx) => `
r${idx}: project(fullPath: "${repo.owner}/${repo.name}") {
...frag
}
`;
const response = await graphql(
/* GraphQL */ `
{
${uniqueRepos.map(repoQuery).join('')}
}
fragment frag on Repository {
owner {
login
}
name
stargazerCount
}
`,
const gitlabQuery = gql`
{
headers: {
authorization: `token ${process.env.GH_TOKEN}`
}
${gitlabRepos.map(gitlabRepoQuery).join('')}
}
fragment frag on Project {
starCount
fullPath
}
`;
const gitlabResponse = await request('https://gitlab.com/api/graphql', gitlabQuery);
const ghRepoQuery = (repo, idx) => `
r${idx}: repository(owner: "${repo.owner}", name: "${repo.name}") {
...frag
}
`;
const ghQuery = gql`
{
${githubRepos.map(ghRepoQuery).join('')}
}
fragment frag on Repository {
resourcePath
stargazerCount
}
`;
const ghResponse = await request(
'https://api.github.com/graphql',
ghQuery,
{},
{ authorization: `token ${process.env.GH_TOKEN}` }
);
const repoData = Object.fromEntries(
Object.values(response).map((repo) => [`${repo.owner.login}/${repo.name}`, repo])
);
const repoData = {};
for (const repo of Object.values(gitlabResponse)) {
repoData[`gitlab.com/${repo.fullPath}`] = { stars: repo.starCount };
}
for (const repo of Object.values(ghResponse)) {
repoData[`github.com${repo.resourcePath}`] = { stars: repo.stargazerCount };
}
for (const file of files) {
const data = JSON.parse(fs.readFileSync(file));
for (const item of data) {
const repo = getGithubRepo(item);
if (repo && repoData[repo]) {
item.stars = repoData[repo].stargazerCount;
const repo = getRepo(item);
if (repo && repoData[repo.id]) {
item.stars = repoData[repo.id].stars;
}
}
prettySave(file, JSON.stringify(data), 'json');
@@ -90,3 +111,11 @@ function prettySave(filePath, text, parser = 'babel') {
fs.writeFileSync(filePath, formatted);
});
}
function getUnique(repos) {
const urls = repos.map((repo) => `${repo.site}/${repo.owner}/${repo.name}`);
return [...new Set(urls)].map((url) => {
const [site, owner, name] = url.split('/');
return { site, owner, name };
});
}

View File

@@ -37,14 +37,14 @@
"npm": "https://www.npmjs.com/package/sswr",
"tags": ["components and libraries", "fonts and icons"],
"addedOn": "2021-07-29T00:00:00Z",
"stars": 57
"stars": 59
},
{
"title": "svelte-adapter-firebase",
"description": "SvelteKit adapter for Firebase Hosting rewrites to either Cloud Functions or Cloud Run for a Svelte SSR experience",
"url": "https://github.com/jthegedus/svelte-adapter-firebase",
"npm": "https://www.npmjs.com/package/svelte-adapter-firebase",
"stars": 53,
"stars": 54,
"tags": ["integrations"],
"addedOn": "2021-03-31T00:00:00Z",
"category": "SvelteKit Adapters"
@@ -64,7 +64,7 @@
"description": "SvelteKit adapter that generates a standalone Deno server.",
"url": "https://github.com/pluvial/svelte-adapter-deno",
"npm": "https://www.npmjs.com/package/svelte-adapter-deno",
"stars": 25,
"stars": 26,
"tags": ["integrations"],
"addedOn": "2021-07-12T00:00:00Z",
"category": "SvelteKit Adapters"
@@ -105,7 +105,7 @@
"tags": ["components and libraries"],
"addedOn": "2021-03-24T01:02:03Z",
"category": "Integration",
"stars": 492
"stars": 497
},
{
"title": "svelte-time-picker",
@@ -114,7 +114,8 @@
"description": "Time Picker UI for Svelte, inspired by the MaterialUI React Time Picker",
"tags": ["components and libraries", "time and date"],
"addedOn": "2021-03-04T07:27:00Z",
"category": "Forms & User Input"
"category": "Forms & User Input",
"stars": 1
},
{
"title": "svelte-formula",
@@ -131,7 +132,7 @@
"category": "Forms & User Input",
"description": "A lightweight datepicker with neat animations and a unique UX",
"npm": "svelte-calendar",
"stars": 329,
"stars": 331,
"tags": ["components and libraries", "time and date"],
"title": "svelte-calendar",
"url": "https://github.com/6eDesign/svelte-calendar"
@@ -141,7 +142,7 @@
"category": "Forms & User Input",
"description": "Svelte tags input is a component to use with Svelte and easily enter tags and customize some functions",
"npm": "svelte-tags-input",
"stars": 147,
"stars": 151,
"tags": ["components and libraries", "inputs and widgets"],
"title": "svelte-tags-input",
"url": "https://github.com/agustinl/svelte-tags-input"
@@ -151,7 +152,7 @@
"category": "Developer Experience",
"description": "Generate a JSON documentation for a Svelte component",
"npm": "sveltedoc-parser",
"stars": 57,
"stars": 58,
"tags": ["components and libraries", "development and documentation"],
"title": "sveltedoc-parser",
"url": "https://github.com/alexprey/sveltedoc-parser"
@@ -201,7 +202,7 @@
"category": "Routers",
"description": "Highly declarative, very tiny (~3.8 Kb), dependency free router",
"npm": "tinro",
"stars": 465,
"stars": 468,
"tags": ["routers"],
"title": "tinro",
"url": "https://github.com/AlexxNB/tinro"
@@ -231,7 +232,7 @@
"category": "",
"description": "Component that performs fullscreen in DOM Elements",
"npm": "svelte-fullscreen",
"stars": 25,
"stars": 27,
"tags": ["components and libraries", "layout and structure"],
"title": "svelte-fullscreen",
"url": "https://github.com/andrelmlins/svelte-fullscreen"
@@ -251,7 +252,7 @@
"category": "",
"description": "Infinite Scroll Component to Svelte",
"npm": "svelte-infinite-scroll",
"stars": 120,
"stars": 121,
"tags": ["components and libraries"],
"title": "svelte-infinite-scroll",
"url": "https://github.com/andrelmlins/svelte-infinite-scroll"
@@ -261,7 +262,7 @@
"category": "Forms & User Input",
"description": "Generate dynamic forms for sveltejs, Sveltekit, Routify and Sapper",
"npm": "svelte-formly",
"stars": 134,
"stars": 135,
"tags": [
"components and libraries",
"forms",
@@ -277,7 +278,7 @@
"category": "Stores",
"description": "Svelte store with a websocket backend",
"npm": "svelte-websocket-store",
"stars": 86,
"stars": 91,
"tags": ["components and libraries", "stores and state"],
"title": "svelte-websocket-store",
"url": "https://github.com/arlac77/svelte-websocket-store"
@@ -287,7 +288,7 @@
"category": "Design System",
"description": "Bootstrap 4 components for Svelte",
"npm": "sveltestrap",
"stars": 689,
"stars": 704,
"tags": ["components and libraries", "component sets"],
"title": "sveltestrap",
"url": "https://github.com/bestguy/sveltestrap"
@@ -297,7 +298,7 @@
"category": "User Interaction",
"description": "A GDPR compliant cookie consent banner implementation",
"npm": "@beyonk/gdpr-cookie-consent-banner",
"stars": 80,
"stars": 81,
"tags": ["components and libraries", "inputs and widgets"],
"title": "@beyonk/gdpr-cookie-consent-banner",
"url": "https://github.com/beyonk-adventures/gdpr-cookie-consent-banner"
@@ -327,7 +328,7 @@
"category": "Integration",
"description": "A Facebook pixel module for Svelte / Sapper",
"npm": "@beyonk/svelte-facebook-pixel",
"stars": 9,
"stars": 10,
"tags": ["components and libraries", "third party services"],
"title": "@beyonk/svelte-facebook-pixel",
"url": "https://github.com/beyonk-adventures/svelte-facebook-pixel"
@@ -337,7 +338,7 @@
"category": "Integration",
"description": "Google Analytics tracking module for Svelte / Sapper",
"npm": "@beyonk/svelte-google-analytics",
"stars": 27,
"stars": 28,
"tags": ["components and libraries", "third party services"],
"title": "@beyonk/svelte-google-analytics",
"url": "https://github.com/beyonk-adventures/svelte-google-analytics"
@@ -347,7 +348,7 @@
"category": "Integration",
"description": "Google Maps integration for Svelte",
"npm": "@beyonk/svelte-googlemaps",
"stars": 42,
"stars": 43,
"tags": ["components and libraries", "maps"],
"title": "@beyonk/svelte-googlemaps",
"url": "https://github.com/beyonk-adventures/svelte-googlemaps"
@@ -357,7 +358,7 @@
"category": "Integration",
"description": "Mapbox integration for Svelte",
"npm": "@beyonk/svelte-mapbox",
"stars": 149,
"stars": 150,
"tags": ["components and libraries", "maps"],
"title": "@beyonk/svelte-mapbox",
"url": "https://github.com/beyonk-adventures/svelte-mapbox"
@@ -367,7 +368,7 @@
"category": "User Interaction",
"description": "Svelte toast notifications that can be used in any JS application",
"npm": "@beyonk/svelte-notifications",
"stars": 195,
"stars": 194,
"tags": ["components and libraries", "notifications"],
"title": "@beyonk/svelte-notifications",
"url": "https://github.com/beyonk-adventures/svelte-notifications"
@@ -447,7 +448,7 @@
"category": "Design System",
"description": "Bulma components for Svelte",
"npm": "svelma",
"stars": 436,
"stars": 438,
"tags": ["components and libraries", "component sets"],
"title": "svelma",
"url": "https://github.com/c0bra/svelma"
@@ -457,7 +458,7 @@
"category": "Forms & User Input",
"description": "Svelte forms validation made easy",
"npm": "svelte-forms",
"stars": 165,
"stars": 168,
"tags": ["components and libraries", "forms and validation"],
"title": "svelte-forms",
"url": "https://github.com/chainlist/svelte-forms"
@@ -477,7 +478,7 @@
"category": "User Interaction",
"description": "A Svelte component to hide your header on scroll",
"npm": "svelte-headroom",
"stars": 59,
"stars": 60,
"tags": ["components and libraries", "layout and structure"],
"title": "svelte-headroom",
"url": "https://github.com/collardeau/svelte-headroom"
@@ -487,7 +488,7 @@
"category": "",
"description": "Tiny FontAwesome 5 component for Svelte",
"npm": "svelte-fa",
"stars": 148,
"stars": 151,
"tags": ["components and libraries", "fonts and icons"],
"title": "svelte-fa",
"url": "https://github.com/Cweili/svelte-fa"
@@ -507,7 +508,7 @@
"category": "User Interaction",
"description": "Component for moveable, draggable, resizable, scalable, rotatable, and more",
"npm": "svelte-moveable",
"stars": 6087,
"stars": 6111,
"tags": ["components and libraries", "interactions"],
"title": "svelte-moveable",
"url": "https://github.com/daybrush/moveable/tree/master/packages/svelte-moveable"
@@ -577,7 +578,7 @@
"category": "Routers",
"description": "A declarative Svelte routing library with SSR support",
"npm": "svelte-routing",
"stars": 1446,
"stars": 1456,
"tags": ["routers"],
"title": "svelte-routing",
"url": "https://github.com/EmilTholin/svelte-routing"
@@ -587,7 +588,7 @@
"category": "Forms & User Input",
"description": "A rate component for Svelte apps",
"npm": "svelte-rate-it",
"stars": 35,
"stars": 36,
"tags": ["components and libraries", "inputs and widgets"],
"title": "svelte-rate-it",
"url": "https://github.com/emrekara37/svelte-rate-it"
@@ -597,7 +598,7 @@
"category": "Forms & User Input",
"description": "A user interface for inputting date ranges",
"npm": "@equipmentshare/date-range-input",
"stars": 13,
"stars": 14,
"tags": ["components and libraries", "time and date"],
"title": "@equipmentshare/date-range-input",
"url": "https://github.com/EquipmentShare/date-range-input"
@@ -627,7 +628,7 @@
"category": "User Interaction",
"description": "A simple, small, and content-agnostic modal for Svelte",
"npm": "svelte-simple-modal",
"stars": 187,
"stars": 190,
"tags": ["components and libraries", "layout and structure"],
"title": "svelte-simple-modal",
"url": "https://github.com/flekschas/svelte-simple-modal"
@@ -639,7 +640,7 @@
"tags": ["components and libraries", "stores and state", "graphql"],
"title": "@urql/svelte",
"url": "https://github.com/FormidableLabs/urql/tree/master/packages/svelte-urql",
"stars": 6285
"stars": 6318
},
{
"addedOn": "2020-09-29T14:39:13Z",
@@ -656,7 +657,7 @@
"category": "Integration",
"description": "Svelte controlling native components via Nativescript",
"npm": "svelte-native",
"stars": 954,
"stars": 963,
"tags": ["native"],
"title": "svelte-native",
"url": "https://github.com/halfnelson/svelte-native"
@@ -666,7 +667,7 @@
"category": "",
"description": "A simple and reusable typewriter effect for your Svelte applications",
"npm": "svelte-typewriter",
"stars": 123,
"stars": 124,
"tags": ["components and libraries"],
"title": "svelte-typewriter",
"url": "https://github.com/henriquehbr/svelte-typewriter"
@@ -686,7 +687,7 @@
"category": "",
"description": "A simple and reusable flexbox component for Svelte",
"npm": "svelte-flex",
"stars": 40,
"stars": 41,
"tags": ["components and libraries", "layout and structure"],
"title": "svelte-flex",
"url": "https://github.com/himynameisdave/svelte-flex"
@@ -696,7 +697,7 @@
"category": "Data Visualisation",
"description": "Svelte bindings for frappe-charts.",
"npm": "svelte-frappe-charts",
"stars": 152,
"stars": 154,
"tags": ["charts", "components and libraries"],
"title": "svelte-frappe-charts",
"url": "https://github.com/himynameisdave/svelte-frappe-charts"
@@ -706,7 +707,7 @@
"category": "Design System",
"description": "Easy-to-use, Customizable Material Design components for Svelte",
"npm": "svmd",
"stars": 8,
"stars": 7,
"tags": ["components and libraries", "component sets"],
"title": "svmd",
"url": "https://github.com/hkh12/svmd"
@@ -716,7 +717,7 @@
"category": "Design System",
"description": "Svelte Material UI Components",
"npm": "svelte-material-ui",
"stars": 1842,
"stars": 1857,
"tags": ["components and libraries", "component sets"],
"title": "svelte-material-ui",
"url": "https://github.com/hperrin/svelte-material-ui"
@@ -736,7 +737,7 @@
"category": "Design System",
"description": "A pretty cool UI kit for Svelte",
"npm": "attractions",
"stars": 347,
"stars": 353,
"tags": ["components and libraries"],
"title": "attractions",
"url": "https://github.com/illright/attractions"
@@ -746,7 +747,7 @@
"category": "Routers",
"description": "Router for SPAs using Svelte 3",
"npm": "svelte-spa-router",
"stars": 886,
"stars": 896,
"tags": ["routers"],
"title": "svelte-spa-router",
"url": "https://github.com/ItalyPaleAle/svelte-spa-router"
@@ -776,7 +777,7 @@
"category": "Routers",
"description": "Svelte router using a store and components",
"npm": "@jamen/svelte-router",
"stars": 8,
"stars": 7,
"tags": ["routers"],
"title": "@jamen/svelte-router",
"url": "https://github.com/jamen/svelte-router"
@@ -826,7 +827,7 @@
"category": "Data Visualisation",
"description": "A simple tool for comparing two images.",
"npm": "svelte-compare-image-slider",
"stars": 10,
"stars": 11,
"tags": ["components and libraries", "images"],
"title": "svelte-compare-image-slider",
"url": "https://github.com/johnwalley/compare-image-slider"
@@ -836,7 +837,7 @@
"category": "Routers",
"description": "Svelte router specially designed for Single Page Applications (SPA)",
"npm": "svelte-router-spa",
"stars": 361,
"stars": 362,
"tags": ["routers"],
"title": "svelte-router-spa",
"url": "https://github.com/jorgegorka/svelte-router"
@@ -856,7 +857,7 @@
"category": "",
"description": "Internationalization library for Svelte",
"npm": "svelte-i18n",
"stars": 570,
"stars": 576,
"tags": ["components and libraries", "internationalization"],
"title": "svelte-i18n",
"url": "https://github.com/kaisermann/svelte-i18n"
@@ -896,7 +897,7 @@
"category": "User Interaction",
"description": "Simple and flexible notifications system",
"npm": "svelte-notifications",
"stars": 284,
"stars": 287,
"tags": ["components and libraries", "notifications"],
"title": "svelte-notifications",
"url": "https://github.com/keenethics/svelte-notifications"
@@ -956,7 +957,7 @@
"category": "Testing",
"description": "A Jest transformer for Svelte - compile your components before importing them into tests.",
"npm": "svelte-jester",
"stars": 87,
"stars": 88,
"tags": ["testing"],
"title": "svelte-jester",
"url": "https://github.com/mihar-22/svelte-jester"
@@ -986,7 +987,7 @@
"category": "Integration",
"description": "Lottie player component for use with Svelte for viewing Lottie animations.",
"npm": "@lottiefiles/svelte-lottie-player",
"stars": 65,
"stars": 66,
"tags": ["components and libraries"],
"title": "@lottiefiles/svelte-lottie-player",
"url": "https://github.com/LottieFiles/svelte-lottie-player"
@@ -996,7 +997,7 @@
"category": "Developer Experience",
"description": "Universal PWA Builder (WIP)",
"npm": "@pwa/cli",
"stars": 3049,
"stars": 3050,
"tags": ["integrations", "cli tools"],
"title": "@pwa/cli",
"url": "https://github.com/lukeed/pwa"
@@ -1016,7 +1017,7 @@
"category": "",
"description": "A Svelte component that monitors an element enters or leaves the viewport.🔥",
"npm": "svelte-inview",
"stars": 73,
"stars": 76,
"tags": ["components and libraries", "async loading", "intersection observer", "viewport"],
"title": "svelte-inview",
"url": "https://github.com/maciekgrzybek/svelte-inview"
@@ -1026,7 +1027,7 @@
"category": "Design System",
"description": "Material design components for Svelte using Tailwind CSS",
"npm": "smelte",
"stars": 1049,
"stars": 1057,
"tags": ["components and libraries", "component sets"],
"title": "smelte",
"url": "https://github.com/matyunya/smelte"
@@ -1066,7 +1067,7 @@
"category": "Routers",
"description": "Simple, declarative routing for single page apps built with Svelte",
"npm": "svelte-navigator",
"stars": 199,
"stars": 203,
"tags": ["routers"],
"title": "svelte-navigator",
"url": "https://github.com/mefechoel/svelte-navigator"
@@ -1103,7 +1104,7 @@
"addedOn": "2020-09-29T14:39:13Z",
"category": "",
"description": "compile time eval for svelte components",
"stars": 2,
"stars": 3,
"tags": ["preprocessors", "ssr"],
"title": "svelte-preval",
"url": "https://github.com/milahu/svelte-preval"
@@ -1116,14 +1117,14 @@
"tags": ["components and libraries", "layout and structure"],
"title": "@egjs/svelte-infinitegrid",
"url": "https://github.com/naver/egjs-infinitegrid/blob/master/packages/svelte-infinitegrid",
"stars": 867
"stars": 875
},
{
"addedOn": "2020-09-29T14:39:13Z",
"category": "User Interaction",
"description": "Svelte Component that tracks a users progress through a page as they scroll",
"npm": "svelte-page-progress",
"stars": 12,
"stars": 13,
"tags": ["intersection observer", "viewport", "components and libraries"],
"title": "svelte-page-progress",
"url": "https://github.com/NomanGul/svelte-page-progress"
@@ -1143,7 +1144,7 @@
"category": "",
"description": "Internationalize your Svelte apps using format-message and Intl object",
"npm": "svelte-intl",
"stars": 38,
"stars": 40,
"tags": ["components and libraries", "internationalization"],
"title": "svelte-intl",
"url": "https://github.com/Panya/svelte-intl"
@@ -1152,7 +1153,7 @@
"addedOn": "2020-09-29T14:39:13Z",
"category": "Forms & User Input",
"description": "Style it your way UI components with dynamic Form Builder.",
"stars": 24,
"stars": 25,
"tags": [
"components and libraries",
"templates",
@@ -1180,7 +1181,7 @@
"category": "Routers",
"description": "Basic router with queryParams and hash-based routing support",
"npm": "yrv",
"stars": 158,
"stars": 157,
"tags": ["routers"],
"title": "yrv",
"url": "https://github.com/pateketrueke/yrv"
@@ -1200,7 +1201,7 @@
"category": "",
"description": "SVG placeholder components for loading content",
"npm": "svelte-content-loader",
"stars": 117,
"stars": 118,
"tags": ["components and libraries", "async loading"],
"title": "svelte-content-loader",
"url": "https://github.com/PaulMaly/svelte-content-loader"
@@ -1220,7 +1221,7 @@
"category": "Forms & User Input",
"description": "IMask input component and action for Svelte 3.",
"npm": "svelte-imask",
"stars": 51,
"stars": 52,
"tags": ["components and libraries", "inputs and widgets"],
"title": "svelte-imask",
"url": "https://github.com/PaulMaly/svelte-imask"
@@ -1329,7 +1330,7 @@
"category": "",
"description": "A markdown preprocessor for Svelte",
"npm": "mdsvex",
"stars": 855,
"stars": 862,
"tags": ["integrations", "preprocessors"],
"title": "mdsvex",
"url": "https://github.com/pngwn/MDsveX"
@@ -1368,7 +1369,7 @@
"addedOn": "2020-09-29T14:39:13Z",
"category": "Forms & User Input",
"description": "Simple autocomplete / typeahead component for Svelte",
"stars": 162,
"stars": 165,
"tags": ["components and libraries", "inputs and widgets"],
"title": "Simple Svelte Autocomplete",
"url": "https://github.com/pstanoev/simple-svelte-autocomplete"
@@ -1378,7 +1379,7 @@
"category": "Routers",
"description": "Simple Svelte 3 hash based router with global routes",
"npm": "svelte-hash-router",
"stars": 34,
"stars": 35,
"tags": ["routers"],
"title": "svelte-hash-router",
"url": "https://github.com/pynnl/svelte-hash-router"
@@ -1398,7 +1399,7 @@
"category": "Developer Experience",
"description": "Development helper for inspecting and opening Svelte components in your editor",
"npm": "svelte-inspector",
"stars": 58,
"stars": 60,
"tags": ["components and libraries", "development and documentation"],
"title": "svelte-inspector",
"url": "https://github.com/qutran/svelte-inspector"
@@ -1428,7 +1429,7 @@
"category": "Data Visualisation",
"description": "Experimental charting library for Svelte",
"npm": "@sveltejs/pancake",
"stars": 831,
"stars": 837,
"tags": ["components and libraries", "charts"],
"title": "@sveltejs/pancake",
"url": "https://github.com/Rich-Harris/pancake"
@@ -1438,7 +1439,7 @@
"category": "Forms & User Input",
"description": "A select component for Svelte apps",
"npm": "svelte-select",
"stars": 541,
"stars": 547,
"tags": ["components and libraries", "inputs and widgets"],
"title": "svelte-select",
"url": "https://github.com/rob-balfre/svelte-select"
@@ -1448,7 +1449,7 @@
"category": "",
"description": "Awesome SVG icon component for Svelte JS, built with Font Awesome icons",
"npm": "svelte-awesome",
"stars": 224,
"stars": 229,
"tags": ["components and libraries", "fonts and icons"],
"title": "svelte-awesome",
"url": "https://github.com/RobBrazier/svelte-awesome"
@@ -1488,7 +1489,7 @@
"category": "Data Visualisation",
"description": "Customizable version of GitHub's contribution graph",
"npm": "svelte-heatmap",
"stars": 88,
"stars": 89,
"tags": ["components and libraries", "time and date"],
"title": "svelte-heatmap",
"url": "https://github.com/scottbedard/svelte-heatmap"
@@ -1498,7 +1499,7 @@
"category": "User Interaction",
"description": "A carousel with touch support",
"npm": "svelte-swipe",
"stars": 188,
"stars": 191,
"tags": ["components and libraries", "layout and structure"],
"title": "svelte-swipe",
"url": "https://github.com/SharifClick/svelte-swipe"
@@ -1528,7 +1529,7 @@
"category": "Forms & User Input",
"description": "Range Slider Input, with Multi-handle and Pips features",
"npm": "svelte-range-slider-pips",
"stars": 90,
"stars": 93,
"tags": [
"components and libraries",
"inputs and widgets",
@@ -1543,7 +1544,7 @@
"category": "",
"description": "An infinite scroll component for Svelte apps",
"npm": "svelte-infinite-loading",
"stars": 89,
"stars": 90,
"tags": ["components and libraries"],
"title": "svelte-infinite-loading",
"url": "https://github.com/Skayo/svelte-infinite-loading"
@@ -1573,7 +1574,7 @@
"category": "Routers",
"description": "Simple Svelte Router for Single Page Applications (SPA)",
"npm": "@spaceavocado/svelte-router",
"stars": 53,
"stars": 54,
"tags": ["routers"],
"title": "@spaceavocado/svelte-router",
"url": "https://github.com/spaceavocado/svelte-router"
@@ -1602,7 +1603,7 @@
"addedOn": "2020-09-29T14:39:13Z",
"category": "Testing",
"description": "UI component dev & test",
"stars": 64353,
"stars": 64520,
"tags": ["testing"],
"title": "storybookjs",
"url": "https://github.com/storybookjs/storybook"
@@ -1642,7 +1643,7 @@
"category": "",
"description": "A (very experimental) project to bring WebGL to Svelte",
"npm": "@sveltejs/gl",
"stars": 501,
"stars": 503,
"tags": ["webgl"],
"title": "@sveltejs/gl",
"url": "https://github.com/sveltejs/gl"
@@ -1652,7 +1653,7 @@
"category": "Forms & User Input",
"description": "The `<Repl>` component used on the Svelte website",
"npm": "@sveltejs/svelte-repl",
"stars": 239,
"stars": 242,
"tags": ["components and libraries", "inputs and widgets"],
"title": "@sveltejs/svelte-repl",
"url": "https://github.com/sveltejs/svelte-repl"
@@ -1662,7 +1663,7 @@
"category": "",
"description": "A `<Scroller>` component for Svelte apps",
"npm": "@sveltejs/svelte-scroller",
"stars": 193,
"stars": 195,
"tags": ["components and libraries", "layout and structure"],
"title": "@sveltejs/svelte-scroller",
"url": "https://github.com/sveltejs/svelte-scroller"
@@ -1682,7 +1683,7 @@
"category": "Design Pattern",
"description": "A virtual list component for Svelte apps",
"npm": "@sveltejs/svelte-virtual-list",
"stars": 434,
"stars": 436,
"tags": ["components and libraries", "layout and structure"],
"title": "@sveltejs/svelte-virtual-list",
"url": "https://github.com/sveltejs/svelte-virtual-list"
@@ -1692,7 +1693,7 @@
"category": "Routers",
"description": "abstract-state-router renderer for Svelte",
"npm": "svelte-state-renderer",
"stars": 31,
"stars": 32,
"tags": ["routers"],
"title": "svelte-state-renderer",
"url": "https://github.com/TehShrike/svelte-state-renderer"
@@ -1702,7 +1703,7 @@
"category": "Testing",
"description": "Simple and complete DOM testing utilities that encourage good practices",
"npm": "@testing-library/svelte",
"stars": 423,
"stars": 424,
"tags": ["testing"],
"title": "@testing-library/svelte",
"url": "https://github.com/testing-library/svelte-testing-library"
@@ -1712,7 +1713,7 @@
"category": "Forms & User Input",
"description": "Svelte component for file upload and file dropzone.",
"npm": "svelte-file-dropzone",
"stars": 65,
"stars": 67,
"tags": ["components and libraries", "inputs and widgets"],
"title": "svelte-file-dropzone",
"url": "https://github.com/thecodejack/svelte-file-dropzone"
@@ -1722,7 +1723,7 @@
"category": "Integration",
"description": "Svelte integration for Apollo GraphQL",
"npm": "svelte-apollo",
"stars": 721,
"stars": 730,
"tags": ["components and libraries", "stores and state"],
"title": "svelte-apollo",
"url": "https://github.com/timhall/svelte-apollo"
@@ -1752,7 +1753,7 @@
"category": "Forms & User Input",
"description": "A lightweight library for managing forms in Svelte",
"npm": "svelte-forms-lib",
"stars": 312,
"stars": 319,
"tags": ["components and libraries", "forms and validation"],
"title": "svelte-forms-lib",
"url": "https://github.com/tjinauyeung/svelte-forms-lib"
@@ -1762,7 +1763,7 @@
"category": "User Interaction",
"description": "A responsive, draggable and resizable grid layout, for Svelte",
"npm": "svelte-grid",
"stars": 553,
"stars": 558,
"tags": ["components and libraries", "layout and structure"],
"title": "svelte-grid",
"url": "https://github.com/vaheqelyan/svelte-grid"
@@ -1792,7 +1793,7 @@
"category": "Design System",
"description": "A set of Svelte UI components inspired by Google's Material Design",
"npm": "svelte-mui",
"stars": 246,
"stars": 247,
"tags": ["components and libraries", "component sets"],
"title": "svelte-mui",
"url": "https://github.com/vikignt/svelte-mui"
@@ -1801,7 +1802,7 @@
"addedOn": "2020-09-29T14:39:13Z",
"category": "",
"description": "Focused on making embedding and using media elements for the web simple.",
"stars": 1725,
"stars": 1732,
"tags": ["video", "audio", "components and libraries", "inputs and widgets"],
"title": "Vime",
"url": "https://github.com/vime-js/vime"
@@ -1811,7 +1812,7 @@
"category": "",
"description": "🔌 Simple Svelte component to detect offline & online changes.",
"npm": "s-offline",
"stars": 22,
"stars": 23,
"tags": ["offline and online detection", "network events"],
"title": "s-offline",
"url": "https://github.com/vinayakkulkarni/s-offline"
@@ -1861,7 +1862,7 @@
"category": "Forms & User Input",
"description": "Input masking component for Svelte (credit cards, phones, dates, numbers, etc.)",
"npm": "svelte-input-mask",
"stars": 69,
"stars": 70,
"tags": ["components and libraries", "inputs and widgets"],
"title": "svelte-input-mask",
"url": "https://github.com/xnimorz/svelte-input-mask"
@@ -1871,7 +1872,7 @@
"category": "Forms & User Input",
"description": "Easily customizable library for validation scenarios in svelte components.",
"npm": "svelidation",
"stars": 46,
"stars": 47,
"tags": ["components and libraries", "forms and validation"],
"title": "svelidation",
"url": "https://github.com/yazonnile/svelidation"
@@ -1881,7 +1882,7 @@
"category": "Forms & User Input",
"description": "A Svelte component wrapper around FullCalendar.",
"npm": "svelte-fullcalendar",
"stars": 83,
"stars": 84,
"tags": ["components and libraries", "time and date"],
"title": "svelte-fullcalendar",
"url": "https://github.com/YogliB/svelte-fullcalendar"
@@ -1911,7 +1912,7 @@
"category": "Design System",
"description": "Svelte UI kit based on Atol design",
"npm": "svelte-atoms",
"stars": 10,
"stars": 13,
"tags": ["components and libraries", "component sets"],
"title": "svelte-atoms",
"url": "https://gitlab.com/az67128/svelte-atoms"
@@ -1931,7 +1932,7 @@
"category": "",
"description": "A tiny but mighty list virtualization library for Svelte, with zero dependencies - Supports variable heights/widths, sticky items, scrolling to index, and more!",
"npm": "svelte-tiny-virtual-list",
"stars": 117,
"stars": 118,
"tags": ["components and libraries"],
"title": "svelte-tiny-virtual-list",
"url": "https://github.com/Skayo/svelte-tiny-virtual-list"
@@ -1991,7 +1992,7 @@
"category": "Integration",
"description": "Use Appwrite in Svelte components",
"npm": "svelte-appwrite",
"stars": 41,
"stars": 43,
"tags": ["components and libraries", "component sets"],
"title": "svelte-appwrite",
"url": "https://github.com/appwrite/sdk-for-svelte"
@@ -2001,7 +2002,7 @@
"category": "",
"description": "svelte-pdf provides a component for rendering PDF documents using PDF.js",
"npm": "svelte-pdf",
"stars": 67,
"stars": 68,
"tags": ["components and libraries", "pdf"],
"title": "svelte-pdf",
"url": "https://github.com/vinodnimbalkar/svelte-pdf"
@@ -2011,7 +2012,7 @@
"category": "Routers",
"description": "Light & reactive one-component router for Svelte",
"npm": "svelte-micro",
"stars": 55,
"stars": 62,
"tags": ["routers"],
"title": "svelte-micro",
"url": "https://github.com/ayndqy/svelte-micro"
@@ -2041,7 +2042,7 @@
"category": "User Interaction",
"description": "A collection of renderless/headless components for Svelte",
"npm": "renderless-svelte",
"stars": 163,
"stars": 165,
"tags": ["components and libraries", "component sets"],
"title": "Renderless Svelte",
"url": "https://github.com/stephane-vanraes/renderless-svelte"
@@ -2064,7 +2065,7 @@
"tags": ["components and libraries", "stores and state"],
"title": "@sveltestack/svelte-query",
"url": "https://github.com/SvelteStack/svelte-query",
"stars": 343
"stars": 350
},
{
"title": "svelte-parallax",
@@ -2089,7 +2090,7 @@
"category": "Stores",
"description": "A (high order) store that keep its value through pages and reloads",
"npm": "@macfja/svelte-persistent-store",
"stars": 58,
"stars": 61,
"tags": ["stores and state"],
"title": "Persistent Store",
"url": "https://github.com/MacFJA/svelte-persistent-store"
@@ -2119,7 +2120,7 @@
"category": "Stores",
"description": "Immutable store for Svelte with full Typescript support and Redux Devtools integration",
"npm": "svelte-restate",
"stars": 8,
"stars": 9,
"tags": ["stores and state"],
"title": "Svelte Restate",
"url": "https://github.com/endenwer/svelte-restate"
@@ -2129,7 +2130,7 @@
"category": "User Interaction",
"description": "Declarative pincode component for Svelte",
"npm": "svelte-pincode",
"stars": 3,
"stars": 4,
"tags": ["component sets", "components and libraries"],
"title": "svelte-pincode",
"url": "https://github.com/metonym/svelte-pincode"
@@ -2139,7 +2140,7 @@
"category": "Animations",
"description": "Official tsParticles Svelte Component - Easily create highly customizable particle animations and use them as animated backgrounds for your website.",
"npm": "svelte-particles",
"stars": 2245,
"stars": 2281,
"tags": ["components and libraries", "component sets", "typescript", "animations"],
"title": "svelte-particles",
"url": "https://github.com/matteobruni/tsparticles"
@@ -2149,7 +2150,7 @@
"category": "Rich Text Editor",
"description": "Svelte components for tiptap v2",
"npm": "svelte-tiptap",
"stars": 6,
"stars": 8,
"tags": ["components and libraries", "rich text editor"],
"title": "svelte-tiptap",
"url": "https://github.com/sibiraj-s/svelte-tiptap"
@@ -2171,7 +2172,7 @@
"description": "Full-sized drag & drop event calendar with resource view",
"image": "",
"npm": "@event-calendar/core",
"stars": 39,
"stars": 41,
"tags": ["components and libraries", "time and date"],
"title": "Event Calendar",
"url": "https://github.com/vkurko/calendar"
@@ -2181,7 +2182,7 @@
"category": "Design System",
"description": "Straight-forward Svelte UI, made with Windi CSS",
"npm": "@kahi-ui/framework",
"stars": 44,
"stars": 51,
"tags": ["components and libraries"],
"title": "Kahi UI",
"url": "https://github.com/novacbn/kahi-ui"
@@ -2208,6 +2209,7 @@
],
"image": "",
"addedOn": "2021-09-07T10:00:00Z",
"category": "Forms & User Input"
"category": "Forms & User Input",
"stars": 4
}
]

View File

@@ -21,7 +21,7 @@
"addedOn": "2020-09-29T14:39:13Z",
"category": "Svelte",
"description": "A truffle box for Svelte, a seed for building an Ethereum dapp using Truffle",
"stars": 47,
"stars": 48,
"tags": [],
"title": "antony/svelte-box",
"url": "https://github.com/antony/svelte-box"
@@ -57,7 +57,7 @@
"addedOn": "2020-09-29T14:39:13Z",
"category": "Svelte",
"description": "Electron Svelte boilerplate",
"stars": 46,
"stars": 47,
"tags": ["electron"],
"title": "Blade67/Sveltron",
"url": "https://github.com/Blade67/Sveltron"
@@ -219,7 +219,7 @@
"addedOn": "2020-09-29T14:39:13Z",
"category": "Svelte",
"description": "Tailwindcss v1 + Svelte v3 = <3",
"stars": 107,
"stars": 106,
"tags": [],
"title": "marcograhl/tailwindcss-svelte-starter",
"url": "https://github.com/marcograhl/tailwindcss-svelte-starter"
@@ -327,7 +327,7 @@
"addedOn": "2020-09-29T14:39:13Z",
"category": "Svelte",
"description": "Svelte application boilerplate with Webpack, Sass, BabelJS, Fetch, PostCSS, Jest, and .Env",
"stars": 239,
"stars": 240,
"tags": [],
"title": "pankod/svelte-boilerplate",
"url": "https://github.com/pankod/svelte-boilerplate"
@@ -400,7 +400,7 @@
"addedOn": "2020-09-29T14:39:13Z",
"category": "Svelte",
"description": "Clone of official Svelte template with added HMR support using Nollup",
"stars": 59,
"stars": 60,
"tags": [],
"title": "rixo/svelte-template-hot",
"url": "https://github.com/rixo/svelte-template-hot"
@@ -410,7 +410,7 @@
"category": "Svelte",
"description": "Yeoman generator generating a boilerplate Svelte.js app with all of svelte-preprocess' options",
"npm": "generator-svelte",
"stars": 24,
"stars": 25,
"tags": ["preprocessors"],
"title": "generator-svelte",
"url": "https://github.com/Samuel-Martineau/generator-svelte"
@@ -464,7 +464,7 @@
"addedOn": "2020-09-29T14:39:13Z",
"category": "Svelte",
"description": "A base for building shareable Svelte components",
"stars": 435,
"stars": 439,
"tags": [],
"title": "sveltejs/component-template",
"url": "https://github.com/sveltejs/component-template"
@@ -473,7 +473,7 @@
"addedOn": "2020-09-29T14:39:13Z",
"category": "Sapper",
"description": "Starter template for Sapper apps",
"stars": 724,
"stars": 725,
"tags": [],
"title": "sveltejs/sapper-template",
"url": "https://github.com/sveltejs/sapper-template"
@@ -482,7 +482,7 @@
"addedOn": "2020-09-29T14:39:13Z",
"category": "Svelte",
"description": "Template for building basic applications with Svelte with rollup",
"stars": 1293,
"stars": 1309,
"tags": [],
"title": "sveltejs/template",
"url": "https://github.com/sveltejs/template"
@@ -518,7 +518,7 @@
"addedOn": "2020-09-29T14:39:13Z",
"category": "Svelte",
"description": "A showcase app for all Ionic UI elements to create awesome mobile apps. Published as web app too.",
"stars": 193,
"stars": 194,
"tags": ["components and libraries", "component sets", "mobile"],
"title": "Ionic Svelte UI demo",
"url": "https://github.com/Tommertom/svelte-ionic-app"
@@ -572,7 +572,7 @@
"addedOn": "2021-06-24T14:39:13Z",
"category": "SvelteKit",
"description": "SvelteKit template with TailwindCSS, Storybook, TypeScript and Sass.",
"stars": 29,
"stars": 30,
"tags": [],
"title": "tejasag/sveltetron-9000",
"url": "https://github.com/tejasag/sveltetron-9000"
@@ -581,7 +581,7 @@
"addedOn": "2021-06-24T14:39:14Z",
"category": "SvelteKit",
"description": "SvelteKit Starter template with Typescript, Postcss, scss, TailwindCSS, Storybook, husky, and eslint.",
"stars": 144,
"stars": 148,
"tags": [],
"title": "navneetsharmaui/sveltekit-starter",
"url": "https://github.com/navneetsharmaui/sveltekit-starter"
@@ -599,7 +599,7 @@
"addedOn": "2021-06-24T14:39:16Z",
"category": "SvelteKit",
"description": "SvelteKit template with Stripe Checkout and Typescript.",
"stars": 29,
"stars": 30,
"tags": [],
"title": "srmullen/sveltekit-stripe",
"url": "https://github.com/srmullen/sveltekit-stripe"
@@ -608,7 +608,7 @@
"addedOn": "2021-06-24T14:39:17Z",
"category": "SvelteKit",
"description": "A minimalistic blog template built with SvelteKit and MDsveX",
"stars": 35,
"stars": 36,
"tags": [],
"title": "mvasigh/sveltekit-mdsvex-blog",
"url": "https://github.com/mvasigh/sveltekit-mdsvex-blog"
@@ -626,7 +626,7 @@
"addedOn": "2021-06-24T14:39:19Z",
"category": "SvelteKit",
"description": "Personal website and blog written from scratch with SvelteKit and TailwindCSS.",
"stars": 47,
"stars": 50,
"tags": [],
"title": "mhatvan/markushatvan.com",
"url": "https://github.com/mhatvan/markushatvan.com"
@@ -653,7 +653,7 @@
"addedOn": "2021-06-24T14:39:22Z",
"category": "Svelte Add",
"description": "Add Tailwind CSS to your Svelte project",
"stars": 282,
"stars": 289,
"tags": [],
"title": "svelte-add/tailwindcss",
"url": "https://github.com/svelte-add/tailwindcss"
@@ -698,7 +698,7 @@
"addedOn": "2021-06-24T14:39:28Z",
"category": "Svelte Add",
"description": "Add mdsvex to your Svelte project",
"stars": 35,
"stars": 36,
"tags": [],
"title": "svelte-add/mdsvex",
"url": "https://github.com/svelte-add/mdsvex"

View File

@@ -6,7 +6,7 @@
"description": "Compile Svelte components with Rollup",
"url": "https://github.com/sveltejs/rollup-plugin-svelte",
"tags": ["official"],
"stars": 400
"stars": 402
},
{
"addedOn": "2021-08-09T10:14:05.723Z",
@@ -15,7 +15,7 @@
"description": "Webpack loader for svelte components",
"url": "https://github.com/sveltejs/svelte-loader",
"tags": ["official"],
"stars": 491
"stars": 492
},
{
"addedOn": "2021-08-09T10:14:05.723Z",
@@ -24,7 +24,7 @@
"description": "This is the official svelte plugin for vite",
"url": "https://github.com/sveltejs/vite-plugin-svelte",
"tags": ["official"],
"stars": 213
"stars": 225
},
{
"addedOn": "2021-08-09T10:14:05.723Z",
@@ -33,7 +33,7 @@
"description": "An esbuild plugin to compile Svelte components",
"url": "https://github.com/EMH333/esbuild-svelte",
"tags": [],
"stars": 106
"stars": 110
},
{
"addedOn": "2021-08-09T10:14:05.723Z",
@@ -51,7 +51,7 @@
"description": "A parcel plugin that enables svelte support",
"url": "https://github.com/DeMoorJasper/parcel-plugin-svelte",
"tags": [],
"stars": 216
"stars": 217
},
{
"addedOn": "2021-08-09T10:14:05.723Z",
@@ -105,7 +105,7 @@
"description": "An extension that allows inspection of Svelte component hierarchy and state in the Firefox and Chrome developer tools",
"url": "https://github.com/RedHatter/svelte-devtools",
"tags": [],
"stars": 553
"stars": 552
},
{
"addedOn": "2021-08-09T10:14:05.723Z",
@@ -114,7 +114,7 @@
"description": "A ✨ magical ✨ Svelte preprocessor with sensible defaults and support for: PostCSS, SCSS, Less, Stylus, Coffeescript, TypeScript, Pug and much more",
"url": "https://github.com/sveltejs/svelte-preprocess",
"tags": ["official"],
"stars": 1119
"stars": 1124
},
{
"addedOn": "2021-08-09T10:14:05.723Z",
@@ -141,7 +141,7 @@
"description": "Svelte preprocessor for sass",
"url": "https://github.com/ls-age/svelte-preprocess-sass",
"tags": [],
"stars": 83
"stars": 84
},
{
"addedOn": "2021-08-09T10:14:05.723Z",
@@ -186,7 +186,7 @@
"description": "Format your svelte components using prettier.",
"url": "https://github.com/sveltejs/prettier-plugin-svelte",
"tags": ["official"],
"stars": 381
"stars": 388
},
{
"addedOn": "2021-08-09T10:14:05.723Z",
@@ -213,7 +213,7 @@
"description": "Vim syntax highlighting and indentation for Svelte 3 components.",
"url": "https://github.com/evanleck/vim-svelte",
"tags": [],
"stars": 192
"stars": 193
},
{
"addedOn": "2021-08-09T10:14:05.723Z",
@@ -222,7 +222,7 @@
"description": "Vim syntax and indent plugin for .svelte files",
"url": "https://github.com/leafOfTree/vim-svelte-plugin",
"tags": [],
"stars": 65
"stars": 67
},
{
"addedOn": "2021-08-09T10:14:05.723Z",
@@ -231,7 +231,7 @@
"description": "Svelte support for (Neo)Vim",
"url": "https://github.com/coc-extensions/coc-svelte",
"tags": [],
"stars": 97
"stars": 98
},
{
"addedOn": "2021-08-09T10:14:05.723Z",
@@ -240,7 +240,7 @@
"description": "Emacs major mode including support for Svelte",
"url": "https://github.com/fxbois/web-mode",
"tags": [],
"stars": 1454
"stars": 1458
},
{
"addedOn": "2021-08-09T10:14:05.723Z",