Compare commits
37 commits
Author | SHA1 | Date | |
---|---|---|---|
c6bf9b5d36 | |||
7001c990fa | |||
e33b1cd3ae | |||
bb509c6df8 | |||
6b67469c45 | |||
7def8a9f9f | |||
6ae6be6e72 | |||
7c4a4c979b | |||
dbb24642c7 | |||
a73c7795c8 | |||
7d321732f6 | |||
cd25655124 | |||
40c7a9e5d8 | |||
92fe3d8c0a | |||
23af739ee4 | |||
5bc7712731 | |||
2c7a153aa5 | |||
03da338591 | |||
ad78833fb4 | |||
a60f40f239 | |||
4ad183b1d1 | |||
b0f6540f9d | |||
51dcf05601 | |||
1b6d2d9d56 | |||
![]() |
9826ad1104 | ||
![]() |
158603da24 | ||
![]() |
53671859ab | ||
![]() |
93c5d18ea0 | ||
![]() |
7ee0364da5 | ||
![]() |
92a157c65b | ||
![]() |
b52d80429e | ||
![]() |
3dc56a1f5b | ||
![]() |
9ca707c369 | ||
![]() |
ef9552adea | ||
![]() |
0c34e74d39 | ||
![]() |
dc72482582 | ||
![]() |
fd9c7d7780 |
24 changed files with 5939 additions and 13998 deletions
11
.build.yml
Normal file
11
.build.yml
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
image: alpine/edge
|
||||||
|
secrets:
|
||||||
|
- bbfcb6dc-7c4a-42ee-a11a-022f0339a133
|
||||||
|
environment:
|
||||||
|
REPO: astro-github-stats
|
||||||
|
GH_USER: ayoayco
|
||||||
|
tasks:
|
||||||
|
- push-mirror: |
|
||||||
|
cd ~/"${REPO}"
|
||||||
|
git config --global credential.helper store
|
||||||
|
git push --mirror "https://github.com/${GH_USER}/${REPO}"
|
|
@ -1 +0,0 @@
|
||||||
test/**/*.js
|
|
|
@ -1,17 +0,0 @@
|
||||||
/** @type {import("@types/eslint").Linter.Config} */
|
|
||||||
module.exports = {
|
|
||||||
env: {
|
|
||||||
node: true,
|
|
||||||
},
|
|
||||||
parser: '@typescript-eslint/parser',
|
|
||||||
plugins: ['@typescript-eslint', 'prettier'],
|
|
||||||
extends: [
|
|
||||||
'eslint:recommended',
|
|
||||||
'plugin:@typescript-eslint/recommended',
|
|
||||||
'plugin:prettier/recommended',
|
|
||||||
],
|
|
||||||
rules: {
|
|
||||||
// We don't want to leak logging into our user's console unless it's an error
|
|
||||||
'no-console': ['error', { allow: ['warn', 'error'] }],
|
|
||||||
},
|
|
||||||
};
|
|
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1,3 +1,4 @@
|
||||||
|
.astro
|
||||||
node_modules
|
node_modules
|
||||||
|
|
||||||
npm-debug.log*
|
npm-debug.log*
|
||||||
|
|
1
.husky/pre-commit
Normal file
1
.husky/pre-commit
Normal file
|
@ -0,0 +1 @@
|
||||||
|
npm run lint
|
7
.prettierignore
Normal file
7
.prettierignore
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
# someday let's think about formatting html
|
||||||
|
**/*.html
|
||||||
|
|
||||||
|
**/*.md
|
||||||
|
**/*.css
|
||||||
|
**/*.yml
|
||||||
|
**/*.yaml
|
|
@ -1,24 +0,0 @@
|
||||||
/** @type {import("@types/prettier").Options} */
|
|
||||||
module.exports = {
|
|
||||||
printWidth: 100,
|
|
||||||
semi: true,
|
|
||||||
singleQuote: true,
|
|
||||||
tabWidth: 2,
|
|
||||||
trailingComma: 'es5',
|
|
||||||
useTabs: true,
|
|
||||||
plugins: ['./node_modules/prettier-plugin-astro'],
|
|
||||||
overrides: [
|
|
||||||
{
|
|
||||||
files: '*.astro',
|
|
||||||
options: {
|
|
||||||
parser: 'astro',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
files: ['.*', '*.json', '*.md', '*.toml', '*.yml'],
|
|
||||||
options: {
|
|
||||||
useTabs: false,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
};
|
|
13
.vscode/settings.json
vendored
13
.vscode/settings.json
vendored
|
@ -1,8 +1,15 @@
|
||||||
{
|
{
|
||||||
"editor.formatOnSave": true,
|
"editor.formatOnSave": true,
|
||||||
"editor.codeActionsOnSave": {
|
"editor.codeActionsOnSave": {
|
||||||
"source.fixAll": true
|
"source.fixAll": "explicit"
|
||||||
},
|
},
|
||||||
"cSpell.words": ["Astro"],
|
"prettier.documentSelectors": ["**/*.astro"],
|
||||||
"prettier.documentSelectors": ["**/*.astro"]
|
"prettier.configPath": "",
|
||||||
|
"prettier.ignorePath": "",
|
||||||
|
"[typescript]": {
|
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||||
|
},
|
||||||
|
"[javascript]": {
|
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
24
LICENSE
Normal file
24
LICENSE
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
BSD 2-Clause License
|
||||||
|
|
||||||
|
Copyright (c) 2022, Ayo Ayco
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
|
1. Redistributions of source code must retain the above copyright notice, this
|
||||||
|
list of conditions and the following disclaimer.
|
||||||
|
|
||||||
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
this list of conditions and the following disclaimer in the documentation
|
||||||
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||||
|
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||||
|
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||||
|
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||||
|
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
@ -1,3 +1,6 @@
|
||||||
|
> [!Note]
|
||||||
|
> Project moved to [SourceHut](https://git.sr.ht/~ayoayco/astro-github-stats)
|
||||||
|
|
||||||
# Astro GitHub Stats ✨
|
# Astro GitHub Stats ✨
|
||||||
|
|
||||||
[](https://www.npmjs.com/package/astro-github-stats)
|
[](https://www.npmjs.com/package/astro-github-stats)
|
||||||
|
@ -13,7 +16,7 @@ Features:
|
||||||
1. Embed GitHub Account top languages
|
1. Embed GitHub Account top languages
|
||||||
1. Embed GitHub Repositories info with stars
|
1. Embed GitHub Repositories info with stars
|
||||||
|
|
||||||
# Insatllation
|
# Installation
|
||||||
|
|
||||||
```
|
```
|
||||||
npm i astro-github-stats
|
npm i astro-github-stats
|
||||||
|
|
|
@ -1,4 +1,8 @@
|
||||||
import { defineConfig } from 'astro/config';
|
import { defineConfig } from 'astro/config'
|
||||||
|
|
||||||
// https://astro.build/config
|
// https://astro.build/config
|
||||||
export default defineConfig({});
|
export default defineConfig({
|
||||||
|
image: {
|
||||||
|
// domains: ['github-readme-stats.vercel.app'],
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
"astro": "astro"
|
"astro": "astro"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"astro": "^1.4.2"
|
"astro": "^2.0.6"
|
||||||
},
|
},
|
||||||
"description": "``` npm create astro@latest -- --template minimal ```",
|
"description": "``` npm create astro@latest -- --template minimal ```",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
|
|
1
demo/src/env.d.ts
vendored
1
demo/src/env.d.ts
vendored
|
@ -1 +1,2 @@
|
||||||
|
/// <reference path="../.astro/types.d.ts" />
|
||||||
/// <reference types="astro/client" />
|
/// <reference types="astro/client" />
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
---
|
---
|
||||||
import GithubStats from '../../../';
|
import GithubStats from '../../../'
|
||||||
---
|
---
|
||||||
|
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
|
|
41
eslint.config.mjs
Normal file
41
eslint.config.mjs
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
import globals from 'globals'
|
||||||
|
import eslintPluginAstro from 'eslint-plugin-astro'
|
||||||
|
import jsPlugin from '@eslint/js'
|
||||||
|
import tseslint from 'typescript-eslint'
|
||||||
|
import astroParser from 'astro-eslint-parser'
|
||||||
|
|
||||||
|
export default [
|
||||||
|
{
|
||||||
|
languageOptions: {
|
||||||
|
globals: {
|
||||||
|
...globals.browser,
|
||||||
|
...globals.node,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
// add more generic rule sets here, such as:
|
||||||
|
jsPlugin.configs.recommended,
|
||||||
|
...tseslint.configs.recommended,
|
||||||
|
...eslintPluginAstro.configs['recommended'],
|
||||||
|
...eslintPluginAstro.configs['jsx-a11y-recommended'],
|
||||||
|
{
|
||||||
|
ignores: [
|
||||||
|
'dist/*',
|
||||||
|
'.output/*',
|
||||||
|
'.astro/*',
|
||||||
|
'site/*',
|
||||||
|
'templates/*',
|
||||||
|
'**/node_modules/*',
|
||||||
|
'**/env.d.ts',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
files: ['**/*.astro'],
|
||||||
|
languageOptions: {
|
||||||
|
parser: astroParser,
|
||||||
|
parserOptions: {
|
||||||
|
parser: tseslint.parser,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
]
|
6
index.ts
6
index.ts
|
@ -1,3 +1,3 @@
|
||||||
import GithubStats from './src/GithubStats.astro';
|
import GithubStats from './src/GithubStats.astro'
|
||||||
export default GithubStats;
|
export default GithubStats
|
||||||
export * from './src/GithubStats.astro';
|
export * from './src/GithubStats.astro'
|
||||||
|
|
13875
package-lock.json
generated
13875
package-lock.json
generated
File diff suppressed because it is too large
Load diff
46
package.json
46
package.json
|
@ -3,7 +3,7 @@
|
||||||
"description": "Embed GitHub stats in your Astro page ✨",
|
"description": "Embed GitHub stats in your Astro page ✨",
|
||||||
"repository": "https://github.com/ayoayco/astro-github-stats",
|
"repository": "https://github.com/ayoayco/astro-github-stats",
|
||||||
"homepage": "https://ayco.io/showcase/astro-github-stats",
|
"homepage": "https://ayco.io/showcase/astro-github-stats",
|
||||||
"version": "0.5.0",
|
"version": "0.8.0",
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Ayo Ayco",
|
"name": "Ayo Ayco",
|
||||||
"email": "ayo@ayco.io",
|
"email": "ayo@ayco.io",
|
||||||
|
@ -25,33 +25,33 @@
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "npm run dev -w demo",
|
"start": "npm run dev -w demo",
|
||||||
"dev": "npm run dev -w demo",
|
"dev": "npm run dev -w demo",
|
||||||
"test": "mocha --parallel --timeout 15000",
|
"format": "prettier . --write",
|
||||||
"format": "prettier -w .",
|
"lint": "eslint . --config eslint.config.mjs",
|
||||||
"lint": "eslint . --ext .ts,.js",
|
|
||||||
"build": "tsc",
|
"build": "tsc",
|
||||||
"demo": "npm run dev -w demo"
|
"demo": "npm run dev -w demo",
|
||||||
|
"prepare": "husky"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/chai": "^4.3.3",
|
"@eslint/js": "^9.17.0",
|
||||||
"@types/eslint": "^8.4.6",
|
"@types/eslint": "^9.6.1",
|
||||||
"@types/mocha": "^9.1.1",
|
"@types/node": "^22.10.2",
|
||||||
"@types/node": "^18.7.18",
|
"@typescript-eslint/eslint-plugin": "^8.18.2",
|
||||||
"@types/prettier": "^2.7.0",
|
"@typescript-eslint/parser": "^8.18.2",
|
||||||
"@typescript-eslint/eslint-plugin": "^5.37.0",
|
"astro-eslint-parser": "^1.1.0",
|
||||||
"@typescript-eslint/parser": "^5.37.0",
|
"eslint": "^9.17.0",
|
||||||
"astro": "^1.0.0",
|
"eslint-config-prettier": "^9.1.0",
|
||||||
"astro-component-tester": "^0.6.0",
|
"eslint-plugin-astro": "^1.3.1",
|
||||||
"chai": "^4.3.6",
|
"eslint-plugin-jsx-a11y": "^6.10.2",
|
||||||
"eslint": "^8.23.1",
|
"eslint-plugin-prettier": "^5.2.1",
|
||||||
"eslint-config-prettier": "^8.5.0",
|
"globals": "^15.14.0",
|
||||||
"eslint-plugin-prettier": "^4.2.1",
|
"husky": "^9.1.7",
|
||||||
"mocha": "^10.0.0",
|
"prettier": "^3.4.2",
|
||||||
"prettier": "^2.7.1",
|
"prettier-plugin-astro": "^0.14.1",
|
||||||
"prettier-plugin-astro": "^0.5.4",
|
"typescript": "^5.7.2",
|
||||||
"typescript": "^4.8.3"
|
"typescript-eslint": "^8.18.2"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"astro": "^1.0.0"
|
"astro": ">=5.0.0"
|
||||||
},
|
},
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"workspaces": [
|
"workspaces": [
|
||||||
|
|
5767
pnpm-lock.yaml
Normal file
5767
pnpm-lock.yaml
Normal file
File diff suppressed because it is too large
Load diff
21
prettier.config.mjs
Normal file
21
prettier.config.mjs
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
/**
|
||||||
|
* @see https://prettier.io/docs/en/configuration.html
|
||||||
|
* @type {import("prettier").Config}
|
||||||
|
*/
|
||||||
|
const config = {
|
||||||
|
trailingComma: 'es5',
|
||||||
|
tabWidth: 2,
|
||||||
|
semi: false,
|
||||||
|
singleQuote: true,
|
||||||
|
plugins: ['prettier-plugin-astro'],
|
||||||
|
overrides: [
|
||||||
|
{
|
||||||
|
files: '*.astro',
|
||||||
|
options: {
|
||||||
|
parser: 'astro',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}
|
||||||
|
|
||||||
|
export default config
|
|
@ -1,28 +1,29 @@
|
||||||
---
|
---
|
||||||
|
import {Image} from 'astro:assets'
|
||||||
export interface Props {
|
export interface Props {
|
||||||
username: string;
|
username: string
|
||||||
topLanguages?: boolean;
|
topLanguages?: boolean
|
||||||
repo?: string;
|
repo?: string
|
||||||
showIcons?: boolean;
|
showIcons?: boolean
|
||||||
altText?: string;
|
altText?: string
|
||||||
}
|
}
|
||||||
const { username, repo, topLanguages, showIcons, altText } = Astro.props;
|
const { username, repo, topLanguages, showIcons, altText } = Astro.props
|
||||||
const baseUrl = 'https://github-readme-stats.vercel.app/api/';
|
const baseUrl = 'https://github-readme-stats.vercel.app/api/'
|
||||||
let url = `${baseUrl}?username=${username}&show_icons=${!!showIcons}`;
|
let url = `${baseUrl}?username=${username}&show_icons=${!!showIcons}`
|
||||||
|
|
||||||
let alt = `GitHub stats for account: ${username}`;
|
let alt = `GitHub stats for account: ${username}`
|
||||||
|
|
||||||
if (repo) {
|
if (repo) {
|
||||||
url = `${baseUrl}/pin/?username=${username}&repo=${repo}`;
|
url = `${baseUrl}/pin/?username=${username}&repo=${repo}`
|
||||||
alt = `GitHub stats for repository: ${username}/${repo}`;
|
alt = `GitHub stats for repository: ${username}/${repo}`
|
||||||
}
|
}
|
||||||
|
|
||||||
if (topLanguages) {
|
if (topLanguages) {
|
||||||
url = `${baseUrl}top-langs?username=${username}`;
|
url = `${baseUrl}top-langs?username=${username}`
|
||||||
alt = `GitHub top languages for account: ${username}`;
|
alt = `GitHub top languages for account: ${username}`
|
||||||
}
|
}
|
||||||
|
|
||||||
alt = altText || alt;
|
alt = altText || alt
|
||||||
---
|
---
|
||||||
|
|
||||||
<img src={url} alt={alt} />
|
<Image inferSize={true} src={url} alt={alt} />
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
# `test` directory
|
|
||||||
|
|
||||||
This folder contain tests for your component(s). This templates makes no assumption regarding your way of writting code. You can either write the code first and then the tests or the reverse (known as Test-Driven Development). Ultimately, what's important is that your code works and is tested to prove it!
|
|
||||||
|
|
||||||
Included in this template is [astro-component-tester](https://github.com/Princesseuh/astro-component-tester), a tool made to help you test the output of your component(s), check out its GitHub page for more info on how to use it
|
|
||||||
|
|
||||||
A commented example test (see `example.test.js`) is included in this folder to help you learn how to write a basic test for your project
|
|
|
@ -1,24 +0,0 @@
|
||||||
import { expect } from 'chai';
|
|
||||||
import { getComponentOutput } from 'astro-component-tester';
|
|
||||||
|
|
||||||
describe('Example Tests', () => {
|
|
||||||
// Simple test to get us started with the syntax
|
|
||||||
it('should equal 2', () => {
|
|
||||||
expect(1 + 1).to.equal(2);
|
|
||||||
});
|
|
||||||
|
|
||||||
// This show us how to write a test for our component's output using astro-component-tester
|
|
||||||
describe('Component test', async () => {
|
|
||||||
let component;
|
|
||||||
|
|
||||||
// First get the component's output, this returns an object containing the generated html (`.html`)
|
|
||||||
before(async () => {
|
|
||||||
component = await getComponentOutput('./src/GithubStats.astro');
|
|
||||||
});
|
|
||||||
|
|
||||||
// Unless you modified /src/Component.astro, this should pass, as the component is empty apart from the frontmatter and new lines
|
|
||||||
it('example component should not be empty', () => {
|
|
||||||
expect(component.html).not.to.equal('\n');
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
Loading…
Reference in a new issue