setup workflows
43
.github/workflows/main_deploy.yml
vendored
Normal file
|
@ -0,0 +1,43 @@
|
|||
name: Deploy
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- "v*.*.*"
|
||||
|
||||
jobs:
|
||||
work:
|
||||
name: Lint, Test, Build, Deploy
|
||||
#
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Setup | Checkout
|
||||
uses: actions/checkout@v2
|
||||
- name: Setup | just
|
||||
uses: extractions/setup-just@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Setup | Python 3.10
|
||||
uses: actions/setup-python@v3.0.0
|
||||
with:
|
||||
python-version: '3.10'
|
||||
- name: Setup | toml, pyyaml, pylint, pylint-quotes
|
||||
uses: BSFishy/pip-action@v1
|
||||
with:
|
||||
packages: |
|
||||
pylint
|
||||
pylint-quotes
|
||||
|
||||
- name: Setup | Node Install
|
||||
run: npm ci
|
||||
- name: Lint
|
||||
run: just lint
|
||||
- name: Test (WIP)
|
||||
run: echo "No tests ran"
|
||||
- name: Build
|
||||
run: npm run build
|
||||
- name: Deploy
|
||||
uses: JamesIves/github-pages-deploy-action@v4.2.5
|
||||
with:
|
||||
branch: prod
|
||||
folder: build
|
47
.github/workflows/main_push.yml
vendored
Normal file
|
@ -0,0 +1,47 @@
|
|||
name: Push, Pull Request
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
|
||||
jobs:
|
||||
work:
|
||||
name: Lint, Test, Build
|
||||
#
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Setup | Checkout
|
||||
uses: actions/checkout@v2
|
||||
- name: Setup | just
|
||||
uses: extractions/setup-just@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Setup | Python 3.10
|
||||
uses: actions/setup-python@v3.0.0
|
||||
with:
|
||||
python-version: '3.10'
|
||||
- name: Setup | toml, pyyaml, pylint, pylint-quotes
|
||||
uses: BSFishy/pip-action@v1
|
||||
with:
|
||||
packages: |
|
||||
pylint
|
||||
pylint-quotes
|
||||
|
||||
- name: Setup | Node Install
|
||||
run: npm ci
|
||||
- name: Lint
|
||||
run: just lint
|
||||
- name: Test (WIP)
|
||||
run: echo "No tests ran"
|
||||
- name: Build
|
||||
run: npm run build
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
5
Justfile
|
@ -5,3 +5,8 @@ deploy:
|
|||
git add .
|
||||
git commit -m "Local Build Deployment"
|
||||
git push
|
||||
|
||||
lint VERBOSE="":
|
||||
pylint scripts
|
||||
python3 scripts/lint.py {{VERBOSE}}
|
||||
npm run lint
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
dupl.itntpiston.app
|
|
@ -1,44 +0,0 @@
|
|||
{
|
||||
"files": {
|
||||
"main.css": "/static/css/main.820e0273.css",
|
||||
"main.js": "/static/js/main.4124a2d4.js",
|
||||
"static/js/787.ada1a5f8.chunk.js": "/static/js/787.ada1a5f8.chunk.js",
|
||||
"static/media/PotLid.png": "/static/media/PotLid.baf78a40199753b3af39.png",
|
||||
"static/media/Calamity-Regular.otf": "/static/media/Calamity-Regular.cbeefc650e6ac39335b6.otf",
|
||||
"static/media/SpiritOrb.png": "/static/media/SpiritOrb.66f25f8bbb0f27f0f568.png",
|
||||
"static/media/AncientArrow.png": "/static/media/AncientArrow.9a1a41d05b09babd770d.png",
|
||||
"static/media/IceArrow.png": "/static/media/IceArrow.c227e7fda67cfc094e27.png",
|
||||
"static/media/FaroshHorn.png": "/static/media/FaroshHorn.ea7e3cbc262af3c30e1d.png",
|
||||
"static/media/Rushroom.png": "/static/media/Rushroom.ab3824a1f76fa5347021.png",
|
||||
"static/media/SpeedFood.png": "/static/media/SpeedFood.1bde9cae9ffc0c3906ea.png",
|
||||
"static/media/HeartyBass.png": "/static/media/HeartyBass.4e0f8e06034479e163fe.png",
|
||||
"static/media/SilentPrincess.png": "/static/media/SilentPrincess.6b9283141fbc5993b481.png",
|
||||
"static/media/FaroshScale.png": "/static/media/FaroshScale.cc674ca9ac3cb63f99a3.png",
|
||||
"static/media/Honey.png": "/static/media/Honey.dbf6fd6eae2e33fc3d6c.png",
|
||||
"static/media/Tail.png": "/static/media/Tail.a43cfa310e2c86532247.png",
|
||||
"static/media/Wood.png": "/static/media/Wood.8105d493814e4ecd145f.png",
|
||||
"static/media/Diamond.png": "/static/media/Diamond.df6931b37a1f47165e37.png",
|
||||
"static/media/NormalArrow.png": "/static/media/NormalArrow.1c54890bf60a08914a20.png",
|
||||
"static/media/BombArrow.png": "/static/media/BombArrow.6b5994846aa06c8a8e92.png",
|
||||
"static/media/Opal.png": "/static/media/Opal.2e20b71d79a80f905a80.png",
|
||||
"static/media/BigHeartyRadish.png": "/static/media/BigHeartyRadish.f4234222deeb380ad3f2.png",
|
||||
"static/media/HylianShroom.png": "/static/media/HylianShroom.0f05ef4a95089fb84ba0.png",
|
||||
"static/media/Spring.png": "/static/media/Spring.bb7dcfa111b7b56ab25a.png",
|
||||
"static/media/ShockArrow.png": "/static/media/ShockArrow.823f535857deb6e461ab.png",
|
||||
"static/media/Shaft.png": "/static/media/Shaft.328e8aa17c1e5f9f0058.png",
|
||||
"static/media/ForestDwellerBow.png": "/static/media/ForestDwellerBow.d2a6ab2d3f59bcc67b4b.png",
|
||||
"static/media/FaroshClaw.png": "/static/media/FaroshClaw.4da7a445c986e0279916.png",
|
||||
"static/media/HyruleBass.png": "/static/media/HyruleBass.82ea677144fd38b4665a.png",
|
||||
"static/media/Fairy.png": "/static/media/Fairy.02985afe57816235258e.png",
|
||||
"static/media/FireArrow.png": "/static/media/FireArrow.103898dc3f492d3293bd.png",
|
||||
"static/media/Lotus.png": "/static/media/Lotus.6006e27a51c66a0b9d3b.png",
|
||||
"index.html": "/index.html",
|
||||
"main.820e0273.css.map": "/static/css/main.820e0273.css.map",
|
||||
"main.4124a2d4.js.map": "/static/js/main.4124a2d4.js.map",
|
||||
"787.ada1a5f8.chunk.js.map": "/static/js/787.ada1a5f8.chunk.js.map"
|
||||
},
|
||||
"entrypoints": [
|
||||
"static/css/main.820e0273.css",
|
||||
"static/js/main.4124a2d4.js"
|
||||
]
|
||||
}
|
BIN
docs/favicon.ico
Before Width: | Height: | Size: 90 KiB |
|
@ -1 +0,0 @@
|
|||
<!doctype html><html lang="en"><head><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="for Breath of the Wild"/><meta property="og:site_name" content="itntpiston.app"/><meta property="og:title" content="Inventory Slot Transfer Simulator"><meta property="og:type" content="website"><meta property="og:url" content="https://dupl.itntpiston.app/#/"><meta property="og:description" content="for Breath of the Wild"><link rel="manifest" href="/manifest.json"/><title>IST Sim</title><script defer="defer" src="/static/js/main.4124a2d4.js"></script><link href="/static/css/main.820e0273.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
|
BIN
docs/logo192.png
Before Width: | Height: | Size: 5.2 KiB |
BIN
docs/logo512.png
Before Width: | Height: | Size: 9.4 KiB |
|
@ -1,25 +0,0 @@
|
|||
{
|
||||
"short_name": "HDS",
|
||||
"name": "Hundo Duplication Simulator",
|
||||
"icons": [
|
||||
{
|
||||
"src": "favicon.ico",
|
||||
"sizes": "64x64 32x32 24x24 16x16",
|
||||
"type": "image/x-icon"
|
||||
},
|
||||
{
|
||||
"src": "logo192.png",
|
||||
"type": "image/png",
|
||||
"sizes": "192x192"
|
||||
},
|
||||
{
|
||||
"src": "logo512.png",
|
||||
"type": "image/png",
|
||||
"sizes": "512x512"
|
||||
}
|
||||
],
|
||||
"start_url": ".",
|
||||
"display": "standalone",
|
||||
"theme_color": "#000000",
|
||||
"background_color": "#ffffff"
|
||||
}
|
|
@ -1,3 +0,0 @@
|
|||
# https://www.robotstxt.org/robotstxt.html
|
||||
User-agent: *
|
||||
Disallow:
|
2
docs/static/css/main.820e0273.css
vendored
|
@ -1,2 +0,0 @@
|
|||
body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}h1{margin:0}@font-face{font-family:CalamitySans;src:url(/static/media/Calamity-Regular.cbeefc650e6ac39335b6.otf) format("opentype")}.Calamity{font-family:CalamitySans}.CommandItemSelected{background-color:#eee}.CommandItemContextSelected{background-color:#eaa}.CommandItemComment{color:green;font-size:10pt}.CommandItem{cursor:pointer;padding:2px 2px 2px 10px}.CommandItem:hover{background-color:#eee}.InputError{background-color:#eaa}.ItemSlot{background-color:#333;box-sizing:content-box;display:inline-block;height:64px;margin:4px;width:64px}.ItemSlotBroken{background-color:#600}.ItemSlotSave{background-color:#030}.ItemSlotEquipped{background-color:#08f}.ItemImage{border:1px solid #999;box-sizing:border-box;display:inline-block;height:62px;margin:1px;width:62px}.ItemCount{color:#eee;float:left;font-size:10pt;left:8px;position:relative;top:-22px}
|
||||
/*# sourceMappingURL=main.820e0273.css.map*/
|
1
docs/static/css/main.820e0273.css.map
vendored
|
@ -1 +0,0 @@
|
|||
{"version":3,"file":"static/css/main.820e0273.css","mappings":"AAAA,KAKE,kCAAmC,CACnC,iCAAkC,CAJlC,mIAEY,CAHZ,QAMF,CAEA,KACE,uEAEF,CCZA,GACE,QACF,CAEA,WACE,wBAAyB,CACzB,mFACF,CAEA,UACE,wBACF,CAEA,qBACE,qBACF,CAEA,4BACE,qBACF,CAEA,oBACE,WAAY,CACZ,cACF,CAEA,aAEE,cAAe,CADf,wBAEF,CAEA,mBACE,qBACF,CAEA,YACE,qBACF,CAEA,UAKE,qBAAyB,CACzB,sBAAuB,CACvB,oBAAqB,CAJrB,WAAY,CAFZ,UAAW,CACX,UAMF,CAEA,gBACE,qBACF,CAEA,cACE,qBACF,CAEA,kBACE,qBACF,CAEA,WACE,qBAAyB,CACzB,qBAAsB,CAItB,oBAAoB,CADpB,WAAW,CAFX,UAAU,CACV,UAGF,CAEA,WAKE,UAAa,CACb,UAAW,CALX,cAAe,CAGf,QAAQ,CAFR,iBAAiB,CACjB,SAIF","sources":["index.css","App.css"],"sourcesContent":["body {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',\n 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',\n sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\ncode {\n font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',\n monospace;\n}\n","h1 {\n margin: 0\n}\n\n@font-face {\n font-family: CalamitySans;\n src: url(\"assets/Calamity-Regular.otf\") format(\"opentype\");\n}\n\n.Calamity {\n font-family: CalamitySans;\n}\n\n.CommandItemSelected {\n background-color: #eeeeee;\n}\n\n.CommandItemContextSelected {\n background-color: #eeaaaa;\n}\n\n.CommandItemComment{\n color: green;\n font-size: 10pt;\n}\n\n.CommandItem {\n padding: 2px 2px 2px 10px;\n cursor: pointer;\n}\n\n.CommandItem:hover {\n background-color: #eeeeee;\n}\n\n.InputError {\n background-color: #eeaaaa;\n}\n\n.ItemSlot {\n margin: 4px;\n width: 64px;\n height: 64px;\n \n background-color: #333333;\n box-sizing: content-box;\n display: inline-block;\n}\n\n.ItemSlotBroken {\n background-color: #660000;\n}\n\n.ItemSlotSave {\n background-color: #003300;\n}\n\n.ItemSlotEquipped {\n background-color: #0088ff;\n}\n\n.ItemImage {\n border: 1px solid #999999;\n box-sizing: border-box;\n margin:1px;\n width:62px;\n height:62px;\n display:inline-block;\n}\n\n.ItemCount {\n font-size: 10pt;\n position:relative;\n top:-22px;\n left:8px;\n color:#eeeeee;\n float: left;\n}\n"],"names":[],"sourceRoot":""}
|
2
docs/static/js/787.ada1a5f8.chunk.js
vendored
|
@ -1,2 +0,0 @@
|
|||
"use strict";(self.webpackChunkbotw_hundo_dupl=self.webpackChunkbotw_hundo_dupl||[]).push([[787],{787:function(e,t,n){n.r(t),n.d(t,{getCLS:function(){return y},getFCP:function(){return h},getFID:function(){return C},getLCP:function(){return P},getTTFB:function(){return D}});var i,r,a,o,u=function(e,t){return{name:e,value:void 0===t?-1:t,delta:0,entries:[],id:"v2-".concat(Date.now(),"-").concat(Math.floor(8999999999999*Math.random())+1e12)}},c=function(e,t){try{if(PerformanceObserver.supportedEntryTypes.includes(e)){if("first-input"===e&&!("PerformanceEventTiming"in self))return;var n=new PerformanceObserver((function(e){return e.getEntries().map(t)}));return n.observe({type:e,buffered:!0}),n}}catch(e){}},f=function(e,t){var n=function n(i){"pagehide"!==i.type&&"hidden"!==document.visibilityState||(e(i),t&&(removeEventListener("visibilitychange",n,!0),removeEventListener("pagehide",n,!0)))};addEventListener("visibilitychange",n,!0),addEventListener("pagehide",n,!0)},s=function(e){addEventListener("pageshow",(function(t){t.persisted&&e(t)}),!0)},m=function(e,t,n){var i;return function(r){t.value>=0&&(r||n)&&(t.delta=t.value-(i||0),(t.delta||void 0===i)&&(i=t.value,e(t)))}},v=-1,d=function(){return"hidden"===document.visibilityState?0:1/0},p=function(){f((function(e){var t=e.timeStamp;v=t}),!0)},l=function(){return v<0&&(v=d(),p(),s((function(){setTimeout((function(){v=d(),p()}),0)}))),{get firstHiddenTime(){return v}}},h=function(e,t){var n,i=l(),r=u("FCP"),a=function(e){"first-contentful-paint"===e.name&&(f&&f.disconnect(),e.startTime<i.firstHiddenTime&&(r.value=e.startTime,r.entries.push(e),n(!0)))},o=window.performance&&performance.getEntriesByName&&performance.getEntriesByName("first-contentful-paint")[0],f=o?null:c("paint",a);(o||f)&&(n=m(e,r,t),o&&a(o),s((function(i){r=u("FCP"),n=m(e,r,t),requestAnimationFrame((function(){requestAnimationFrame((function(){r.value=performance.now()-i.timeStamp,n(!0)}))}))})))},g=!1,T=-1,y=function(e,t){g||(h((function(e){T=e.value})),g=!0);var n,i=function(t){T>-1&&e(t)},r=u("CLS",0),a=0,o=[],v=function(e){if(!e.hadRecentInput){var t=o[0],i=o[o.length-1];a&&e.startTime-i.startTime<1e3&&e.startTime-t.startTime<5e3?(a+=e.value,o.push(e)):(a=e.value,o=[e]),a>r.value&&(r.value=a,r.entries=o,n())}},d=c("layout-shift",v);d&&(n=m(i,r,t),f((function(){d.takeRecords().map(v),n(!0)})),s((function(){a=0,T=-1,r=u("CLS",0),n=m(i,r,t)})))},E={passive:!0,capture:!0},w=new Date,L=function(e,t){i||(i=t,r=e,a=new Date,F(removeEventListener),S())},S=function(){if(r>=0&&r<a-w){var e={entryType:"first-input",name:i.type,target:i.target,cancelable:i.cancelable,startTime:i.timeStamp,processingStart:i.timeStamp+r};o.forEach((function(t){t(e)})),o=[]}},b=function(e){if(e.cancelable){var t=(e.timeStamp>1e12?new Date:performance.now())-e.timeStamp;"pointerdown"==e.type?function(e,t){var n=function(){L(e,t),r()},i=function(){r()},r=function(){removeEventListener("pointerup",n,E),removeEventListener("pointercancel",i,E)};addEventListener("pointerup",n,E),addEventListener("pointercancel",i,E)}(t,e):L(t,e)}},F=function(e){["mousedown","keydown","touchstart","pointerdown"].forEach((function(t){return e(t,b,E)}))},C=function(e,t){var n,a=l(),v=u("FID"),d=function(e){e.startTime<a.firstHiddenTime&&(v.value=e.processingStart-e.startTime,v.entries.push(e),n(!0))},p=c("first-input",d);n=m(e,v,t),p&&f((function(){p.takeRecords().map(d),p.disconnect()}),!0),p&&s((function(){var a;v=u("FID"),n=m(e,v,t),o=[],r=-1,i=null,F(addEventListener),a=d,o.push(a),S()}))},k={},P=function(e,t){var n,i=l(),r=u("LCP"),a=function(e){var t=e.startTime;t<i.firstHiddenTime&&(r.value=t,r.entries.push(e),n())},o=c("largest-contentful-paint",a);if(o){n=m(e,r,t);var v=function(){k[r.id]||(o.takeRecords().map(a),o.disconnect(),k[r.id]=!0,n(!0))};["keydown","click"].forEach((function(e){addEventListener(e,v,{once:!0,capture:!0})})),f(v,!0),s((function(i){r=u("LCP"),n=m(e,r,t),requestAnimationFrame((function(){requestAnimationFrame((function(){r.value=performance.now()-i.timeStamp,k[r.id]=!0,n(!0)}))}))}))}},D=function(e){var t,n=u("TTFB");t=function(){try{var t=performance.getEntriesByType("navigation")[0]||function(){var e=performance.timing,t={entryType:"navigation",startTime:0};for(var n in e)"navigationStart"!==n&&"toJSON"!==n&&(t[n]=Math.max(e[n]-e.navigationStart,0));return t}();if(n.value=n.delta=t.responseStart,n.value<0||n.value>performance.now())return;n.entries=[t],e(n)}catch(e){}},"complete"===document.readyState?setTimeout(t,0):addEventListener("load",(function(){return setTimeout(t,0)}))}}}]);
|
||||
//# sourceMappingURL=787.ada1a5f8.chunk.js.map
|
1
docs/static/js/787.ada1a5f8.chunk.js.map
vendored
3
docs/static/js/main.4124a2d4.js
vendored
39
docs/static/js/main.4124a2d4.js.LICENSE.txt
vendored
|
@ -1,39 +0,0 @@
|
|||
/**
|
||||
* @license React
|
||||
* react-dom.production.min.js
|
||||
*
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @license React
|
||||
* react-jsx-runtime.production.min.js
|
||||
*
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @license React
|
||||
* react.production.min.js
|
||||
*
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @license React
|
||||
* scheduler.production.min.js
|
||||
*
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
1
docs/static/js/main.4124a2d4.js.map
vendored
Before Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 11 KiB |
BIN
docs/static/media/BombArrow.6b5994846aa06c8a8e92.png
vendored
Before Width: | Height: | Size: 12 KiB |
BIN
docs/static/media/Diamond.df6931b37a1f47165e37.png
vendored
Before Width: | Height: | Size: 12 KiB |
BIN
docs/static/media/Fairy.02985afe57816235258e.png
vendored
Before Width: | Height: | Size: 9.9 KiB |
Before Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 12 KiB |
BIN
docs/static/media/FireArrow.103898dc3f492d3293bd.png
vendored
Before Width: | Height: | Size: 9.9 KiB |
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 13 KiB |
BIN
docs/static/media/Honey.dbf6fd6eae2e33fc3d6c.png
vendored
Before Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 10 KiB |
BIN
docs/static/media/IceArrow.c227e7fda67cfc094e27.png
vendored
Before Width: | Height: | Size: 16 KiB |
BIN
docs/static/media/Lotus.6006e27a51c66a0b9d3b.png
vendored
Before Width: | Height: | Size: 9.8 KiB |
Before Width: | Height: | Size: 12 KiB |
BIN
docs/static/media/Opal.2e20b71d79a80f905a80.png
vendored
Before Width: | Height: | Size: 12 KiB |
BIN
docs/static/media/PotLid.baf78a40199753b3af39.png
vendored
Before Width: | Height: | Size: 28 KiB |
BIN
docs/static/media/Rushroom.ab3824a1f76fa5347021.png
vendored
Before Width: | Height: | Size: 14 KiB |
BIN
docs/static/media/Shaft.328e8aa17c1e5f9f0058.png
vendored
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 13 KiB |
BIN
docs/static/media/SpeedFood.1bde9cae9ffc0c3906ea.png
vendored
Before Width: | Height: | Size: 14 KiB |
BIN
docs/static/media/SpiritOrb.66f25f8bbb0f27f0f568.png
vendored
Before Width: | Height: | Size: 20 KiB |
BIN
docs/static/media/Spring.bb7dcfa111b7b56ab25a.png
vendored
Before Width: | Height: | Size: 11 KiB |
BIN
docs/static/media/Tail.a43cfa310e2c86532247.png
vendored
Before Width: | Height: | Size: 12 KiB |
BIN
docs/static/media/Wood.8105d493814e4ecd145f.png
vendored
Before Width: | Height: | Size: 12 KiB |
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "botw-hundo-dupl",
|
||||
"version": "0.1.0",
|
||||
"version": "1.0.0",
|
||||
"homepage": "https://dupl.itntpiston.app/",
|
||||
"private": true,
|
||||
"dependencies": {
|
||||
|
|
92
scripts/lint.py
Normal file
|
@ -0,0 +1,92 @@
|
|||
#!/usr/bin/python3
|
||||
"""Check LF line ending and empty new line in the end"""
|
||||
|
||||
from os import listdir
|
||||
from os.path import isfile, isdir, join
|
||||
import sys
|
||||
|
||||
ignore = [
|
||||
"build",
|
||||
"release",
|
||||
"node_modules",
|
||||
".git",
|
||||
"__pycache__",
|
||||
".vscode",
|
||||
"target",
|
||||
"binaryen-version_105",
|
||||
"pkg",
|
||||
"wasmlib",
|
||||
"docs"
|
||||
]
|
||||
|
||||
ignore_exts = [
|
||||
"CNAME",
|
||||
".png",
|
||||
".gif",
|
||||
".vsix",
|
||||
".celer",
|
||||
".ico",
|
||||
".ps1",
|
||||
".wasm",
|
||||
".tar.gz",
|
||||
".otf",
|
||||
".svg"
|
||||
]
|
||||
|
||||
ROOT = "."
|
||||
|
||||
if len(sys.argv) > 1:
|
||||
VERBOSE = sys.argv[1] == "--verbose"
|
||||
else:
|
||||
VERBOSE = False
|
||||
|
||||
|
||||
def lint_path(rel_path):
|
||||
"""Lint path (file or directory)"""
|
||||
if isfile(rel_path):
|
||||
lint_file(rel_path)
|
||||
elif isdir(rel_path):
|
||||
for subpath in listdir(rel_path):
|
||||
if should_lint_subpath(subpath):
|
||||
lint_path(join(rel_path, subpath))
|
||||
|
||||
def should_lint_subpath(subpath):
|
||||
"""Check if a subpath should be processed or ignored"""
|
||||
if subpath in ignore:
|
||||
return False
|
||||
for ignore_ext in ignore_exts:
|
||||
if subpath.endswith(ignore_ext):
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
bad_files = []
|
||||
|
||||
def lint_file(file_path):
|
||||
"""Lint file"""
|
||||
if VERBOSE:
|
||||
print(f"Checking {file_path}")
|
||||
with open(file_path, 'r', encoding="utf-8", newline="") as file:
|
||||
last_line = None
|
||||
while True:
|
||||
line = file.readline()
|
||||
if not line:
|
||||
break
|
||||
if line.find("\r") != -1:
|
||||
bad_files.append(("Line Ending", file_path))
|
||||
return
|
||||
last_line = line
|
||||
if last_line is not None:
|
||||
if last_line[-1] != "\n":
|
||||
if VERBOSE:
|
||||
print(f"lastline={last_line} length={len(last_line)}")
|
||||
bad_files.append(("Needs trailing new line", file_path))
|
||||
elif last_line[0] == "\n":
|
||||
bad_files.append(("Too many trailing new lines", file_path))
|
||||
|
||||
lint_path(ROOT)
|
||||
|
||||
if len(bad_files) > 0:
|
||||
for reason, path in bad_files:
|
||||
print(f"{path}: {reason}")
|
||||
sys.exit(1)
|
Before Width: | Height: | Size: 76 KiB |
|
@ -27,4 +27,3 @@ export const CommandItem: React.FC<CommandItemProps> = ({isSelected, isContextSe
|
|||
}}
|
||||
>{children} </li>;
|
||||
};
|
||||
|
||||
|
|
|
@ -14,4 +14,3 @@ export const ItemList: React.FC<ItemListProps> = ({slots}) => {
|
|||
}
|
||||
</>;
|
||||
};
|
||||
|
||||
|
|
|
@ -1,25 +1,25 @@
|
|||
import { PropsWithChildren } from "react"
|
||||
|
||||
type TitledListProps = PropsWithChildren<{
|
||||
title: string
|
||||
}>
|
||||
|
||||
export const TitledList: React.FC<TitledListProps> = ({title, children}) => {
|
||||
return (
|
||||
<>
|
||||
<h3 className="ListHeader" style={{
|
||||
height: 40,
|
||||
borderBottom: "2px solid",
|
||||
boxSizing: "border-box",
|
||||
}}>
|
||||
{title}
|
||||
</h3>
|
||||
<div style={{
|
||||
height: "calc( 100% - 40px )",
|
||||
overflowY: "auto"}}
|
||||
>
|
||||
{children}
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
}
|
||||
import { PropsWithChildren } from "react"
|
||||
|
||||
type TitledListProps = PropsWithChildren<{
|
||||
title: string
|
||||
}>
|
||||
|
||||
export const TitledList: React.FC<TitledListProps> = ({title, children}) => {
|
||||
return (
|
||||
<>
|
||||
<h3 className="ListHeader" style={{
|
||||
height: 40,
|
||||
borderBottom: "2px solid",
|
||||
boxSizing: "border-box",
|
||||
}}>
|
||||
{title}
|
||||
</h3>
|
||||
<div style={{
|
||||
height: "calc( 100% - 40px )",
|
||||
overflowY: "auto"}}
|
||||
>
|
||||
{children}
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
|
2
src/react-app-env.d.ts
vendored
|
@ -68,4 +68,4 @@ declare module '*.module.scss' {
|
|||
declare module '*.module.sass' {
|
||||
const classes: { readonly [key: string]: string };
|
||||
export default classes;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,27 +1,27 @@
|
|||
{
|
||||
"compilerOptions": {
|
||||
"target": "es5",
|
||||
"lib": [
|
||||
"dom",
|
||||
"dom.iterable",
|
||||
"esnext"
|
||||
],
|
||||
"allowJs": true,
|
||||
"skipLibCheck": true,
|
||||
"esModuleInterop": true,
|
||||
"allowSyntheticDefaultImports": true,
|
||||
"strict": true,
|
||||
"forceConsistentCasingInFileNames": true,
|
||||
"noFallthroughCasesInSwitch": true,
|
||||
"module": "esnext",
|
||||
"moduleResolution": "node",
|
||||
"resolveJsonModule": true,
|
||||
"isolatedModules": true,
|
||||
"noEmit": true,
|
||||
"jsx": "react-jsx",
|
||||
"baseUrl": "src",
|
||||
},
|
||||
"include": [
|
||||
"src"
|
||||
]
|
||||
}
|
||||
{
|
||||
"compilerOptions": {
|
||||
"target": "es5",
|
||||
"lib": [
|
||||
"dom",
|
||||
"dom.iterable",
|
||||
"esnext"
|
||||
],
|
||||
"allowJs": true,
|
||||
"skipLibCheck": true,
|
||||
"esModuleInterop": true,
|
||||
"allowSyntheticDefaultImports": true,
|
||||
"strict": true,
|
||||
"forceConsistentCasingInFileNames": true,
|
||||
"noFallthroughCasesInSwitch": true,
|
||||
"module": "esnext",
|
||||
"moduleResolution": "node",
|
||||
"resolveJsonModule": true,
|
||||
"isolatedModules": true,
|
||||
"noEmit": true,
|
||||
"jsx": "react-jsx",
|
||||
"baseUrl": "src",
|
||||
},
|
||||
"include": [
|
||||
"src"
|
||||
]
|
||||
}
|
||||
|
|