From 2491d0d1071b9ba2836deb5eff06781ca66ceff0 Mon Sep 17 00:00:00 2001 From: yv1ing Date: Tue, 16 Sep 2025 11:56:41 +0800 Subject: [PATCH] Completed version 1.0.0 --- .gitignore | 139 ++++++++++++ LICENSE | 201 +++++++++++++++++ README.md | 33 +++ icon.png | Bin 0 -> 5330 bytes package-lock.json | 548 ++++++++++++++++++++++++++++++++++++++++++++++ package.json | 66 ++++++ screenshot.png | Bin 0 -> 71657 bytes src/extension.ts | 85 +++++++ tsconfig.json | 14 ++ 9 files changed, 1086 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 README.md create mode 100644 icon.png create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 screenshot.png create mode 100644 src/extension.ts create mode 100644 tsconfig.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9a5aced --- /dev/null +++ b/.gitignore @@ -0,0 +1,139 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +*.lcov + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Snowpack dependency directory (https://snowpack.dev/) +web_modules/ + +# TypeScript cache +*.tsbuildinfo + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional stylelint cache +.stylelintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variable files +.env +.env.* +!.env.example + +# parcel-bundler cache (https://parceljs.org/) +.cache +.parcel-cache + +# Next.js build output +.next +out + +# Nuxt.js build / generate output +.nuxt +dist + +# Gatsby files +.cache/ +# Comment in the public line in if your project uses Gatsby and not Next.js +# https://nextjs.org/blog/next-9-1#public-directory-support +# public + +# vuepress build output +.vuepress/dist + +# vuepress v2.x temp and cache directory +.temp +.cache + +# Sveltekit cache directory +.svelte-kit/ + +# vitepress build output +**/.vitepress/dist + +# vitepress cache directory +**/.vitepress/cache + +# Docusaurus cache and generated files +.docusaurus + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ + +# Firebase cache directory +.firebase/ + +# TernJS port file +.tern-port + +# Stores VSCode versions used for testing VSCode extensions +.vscode-test + +# yarn v3 +.pnp.* +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/sdks +!.yarn/versions + +# Vite logs files +vite.config.js.timestamp-* +vite.config.ts.timestamp-* diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/README.md b/README.md new file mode 100644 index 0000000..34ac7d8 --- /dev/null +++ b/README.md @@ -0,0 +1,33 @@ +# Today Income + +This is a VS Code plugin that allows you to check how much money you have earned since you started working today. + +## Features + +- Displays today's earned income in the VS Code status bar. +- Customizable monthly income, working hours, and workdays. +- Currency unit customization for flexibility (e.g., `$`, `€`, `¥`). + +## Get Started + +### Installation + +You can manually install the **Today Income** extension in Visual Studio Code by following these steps: + +1. **Download the plugin from the release page**: + Go to the [Releases](https://github.com/yv1ing/today-income/releases) page and download the `.vsix` file. + +2. **Install via VS Code**: + - Open **VS Code**. + - Go to the **Extensions** view (`Ctrl+Shift+X` or click the Extensions icon in the Activity Bar). + - Click on the `...` menu in the top-right corner. + - Select **Install from VSIX...** and choose the downloaded `.vsix` file. + +3. **Alternatively, install via Command Line**: + If you have the `.vsix` file, you can install it directly from the command line: + ```bash + code --install-extension today-income-1.0.0.vsix + +## Preview + +![](./screenshot.png) \ No newline at end of file diff --git a/icon.png b/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..8475dbfa3e4cda4da16b10483331637ad2b3038d GIT binary patch literal 5330 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 literal 0 HcmV?d00001 diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..cffa1b3 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,548 @@ +{ + "name": "today-income", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "today-income", + "version": "1.0.0", + "devDependencies": { + "typescript": "^5.9.2", + "vscode": "^1.1.37" + }, + "engines": { + "vscode": "^1.5.0" + } + }, + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true, + "license": "ISC" + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/commander": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "dev": true, + "license": "MIT" + }, + "node_modules/es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es6-promise": "^4.0.3" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "license": "ISC" + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.x" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha512-z/GDPjlRMNOa2XJiB4em8wJpuuBfrFOlYKTZxtpkdr1uPdibHI8rYA3MY0KDObpVyaes0e/aunid/t88ZI2EKA==", + "dev": true, + "license": "MIT", + "bin": { + "he": "bin/he" + } + }, + "node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha512-miQKw5Hv4NS1Psg2517mV4e4dYNaO3++hjAvLOAzKqZ61rH8NS1SK+vbfBWZ5PY/Me/bEWhUwqMghEW5Fb9T7Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha512-SknJC52obPfGQPnjIkXbmA6+5H15E+fR+E4iR2oQ3zzCLbd7/ONua69R/Gw7AgkTLsRG+r5fzksYwWe1AgTyWA==", + "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "0.0.8" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mocha": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", + "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "browser-stdout": "1.3.1", + "commander": "2.15.1", + "debug": "3.1.0", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "glob": "7.1.2", + "growl": "1.10.5", + "he": "1.1.1", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "supports-color": "5.4.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/mocha/node_modules/debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/mocha/node_modules/glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mocha/node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mocha/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/supports-color": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/typescript": { + "version": "5.9.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.2.tgz", + "integrity": "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/vscode": { + "version": "1.1.37", + "resolved": "https://registry.npmjs.org/vscode/-/vscode-1.1.37.tgz", + "integrity": "sha512-vJNj6IlN7IJPdMavlQa1KoFB3Ihn06q1AiN3ZFI/HfzPNzbKZWPPuiU+XkpNOfGU5k15m4r80nxNPlM7wcc0wg==", + "deprecated": "This package is deprecated in favor of @types/vscode and vscode-test. For more information please read: https://code.visualstudio.com/updates/v1_36#_splitting-vscode-package-into-typesvscode-and-vscodetest", + "dev": true, + "license": "MIT", + "dependencies": { + "glob": "^7.1.2", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "mocha": "^5.2.0", + "semver": "^5.4.1", + "source-map-support": "^0.5.0", + "vscode-test": "^0.4.1" + }, + "bin": { + "vscode-install": "bin/install" + }, + "engines": { + "node": ">=8.9.3" + } + }, + "node_modules/vscode-test": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/vscode-test/-/vscode-test-0.4.3.tgz", + "integrity": "sha512-EkMGqBSefZH2MgW65nY05rdRSko15uvzq4VAPM5jVmwYuFQKE7eikKXNJDRxL+OITXHB6pI+a3XqqD32Y3KC5w==", + "deprecated": "This package has been renamed to @vscode/test-electron, please update to the new name", + "dev": true, + "license": "MIT", + "dependencies": { + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^2.2.1" + }, + "engines": { + "node": ">=8.9.3" + } + }, + "node_modules/vscode-test/node_modules/agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "dev": true, + "license": "MIT", + "dependencies": { + "es6-promisify": "^5.0.0" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/vscode-test/node_modules/debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/vscode-test/node_modules/http-proxy-agent": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", + "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "4", + "debug": "3.1.0" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/vscode-test/node_modules/https-proxy-agent": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", + "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/vscode-test/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..a38f2e6 --- /dev/null +++ b/package.json @@ -0,0 +1,66 @@ +{ + "name": "today-income", + "displayName": "Today Income", + "description": "Let's see how much money I made today.", + "version": "1.0.0", + "publisher": "yv1ing", + "repository": { + "type": "git", + "url": "https://github.com/yv1ing/today-income.git" + }, + "bugs": { + "url": "https://github.com/yv1ing/today-income/issues" + }, + "engines": { + "vscode": "^1.5.0" + }, + "categories": [ + "Other" + ], + "activationEvents": [ + "onStartupFinished" + ], + "main": "./out/extension.js", + "icon": "icon.png", + "scripts": { + "compile": "tsc -p ./", + "watch": "tsc -watch -p ./" + }, + "contributes": { + "configuration": { + "type": "object", + "title": "Today Income", + "properties": { + "todayIncome.monthlyIncome": { + "type": "number", + "default": 10000, + "description": "Enter your monthly income" + }, + "todayIncome.currencyUnit": { + "type": "string", + "default": "¥", + "description": "Currency unit for income display" + }, + "todayIncome.workDays": { + "type": "number", + "default": 22, + "description": "Enter the number of working days in the month" + }, + "todayIncome.workStartTime": { + "type": "string", + "default": "09:00", + "description": "Enter the start time for work in HH:mm format" + }, + "todayIncome.workEndTime": { + "type": "string", + "default": "18:00", + "description": "Enter the end time for work in HH:mm format" + } + } + } + }, + "devDependencies": { + "typescript": "^5.9.2", + "vscode": "^1.1.37" + } +} \ No newline at end of file diff --git a/screenshot.png b/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..e24e387c1605279abae18e503eb5949b1068bf5e GIT binary patch literal 71657 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 Vs4w7Q7fk)t#q(DPDKdKZ{}*9mZ*l+t literal 0 HcmV?d00001 diff --git a/src/extension.ts b/src/extension.ts new file mode 100644 index 0000000..4195d32 --- /dev/null +++ b/src/extension.ts @@ -0,0 +1,85 @@ +import * as vscode from 'vscode'; + + +let monthlyIncome: number = 10000; +let currencyUnit: string = '¥'; +let workDays: number = 22; +let workStartTime: string = '09:00'; +let workEndTime: string = '18:00'; + +let statusBarItem: vscode.StatusBarItem; + +function parseTime(time: string): Date { + const [hours, minutes] = time.split(':').map(Number); + const currentDate = new Date(); + return new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate(), hours, minutes, 0, 0); +} + +function calculateWorkSecondsToday(startTime: Date, currentDate: Date): number { + return Math.max((currentDate.getTime() - startTime.getTime()) / 1000, 0); +} + +function calculateTotalWorkSecondsInMonth(): number { + const startTime = parseTime(workStartTime); + const endTime = parseTime(workEndTime); + const workSecondsPerDay = (endTime.getTime() - startTime.getTime()) / 1000; + return workSecondsPerDay * workDays; +} + +function updateIncome() { + const currentDate = new Date(); + + const startTime = parseTime(workStartTime); + const endTime = parseTime(workEndTime); + + if (currentDate.getTime() > endTime.getTime()) { + statusBarItem.text = `Today's income: ${currencyUnit}${(monthlyIncome / workDays).toFixed(2)}`; + return; + } + + const totalWorkSecondsToday = calculateWorkSecondsToday(startTime, currentDate); + const totalWorkSecondsInMonth = calculateTotalWorkSecondsInMonth(); + const perSecondIncome = monthlyIncome / totalWorkSecondsInMonth; + const currentIncome = perSecondIncome * totalWorkSecondsToday; + + statusBarItem.text = `Today's income: ${currencyUnit}${currentIncome.toFixed(2)}`; +} + +export function activate(context: vscode.ExtensionContext) { + const configuration = vscode.workspace.getConfiguration('todayIncome'); + monthlyIncome = configuration.get('monthlyIncome') || 10000; + currencyUnit = configuration.get('currencyUnit') || '¥'; + workDays = configuration.get('workDays') || 22; + workStartTime = configuration.get('workStartTime') || '09:00'; + workEndTime = configuration.get('workEndTime') || '18:00'; + + statusBarItem = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Right); + statusBarItem.text = `Today's income: ${currencyUnit}0`; + statusBarItem.show(); + + context.subscriptions.push(statusBarItem); + + vscode.workspace.onDidChangeConfiguration((event) => { + if ( + event.affectsConfiguration('todayIncome.monthlyIncome') || + event.affectsConfiguration('todayIncome.currencyUnit') || + event.affectsConfiguration('todayIncome.workDays') || + event.affectsConfiguration('todayIncome.workStartTime') || + event.affectsConfiguration('todayIncome.workEndTime') + ) { + const updatedConfig = vscode.workspace.getConfiguration('todayIncome'); + + monthlyIncome = updatedConfig.get('monthlyIncome') || 10000; + workDays = updatedConfig.get('workDays') || 22; + workStartTime = updatedConfig.get('workStartTime') || '09:00'; + workEndTime = updatedConfig.get('workEndTime') || '18:00'; + currencyUnit = updatedConfig.get('currencyUnit') || '¥'; + updateIncome(); + } + }); + + updateIncome(); + setInterval(updateIncome, 1000); +} + +export function deactivate() { } diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..d493e94 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,14 @@ +{ + "compilerOptions": { + "target": "ES6", + "module": "CommonJS", + "outDir": "./out", + "rootDir": "./src", + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true + }, + "include": ["src/**/*.ts"], + "exclude": ["node_modules"] +}