├── src
├── node_modules
│ ├── components
│ │ ├── List.svelte
│ │ ├── Box.svelte
│ │ ├── ClearTagsButton.svelte
│ │ ├── Tag.svelte
│ │ ├── TwoColumns.svelte
│ │ ├── Resource.svelte
│ │ ├── Event.svelte
│ │ └── Head.svelte
│ ├── resources
│ │ ├── helpers.js
│ │ └── transformResourceData.js
│ └── location
│ │ └── queryParams.js
├── client.js
├── routes
│ ├── _error.svelte
│ ├── recipes.svelte
│ ├── data
│ │ └── [ssgData].json.js
│ ├── _layout.svelte
│ └── index.svelte
└── template.html
├── .gitignore
├── whos-using-sveltekit
├── WhosUsingSvelteKit.js
├── README.md
└── WhosUsingSvelteKit.svelte
├── static
├── favicon.png
├── images
│ ├── og_image_code.jpg
│ ├── og_image_events.jpg
│ ├── og_image_index.jpg
│ ├── og_image_recipes.jpg
│ ├── og_image_resources.jpg
│ ├── og_image_showcase.jpg
│ ├── sapper-mstile-150.png
│ ├── uploads
│ │ └── v3--1280x720.jpg
│ ├── sapper-apple-touch-icon.png
│ ├── sapper-android-chrome-192.png
│ └── sapper-android-chrome-512.png
├── fonts
│ ├── roboto
│ │ ├── roboto-latin-400.woff2
│ │ ├── roboto-latin-500.woff2
│ │ ├── roboto-latin-400italic.woff2
│ │ └── roboto-latin-500italic.woff2
│ ├── overpass
│ │ ├── overpass-latin-100.woff2
│ │ ├── overpass-latin-300.woff2
│ │ ├── overpass-latin-400.woff2
│ │ ├── overpass-latin-600.woff2
│ │ └── overpass-latin-700.woff2
│ └── fira-mono
│ │ └── fira-mono-latin-400.woff2
├── icons
│ ├── download.svg
│ ├── dropdown.svg
│ ├── chevron.svg
│ ├── check.svg
│ ├── arrow-right.svg
│ ├── link.svg
│ ├── save.svg
│ ├── edit.svg
│ ├── fork.svg
│ ├── collapse.svg
│ ├── expand.svg
│ ├── flip.svg
│ └── loading.svg
├── manifest.json
├── admin
│ ├── index.html
│ └── config.yml
├── svelte-logotype.svg
├── svelte-logo-mask.svg
├── sapper-logotype.svg
├── svelte-logo.svg
├── sapper-logo.svg
├── sapper-logo-outline.svg
├── svelte-logo-outline.svg
├── prism.css
├── svelte-logo-horizontal.svg
├── svelte-logo-vertical.svg
├── sapper-logo-horizontal.svg
└── sapper-logo-vertical.svg
├── whos-using-svelte
├── organisations
│ ├── pr.png
│ ├── ergon.png
│ ├── ethi.png
│ ├── gap.png
│ ├── luigi.png
│ ├── noppo.png
│ ├── ofof.png
│ ├── alogus.png
│ ├── bekchy.png
│ ├── dextra.png
│ ├── factry.png
│ ├── jacoux.png
│ ├── jingmnt.png
│ ├── jolojo.png
│ ├── mustlab.png
│ ├── onbench.png
│ ├── softmus.png
│ ├── sucuri.png
│ ├── 1password.png
│ ├── TurgenSec.png
│ ├── alextomas.png
│ ├── blockvigil.png
│ ├── cloudedots.png
│ ├── dbnomics.jpg
│ ├── dbnomics.webp
│ ├── devjobs-at.png
│ ├── enablerr.png
│ ├── entriwise.png
│ ├── healthtree.png
│ ├── mentorcv.png
│ ├── parthpatel.jpg
│ ├── phonerefer.png
│ ├── sel_home.png
│ ├── smartnews.png
│ ├── steembeem.png
│ ├── techtacion.png
│ ├── fibre-tiger.png
│ ├── from-now-on.png
│ ├── gearid-logo.png
│ ├── cliniciannexus.png
│ ├── red-label-logo.png
│ ├── tradie-training.png
│ ├── ct-logo-text-black.png
│ ├── swissdev-javascript-jobs.png
│ ├── buydotstar.svg
│ ├── frontend_bastards.svg
│ ├── elderguide.svg
│ ├── ibm.svg
│ ├── paperform.svg
│ ├── socialist-party.svg
│ ├── deck.svg
│ ├── beyonk.svg
│ ├── dhtmlx_logo.svg
│ ├── cdon.svg
│ ├── philips.svg
│ ├── aedge.svg
│ ├── entur.svg
│ ├── advnz.svg
│ ├── zeoagency.svg
│ ├── nesta.svg
│ ├── oberonspace.svg
│ ├── rakuten.svg
│ ├── koj.svg
│ ├── emakina-cee.svg
│ ├── gojek.svg
│ ├── stone.svg
│ ├── gieson.svg
│ ├── anoram.svg
│ ├── laybuy.svg
│ ├── filestar.svg
│ ├── bluehive.svg
│ ├── drywa.svg
│ ├── filevine.svg
│ ├── rewe-digital-logo.svg
│ ├── budibase.svg
│ ├── panascais.svg
│ ├── thunderdome.svg
│ ├── phellowseven.svg
│ ├── 9kawin.svg
│ ├── tproger.svg
│ ├── zevvle.svg
│ ├── mailru.svg
│ ├── metrovias.svg
│ ├── pankod.svg
│ ├── sqltribe.svg
│ ├── pure_interactive.svg
│ ├── alaskaairlines.svg
│ ├── grainger.svg
│ ├── datawrapper.svg
│ ├── jdlt.svg
│ ├── in1.svg
│ ├── itslearning.svg
│ ├── razorpay.svg
│ ├── convincely.svg
│ ├── omniawrite.svg
│ ├── appditto.svg
│ └── ogma.svg
├── README.md
└── WhosUsingSvelte.svelte
├── data
└── old-events
│ └── README.md
├── README.md
├── .editorconfig
├── .github
├── ISSUE_TEMPLATE
│ └── new-svelte-community-event.md
└── workflows
│ └── daily.yml
├── netlify.toml
├── package.json
├── scripts
├── sortRepositories.js
├── updateNpmStats.js
├── updateGithubStats.js
└── updateGitlabStats.js
├── LICENSE
└── ssg.config.js
/src/node_modules/components/List.svelte:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | /node_modules
2 | __sapper__
3 | .backup
4 | .netlify
5 | .env
--------------------------------------------------------------------------------
/whos-using-sveltekit/WhosUsingSvelteKit.js:
--------------------------------------------------------------------------------
1 | export const companies = [
2 |
3 | ]
--------------------------------------------------------------------------------
/static/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/static/favicon.png
--------------------------------------------------------------------------------
/static/images/og_image_code.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/static/images/og_image_code.jpg
--------------------------------------------------------------------------------
/static/images/og_image_events.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/static/images/og_image_events.jpg
--------------------------------------------------------------------------------
/static/images/og_image_index.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/static/images/og_image_index.jpg
--------------------------------------------------------------------------------
/static/images/og_image_recipes.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/static/images/og_image_recipes.jpg
--------------------------------------------------------------------------------
/static/images/og_image_resources.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/static/images/og_image_resources.jpg
--------------------------------------------------------------------------------
/static/images/og_image_showcase.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/static/images/og_image_showcase.jpg
--------------------------------------------------------------------------------
/static/images/sapper-mstile-150.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/static/images/sapper-mstile-150.png
--------------------------------------------------------------------------------
/static/images/uploads/v3--1280x720.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/static/images/uploads/v3--1280x720.jpg
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/pr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/pr.png
--------------------------------------------------------------------------------
/static/images/sapper-apple-touch-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/static/images/sapper-apple-touch-icon.png
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/ergon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/ergon.png
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/ethi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/ethi.png
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/gap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/gap.png
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/luigi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/luigi.png
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/noppo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/noppo.png
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/ofof.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/ofof.png
--------------------------------------------------------------------------------
/static/fonts/roboto/roboto-latin-400.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/static/fonts/roboto/roboto-latin-400.woff2
--------------------------------------------------------------------------------
/static/fonts/roboto/roboto-latin-500.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/static/fonts/roboto/roboto-latin-500.woff2
--------------------------------------------------------------------------------
/static/images/sapper-android-chrome-192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/static/images/sapper-android-chrome-192.png
--------------------------------------------------------------------------------
/static/images/sapper-android-chrome-512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/static/images/sapper-android-chrome-512.png
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/alogus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/alogus.png
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/bekchy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/bekchy.png
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/dextra.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/dextra.png
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/factry.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/factry.png
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/jacoux.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/jacoux.png
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/jingmnt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/jingmnt.png
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/jolojo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/jolojo.png
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/mustlab.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/mustlab.png
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/onbench.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/onbench.png
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/softmus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/softmus.png
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/sucuri.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/sucuri.png
--------------------------------------------------------------------------------
/static/fonts/overpass/overpass-latin-100.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/static/fonts/overpass/overpass-latin-100.woff2
--------------------------------------------------------------------------------
/static/fonts/overpass/overpass-latin-300.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/static/fonts/overpass/overpass-latin-300.woff2
--------------------------------------------------------------------------------
/static/fonts/overpass/overpass-latin-400.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/static/fonts/overpass/overpass-latin-400.woff2
--------------------------------------------------------------------------------
/static/fonts/overpass/overpass-latin-600.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/static/fonts/overpass/overpass-latin-600.woff2
--------------------------------------------------------------------------------
/static/fonts/overpass/overpass-latin-700.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/static/fonts/overpass/overpass-latin-700.woff2
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/1password.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/1password.png
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/TurgenSec.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/TurgenSec.png
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/alextomas.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/alextomas.png
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/blockvigil.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/blockvigil.png
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/cloudedots.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/cloudedots.png
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/dbnomics.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/dbnomics.jpg
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/dbnomics.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/dbnomics.webp
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/devjobs-at.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/devjobs-at.png
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/enablerr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/enablerr.png
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/entriwise.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/entriwise.png
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/healthtree.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/healthtree.png
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/mentorcv.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/mentorcv.png
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/parthpatel.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/parthpatel.jpg
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/phonerefer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/phonerefer.png
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/sel_home.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/sel_home.png
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/smartnews.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/smartnews.png
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/steembeem.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/steembeem.png
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/techtacion.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/techtacion.png
--------------------------------------------------------------------------------
/static/fonts/fira-mono/fira-mono-latin-400.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/static/fonts/fira-mono/fira-mono-latin-400.woff2
--------------------------------------------------------------------------------
/static/fonts/roboto/roboto-latin-400italic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/static/fonts/roboto/roboto-latin-400italic.woff2
--------------------------------------------------------------------------------
/static/fonts/roboto/roboto-latin-500italic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/static/fonts/roboto/roboto-latin-500italic.woff2
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/fibre-tiger.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/fibre-tiger.png
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/from-now-on.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/from-now-on.png
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/gearid-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/gearid-logo.png
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/cliniciannexus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/cliniciannexus.png
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/red-label-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/red-label-logo.png
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/tradie-training.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/tradie-training.png
--------------------------------------------------------------------------------
/data/old-events/README.md:
--------------------------------------------------------------------------------
1 | this events.json is no longer used
2 |
3 | holding off on deleting for now in case we still need some info
4 |
5 | use events.yml instead
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/ct-logo-text-black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/ct-logo-text-black.png
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/swissdev-javascript-jobs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/swissdev-javascript-jobs.png
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Svelte community
2 |
3 | ## New Home
4 |
5 | This repository is no longer utilized. Please see [sveltesociety.dev](https://sveltesociety.dev/) for all things related to the Svelte community
6 |
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/buydotstar.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/static/icons/download.svg:
--------------------------------------------------------------------------------
1 |
2 |
5 |
--------------------------------------------------------------------------------
/static/icons/dropdown.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/static/icons/chevron.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/static/icons/check.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | end_of_line = lf
5 | insert_final_newline = true
6 | indent_style = tab
7 | indent_size = 2
8 | charset = utf-8
9 | trim_trailing_whitespace = true
10 |
11 | [{package.json}]
12 | indent_style = space
13 | indent_size = 2
--------------------------------------------------------------------------------
/src/client.js:
--------------------------------------------------------------------------------
1 | // this file was scaffolded with `ssg eject`.
2 | // Feel free to modify as you would Sapper boilerplate
3 | import * as sapper from '@sapper/app'
4 | import '@sveltejs/site-kit/base.css'
5 |
6 | sapper.start({
7 | target: document.querySelector('#sapper'),
8 | })
9 |
--------------------------------------------------------------------------------
/static/icons/arrow-right.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/static/icons/link.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/static/icons/save.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/node_modules/components/Box.svelte:
--------------------------------------------------------------------------------
1 |
4 |
5 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/static/icons/edit.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/static/icons/fork.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/static/icons/collapse.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/static/icons/expand.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/static/icons/flip.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/static/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "background_color": "#ffffff",
3 | "theme_color": "#159794",
4 | "name": "Sapper",
5 | "short_name": "Sapper",
6 | "display": "minimal-ui",
7 | "start_url": "/",
8 | "icons": [
9 | {
10 | "src": "images/sapper-android-chrome-192.png",
11 | "sizes": "192x192",
12 | "type": "image/png"
13 | },
14 | {
15 | "src": "images/sapper-android-chrome-512.png",
16 | "sizes": "512x512",
17 | "type": "image/png"
18 | }
19 | ]
20 | }
21 |
--------------------------------------------------------------------------------
/src/routes/_error.svelte:
--------------------------------------------------------------------------------
1 |
5 |
6 |
16 |
17 |
18 |
{status}
19 |
20 |
{error.message}
21 |
22 | {#if process.env.NODE_ENV === 'development'}
23 |
{error.stack}
24 | {/if}
25 |
26 |
--------------------------------------------------------------------------------
/static/admin/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Content Manager
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/new-svelte-community-event.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: New Svelte Community Event
3 | about: Publicize a new Meetup or Conference
4 | title: "[Event] New Meetup or Conference"
5 | labels: Event
6 | assignees: sw-yx
7 |
8 | ---
9 |
10 | Hi! I am organizing a new Svelte Meetup. Here are the details:
11 |
12 | City:
13 | Country:
14 | Description:
15 | Event Name:
16 | Organizer contact:
17 | Twitter:
18 | Type: Meetup
19 | Url:
20 | Other relevant details:
21 |
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/frontend_bastards.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/static/icons/loading.svg:
--------------------------------------------------------------------------------
1 |
2 |
7 |
--------------------------------------------------------------------------------
/netlify.toml:
--------------------------------------------------------------------------------
1 | # this file was scaffolded with `ssg eject`.
2 | # Feel free to modify as you would Sapper boilerplate
3 |
4 | [build]
5 | command = "ssg export"
6 | publish = "__sapper__/export"
7 | # functions = "functions" # optional folder for Netlify functions
8 |
9 | [dev] # https://github.com/netlify/netlify-dev-plugin#project-detection
10 | command = "yarn ssg dev" # Command to start your dev server
11 | port = 3000 # Port that the dev server will be listening on
12 | publish = "static" # Folder with the static content for _redirect file
13 |
--------------------------------------------------------------------------------
/src/routes/recipes.svelte:
--------------------------------------------------------------------------------
1 |
9 |
10 |
13 |
14 |
19 |
20 |
23 |
24 |
25 |
TODO: do Recipes page
26 |
27 |
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/elderguide.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/node_modules/components/ClearTagsButton.svelte:
--------------------------------------------------------------------------------
1 |
5 |
6 |
24 |
25 | clear()}>{text}
26 |
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/ibm.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/node_modules/components/Tag.svelte:
--------------------------------------------------------------------------------
1 |
6 |
7 |
28 |
29 | toggle(name)}>{name}
30 |
--------------------------------------------------------------------------------
/whos-using-svelte/README.md:
--------------------------------------------------------------------------------
1 | ## Add your company logo
2 |
3 | * Fork this repo, and clone your fork
4 | * Create a branch called e.g. `add-myorganisation-logo`
5 | * Make changes to `WhosUsingSvelte.js` file
6 | * Add the logo to the `organisations` directory (preferably SVG)
7 | * Add a new entry
8 | * Create a pull request. Thanks!
9 |
10 | ### JSON format
11 | `href`, `src`, `alt` are required.
12 |
13 | `style` and `picture` are optional.
14 | ```javascript
15 | {
16 | href: "https://your-company.com",
17 | src: "organisations/yourCompanyLogo.svg",
18 | alt: "Your Company logo",
19 | // optional
20 | style: "optional styling",
21 | picture: [
22 | {
23 | type: "image/webp",
24 | srcset: "organisations/yourCompanyLogo.webp"
25 | },
26 | ...
27 | ]
28 | }
29 | ```
--------------------------------------------------------------------------------
/src/node_modules/components/TwoColumns.svelte:
--------------------------------------------------------------------------------
1 |
4 |
5 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/whos-using-sveltekit/README.md:
--------------------------------------------------------------------------------
1 | ## Add your company logo
2 |
3 | * Fork this repo, and clone your fork
4 | * Create a branch called e.g. `add-myorganisation-logo`
5 | * Make changes to `WhosUsingSvelteKit.js` file
6 | * Add the logo to the `organisations` directory (preferably SVG)
7 | * Add a new entry
8 | * Create a pull request. Thanks!
9 |
10 | ### JSON format
11 | `href`, `src`, `alt` are required.
12 |
13 | `style` and `picture` are optional.
14 | ```javascript
15 | {
16 | href: "https://your-company.com",
17 | src: "organisations/yourCompanyLogo.svg",
18 | alt: "Your Company logo",
19 | // optional
20 | style: "optional styling",
21 | picture: [
22 | {
23 | type: "image/webp",
24 | srcset: "organisations/yourCompanyLogo.webp"
25 | },
26 | ...
27 | ]
28 | }
29 | ```
--------------------------------------------------------------------------------
/.github/workflows/daily.yml:
--------------------------------------------------------------------------------
1 | # https://github.com/sw-yx/gh-action-data-scraping
2 | on:
3 | schedule:
4 | - cron: '0 8 * * *' # every day at 8am
5 | name: (Daily Cronjob) Update GitHub Stats For all Code repos
6 | jobs:
7 | build:
8 | runs-on: ubuntu-latest
9 | steps:
10 | - uses: actions/checkout@master
11 | - name: Build
12 | run: npm install
13 | - name: Sort
14 | run: npm run sort-repositories
15 | - name: Scrape
16 | run: npm run githubGetAllData
17 | env:
18 | GH_CLIENT_ID: ${{ secrets.GH_CLIENT_ID }} # get this from a github oauth app you set up
19 | GH_CLIENT_SECRET: ${{ secrets.GH_CLIENT_SECRET }}
20 | - uses: mikeal/publish-to-github-action@master
21 | env:
22 | GITHUB_TOKEN: ${{ secrets.SWYX_TOKEN_FOR_COMMITING }} # we used to use GITHUB_TOKEN, but it had permissions issues
23 |
--------------------------------------------------------------------------------
/src/routes/data/[ssgData].json.js:
--------------------------------------------------------------------------------
1 | // this file was scaffolded with `ssg eject`.
2 | // Feel free to modify as you would Sapper boilerplate
3 | const { getDataSlice, getIndex } = require('ssg/readConfig')
4 |
5 | export async function get(req, res) {
6 | const { ssgData } = req.params
7 | const splitSlug = ssgData.split('___ssg___')
8 | const key = splitSlug[0]
9 | const uid = splitSlug[1]
10 | const mainIndex = getIndex()
11 | let data
12 | // console.log('getting', key, uid)
13 | if (uid === 'index') {
14 | data = mainIndex[key]
15 | } else {
16 | data = await getDataSlice(key, uid)
17 | }
18 | if (typeof data !== 'undefined') {
19 | res.writeHead(200, { 'Content-Type': 'application/json' })
20 | res.end(JSON.stringify(data))
21 | } else {
22 | res.writeHead(404, { 'Content-Type': 'application/json' })
23 | res.end(JSON.stringify({ message: `Not found` }))
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "community",
3 | "version": "1.0.0",
4 | "main": "index.js",
5 | "repository": "https://github.com/sveltejs/community.git",
6 | "author": "sw-yx ",
7 | "license": "MIT",
8 | "dependencies": {
9 | "@ssgjs/source-yaml": "^0.0.5",
10 | "@sveltejs/site-kit": "^1.1.4",
11 | "dotenv": "^8.1.0",
12 | "fuse.js": "^3.4.5",
13 | "js-yaml": "^3.13.1",
14 | "node-fetch": "^2.6.1",
15 | "ssg": "^0.0.62",
16 | "yaml": "^1.7.1"
17 | },
18 | "scripts": {
19 | "start": "ssg dev",
20 | "build": "ssg export",
21 | "sort-repositories": "node scripts/sortRepositories.js",
22 | "update-github-stats": "node scripts/updateGithubStats.js",
23 | "update-gitlab-stats": "node scripts/updateGitlabStats.js",
24 | "update-npm-stats": "node scripts/updateNpmStats.js",
25 | "githubGetAllData": "npm run update-npm-stats && npm run update-github-stats && npm run update-gitlab-stats"
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/src/node_modules/resources/helpers.js:
--------------------------------------------------------------------------------
1 | // For now, this returns resources with any tag overlap.
2 | // `tags` is a `Set`
3 | export const filterResourcesByTags = (resources, tags) => {
4 | if (!tags || !tags.size) return resources;
5 | return resources.filter(resource => {
6 | for (const tag of resource.tags) {
7 | if (tags.has(tag)) return true;
8 | }
9 | return false;
10 | });
11 | };
12 |
13 | // https://stackoverflow.com/a/3177838
14 | export function timeSince(date) {
15 | var seconds = Math.floor((new Date() - date) / 1000);
16 | var interval = Math.floor(seconds / 31536000);
17 | if (interval > 1) {
18 | return interval + " years";
19 | }
20 | interval = Math.floor(seconds / 2592000);
21 | if (interval > 1) {
22 | return interval + " months";
23 | }
24 | interval = Math.floor(seconds / 86400);
25 | if (interval > 1) {
26 | return interval + " days";
27 | }
28 | interval = Math.floor(seconds / 3600);
29 | if (interval > 24) {
30 | return "yesterday";
31 | }
32 | return "today";
33 | }
--------------------------------------------------------------------------------
/scripts/sortRepositories.js:
--------------------------------------------------------------------------------
1 | // Used to sort repositories
2 | require("dotenv").config();
3 | const fs = require("fs");
4 | const yaml = require("js-yaml");
5 |
6 | // edit this to update files
7 | const pathToFileToUpdate = "data/code.yml";
8 | // end edit this
9 |
10 | async function sortRepositories() {
11 | try {
12 | const resources = yaml.safeLoad(
13 | fs.readFileSync(pathToFileToUpdate, "utf8")
14 | );
15 |
16 | const sortedResources = await Promise.all(
17 | resources.resources.sort(function (a, b) {
18 | a = a.url.toLowerCase();
19 | b = b.url.toLowerCase();
20 |
21 | return a < b ? -1 : a > b ? 1 : 0;
22 | })
23 | );
24 |
25 | const finishedYaml = {
26 | ...resources,
27 | resources: sortedResources,
28 | };
29 |
30 | fs.writeFile(pathToFileToUpdate, yaml.safeDump(finishedYaml), (err) => {
31 | if (err) {
32 | console.log(err);
33 | }
34 | });
35 | } catch (e) {
36 | console.log(e);
37 | }
38 | }
39 |
40 | sortRepositories();
41 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright © 2021 Svelte
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/paperform.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/socialist-party.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/deck.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ssg.config.js:
--------------------------------------------------------------------------------
1 | const fs = require('fs');
2 | const path = require('path');
3 | const yaml = require('@ssgjs/source-yaml').default;
4 |
5 | exports.plugins = {
6 | yamlFiles: yaml({ dirPath: 'data' })
7 | };
8 |
9 | let eventsData = null;
10 |
11 | exports.createIndex = async (mainIndex = {}) => {
12 | // do expensive initial fetches and cache them in .ssg/data.json
13 | // console.log({ mainIndex: Object.keys(mainIndex.data) })
14 | mainIndex.events = mainIndex.yamlFiles['data-events-yml'].data.EventsList;
15 | mainIndex.resources = mainIndex.yamlFiles['data-resources-yml'].data;
16 | mainIndex.code = mainIndex.yamlFiles['data-code-yml'].data;
17 | mainIndex.showcase = mainIndex.yamlFiles['data-showcase-yml'].data;
18 | return mainIndex;
19 | };
20 |
21 | // optional. called repeatedly, can be expensive
22 | exports.getDataSlice = async (key, uid) => {
23 | // we dont really use the key here
24 | if (key === 'events') {
25 | // uid == the event's ID
26 | return eventsData[uid];
27 | } else {
28 | throw new Error('invalid key ' + key);
29 | }
30 | };
31 |
32 | // optional lifecycle hook
33 | exports.postExport = async mainIndex => {
34 | // eg for RSS
35 | // console.log('postExport', mainIndex)
36 | };
37 |
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/beyonk.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/dhtmlx_logo.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/cdon.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/philips.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/static/svelte-logotype.svg:
--------------------------------------------------------------------------------
1 |
3 |
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/aedge.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/entur.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/routes/_layout.svelte:
--------------------------------------------------------------------------------
1 |
9 |
10 |
27 |
28 |
29 |
30 |
31 |
48 |
49 |
50 |
51 |
52 |
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/advnz.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/static/svelte-logo-mask.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
17 |
--------------------------------------------------------------------------------
/src/template.html:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 | %sapper.base%
11 |
20 |
21 |
24 | %sapper.styles%
25 |
26 |
27 |
28 |
30 | %sapper.head%
31 |
32 |
33 |
35 | %sapper.html%
36 |
37 |
40 | %sapper.scripts%
41 |
42 |
43 |
--------------------------------------------------------------------------------
/static/sapper-logotype.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
23 |
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/zeoagency.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
26 |
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/nesta.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/static/svelte-logo.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
21 |
--------------------------------------------------------------------------------
/static/sapper-logo.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
22 |
--------------------------------------------------------------------------------
/static/sapper-logo-outline.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
21 |
--------------------------------------------------------------------------------
/static/svelte-logo-outline.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
21 |
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/oberonspace.svg:
--------------------------------------------------------------------------------
1 |
2 |
4 |
32 |
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/rakuten.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
25 |
--------------------------------------------------------------------------------
/src/node_modules/resources/transformResourceData.js:
--------------------------------------------------------------------------------
1 | // Converts the raw resources data into an expanded form.
2 | // This is expected to be run client-side or by build scripts,
3 | // so the raw untransformed data is what's sent over the wire.
4 | // This keeps the definition concise, the transferred data small,
5 | // and the programming usage simple and consistent. (for example, it sorts tags)
6 | export const transformResourceData = data => {
7 | const resources = data.resources.map(transformResource);
8 | return {
9 | ...data,
10 | resources,
11 | tags: extractTags(resources),
12 | };
13 | };
14 |
15 | const transformResource = resource => {
16 | const {name} = resource;
17 | // A resource name in `backticks` signals it's the NPM package name.
18 | const isNpmPackage = name[0] === '`' && name[name.length - 1] === '`';
19 | const finalName = isNpmPackage ? name.slice(1, -1) : name;
20 | const result = {
21 | ...resource,
22 | name: finalName,
23 | isGitHubRepo: isGitHubRepo(resource),
24 | isNpmPackage,
25 | tags: transformTags(resource),
26 | };
27 | return result;
28 | };
29 |
30 | const OFFICIAL_TAG = 'official';
31 |
32 | const transformTags = resource => {
33 | const tags = new Set(resource.tags);
34 | if (isOfficial(resource)) { // infer if the 'official' tag should be added
35 | tags.add(OFFICIAL_TAG);
36 | }
37 | return Array.from(tags).sort((a, b) =>
38 | a === OFFICIAL_TAG ? -1 : b === OFFICIAL_TAG ? 1 : a > b ? 1 : -1,
39 | );
40 | };
41 |
42 | const OFFICIAL_URL_MATCHER = /^(https?:\/\/github.com\/sveltejs\/|https?:\/\/(.+\.)*svelte.dev)/;
43 | const isOfficial = resource => OFFICIAL_URL_MATCHER.test(resource.url);
44 |
45 | const GITHUB_URL_MATCHER = /^https?:\/\/github.com\//
46 | const isGitHubRepo = resource => GITHUB_URL_MATCHER.test(resource.url);
47 |
48 | const extractTags = resources => {
49 | const tags = new Set();
50 | resources.forEach(r => r.tags && r.tags.forEach(t => tags.add(t)));
51 | return Array.from(tags);
52 | };
53 |
--------------------------------------------------------------------------------
/scripts/updateNpmStats.js:
--------------------------------------------------------------------------------
1 | // Fetches and updates the number of monthly npm downloads on each resource.
2 | // api docs: https://github.com/npm/registry/blob/master/docs/download-counts.md
3 |
4 | const fs = require('fs');
5 | const yaml = require('js-yaml');
6 | const fetch = require('node-fetch');
7 |
8 | const filePath = 'data/code.yml';
9 | const period = 'point/last-month';
10 | const extractNpmPackage = (resource) => {
11 | const matches = resource.name.match(/^`(.+)`$/);
12 | return matches && matches[1];
13 | };
14 |
15 | async function updateDownloads() {
16 | const data = yaml.safeLoad(fs.readFileSync(filePath, 'utf8'));
17 |
18 | const updatedResources = [];
19 | for (const resource of data.resources) {
20 | const npmPackage = extractNpmPackage(resource);
21 | if (!npmPackage) {
22 | updatedResources.push(resource);
23 | continue;
24 | }
25 |
26 | let result = await fetch(
27 | `https://api.npmjs.org/downloads/${period}/${npmPackage}`
28 | );
29 | result = await result.json();
30 |
31 | if (result.error) {
32 | if (result.error.includes('not found')) {
33 | console.error(
34 | `npm package "${npmPackage}" not found.` +
35 | ' If the resource is not supposed to be an npm package,' +
36 | ' remove the backticks from its name.'
37 | );
38 | } else {
39 | throw Error(`npm error: ${JSON.stringify(result)}`);
40 | }
41 | }
42 |
43 | updatedResources.push({
44 | ...resource,
45 | downloads: result.downloads
46 | });
47 | console.log(`updated ${npmPackage}`);
48 | }
49 |
50 | const finishedYaml = {
51 | ...data,
52 | resources: updatedResources
53 | };
54 |
55 | fs.writeFile(filePath, yaml.safeDump(finishedYaml), (err) => {
56 | if (err) {
57 | console.log(err);
58 | }
59 | });
60 | }
61 |
62 | updateDownloads()
63 | .then(() => console.log('done!'))
64 | .catch((err) => console.error(err));
65 |
--------------------------------------------------------------------------------
/scripts/updateGithubStats.js:
--------------------------------------------------------------------------------
1 | // Used to fetch and update number of stars on each resource.
2 | require('dotenv').config();
3 | const fs = require('fs');
4 | const yaml = require('js-yaml');
5 | const fetch = require('node-fetch');
6 |
7 | // edit this to update files
8 | const pathToFileToUpdate = 'data/code.yml';
9 | // end edit this
10 |
11 | function hasGitHubUrl(url) {
12 | return url.includes('github.com');
13 | }
14 |
15 | async function getStars() {
16 | try {
17 | const resources = yaml.safeLoad(
18 | fs.readFileSync(pathToFileToUpdate, 'utf8')
19 | );
20 |
21 | const updatedResources = await Promise.all(
22 | resources.resources.map(async (res) => {
23 | if (hasGitHubUrl(res.url)) {
24 | const url = res.url;
25 | const [org, repo] = url.split('/').splice(-2);
26 |
27 | let result = await fetch(
28 | `https://api.github.com/repos/${org}/${repo}?client_id=${process.env.GH_CLIENT_ID}&client_secret=${process.env.GH_CLIENT_SECRET}`
29 | );
30 |
31 | result = await result.json();
32 |
33 | if (result.message == 'Not Found') {
34 | return res;
35 | }
36 | if (result.watchers === undefined) {
37 | throw new Error(
38 | 'note to developer - watchers is undefined, you are likely exceeding API rate limit'
39 | );
40 | }
41 | return {
42 | ...res,
43 | stars: result.watchers,
44 | last_updated: result.updated_at
45 | };
46 | } else {
47 | return res;
48 | }
49 | })
50 | );
51 |
52 | const finishedYaml = {
53 | ...resources,
54 | resources: updatedResources
55 | };
56 | fs.writeFile(pathToFileToUpdate, yaml.safeDump(finishedYaml), (err) => {
57 | if (err) {
58 | console.log(err);
59 | }
60 | });
61 | } catch (e) {
62 | console.log(e);
63 | }
64 | }
65 |
66 | getStars();
67 |
--------------------------------------------------------------------------------
/src/routes/index.svelte:
--------------------------------------------------------------------------------
1 |
6 |
7 |
21 |
22 |
27 |
28 |
29 |
30 | Events
31 | Svelte meetups and other community events
32 |
33 | learn more
34 |
35 |
36 |
37 | Tools & Resources
38 |
39 | Editor Tools and Places to learn more about Svelte e.g. newsletters,
40 | blogs, podcasts
41 |
42 |
43 | learn more
44 |
45 |
46 |
47 | Code
48 | Code you can use: Boilerplates, Libraries and Components
49 |
50 | learn more
51 |
52 |
53 |
54 | Site Showcase
55 |
56 | Showcase of sites and other demos built with Svelte (closed and open
57 | source)
58 |
59 |
60 | learn more
61 |
62 |
63 | Recipes
64 | Svelte-y recipes for common usecases
65 |
66 | learn more
67 |
68 |
69 |
70 |
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/koj.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/emakina-cee.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/gojek.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/stone.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/node_modules/location/queryParams.js:
--------------------------------------------------------------------------------
1 | import {writable} from 'svelte/store';
2 |
3 | /*
4 | Creates a custom store for managing a set of strings synced to `location.search`.
5 | The code currently only works syncing with a single array value -
6 | multiple query params are not supported yet.
7 | See the TODOs below for more.
8 | */
9 | export const createQueryParamSet = (
10 | paramName,
11 | initialItems = extractQueryParamArray(paramName),
12 | ) => {
13 | const {subscribe, set, update} = writable(new Set(initialItems));
14 |
15 | subscribe(items => {
16 | updateUrl(paramName, items);
17 | });
18 |
19 | return {
20 | subscribe,
21 | set,
22 | update,
23 | add: item => {
24 | update(items => {
25 | items.add(item);
26 | return items;
27 | });
28 | },
29 | remove: item => {
30 | update(items => {
31 | items.delete(item);
32 | return items;
33 | });
34 | },
35 | toggle: item => {
36 | update(items => {
37 | if (items.has(item)) {
38 | items.delete(item);
39 | } else {
40 | items.add(item);
41 | }
42 | return items;
43 | });
44 | },
45 | clear: () => {
46 | update(items => {
47 | items.clear();
48 | return items;
49 | });
50 | },
51 | };
52 | };
53 |
54 | // TODO take params as an arg so it doesn't clobber other params
55 | const updateUrl = (paramName, items) => {
56 | if (typeof window === 'undefined') return; // TODO make this work on the server
57 |
58 | const params = new URLSearchParams(); // TODO see note above - clobbers other params!
59 | items.forEach(item => params.append(paramName, item));
60 | const paramStr = params.toString();
61 | const url = paramStr
62 | ? `${window.location.pathname}?${paramStr}`
63 | : window.location.pathname;
64 | window.history.replaceState({}, '', decodeURIComponent(url));
65 | };
66 |
67 | const extractQueryParamArray = paramName => {
68 | if (typeof window === 'undefined') return []; // TODO make this work on the server
69 |
70 | const urlParams = new URLSearchParams(window.location.search);
71 | return urlParams.has(paramName) ? urlParams.getAll(paramName) : [];
72 | };
73 |
--------------------------------------------------------------------------------
/src/node_modules/components/Resource.svelte:
--------------------------------------------------------------------------------
1 |
17 |
18 |
46 |
47 |
55 | {#if resource.description}
56 | {resource.description}
57 | {/if}
58 |
70 | {#if resource.stars || resource.last_updated}
71 |
72 | {#if resource.last_updated}
73 | updated {getUpdatedText(resource)}
74 | {/if}
75 | {#if resource.stars}
76 | {resource.stars} ⭐
77 | {/if}
78 |
79 | {/if}
80 |
--------------------------------------------------------------------------------
/scripts/updateGitlabStats.js:
--------------------------------------------------------------------------------
1 | // Used to fetch and update number of stars on each resource.
2 | require('dotenv').config();
3 | const fs = require('fs');
4 | const yaml = require('js-yaml');
5 | const fetch = require('node-fetch');
6 |
7 | // edit this to update files
8 | const pathToFileToUpdate = 'data/code.yml';
9 | // end edit this
10 |
11 | function hasGitLabUrl(url) {
12 | return url.includes('gitlab.com');
13 | }
14 |
15 | const query = /* GraphQL */ `
16 | query PROJECT_QUERY($fullPath: ID!) {
17 | project(fullPath: $fullPath) {
18 | starCount
19 | lastActivityAt
20 | }
21 | }
22 | `
23 | async function getStars() {
24 | try {
25 | const resources = yaml.safeLoad(
26 | fs.readFileSync(pathToFileToUpdate, 'utf8')
27 | );
28 |
29 | const updatedResources = await Promise.all(
30 | resources.resources.map(async (res) => {
31 | if (hasGitLabUrl(res.url)) {
32 | const url = res.url;
33 | const [org, repo] = url.split('/').splice(-2);
34 | const variables = { fullPath: `${org}/${repo}` }
35 |
36 | let result = await fetch(`https://gitlab.com/api/graphql`, {
37 | method: 'post',
38 | body: JSON.stringify({ query, variables }),
39 | headers: { 'Content-Type': 'application/json' }
40 | });
41 |
42 | result = await result.json();
43 |
44 | if (result.errors) {
45 | throw new Error(`Failed to update ${fullPath}`, errors)
46 | }
47 |
48 | const { data: { project } } = result;
49 |
50 | if (!project) { // not found
51 | return res;
52 | }
53 | return {
54 | ...res,
55 | stars: project.starCount,
56 | last_updated: project.lastActivityAt
57 | };
58 | } else {
59 | return res;
60 | }
61 | })
62 | );
63 |
64 | const finishedYaml = {
65 | ...resources,
66 | resources: updatedResources
67 | };
68 | fs.writeFile(pathToFileToUpdate, yaml.safeDump(finishedYaml), (err) => {
69 | if (err) {
70 | console.log(err);
71 | }
72 | });
73 | } catch (e) {
74 | console.log(e);
75 | }
76 | }
77 |
78 | getStars();
79 |
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/gieson.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/whos-using-sveltekit/WhosUsingSvelteKit.svelte:
--------------------------------------------------------------------------------
1 |
18 |
19 |
51 |
52 |
85 |
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/anoram.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/whos-using-svelte/WhosUsingSvelte.svelte:
--------------------------------------------------------------------------------
1 |
24 |
25 |
60 |
61 |
98 |
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/laybuy.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/node_modules/components/Event.svelte:
--------------------------------------------------------------------------------
1 |
5 |
6 |
96 |
97 |
98 |
99 | {#each events as event }
100 |
101 |
102 |
103 | {event.name}
104 |
105 | {JSON.stringify(event, null, 2)}
106 |
107 |
108 | {/each}
109 |
110 |
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/filestar.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/bluehive.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/drywa.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/static/admin/config.yml:
--------------------------------------------------------------------------------
1 | ## netlify cms config
2 | ## the rest of this is in admin/index.html
3 | backend:
4 | name: git-gateway
5 | branch: master
6 | accept_roles: # accepts all users if left out
7 | - admin
8 | - editor
9 |
10 | publish_mode: editorial_workflow
11 | media_folder: "static/images/uploads" # Media files will be stored in the repo under images/uploads
12 | public_folder: "/images/uploads"
13 |
14 | collections:
15 | - name: Events
16 | label: Events # Used in the UI
17 | files:
18 | - name: EventsFile
19 | label: EventsFile
20 | file: data/events.yml
21 | fields:
22 | - label: Events
23 | name: EventsList
24 | widget: list
25 | fields:
26 | - {label: Event Name, name: eventName, widget: string}
27 | - {label: URL, name: url, widget: string, hint: "Where people can sign up or learn more or contact Organizers e.g. https://foo.bar.com", required: false}
28 | - {label: Country, name: country, widget: string, hint: "Something someone might search, e.g. USA, UK, Sweden, Singapore, Remote"}
29 | - {label: City, name: city, widget: string, hint: "Something someone might search, e.g. NYC, London, Stockholm, Singapore, Remote"}
30 | - label: Type
31 | name: type
32 | widget: select
33 | options:
34 | - {label: "Recurring Meetup", value: "Meetup"}
35 | - {label: "One-off Event", value: "One-off"}
36 | - {label: "Workshop", value: "Workshop"}
37 | - {label: "Conference", value: "Conference"}
38 | - {label: "Misc Event", value: "Misc"}
39 | - {label: Twitter Handle, name: twitter, widget: string, required: false, hint: "Leave off the twitter.com e.g. @SvelteSociety"}
40 | - {label: Specific Date - if applicable, name: date, default: "", widget: datetime, required: false, hint: "We may sort events by date in future. Right now it isn't really enforced, it's up to you to manage if it makes sense."}
41 | - {label: Organizer Contact, name: organizer, widget: text, hint: "your name, email, twitter, any way for people to get in touch", required: false }
42 | - {label: Cover Image", required: false, name: thumbnail, widget: image }
43 | - {label: Short Description, name: desc, widget: string, required: false}
44 | - {label: Full Description, name: description, widget: markdown, required: false, hint: "remember you can use markdown"}
--------------------------------------------------------------------------------
/static/prism.css:
--------------------------------------------------------------------------------
1 | /*
2 | -----------------------------------------------
3 | syntax-highlighting [prism]
4 | -----------------------------------------------
5 | */
6 |
7 | /* colors --------------------------------- */
8 | pre[class*='language-'] {
9 | --background: var(--back-light);
10 | --base: hsl(45, 7%, 45%);
11 | --comment: hsl(210, 25%, 60%);
12 | --keyword: hsl(204, 58%, 45%);
13 | --function: hsl(19, 67%, 45%);
14 | --string: hsl(41, 37%, 45%);
15 | --number: hsl(102, 27%, 50%);
16 | --tags: var(--function);
17 | --important: var(--string);
18 | }
19 |
20 | /* type-base ------------------------------ */
21 | code[class*='language-'],
22 | pre[class*='language-'] {
23 | background: none;
24 | text-align: left;
25 | white-space: pre;
26 | word-spacing: normal;
27 | word-break: normal;
28 | word-wrap: normal;
29 | font: 300 var(--code-fs)/1.7 var(--font-mono);
30 | color: var(--base);
31 | tab-size: 2;
32 | -moz-tab-size: 2;
33 | -webkit-hyphens: none;
34 | hyphens: none;
35 | }
36 |
37 | /* code-blocks ---------------------------- */
38 | pre[class*='language-'] {
39 | overflow: auto;
40 | padding: 1.5rem 2rem;
41 | margin: .8rem 0 2.4rem;
42 | /* max-width: var(--code-w); */
43 | border-radius: var(--border-r);
44 | box-shadow: 1px 1px 1px rgba(68, 68, 68, .12) inset;
45 | }
46 |
47 | :not(pre) > code[class*='language-'],
48 | pre[class*='language-'] {
49 | background: var(--background);
50 | }
51 |
52 | /* tokens --------------------------------- */
53 | .token.comment,
54 | .token.prolog,
55 | .token.doctype,
56 | .token.cdata { color: var(--comment) }
57 |
58 | .token.punctuation { color: var(--base) }
59 |
60 | .token.property,
61 | .token.tag,
62 | .token.constant,
63 | .token.symbol,
64 | .token.deleted { color: var(--tags) }
65 |
66 | .token.boolean,
67 | .token.number { color: var(--number) }
68 |
69 | .token.selector,
70 | .token.attr-name,
71 | .token.string,
72 | .token.char,
73 | .token.builtin,
74 | .token.inserted { color: var(--string) }
75 |
76 | .token.operator,
77 | .token.entity,
78 | .token.url,
79 | .language-css .token.string,
80 | .style .token.string,
81 | .token.variable { color: var(--base) }
82 |
83 | .token.atrule,
84 | .token.attr-value,
85 | .token.function,
86 | .token.class-name { color: var(--function) }
87 |
88 | .token.keyword { color: var(--keyword) }
89 |
90 | .token.regex,
91 | .token.important { color: var(--important) }
92 |
93 | .token.important,
94 | .token.bold { font-weight: bold }
95 | .token.italic { font-style: italic }
96 | .token.entity { cursor: help }
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/filevine.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
34 |
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/rewe-digital-logo.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/static/svelte-logo-horizontal.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/static/svelte-logo-vertical.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/budibase.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
33 |
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/panascais.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/thunderdome.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/phellowseven.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/9kawin.svg:
--------------------------------------------------------------------------------
1 |
2 |
4 |
48 |
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/tproger.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/zevvle.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/mailru.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/metrovias.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/pankod.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/sqltribe.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/pure_interactive.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/static/sapper-logo-horizontal.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
37 |
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/alaskaairlines.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/static/sapper-logo-vertical.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
37 |
--------------------------------------------------------------------------------
/src/node_modules/components/Head.svelte:
--------------------------------------------------------------------------------
1 |
58 |
59 |
60 |
61 | {metaData[path].title}
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/grainger.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/datawrapper.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/jdlt.svg:
--------------------------------------------------------------------------------
1 |
17 |
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/in1.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/itslearning.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/razorpay.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/convincely.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/omniawrite.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
24 |
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/appditto.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/whos-using-svelte/organisations/ogma.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------