Compare commits

..
172 Commits
Author SHA1 Message Date
KernelDeimos 203669a79f release: v2.4.2 2024-07-22 20:23:40 -04:00
Nariman Jelveh f8b39630ab Merge pull request #628 from HeyPuter/eric/fix-templates
Write contents from template when creating a file from a tempalte
2024-07-22 16:53:01 -07:00
Nariman Jelveh 5d58764316 Use join. to build target path 2024-07-22 16:38:45 -07:00
KernelDeimos 5d2a6fce30 fix: fix templates 2024-07-22 17:10:58 -04:00
Nariman Jelveh 1f7f094282 Merge pull request #627 from Koppeks/koppeks/templates_folder_contextmenu
Templates folder feature
2024-07-22 11:33:02 -07:00
Nariman Jelveh d8dd218089 Don't show No templates found for now. 2024-07-22 11:31:01 -07:00
Nariman Jelveh a9801fc10d place available_templates call in update_auth_data to guarantee that user object exists 2024-07-22 11:07:57 -07:00
Nariman Jelveh 2d5a0bb894 closes #614 2024-07-21 17:01:24 -07:00
Koppeks a0113788f9 remove extra comments 2024-07-21 17:32:33 -03:00
Nariman Jelveh 5cf74a0ad9 Merge pull request #624 from enweazudaniel/main
Update ig.js
2024-07-21 09:18:31 -07:00
enweazudaniel 382fb24dbb Update ig.js 2024-07-21 17:04:33 +01:00
KernelDeimos 8f87770ceb fix: popup login in co isolation mode 2024-07-20 20:46:03 -04:00
KernelDeimos 2a5cec7ee9 fix: add necessary iframe attributes for co isolation 2024-07-20 18:54:08 -04:00
Nariman Jelveh 1579cbccf0 Merge pull request #620 from pvhuwung/i18n/vietnamese-translation
Add Vietnamese Translation for i18n
2024-07-20 14:12:24 -07:00
pvhuwung 02e1b1e8f5 chore: fix confirm for type_confirm_to_delete_account 2024-07-21 04:03:37 +07:00
Pham Viet Hung *David f4a45d74e7 Merge branch 'HeyPuter:main' into i18n/vietnamese-translation 2024-07-21 04:53:48 +08:00
pvhuwung c2d3d69dbe feat: add vietnamese localization-a 2024-07-21 03:53:14 +07:00
Nariman Jelveh 71f4b4d71f When setting size/position of app window make sure it's not an empty string 2024-07-20 13:34:36 -07:00
Nariman Jelveh 452b7495b1 use app-request as label for app idea issues 2024-07-20 11:46:20 -07:00
Nariman Jelveh ace14e99fa Merge pull request #618 from secondtruth/issue-template-app-idea
Add issue template for app ideas
2024-07-20 11:41:50 -07:00
Christian Neff b3c1b128e2 Add issue template for app ideas 2024-07-20 18:09:37 +02:00
Nariman Jelveh b6a433ce0c Merge pull request #616 from stariver1862/patch-1
Complete Traditional Chinese translation based on English file #550
2024-07-20 08:06:07 -07:00
Nariman Jelveh 3a09e84838 fix: syntax error and formatting issue 2024-07-20 08:05:14 -07:00
Nariman Jelveh 4990ba01cc Merge branch 'main' into patch-1 2024-07-20 07:47:38 -07:00
Nariman Jelveh 6b5c31ddfe Merge pull request #615 from mlgzackfly/update-translations
fix(i18n): Complete Traditional Chinese translation based on English file #550
2024-07-20 07:33:49 -07:00
WHL b9e73b7288 Update zhtw.js, Complete Traditional Chinese translation based on English file #550 2024-07-20 22:18:05 +08:00
mlgzackfly 37fd666a9a fix(i18n): update zhtw.js to match en.js 2024-07-20 19:36:45 +08:00
Koppeks f897e84498 Temporal commit for issue #432 2024-07-19 19:42:47 -03:00
Nariman Jelveh eae51e945b Merge branch 'main' of https://github.com/HeyPuter/puter into main 2024-07-19 13:11:35 -07:00
Nariman Jelveh 98e69642d0 fix: launch_app not considering explorer as a special case 2024-07-19 13:11:26 -07:00
Nariman Jelveh 45c29b6220 Merge pull request #611 from Alfika07/main
Fixed Tamil translation
2024-07-19 08:52:58 -07:00
Nariman Jelveh f2bb551e75 Change english_name from English to Tamil 2024-07-19 08:52:19 -07:00
Alfika07 8a3d0430f3 Add Tamil translation to translations.js 2024-07-19 09:46:04 +02:00
Alfika07 333d6e3b65 Move Tamil translation to the rest of translations 2024-07-19 09:43:23 +02:00
KernelDeimos e58da265ba try cross-origin isolation only on sites 2024-07-18 20:58:09 -04:00
KernelDeimos 7043b9400c fix: well kinda (HOSTNAME in phoenix) 2024-07-18 20:16:08 -04:00
Nariman Jelveh eeda9fb568 close #409 2024-07-18 16:06:45 -07:00
KernelDeimos ae25711a13 update package.json for local testing 2024-07-18 17:02:31 -04:00
KernelDeimos 602a19895c fix: it was github actions the entire time 2024-07-18 16:58:36 -04:00
KernelDeimos 614f2c5061 fix: fix CI attempt #7 2024-07-18 16:44:11 -04:00
KernelDeimos 9d549b192d fix: fix CI attempt #6 2024-07-18 16:38:56 -04:00
KernelDeimos 74adcddc1d fix: fix CI attempt #5 2024-07-18 16:36:44 -04:00
Nariman Jelveh 5a4328e449 Update Dockerfile 2024-07-18 13:33:02 -07:00
Nariman Jelveh 8b5f58c156 Merge branch 'main' of https://github.com/HeyPuter/puter into main 2024-07-18 13:30:14 -07:00
Nariman Jelveh d9a90a67c1 let me try fixing mocha! 2024-07-18 13:30:05 -07:00
KernelDeimos 84b993bce9 fix: fix CI attempt #4 2024-07-18 16:27:36 -04:00
KernelDeimos 3bca973f5f fix: fix CI attempt #3 2024-07-18 16:20:57 -04:00
KernelDeimos aebe89a1ac fix: fix CI attempt #2 2024-07-18 16:16:31 -04:00
KernelDeimos 58c199c153 fix: run mocha within packages in monorepo 2024-07-18 16:10:45 -04:00
Nariman Jelveh 82fa2d0862 close #169 2024-07-18 13:01:14 -07:00
KernelDeimos ad3d318d07 fix: make webpack output not look like errors 2024-07-18 14:50:53 -04:00
KernelDeimos e539932070 feat: add cross_origin_isolation option 2024-07-18 14:23:03 -04:00
KernelDeimos 8c8904cb36 doc: update documentation for boot sequence 2024-07-18 14:23:03 -04:00
Nariman Jelveh f9333b3d1e feat: add option to disable temporary users 2024-07-18 12:59:42 -04:00
KernelDeimos ba50d0f96d feat: add some default groups 2024-07-18 01:08:49 -04:00
Nariman Jelveh 8e7306c23b Add support for dropping multiple Puter items onto Dev Center (close #311) 2024-07-17 20:56:36 -07:00
Nariman Jelveh e6833253c7 close #276 2024-07-17 20:14:07 -07:00
Nariman Jelveh 4d6edff169 Escape arguments passed to dev-center 2024-07-17 18:32:02 -07:00
KernelDeimos 29f919c98a sync: package-lock.json 2024-07-17 17:15:29 -04:00
Nariman Jelveh 45f131f8ea No scrollbar for session list 2024-07-17 14:05:49 -07:00
Nariman Jelveh d80f2fa847 fix: fix path issues under win32 platform 2024-07-17 13:36:22 -07:00
KernelDeimos 5c636d4fd2 fix: remove abnoxious debug file 2024-07-17 13:55:55 -04:00
Nariman Jelveh f28836180e Merge pull request #603 from ohm69/pl-trans
Translation improvements, mainly style and context-based
2024-07-17 08:06:30 -07:00
Michal Hobot 8bece96f62 Translation improvements, mainly style and context-based
After using a Polish-translated puter I found out several places for improvement
2024-07-17 15:43:23 +02:00
Nariman Jelveh 6c29427e16 close #174 2024-07-16 19:06:46 -07:00
Nariman Jelveh 9bfee0862f Merge pull request #600 from Koppeks/koppeks/translation-es
Translation to Spanish
2024-07-16 18:14:44 -07:00
Nariman Jelveh 9d8a46814d Merge pull request #597 from bryanthaboi/main
Directions for Windows / Docker Composer
2024-07-16 16:38:42 -07:00
Nariman Jelveh c19c18bfcf Bring both Windows and Linux/Mac instructions under Docker Compose 2024-07-16 16:32:42 -07:00
Koppeks 151527825f update translation file es.js to be up to date with the file en.js 2024-07-16 20:30:42 -03:00
Nariman Jelveh cc4c93b77f Update README.md 2024-07-16 15:56:59 -07:00
Nariman Jelveh 3ca92955cb Make the screenshot a little larger 2024-07-16 15:56:37 -07:00
Nariman Jelveh 9bc427ced2 Merge pull request #598 from ohm69/patch-1
Translate en.js as of 2024-07-10
2024-07-16 09:09:44 -07:00
Michal Hobot 8e297cd7e3 Translate en.js as of 2024-07-10 2024-07-16 17:55:34 +02:00
bryanthaboi 5833b391f1 Update README.md 2024-07-16 09:17:35 -04:00
bryanthaboi 64e4299ac0 Update README.md 2024-07-16 09:10:38 -04:00
KernelDeimos 747d7dea89 Update SECURITY-ACKNOWLEDGEMENTS.md 2024-07-15 20:03:14 -04:00
Nariman Jelveh c80526900b Merge pull request #594 from Szab54/patch-1
Update translations.js to Hungarian lang
2024-07-15 12:39:07 -07:00
Nariman Jelveh 1b12a413fe Merge pull request #595 from Szab54/patch-3
Create hu.js hungarian language
2024-07-15 12:38:33 -07:00
XYCert 69a80ab3d2 Create hu.js hungarian language 2024-07-15 21:04:38 +02:00
XYCert 56820cf6ee Update translations.js to Hungarian lang 2024-07-15 20:58:31 +02:00
KernelDeimos a259755fe5 Fix broken link 2024-07-15 13:22:15 -04:00
KernelDeimos 7a12e699de Update SECURITY-ACKNOWLEDGEMENTS.md 2024-07-15 13:21:05 -04:00
Nariman Jelveh 7f0365202e Merge pull request #593 from Varun710/tamil-translation
Tamil translation
2024-07-14 22:36:13 -07:00
Varun710 81781f80af Tamil translation 2024-07-15 00:27:35 -05:00
Nariman Jelveh 93f4e52983 Update README.md to add Mastodon link 2024-07-14 16:43:56 -07:00
Nariman Jelveh b52c31133e Merge pull request #591 from LNLenost/patch-1
Fixed grammar issues/untranslated stings in italian translation
2024-07-14 10:44:37 -07:00
LNLenost 84e31eff2f Update it.js 2024-07-14 19:34:09 +02:00
Nariman Jelveh 46cbe077bc Merge pull request #590 from narek-gh/armenian-translation
Update Armenian translation based on English file
2024-07-13 14:25:31 -07:00
Narek 3b8af7cc5c Update Armenian translation file 2024-07-14 00:11:15 +04:00
Nariman Jelveh 9afb1b78b8 Fix blackfortresslabs.com URL 2024-07-11 18:36:29 -07:00
Nariman Jelveh ae04a09c90 Take into account that godmode might be either integer or boolean 2024-07-11 18:07:09 -07:00
KernelDeimos e8f4c328bf fix: read_only fields in ES 2024-07-11 21:00:14 -04:00
Nariman Jelveh 7b4e95139f Shorten Reddit link 2024-07-11 17:24:57 -07:00
KernelDeimos 6a2fbc1925 fix(security): hoist acl check in ll_read 2024-07-11 20:09:39 -04:00
KernelDeimos ab74f1ee8d release: v2.4.1 2024-07-11 19:41:08 -04:00
Nariman Jelveh b790bab9c0 Merge pull request #585 from HeyPuter/eric/rename-traits-to-features
refactor(backend): rename traits to features
2024-07-11 14:37:12 -07:00
KernelDeimos f7d15bae41 refactor(backend): rename traits to features 2024-07-11 16:50:09 -04:00
Nariman Jelveh 01a248e96e Merge pull request #579 from Waheed4719/issue#530
Issue#530 - Update bengali translations
2024-07-10 17:55:59 -07:00
Waheed Uddin Ahmed cff488f4f4 Update bn.js file formatting 2024-07-11 06:46:34 +06:00
Waheed Uddin Ahmed 92abc9947f Issue#530 - Update bengali translations 2024-07-11 06:42:52 +06:00
KernelDeimos 7aadae58ce fix: remove flag that breaks puter-js webpack 2024-07-10 17:18:54 -04:00
KernelDeimos 5b1924f312 chore: remove duplicate headers 2024-07-10 16:53:54 -04:00
KernelDeimos e6e92dc7b2 dev(license-headers): add dupe detector 2024-07-10 16:50:41 -04:00
KernelDeimos 6728dd2571 dev(license-headers): fix excludes list 2024-07-10 16:25:14 -04:00
KernelDeimos 2bf9f60bb0 dev(license-headers): implement skip and replace 2024-07-10 16:12:09 -04:00
KernelDeimos d0a5a57c88 dev(tools): add conflict prompt to license-headers 2024-07-10 14:57:39 -04:00
Nariman Jelveh f006c9ed26 Rename #DoesItRunPuter?.md to #DoesItRunPuter.md 2024-07-10 11:53:11 -07:00
Nariman Jelveh 6013466bcb Rename DoesItRunPuter.md to #DoesItRunPuter?.md 2024-07-10 11:52:34 -07:00
Nariman Jelveh 435e1786a3 Rename doesitrunputer.md to DoesItRunPuter.md 2024-07-10 11:38:56 -07:00
Nariman Jelveh e96bba850f move #DoesItRunPuter from README.md to ./awesome 2024-07-10 11:38:03 -07:00
Nariman Jelveh 2378f1a833 Delete .vscode directory 2024-07-10 11:30:15 -07:00
KernelDeimos 713b1f5889 dev(tools): add missing header adding to license-headers 2024-07-10 14:10:31 -04:00
KernelDeimos fac08c4152 doc: remove extra log in doc snippet 2024-07-10 13:52:20 -04:00
Nariman Jelveh 059a1fe565 Merge pull request #576 from sbondor/fix/romanian-translations
Added missing Romanian translations.
2024-07-10 10:43:59 -07:00
Sergiu Bondor 8440f566b9 Added missing Romanian translations. 2024-07-10 19:49:45 +03:00
Nariman Jelveh adb0f9dc23 Merge pull request #575 from xslendix/main
Add Romanian translations
2024-07-10 06:25:05 -07:00
Slendi 473b6512c6 Add 2FA Romanian translations
Signed-off-by: Slendi <[email protected]>
2024-07-10 11:37:06 +03:00
KernelDeimos 67139ef91b dev(tools): add license header adder thingy 2024-07-10 00:41:08 -04:00
Nariman Jelveh c76af1ab21 Merge pull request #574 from askdkc/japanese-translation
Add Japanese translation
2024-07-09 19:29:31 -07:00
askdkc 31748506b7 Create ja.js for Japanese Translation 2024-07-10 11:22:16 +09:00
askdkc 47ec74f0aa Add Japanese Translation 2024-07-10 11:20:29 +09:00
Nariman Jelveh 5e4582dda6 Update README.md 2024-07-09 19:18:14 -07:00
Nariman Jelveh 3bd3be7dee Update README.md 2024-07-09 19:15:50 -07:00
Nariman Jelveh e5243ec560 Delete .github/ISSUE_TEMPLATE/driver-request.md 2024-07-09 19:05:04 -07:00
Nariman Jelveh e745f67273 Add 'Support' section to README.md 2024-07-09 19:04:09 -07:00
Nariman Jelveh 831b2e259e Add ladybird to #DIRP and move the license section to the bottom 2024-07-09 16:54:54 -07:00
Nariman Jelveh 069b5e0033 Merge pull request #573 from HeyPuter/fix-CI-network-issues
Move `.commit` to `/tools`
2024-07-09 16:18:10 -07:00
KernelDeimos fafa36c73f move: move dev-server.js back to gui
I'm not sure why it was here, I thought I moved it already.
2024-07-09 19:01:49 -04:00
Nariman Jelveh eebf379205 Move .commit to /tools 2024-07-09 15:58:55 -07:00
Nariman Jelveh 4e15c5fcf4 Merge pull request #572 from HeyPuter/fix-CI-network-issues
retry npm 3 times to account for the flakiness of the process
2024-07-09 15:14:21 -07:00
Nariman Jelveh 10d77f17aa retry npm 3 times to account for the flakiness of the process 2024-07-09 15:12:19 -07:00
Nariman Jelveh 4daa1f2c25 Merge pull request #571 from micheledinelli/main
Add documentation instructions to get started with My Websites
2024-07-09 14:56:40 -07:00
micheledinelli 6c4c73a9e8 Add documentation instructions to get started with My Websites 2024-07-09 23:33:11 +02:00
Nariman Jelveh 00eabd7b10 remove duplicate and/or incorrect license headers 2024-07-09 13:50:20 -07:00
Nariman Jelveh 3b59ecedd1 Merge pull request #567 from stronkexe/main
Completing Arabic translation based on English file.
2024-07-09 08:21:04 -07:00
Nariman Jelveh 871f4cab0c Merge branch 'main' into main 2024-07-09 08:16:28 -07:00
Nariman Jelveh 1d52a559ff Remove more duplicate license headers 2024-07-09 08:14:33 -07:00
Nariman Jelveh ab164c3a0a Merge pull request #570 from micheledinelli/main
Completing Italian translation based on English file
2024-07-09 07:59:11 -07:00
micheledinelli f5a8ee1c6a Completing Italian translation based on English file 2024-07-09 16:55:45 +02:00
Nariman Jelveh 7fa2dd535f remove all duplicated license headers 2024-07-09 07:51:54 -07:00
micheledinelli a96abb5793 Completing Italian translation based on English file. 2024-07-09 16:49:19 +02:00
Nariman Jelveh 1f4297f746 Remove extra license header from ar.js 2024-07-09 07:48:35 -07:00
stronkexe 78a0acea69 Completing Arabic translation based on English file 2024-07-09 09:35:07 +01:00
KernelDeimos 3a7221dba5 chore: cleanup root directory 2024-07-09 04:18:55 -04:00
KernelDeimos bda4aed2e8 chore: add missing license headers 2024-07-09 04:10:33 -04:00
KernelDeimos 365d795c3f doc: omit cp of .env.example in local build instructions
This command contradicts the statement that Puter will find the
next available port when port 4100 is in use.
2024-07-09 04:03:58 -04:00
KernelDeimos a1ff375931 doc: update comment_prefixes.md 2024-07-09 03:40:46 -04:00
KernelDeimos 50036e954d dev: add js-parse-and-output experiment 2024-07-09 03:40:34 -04:00
KernelDeimos 0b39c76c40 move: incubator to experiments
This name is easier to understand and more generalizable.
2024-07-09 03:19:31 -04:00
KernelDeimos 47f76ccc89 dev: add file walker 2024-07-09 03:15:51 -04:00
Nariman Jelveh d3a9ba847a Move icon credits to the GUI project directory 2024-07-08 22:23:02 -07:00
Nariman Jelveh 338004474f Add jsdoc-style comments for a number of functions 2024-07-08 17:52:43 -07:00
Nariman Jelveh 535475b3c3 Improve getMimeType to remove trailing dot in the extension if preset 2024-07-08 17:33:09 -07:00
Nariman Jelveh 073b501e41 Merge pull request #566 from matheussss1/update-br-translation
feat: update BR translation
2024-07-08 14:40:29 -07:00
Matheus Carvalho 42a6b3938a feat: update BR translation 2024-07-08 18:33:39 -03:00
KernelDeimos a9338b45c1 chore: update package.json 2024-07-08 17:31:50 -04:00
Nariman Jelveh 8b9d57dc88 Merge pull request #565 from medelm1/update-arabic-translations
Update Arabic translations in ar.js
2024-07-08 14:03:09 -07:00
Nariman Jelveh 7d92304e7f Update ar.js 2024-07-08 13:59:45 -07:00
Nariman Jelveh 7844965489 Merge branch 'update-arabic-translations' of https://github.com/medelm1/puter into pr/565 2024-07-08 13:59:18 -07:00
Nariman Jelveh 8bdd489eaf Add missing commas 2024-07-08 13:59:13 -07:00
Med Elm fe5be7f3cf Update Arabic translations in src/gui/src/i18n/translations/ar.js to match English version in src/gui/src/i18n/translations/en.js 2024-07-08 13:59:13 -07:00
Nariman Jelveh 42496f9319 Add missing commas 2024-07-08 13:58:50 -07:00
KernelDeimos 48f99fb807 dev: add script to replace release-please 2024-07-08 16:57:02 -04:00
Med Elm bffa192805 Update Arabic translations in src/gui/src/i18n/translations/ar.js to match English version in src/gui/src/i18n/translations/en.js 2024-07-08 21:44:19 +01:00
Nariman Jelveh 26e9b0b2de Merge pull request #564 from Speedyjet/Russian_and_Ukrainian
Russian and ukrainian
2024-07-08 13:18:33 -07:00
Nariman Jelveh e061b1f488 Merge pull request #560 from Speedyjet/translations_russian_and_ukrainian
Russian translation fixed
2024-07-08 13:14:45 -07:00
Nariman Jelveh d2c68308bb Merge branch 'main' into translations_russian_and_ukrainian 2024-07-08 13:08:55 -07:00
Oleh Brusentsov e61039faf4 Ukrainian updated 2024-07-08 21:44:42 +02:00
Nariman Jelveh a1dd354787 Merge pull request #561 from julijatol/main
Update ru.js issue #547
2024-07-08 12:29:54 -07:00
KernelDeimos 3ed7916856 feat: JSON support for kv driver 2024-07-08 15:27:54 -04:00
Yuliya Tolstikova 17145d0be6 Update ru.js issue #547 2024-07-08 15:12:48 -04:00
Oleh Brusentsov 8836011428 Russian translation fixed 2024-07-08 20:44:53 +02:00
496 changed files with 10747 additions and 1823 deletions

No files matched your search

+11
View File
@@ -0,0 +1,11 @@
---
name: App idea
about: Suggest a potential app for Puter
title: ''
labels:
- app-request
assignees: ''
---
-10
View File
@@ -1,10 +0,0 @@
---
name: Driver Request
about: Request a driver on Puter
title: ''
labels: ''
assignees: ''
---
> Drivers are services that apps on Puter can use. For example, drivers support many of the features in the [Puter SDK](https://docs.puter.com/). If you're not sure if what you're suggesting is a driver, you should use the "Feature Request" template instead.
-31
View File
@@ -1,31 +0,0 @@
# This workflow will do a clean installation of node dependencies, cache/restore them, build the source code and run tests across different versions of node
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-nodejs
name: Node.js CI
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [20.x, 21.x, 22.x]
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
steps:
- uses: actions/checkout@v4
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
- run: npm ci
- run: npm run build --if-present
- run: npm test
-7
View File
@@ -1,7 +0,0 @@
{
"cSpell.words": [
"dnsmasq",
"heyputer",
"Puter"
]
}
+91
View File
@@ -1,5 +1,96 @@
# Changelog
## v2.4.2 (2024-07-22)
### Puter
#### Features
- add new file templates ([1f7f094](https://github.com/HeyPuter/puter/commit/1f7f094282fae915a2436701cfb756444cd3f781))
- add cross_origin_isolation option ([e539932](https://github.com/HeyPuter/puter/commit/e53993207077aecd2c01712519251993bb2562bc))
- add option to disable temporary users ([f9333b3](https://github.com/HeyPuter/puter/commit/f9333b3d1e05bd0dffaecd2e29afd08ea61559fc))
- add some default groups ([ba50d0f](https://github.com/HeyPuter/puter/commit/ba50d0f96d58075abec067d24e6532bd874093f0))
- Add support for dropping multiple Puter items onto Dev Center (close #311) ([8e7306c](https://github.com/HeyPuter/puter/commit/8e7306c23be01ee6c31cdb4c99f2fb1f71a2247f))
#### Translations
- Update ig.js ([382fb24](https://github.com/HeyPuter/puter/commit/382fb24dbb1737a8a54ed2491f80b2e2276cde61))
- feat: add vietnamese localization-a ([c2d3d69](https://github.com/HeyPuter/puter/commit/c2d3d69dbe33f36fcae13bcbc8e2a31a86025af9))
- Update zhtw.js, Complete Traditional Chinese translation based on English file #550 ([b9e73b7](https://github.com/HeyPuter/puter/commit/b9e73b7288aebb14e6bbf1915743e9157fc950b1))
- update zhtw.js to match en.js ([37fd666](https://github.com/HeyPuter/puter/commit/37fd666a9a6788d5f0c59311499f29896b48bc82))
- Add Tamil translation to translations.js ([8a3d043](https://github.com/HeyPuter/puter/commit/8a3d0430f39f872b8a460c344cce652c340b700b))
- Move Tamil translation to the rest of translations ([333d6e3](https://github.com/HeyPuter/puter/commit/333d6e3b651e460caca04a896cbc8c175555b79b))
- Translation improvements, mainly style and context-based ([8bece96](https://github.com/HeyPuter/puter/commit/8bece96f6224a060d5b408e08c58865fadb8b79c))
- update translation file es.js to be up to date with the file en.js ([1515278](https://github.com/HeyPuter/puter/commit/151527825f1eb4b060aaf97feb7d18af4fcddbf2))
- Translate en.js as of 2024-07-10 ([8e297cd](https://github.com/HeyPuter/puter/commit/8e297cd7e30757073e2f96593c363a273b639466))
- Create hu.js hungarian language ([69a80ab](https://github.com/HeyPuter/puter/commit/69a80ab3d2c94ee43d96021c3bcbdab04a4b5dc6))
- Update translations.js to Hungarian lang ([56820cf](https://github.com/HeyPuter/puter/commit/56820cf6ee56ff810a6b495a281ccbb2e7f9d8fb))
- Tamil translation ([81781f8](https://github.com/HeyPuter/puter/commit/81781f80afc07cd1e6278906cdc68c8092fbfedf))
- Update it.js ([84e31ef](https://github.com/HeyPuter/puter/commit/84e31eff2f58584d8fab7dd10606f2f6ced933a2))
- Update Armenian translation file ([3b8af7c](https://github.com/HeyPuter/puter/commit/3b8af7cc5c1be8ed67be827360bbfe0f0b5027e9))
#### Bug Fixes
- fix templates ([5d2a6fc](https://github.com/HeyPuter/puter/commit/5d2a6fce305a3dcd4857f52ebb75f529dffe4790))
- popup login in co isolation mode ([8f87770](https://github.com/HeyPuter/puter/commit/8f87770cebab32c00cb10133979d426306685292))
- add necessary iframe attributes for co isolation ([2a5cec7](https://github.com/HeyPuter/puter/commit/2a5cec7ee914c9c97ae90b85464f9fc5332ad2fb))
- chore: fix confirm for type_confirm_to_delete_account ([02e1b1e](https://github.com/HeyPuter/puter/commit/02e1b1e8f5f8e22d7ab39ebff99f7dd8e08a4221))
- syntax error and formatting issue ([3a09e84](https://github.com/HeyPuter/puter/commit/3a09e84838fe8b74bd050641620eec87d9f59dfc))
- #432 ([f897e84](https://github.com/HeyPuter/puter/commit/f897e844989083b0b369ba0ce4d2c5a9f3db5ad8))
- `launch_app` not considering `explorer` as a special case ([98e6964](https://github.com/HeyPuter/puter/commit/98e69642d027a83975a0b2b825317213098bb689))
- well kinda (HOSTNAME in phoenix) ([7043b94](https://github.com/HeyPuter/puter/commit/7043b9400c63842c4c54d82724167666708d3119))
- it was github actions the entire time ([602a198](https://github.com/HeyPuter/puter/commit/602a19895c05b45a7d283470e7af3ae786be1bf2))
- fix CI attempt #7 ([614f2c5](https://github.com/HeyPuter/puter/commit/614f2c5061525f230ccd879bfb047434ac46a9ba))
- fix CI attempt #6 ([9d549b1](https://github.com/HeyPuter/puter/commit/9d549b192d149eac96c316ded645bf7c2e96153d))
- fix CI attempt #5 ([74adcdd](https://github.com/HeyPuter/puter/commit/74adcddc1d60e0a513408a0716ed2b301126225d))
- fix CI attempt #4 ([84b993b](https://github.com/HeyPuter/puter/commit/84b993bce913c3ad99127063bcfaae19331b199c))
- fix CI attempt #3 ([3bca973](https://github.com/HeyPuter/puter/commit/3bca973f5f4e65a2bd24c634c347fbd681a7458b))
- fix CI attempt #2 ([aebe89a](https://github.com/HeyPuter/puter/commit/aebe89a1acb070764551e8e89e325325ffbed8f9))
- run mocha within packages in monorepo ([58c199c](https://github.com/HeyPuter/puter/commit/58c199c15356ac087a04b16dd18e8fe0f1aea359))
- make webpack output not look like errors ([ad3d318](https://github.com/HeyPuter/puter/commit/ad3d318d07377c78c0429247225655e489b68be4))
- No scrollbar for session list ([45f131f](https://github.com/HeyPuter/puter/commit/45f131f8eaf94cf3951ca7ffeb6f311590233b8a))
- fix path issues under win32 platform ([d80f2fa](https://github.com/HeyPuter/puter/commit/d80f2fa847bfaef98dc8d482898f5c15f268e4bd))
- remove abnoxious debug file ([5c636d4](https://github.com/HeyPuter/puter/commit/5c636d4fd25e14ba3813f7fca3b70ff7bd6860e7))
- read_only fields in ES ([e8f4c32](https://github.com/HeyPuter/puter/commit/e8f4c328bff5c36b95fe460b80803e12e619f8ee))
### Security
#### Bug Fixes
- hoist acl check in ll_read ([6a2fbc1](https://github.com/HeyPuter/puter/commit/6a2fbc1925952ecceed741afe138270d1eeda7b7))
## v2.4.1 (2024-07-11)
### Puter
#### Features
- update BR translation ([42a6b39](https://github.com/HeyPuter/puter/commit/42a6b3938a588b8b4d1bd976c37e9c6e58408c75))
- JSON support for kv driver ([3ed7916](https://github.com/HeyPuter/puter/commit/3ed7916856f03eafbe0891f2ab39c34d20d2bd24))
#### Translations
- Update bn.js file formatting ([cff488f](https://github.com/HeyPuter/puter/commit/cff488f4f4378ca6c7568a585a665f2a3b87b89c))
- Issue#530 - Update bengali translations ([92abc99](https://github.com/HeyPuter/puter/commit/92abc9947f811f94f17a5ee5a4b73ee2b210900a))
- Added missing Romanian translations. ([8440f56](https://github.com/HeyPuter/puter/commit/8440f566b91c9eb4f01addcb850061e3fbe3afc7))
- Add 2FA Romanian translations ([473b651](https://github.com/HeyPuter/puter/commit/473b6512c697854e3f3badae1eb7b87742954da5))
- Add Japanese Translation ([47ec74f](https://github.com/HeyPuter/puter/commit/47ec74f0aa6adb3952e6460909029a4acb0c3039))
- Completing Italian translation based on English file ([f5a8ee1](https://github.com/HeyPuter/puter/commit/f5a8ee1c6ab950d62c90b6257791f026a508b4e4))
- Completing Italian translation based on English file. ([a96abb5](https://github.com/HeyPuter/puter/commit/a96abb5793528d0dc56d75f95d771e1dcf5960d1))
- Completing Arabic translation based on English file ([78a0ace](https://github.com/HeyPuter/puter/commit/78a0acea6980b6d491da4874edbd98e17c0d9577))
- Update Arabic translations in src/gui/src/i18n/translations/ar.js to match English version in src/gui/src/i18n/translations/en.js ([fe5be7f](https://github.com/HeyPuter/puter/commit/fe5be7f3cf7f336730137293ba86a637e8d8591d))
- Update Arabic translations in src/gui/src/i18n/translations/ar.js to match English version in src/gui/src/i18n/translations/en.js ([bffa192](https://github.com/HeyPuter/puter/commit/bffa192805216fc17045cd8d629f34784dca7f3f))
- Ukrainian updated ([e61039f](https://github.com/HeyPuter/puter/commit/e61039faf409b0ad85c7513b0123f3f2e92ebe32))
- Update ru.js issue #547 ([17145d0](https://github.com/HeyPuter/puter/commit/17145d0be6a9a1445947cc0c4bec8f16a475144c))
- Russian translation fixed ([8836011](https://github.com/HeyPuter/puter/commit/883601142873f10d69c84874499065a7d29af054))
#### Bug Fixes
- remove flag that breaks puter-js webpack ([7aadae5](https://github.com/HeyPuter/puter/commit/7aadae58ce1a51f925bf64c3d65ac1fa6971b164))
- Improve `getMimeType` to remove trailing dot in the extension if preset ([535475b](https://github.com/HeyPuter/puter/commit/535475b3c36a37e3319ed067a24fb671790dcda3))
## 2.4.0 (2024-07-08)
+12 -2
View File
@@ -23,9 +23,19 @@ COPY package*.json ./
# Copy the source files
COPY . .
# Install mocha
RUN npm install -g mocha
# Install node modules
RUN npm cache clean --force \
&& npm ci
RUN npm cache clean --force && \
for i in 1 2 3; do \
npm ci && break || \
if [ $i -lt 3 ]; then \
sleep 15; \
else \
exit 1; \
fi; \
done
# Run the build command if necessary
RUN cd src/gui && npm run build && cd -
+30 -33
View File
@@ -19,7 +19,7 @@
<a href="https://hackerone.com/puter_h1b">Bug Bounty</a>
</p>
<h3 align="center"><img width="700" style="border-radius:5px;" alt="screenshot" src="https://assets.puter.site/puter.com-screenshot-3.webp"></h3>
<h3 align="center"><img width="800" style="border-radius:5px;" alt="screenshot" src="https://assets.puter.site/puter.com-screenshot-3.webp"></h3>
<br/>
@@ -43,7 +43,6 @@ Puter is an advanced, open-source internet operating system designed to be featu
```bash
git clone https://github.com/HeyPuter/puter
cd puter
cp .env.example .env
npm install
npm start
```
@@ -65,6 +64,7 @@ mkdir puter && cd puter && mkdir -p puter/config puter/data && sudo chown -R 100
### 🐙 Docker Compose
#### Linux/macOS
```bash
mkdir -p puter/config puter/data
sudo chown -R 1000:1000 puter
@@ -73,46 +73,43 @@ docker compose up
```
<br/>
#### Windows
```powershell
mkdir -p puter
cd puter
New-Item -Path "puter\config" -ItemType Directory -Force
New-Item -Path "puter\data" -ItemType Directory -Force
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/HeyPuter/puter/main/docker-compose.yml" -OutFile "docker-compose.yml"
docker compose up
```
<br/>
### ☁️ Puter.com
Puter is available as a hosted service at [**puter.com**](https://puter.com).
<br/>
## Support
Connect with the maintainers and community through these channels:
- Bug report or feature request? Please [open an issue](github.com/HeyPuter/puter/issues/new/choose).
- Discord: [discord.com/invite/PQcx7Teh8u](https://discord.com/invite/PQcx7Teh8u)
- X (Twitter): [x.com/HeyPuter](https://x.com/HeyPuter)
- Reddit: [reddit.com/r/puter/](https://www.reddit.com/r/puter/)
- Mastodon: [mastodon.social/@puter](https://mastodon.social/@puter)
- Email maintainers at [[email protected]](mailto:[email protected])
We are always happy to help you with any questions you may have. Don't hesitate to ask!
<br/>
## License
This repository is licensed under AGPL-3.0; However, our SDK (puter.js) is also available under Apache 2.0, as indicated by the license file in that section (packages/puter-js) of this repository.
This repository, including all its contents, sub-projects, modules, and components, is licensed under [AGPL-3.0](https://github.com/HeyPuter/puter/blob/main/LICENSE.txt) unless explicitly stated otherwise. Third-party libraries included in this repository may be subject to their own licenses.
<br/>
## #DoesItRunPuter
- [Minecraft](https://twitter.com/HeyPuter/status/1771957571496092036) | [video](https://www.youtube.com/watch?v=GIowZUXkg5g)
- [Samsung Watch](https://twitter.com/CharmunkDev/status/1781501714543030554)
- [PlayStation 4](https://twitter.com/HeyPuter/status/1767978053014270059)
- [Skyworth TV](https://twitter.com/ericalexdube/status/1767983049277411564)
- [A Fridge!](https://twitter.com/HeyPuter/status/1778890003797745842)
- [Oculus Quest 2](https://twitter.com/HeyPuter/status/1768664081756754012)
- [Tesla Model 3](https://twitter.com/EricLighthall/status/1781479732997214501)
- [Tesla Model S](https://twitter.com/HeyPuter/status/1767971178864587057)
- [Tesla Model Y](https://twitter.com/HeyPuter/status/1772858333751636310)
- [Nintendo Switch](https://twitter.com/HeyPuter/status/1780645795240538518)
- [Steam Deck](https://twitter.com/everythingSung/status/1782162352403828793)
<br/>
## Credits
The default wallpaper is created by [Milad Fakurian](https://unsplash.com/photos/blue-orange-and-yellow-wallpaper-E8Ufcyxz514) and published on [Unsplash](https://unsplash.com/).
Icons by [Papirus](https://github.com/PapirusDevelopmentTeam/papirus-icon-theme) under GPL-3.0 license.
Icons by [Iconoir](https://iconoir.com/) under MIT license.
Icons by [Elementary Icons](https://github.com/elementary/icons) under GPL-3.0 license.
Icons by [Tabler Icons](https://tabler.io/) under MIT license.
Icons by [bootstrap-icons](https://icons.getbootstrap.com/) under MIT license.
+2 -1
View File
@@ -3,5 +3,6 @@ We would like to thank the following security researchers for their responsible
# 2024
- Tim Suess: [GitHub](https://github.com/blackfortresslabs) | [Email]([email protected]) | [Website](blackfortresslabs.com)
- Tim Suess: [GitHub](https://github.com/blackfortresslabs) | [Email]([email protected]) | [Website](https://www.blackfortresslabs.com)
- xyzeva: [Github](https://github.com/xyzeva) | [Email](mailto:[email protected]) | [Website](https://kibty.town/)
- Yusuf Kelany: [GitHub](https://github.com/YusufYaser) | [Twitter](https://x.com/RealYusufYaser) | [Website](https://yusufyaser.xyz)
+1
View File
@@ -0,0 +1 @@
header: doc/license_header.txt
+14
View File
@@ -0,0 +1,14 @@
# #DoesItRunPuter
- [Minecraft](https://twitter.com/HeyPuter/status/1771957571496092036) | [video](https://www.youtube.com/watch?v=GIowZUXkg5g)
- [Samsung Watch](https://twitter.com/CharmunkDev/status/1781501714543030554)
- [PlayStation 4](https://twitter.com/HeyPuter/status/1767978053014270059)
- [Skyworth TV](https://twitter.com/ericalexdube/status/1767983049277411564)
- [A Fridge!](https://twitter.com/HeyPuter/status/1778890003797745842)
- [Oculus Quest 2](https://twitter.com/HeyPuter/status/1768664081756754012)
- [Tesla Model 3](https://twitter.com/EricLighthall/status/1781479732997214501)
- [Tesla Model S](https://twitter.com/HeyPuter/status/1767971178864587057)
- [Tesla Model Y](https://twitter.com/HeyPuter/status/1772858333751636310)
- [Nintendo Switch](https://twitter.com/HeyPuter/status/1780645795240538518)
- [Steam Deck](https://twitter.com/everythingSung/status/1782162352403828793)
- [Ladybird Browser](https://x.com/HeyPuter/status/1810783504503800035)
+3 -1
View File
@@ -25,4 +25,6 @@ This document will be updated on an _as-needed_ basis.
- `track:` is used to track common patterns.
- Anything written after `track:` must be registered in
[track-comments.md](../devmeta/track-comments.md)
- `wet:` is usesd to track anything that doesn't adhere
to the DRY principle; the following message should describe
where similar code is
+12
View File
@@ -124,6 +124,18 @@ The GUI is a single page application (SPA) and as best practice any route under
In other words, consider the routes above as "reserved" for Puter.
### Publish My Website
Right-click anywhere on the desktop to display options
From the options menu, select "New".
Then, choose "Folder".
Give the folder a name according to your preference.
After creating the folder:
Right-click on the folder.
Select the option "Publish as Website".
### Best Practices
- The `title` tags and meta tags (`<title></title>`, `<meta property="og:title"`, `<meta name="twitter:title"`, ...) should be dynamically set by the server. For example, if the URL is of an app (e.g. `https://puter.com/app/editor`) the `title` tags and meta tags should contain the app's title rather than the generic Puter title.
+29
View File
@@ -0,0 +1,29 @@
# Parsing Javascript and Generating it Back
## What Purpose?
This would be really useful for refactoring tools. I also want
automatic comments to be placed when certain features are used,
such as the [Sequence](../../src/backend/src/codex/Sequence.js)
class, since its usefulness won't be immediately apparent where
it appears in the source code.
I turns out the state of affairs with respect to generating a
CST for javascript... [kind of sucks](https://github.com/benjamn/recast/issues/1412).
I hope that further discussion on the issue I linked renders the
previous statement ironic.
## So, What Next?
The options I see are:
1. Add support to recast to make use of @babel/parser tokens when
the `tokens: true` option is set.
2. Add a format-preserving outputter to @babel/outputter.
[this is being worked on](https://github.com/babel/rfcs/pull/15)
3. Wait for someone else to do either of the previous two things.
4. Write a CST parser for javascript.
I'm going to start with option #3. It's very disappointing that
I don't have time to do #4, because I don't very much like solutions
#1 and #2; I like my CSTs to be more cohesive - a pyramid of meaning -
rather than lexer output dumped at the end of an AST.
@@ -0,0 +1,20 @@
{
"name": "js-parse-and-output",
"version": "1.0.0",
"description": "",
"main": "test.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "AGPL-3.0-only",
"dependencies": {
"@babel/generator": "^7.24.7",
"@babel/parser": "^7.24.7",
"acorn": "^8.12.1",
"acorn-static-class-features": "^1.0.0",
"escodegen": "^2.1.0",
"recast": "^0.23.9"
}
}
+57
View File
@@ -0,0 +1,57 @@
/*
* Copyright (C) 2024 Puter Technologies Inc.
*
* This file is part of Puter.
*
* Puter is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
const babelParser = require('@babel/parser');
const generate = (require('@babel/generator')).default;
const fs = require('fs');
const recast = require('recast');
const example = fs.readFileSync('./src/backend/src/filesystem/ll_operations/ll_read.js');
{
const ast = recast.parse(example, {
parser: {
parse (source) {
return babelParser.parse(source, {
ranges: true,
tokens: true,
});
},
},
});
const { code } = recast.print(ast);
}
{
const ast = babelParser.parse('' + example, {
tokens: true,
});
console.log(JSON.stringify(ast, undefined, ' '));
}
/*
const { code } = generate(ast, {
retainLines: true,
});
*/
// console.log(code);
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -1,3 +1,22 @@
/*
* Copyright (C) 2024 Puter Technologies Inc.
*
* This file is part of Puter.
*
* Puter is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import { V86 } from "./V86Wrapper.mjs";
/**
* Class representing an Instance of an emulator machine.
@@ -1,3 +1,22 @@
/*
* Copyright (C) 2024 Puter Technologies Inc.
*
* This file is part of Puter.
*
* Puter is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import Instance from "./Instance.mjs"
/**
+35
View File
@@ -0,0 +1,35 @@
/*
* Copyright (C) 2024 Puter Technologies Inc.
*
* This file is part of Puter.
*
* Puter is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
let V86;
if (typeof window !== 'undefined') {
V86 = window.V86;
} else {
try {
const { createRequire } = await import('module');
const require = createRequire(import.meta.url);
const NodeV86 = require("../third-party/libv86.js");
V86 = NodeV86.V86;
} catch (error) {
console.error('Failed to load V86 in Node.js environment:', error);
}
}
export { V86 };
+81
View File
@@ -0,0 +1,81 @@
/*
* Copyright (C) 2024 Puter Technologies Inc.
*
* This file is part of Puter.
*
* Puter is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#!/usr/bin/env node
/*
* Copyright (C) 2024 Puter Technologies Inc.
*
* This file is part of Puter.
*
* Puter is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
"use strict";
import('./js/InstanceManager.mjs').then(module => {
const InstanceManager = module.default;
process.stdin.setRawMode(true);
process.stdin.resume();
process.stdin.setEncoding("utf8");
console.log("Now booting, please stand by ...");
const manager = new InstanceManager({ screen: false, term: false, spawnRoot: undefined });
manager.getInstanceByinstName("Host").then(result => {
const hostvm = result.vm;
hostvm.add_listener("emulator-started", () => {
process.stdout.write("Welcome to psl!");
hostvm.serial0_send("\n");
});
hostvm.add_listener("serial0-output-byte", (byte) => {
var chr = String.fromCharCode(byte);
if (chr <= "~") {
process.stdout.write(chr);
}
});
process.stdin.on("data", (c) => {
if (c === "\u0004") {
hostvm.stop();
process.stdin.pause();
}
else {
hostvm.serial0_send(c);
}
});
}).catch(error => {
console.error(error);
throw Error("Error in getting host inastance, quitting");
});
}).catch(error => {
console.error('Error loading InstanceManager:', error);
});
File renamed without changes.
File renamed without changes.
@@ -1,3 +1,21 @@
/*
* Copyright (C) 2024 Puter Technologies Inc.
*
* This file is part of Puter.
*
* Puter is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
;(function(){'use strict';function ba(a,b){function c(x){x=x.toString(16);return"#"+"0".repeat(6-x.length)+x}function d(x,C,S,P){x.style.width="";x.style.height="";P&&(x.style.transform="");var aa=x.getBoundingClientRect();P?x.style.transform=(1===C?"":" scaleX("+C+")")+(1===S?"":" scaleY("+S+")"):(0===C%1&&0===S%1?(e.style.imageRendering="crisp-edges",e.style.imageRendering="pixelated",e.style["-ms-interpolation-mode"]="nearest-neighbor"):(e.style.imageRendering="",e.style["-ms-interpolation-mode"]=""),P=window.devicePixelRatio||
1,0!==P%1&&(C/=P,S/=P));1!==C&&(x.style.width=aa.width*C+"px");1!==S&&(x.style.height=aa.height*S+"px")}console.assert(a,"1st argument must be a DOM container");var e=a.getElementsByTagName("canvas")[0],g=e.getContext("2d",{alpha:!1}),f=a.getElementsByTagName("div")[0],k=document.createElement("div"),l,m,n=1,p=1,t=1,q,z=!1,w,u,I,U=!1,ea=this;a=new Uint16Array([8962,199,252,233,226,228,224,229,231,234,235,232,239,238,236,196,197,201,230,198,244,246,242,251,249,255,214,220,162,163,165,8359,402,225,
237,243,250,241,209,170,186,191,8976,172,189,188,161,171,187,9617,9618,9619,9474,9508,9569,9570,9558,9557,9571,9553,9559,9565,9564,9563,9488,9492,9524,9516,9500,9472,9532,9566,9567,9562,9556,9577,9574,9568,9552,9580,9575,9576,9572,9573,9561,9560,9554,9555,9579,9578,9496,9484,9608,9604,9612,9616,9600,945,223,915,960,931,963,181,964,934,920,937,948,8734,966,949,8745,8801,177,8805,8804,8992,8993,247,8776,176,8729,183,8730,8319,178,9632,160]);for(var Ab=new Uint16Array([32,9786,9787,9829,9830,9827,9824,
@@ -1,3 +1,21 @@
/*
* Copyright (C) 2024 Puter Technologies Inc.
*
* This file is part of Puter.
*
* Puter is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
"use strict";
/**
@@ -1,3 +1,21 @@
/*
* Copyright (C) 2024 Puter Technologies Inc.
*
* This file is part of Puter.
*
* Puter is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
/**
* Copyright (c) 2014 The xterm.js authors. All rights reserved.
* Copyright (c) 2012-2013, Christopher Jeffrey (MIT License)
@@ -1,2 +1,20 @@
/*
* Copyright (C) 2024 Puter Technologies Inc.
*
* This file is part of Puter.
*
* Puter is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var i=t();for(var s in i)("object"==typeof exports?exports:e)[s]=i[s]}}(globalThis,(()=>(()=>{"use strict";var e={4567:function(e,t,i){var s=this&&this.__decorate||function(e,t,i,s){var r,n=arguments.length,o=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(n<3?r(o):n>3?r(t,i,o):r(t,i))||o);return n>3&&o&&Object.defineProperty(t,i,o),o},r=this&&this.__param||function(e,t){return function(i,s){t(i,s,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.AccessibilityManager=void 0;const n=i(9042),o=i(9924),a=i(844),h=i(4725),c=i(2585),l=i(3656);let d=t.AccessibilityManager=class extends a.Disposable{constructor(e,t,i,s){super(),this._terminal=e,this._coreBrowserService=i,this._renderService=s,this._rowColumns=new WeakMap,this._liveRegionLineCount=0,this._charsToConsume=[],this._charsToAnnounce="",this._accessibilityContainer=this._coreBrowserService.mainDocument.createElement("div"),this._accessibilityContainer.classList.add("xterm-accessibility"),this._rowContainer=this._coreBrowserService.mainDocument.createElement("div"),this._rowContainer.setAttribute("role","list"),this._rowContainer.classList.add("xterm-accessibility-tree"),this._rowElements=[];for(let e=0;e<this._terminal.rows;e++)this._rowElements[e]=this._createAccessibilityTreeNode(),this._rowContainer.appendChild(this._rowElements[e]);if(this._topBoundaryFocusListener=e=>this._handleBoundaryFocus(e,0),this._bottomBoundaryFocusListener=e=>this._handleBoundaryFocus(e,1),this._rowElements[0].addEventListener("focus",this._topBoundaryFocusListener),this._rowElements[this._rowElements.length-1].addEventListener("focus",this._bottomBoundaryFocusListener),this._refreshRowsDimensions(),this._accessibilityContainer.appendChild(this._rowContainer),this._liveRegion=this._coreBrowserService.mainDocument.createElement("div"),this._liveRegion.classList.add("live-region"),this._liveRegion.setAttribute("aria-live","assertive"),this._accessibilityContainer.appendChild(this._liveRegion),this._liveRegionDebouncer=this.register(new o.TimeBasedDebouncer(this._renderRows.bind(this))),!this._terminal.element)throw new Error("Cannot enable accessibility before Terminal.open");this._terminal.element.insertAdjacentElement("afterbegin",this._accessibilityContainer),this.register(this._terminal.onResize((e=>this._handleResize(e.rows)))),this.register(this._terminal.onRender((e=>this._refreshRows(e.start,e.end)))),this.register(this._terminal.onScroll((()=>this._refreshRows()))),this.register(this._terminal.onA11yChar((e=>this._handleChar(e)))),this.register(this._terminal.onLineFeed((()=>this._handleChar("\n")))),this.register(this._terminal.onA11yTab((e=>this._handleTab(e)))),this.register(this._terminal.onKey((e=>this._handleKey(e.key)))),this.register(this._terminal.onBlur((()=>this._clearLiveRegion()))),this.register(this._renderService.onDimensionsChange((()=>this._refreshRowsDimensions()))),this.register((0,l.addDisposableDomListener)(document,"selectionchange",(()=>this._handleSelectionChange()))),this.register(this._coreBrowserService.onDprChange((()=>this._refreshRowsDimensions()))),this._refreshRows(),this.register((0,a.toDisposable)((()=>{this._accessibilityContainer.remove(),this._rowElements.length=0})))}_handleTab(e){for(let t=0;t<e;t++)this._handleChar(" ")}_handleChar(e){this._liveRegionLineCount<21&&(this._charsToConsume.length>0?this._charsToConsume.shift()!==e&&(this._charsToAnnounce+=e):this._charsToAnnounce+=e,"\n"===e&&(this._liveRegionLineCount++,21===this._liveRegionLineCount&&(this._liveRegion.textContent+=n.tooMuchOutput)))}_clearLiveRegion(){this._liveRegion.textContent="",this._liveRegionLineCount=0}_handleKey(e){this._clearLiveRegion(),/\p{Control}/u.test(e)||this._charsToConsume.push(e)}_refreshRows(e,t){this._liveRegionDebouncer.refresh(e,t,this._terminal.rows)}_renderRows(e,t){const i=this._terminal.buffer,s=i.lines.length.toString();for(let r=e;r<=t;r++){const e=i.lines.get(i.ydisp+r),t=[],n=e?.translateToString(!0,void 0,void 0,t)||"",o=(i.ydisp+r+1).toString(),a=this._rowElements[r];a&&(0===n.length?(a.innerText=" ",this._rowColumns.set(a,[0,1])):(a.textContent=n,this._rowColumns.set(a,t)),a.setAttribute("aria-posinset",o),a.setAttribute("aria-setsize",s))}this._announceCharacters()}_announceCharacters(){0!==this._charsToAnnounce.length&&(this._liveRegion.textContent+=this._charsToAnnounce,this._charsToAnnounce="")}_handleBoundaryFocus(e,t){const i=e.target,s=this._rowElements[0===t?1:this._rowElements.length-2];if(i.getAttribute("aria-posinset")===(0===t?"1":`${this._terminal.buffer.lines.length}`))return;if(e.relatedTarget!==s)return;let r,n;if(0===t?(r=i,n=this._rowElements.pop(),this._rowContainer.removeChild(n)):(r=this._rowElements.shiftLine truncated
//# sourceMappingURL=xterm.js.map
+18
View File
@@ -1,2 +1,20 @@
/*
* Copyright (C) 2024 Puter Technologies Inc.
*
* This file is part of Puter.
*
* Puter is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import backend from '@heyputer/backend';
export default backend;
-16
View File
@@ -1,16 +0,0 @@
let V86;
if (typeof window !== 'undefined') {
V86 = window.V86;
} else {
try {
const { createRequire } = await import('module');
const require = createRequire(import.meta.url);
const NodeV86 = require("../third-party/libv86.js");
V86 = NodeV86.V86;
} catch (error) {
console.error('Failed to load V86 in Node.js environment:', error);
}
}
export { V86 };
-44
View File
@@ -1,44 +0,0 @@
#!/usr/bin/env node
"use strict";
import('./js/InstanceManager.mjs').then(module => {
const InstanceManager = module.default;
process.stdin.setRawMode(true);
process.stdin.resume();
process.stdin.setEncoding("utf8");
console.log("Now booting, please stand by ...");
const manager = new InstanceManager({ screen: false, term: false, spawnRoot: undefined });
manager.getInstanceByinstName("Host").then(result => {
const hostvm = result.vm;
hostvm.add_listener("emulator-started", () => {
process.stdout.write("Welcome to psl!");
hostvm.serial0_send("\n");
});
hostvm.add_listener("serial0-output-byte", (byte) => {
var chr = String.fromCharCode(byte);
if (chr <= "~") {
process.stdout.write(chr);
}
});
process.stdin.on("data", (c) => {
if (c === "\u0004") {
hostvm.stop();
process.stdin.pause();
}
else {
hostvm.serial0_send(c);
}
});
}).catch(error => {
console.error(error);
throw Error("Error in getting host inastance, quitting");
});
}).catch(error => {
console.error('Error loading InstanceManager:', error);
});
@@ -1,3 +1,21 @@
/*
* Copyright (C) 2024 Puter Technologies Inc.
*
* This file is part of Puter.
*
* Puter is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
const path = require('path');
class CustomPuterService extends use.Service {
@@ -1,3 +1,21 @@
/*
* Copyright (C) 2024 Puter Technologies Inc.
*
* This file is part of Puter.
*
* Puter is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
// TODO: accessing these imports directly from a mod is not really
// the way mods are intended to work; this is temporary until
// we have these things registered in "useapi".
@@ -1,3 +1,21 @@
/*
* Copyright (C) 2024 Puter Technologies Inc.
*
* This file is part of Puter.
*
* Puter is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
module.exports = [
{
sequence: [
+18
View File
@@ -1,3 +1,21 @@
/*
* Copyright (C) 2024 Puter Technologies Inc.
*
* This file is part of Puter.
*
* Puter is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
const request_examples = [
{
name: 'entity storage app read',
+18
View File
@@ -1,3 +1,21 @@
/*
* Copyright (C) 2024 Puter Technologies Inc.
*
* This file is part of Puter.
*
* Puter is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
module.exports = class BillingModule extends use.Module {
install (context) {
const services = context.get('services');
+569 -23
View File
@@ -1,18 +1,21 @@
{
"name": "puter.com",
"version": "1.0.0",
"version": "2.4.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "puter.com",
"version": "1.0.0",
"version": "2.4.1",
"license": "AGPL-3.0-only",
"workspaces": [
"src/*"
"src/*",
"tools/*",
"experiments/js-parse-and-output"
],
"dependencies": {
"json-colorizer": "^3.0.1",
"simple-git": "^3.25.0",
"string-template": "^1.0.0",
"uuid": "^9.0.1"
},
@@ -25,6 +28,8 @@
"express": "^4.18.2",
"globals": "^15.0.0",
"html-entities": "^2.3.3",
"license-check-and-add": "^4.0.5",
"mocha": "^10.6.0",
"nodemon": "^3.1.0",
"uglify-js": "^3.17.4",
"webpack": "^5.88.2",
@@ -223,6 +228,18 @@
"extraneous": true,
"license": "AGPL-3.0-only"
},
"experiments/js-parse-and-output": {
"version": "1.0.0",
"license": "AGPL-3.0-only",
"dependencies": {
"@babel/generator": "^7.24.7",
"@babel/parser": "^7.24.7",
"acorn": "^8.12.1",
"acorn-static-class-features": "^1.0.0",
"escodegen": "^2.1.0",
"recast": "^0.23.9"
}
},
"node_modules/@aashutoshrathi/word-wrap": {
"version": "1.2.6",
"resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",
@@ -322,7 +339,6 @@
"version": "7.24.7",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz",
"integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/types": "^7.24.7",
@@ -466,7 +482,6 @@
"version": "7.24.7",
"resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz",
"integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=6.9.0"
@@ -476,7 +491,6 @@
"version": "7.24.7",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz",
"integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=6.9.0"
@@ -581,7 +595,6 @@
"version": "7.24.7",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz",
"integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==",
"dev": true,
"license": "MIT",
"bin": {
"parser": "bin/babel-parser.js"
@@ -654,7 +667,6 @@
"version": "7.24.7",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz",
"integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-string-parser": "^7.24.7",
@@ -1667,7 +1679,6 @@
"version": "0.3.5",
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
"integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
"dev": true,
"dependencies": {
"@jridgewell/set-array": "^1.2.1",
"@jridgewell/sourcemap-codec": "^1.4.10",
@@ -1681,7 +1692,6 @@
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
"integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
"dev": true,
"engines": {
"node": ">=6.0.0"
}
@@ -1690,7 +1700,6 @@
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
"integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
"dev": true,
"engines": {
"node": ">=6.0.0"
}
@@ -1708,14 +1717,12 @@
"node_modules/@jridgewell/sourcemap-codec": {
"version": "1.4.15",
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
"integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
"dev": true
"integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
},
"node_modules/@jridgewell/trace-mapping": {
"version": "0.3.25",
"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
"integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
"dev": true,
"dependencies": {
"@jridgewell/resolve-uri": "^3.1.0",
"@jridgewell/sourcemap-codec": "^1.4.14"
@@ -1731,6 +1738,19 @@
"url": "https://opencollective.com/js-sdsl"
}
},
"node_modules/@kwsites/file-exists": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz",
"integrity": "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==",
"dependencies": {
"debug": "^4.1.1"
}
},
"node_modules/@kwsites/promise-deferred": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz",
"integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw=="
},
"node_modules/@mapbox/node-pre-gyp": {
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz",
@@ -4799,9 +4819,9 @@
}
},
"node_modules/acorn": {
"version": "8.11.3",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz",
"integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==",
"version": "8.12.1",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz",
"integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==",
"bin": {
"acorn": "bin/acorn"
},
@@ -4826,6 +4846,31 @@
"acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
}
},
"node_modules/acorn-private-class-elements": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/acorn-private-class-elements/-/acorn-private-class-elements-1.0.0.tgz",
"integrity": "sha512-zYNcZtxKgVCg1brS39BEou86mIao1EV7eeREG+6WMwKbuYTeivRRs6S2XdWnboRde6G9wKh2w+WBydEyJsJ6mg==",
"engines": {
"node": ">=4.8.2"
},
"peerDependencies": {
"acorn": "^6.1.0 || ^7 || ^8"
}
},
"node_modules/acorn-static-class-features": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/acorn-static-class-features/-/acorn-static-class-features-1.0.0.tgz",
"integrity": "sha512-XZJECjbmMOKvMHiNzbiPXuXpLAJfN3dAKtfIYbk1eHiWdsutlek+gS7ND4B8yJ3oqvHo1NxfafnezVmq7NXK0A==",
"dependencies": {
"acorn-private-class-elements": "^1.0.0"
},
"engines": {
"node": ">=4.8.2"
},
"peerDependencies": {
"acorn": "^6.1.0 || ^7 || ^8"
}
},
"node_modules/agent-base": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
@@ -4893,7 +4938,6 @@
"version": "4.1.3",
"resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz",
"integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=6"
@@ -5100,6 +5144,17 @@
"node": "*"
}
},
"node_modules/ast-types": {
"version": "0.16.1",
"resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.16.1.tgz",
"integrity": "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==",
"dependencies": {
"tslib": "^2.0.1"
},
"engines": {
"node": ">=4"
}
},
"node_modules/async": {
"version": "2.6.4",
"resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz",
@@ -5966,6 +6021,10 @@
"node": ">=14"
}
},
"node_modules/comment-parser": {
"resolved": "tools/comment-parser",
"link": true
},
"node_modules/commondir": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
@@ -6128,6 +6187,15 @@
"integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==",
"license": "ISC"
},
"node_modules/console-table-printer": {
"version": "2.12.1",
"resolved": "https://registry.npmjs.org/console-table-printer/-/console-table-printer-2.12.1.tgz",
"integrity": "sha512-wKGOQRRvdnd89pCeH96e2Fn4wkbenSP6LMHfjfyNLMbGuHEFbMqQNuxXqd0oXG9caIOQ1FTvc5Uijp9/4jujnQ==",
"license": "MIT",
"dependencies": {
"simple-wcswidth": "^1.0.1"
}
},
"node_modules/content-disposition": {
"version": "0.5.4",
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
@@ -6562,6 +6630,12 @@
"node": ">=0.3.1"
}
},
"node_modules/diff-match-patch": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.5.tgz",
"integrity": "sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==",
"license": "Apache-2.0"
},
"node_modules/diff3": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/diff3/-/diff3-0.0.3.tgz",
@@ -6757,6 +6831,19 @@
"node": ">=10.13.0"
}
},
"node_modules/enquirer": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz",
"integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==",
"license": "MIT",
"dependencies": {
"ansi-colors": "^4.1.1",
"strip-ansi": "^6.0.1"
},
"engines": {
"node": ">=8.6"
}
},
"node_modules/entities": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
@@ -6838,6 +6925,34 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/escodegen": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz",
"integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==",
"dependencies": {
"esprima": "^4.0.1",
"estraverse": "^5.2.0",
"esutils": "^2.0.2"
},
"bin": {
"escodegen": "bin/escodegen.js",
"esgenerate": "bin/esgenerate.js"
},
"engines": {
"node": ">=6.0"
},
"optionalDependencies": {
"source-map": "~0.6.1"
}
},
"node_modules/escodegen/node_modules/estraverse": {
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
"integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
"engines": {
"node": ">=4.0"
}
},
"node_modules/eslint": {
"version": "9.1.1",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-9.1.1.tgz",
@@ -6981,7 +7096,6 @@
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
"integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
"dev": true,
"license": "BSD-2-Clause",
"bin": {
"esparse": "bin/esparse.js",
@@ -7053,7 +7167,6 @@
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
"integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
@@ -7295,6 +7408,10 @@
"integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
"license": "MIT"
},
"node_modules/file-walker": {
"resolved": "tools/file-walker",
"link": true
},
"node_modules/fill-range": {
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
@@ -7781,6 +7898,15 @@
"integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==",
"license": "MIT"
},
"node_modules/gitignore-to-glob": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/gitignore-to-glob/-/gitignore-to-glob-0.3.0.tgz",
"integrity": "sha512-mk74BdnK7lIwDHnotHddx1wsjMOFIThpLY3cPNniJ/2fA/tlLzHnFxIdR+4sLOu5KGgQJdij4kjJ2RoUNnCNMA==",
"dev": true,
"engines": {
"node": ">=4.4 <5 || >=6.9"
}
},
"node_modules/glob": {
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
@@ -8879,6 +9005,19 @@
"integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==",
"license": "BSD-3-Clause"
},
"node_modules/js-levenshtein": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz",
"integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==",
"license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/js-parse-and-output": {
"resolved": "experiments/js-parse-and-output",
"link": true
},
"node_modules/js-sha256": {
"version": "0.9.0",
"resolved": "https://registry.npmjs.org/js-sha256/-/js-sha256-0.9.0.tgz",
@@ -8908,7 +9047,6 @@
"version": "2.5.2",
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
"integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
"dev": true,
"license": "MIT",
"bin": {
"jsesc": "bin/jsesc"
@@ -9148,6 +9286,223 @@
"node": ">= 0.8.0"
}
},
"node_modules/license-check-and-add": {
"version": "4.0.5",
"resolved": "https://registry.npmjs.org/license-check-and-add/-/license-check-and-add-4.0.5.tgz",
"integrity": "sha512-FySnMi3Kf/vO5jka8tcbVF1FhDFb8PWsQ8pg5Y7U/zkQgta+fIrJGcGHO58WFjfKlgvhneG1uQ00Fpxzhau3QA==",
"dev": true,
"dependencies": {
"fs-extra": "^8.1.0",
"gitignore-to-glob": "^0.3.0",
"globby": "^10.0.1",
"ignore": "^5.1.2",
"yargs": "^13.3.0"
},
"bin": {
"license-check-and-add": "dist/src/cli.js"
}
},
"node_modules/license-check-and-add/node_modules/ansi-regex": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
"integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
"dev": true,
"engines": {
"node": ">=6"
}
},
"node_modules/license-check-and-add/node_modules/ansi-styles": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
"dev": true,
"dependencies": {
"color-convert": "^1.9.0"
},
"engines": {
"node": ">=4"
}
},
"node_modules/license-check-and-add/node_modules/cliui": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
"integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
"dev": true,
"dependencies": {
"string-width": "^3.1.0",
"strip-ansi": "^5.2.0",
"wrap-ansi": "^5.1.0"
}
},
"node_modules/license-check-and-add/node_modules/color-convert": {
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
"dev": true,
"dependencies": {
"color-name": "1.1.3"
}
},
"node_modules/license-check-and-add/node_modules/color-name": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
"integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
"dev": true
},
"node_modules/license-check-and-add/node_modules/emoji-regex": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
"integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
"dev": true
},
"node_modules/license-check-and-add/node_modules/find-up": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
"integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
"dev": true,
"dependencies": {
"locate-path": "^3.0.0"
},
"engines": {
"node": ">=6"
}
},
"node_modules/license-check-and-add/node_modules/is-fullwidth-code-point": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
"integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
"dev": true,
"engines": {
"node": ">=4"
}
},
"node_modules/license-check-and-add/node_modules/locate-path": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
"integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
"dev": true,
"dependencies": {
"p-locate": "^3.0.0",
"path-exists": "^3.0.0"
},
"engines": {
"node": ">=6"
}
},
"node_modules/license-check-and-add/node_modules/p-limit": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
"integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
"dev": true,
"dependencies": {
"p-try": "^2.0.0"
},
"engines": {
"node": ">=6"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/license-check-and-add/node_modules/p-locate": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
"integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
"dev": true,
"dependencies": {
"p-limit": "^2.0.0"
},
"engines": {
"node": ">=6"
}
},
"node_modules/license-check-and-add/node_modules/path-exists": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
"integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
"dev": true,
"engines": {
"node": ">=4"
}
},
"node_modules/license-check-and-add/node_modules/string-width": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
"integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
"dev": true,
"dependencies": {
"emoji-regex": "^7.0.1",
"is-fullwidth-code-point": "^2.0.0",
"strip-ansi": "^5.1.0"
},
"engines": {
"node": ">=6"
}
},
"node_modules/license-check-and-add/node_modules/strip-ansi": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
"integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
"dev": true,
"dependencies": {
"ansi-regex": "^4.1.0"
},
"engines": {
"node": ">=6"
}
},
"node_modules/license-check-and-add/node_modules/wrap-ansi": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
"integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
"dev": true,
"dependencies": {
"ansi-styles": "^3.2.0",
"string-width": "^3.0.0",
"strip-ansi": "^5.0.0"
},
"engines": {
"node": ">=6"
}
},
"node_modules/license-check-and-add/node_modules/y18n": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
"integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
"dev": true
},
"node_modules/license-check-and-add/node_modules/yargs": {
"version": "13.3.2",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
"integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
"dev": true,
"dependencies": {
"cliui": "^5.0.0",
"find-up": "^3.0.0",
"get-caller-file": "^2.0.1",
"require-directory": "^2.1.1",
"require-main-filename": "^2.0.0",
"set-blocking": "^2.0.0",
"string-width": "^3.0.0",
"which-module": "^2.0.0",
"y18n": "^4.0.0",
"yargs-parser": "^13.1.2"
}
},
"node_modules/license-check-and-add/node_modules/yargs-parser": {
"version": "13.1.2",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
"integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
"dev": true,
"dependencies": {
"camelcase": "^5.0.0",
"decamelize": "^1.2.0"
}
},
"node_modules/license-headers": {
"resolved": "tools/license-headers",
"link": true
},
"node_modules/load-bmfont": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.1.tgz",
@@ -11164,6 +11519,21 @@
"node": ">=8.10.0"
}
},
"node_modules/recast": {
"version": "0.23.9",
"resolved": "https://registry.npmjs.org/recast/-/recast-0.23.9.tgz",
"integrity": "sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==",
"dependencies": {
"ast-types": "^0.16.1",
"esprima": "~4.0.0",
"source-map": "~0.6.1",
"tiny-invariant": "^1.3.3",
"tslib": "^2.0.1"
},
"engines": {
"node": ">= 4"
}
},
"node_modules/rechoir": {
"version": "0.8.0",
"resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz",
@@ -11741,6 +12111,36 @@
"simple-concat": "^1.0.0"
}
},
"node_modules/simple-git": {
"version": "3.25.0",
"resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.25.0.tgz",
"integrity": "sha512-KIY5sBnzc4yEcJXW7Tdv4viEz8KyG+nU0hay+DWZasvdFOYKeUZ6Xc25LUHHjw0tinPT7O1eY6pzX7pRT1K8rw==",
"dependencies": {
"@kwsites/file-exists": "^1.1.1",
"@kwsites/promise-deferred": "^1.1.1",
"debug": "^4.3.5"
},
"funding": {
"type": "github",
"url": "https://github.com/steveukx/git-js?sponsor=1"
}
},
"node_modules/simple-git/node_modules/debug": {
"version": "4.3.5",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz",
"integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==",
"dependencies": {
"ms": "2.1.2"
},
"engines": {
"node": ">=6.0"
},
"peerDependenciesMeta": {
"supports-color": {
"optional": true
}
}
},
"node_modules/simple-swizzle": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
@@ -11761,6 +12161,12 @@
"node": ">=10"
}
},
"node_modules/simple-wcswidth": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/simple-wcswidth/-/simple-wcswidth-1.0.1.tgz",
"integrity": "sha512-xMO/8eNREtaROt7tJvWJqHBDTMFN4eiQ5I4JRMuilwfnFcV5W9u7RUkueNkdw0jPqGMX36iCywelS5yilTuOxg==",
"license": "MIT"
},
"node_modules/sinon": {
"version": "15.2.0",
"resolved": "https://registry.npmjs.org/sinon/-/sinon-15.2.0.tgz",
@@ -12400,6 +12806,11 @@
"integrity": "sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==",
"license": "MIT"
},
"node_modules/tiny-invariant": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz",
"integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg=="
},
"node_modules/tinycolor2": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz",
@@ -12410,7 +12821,6 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
"integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=4"
@@ -12622,6 +13032,29 @@
"node": ">=14.17"
}
},
"node_modules/ua-parser-js": {
"version": "1.0.38",
"resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.38.tgz",
"integrity": "sha512-Aq5ppTOfvrCMgAPneW1HfWj66Xi7XL+/mIy996R1/CLS/rcyJQm6QZdsKrUeivDFQ+Oc9Wyuwor8Ze8peEoUoQ==",
"funding": [
{
"type": "opencollective",
"url": "https://opencollective.com/ua-parser-js"
},
{
"type": "paypal",
"url": "https://paypal.me/faisalman"
},
{
"type": "github",
"url": "https://github.com/sponsors/faisalman"
}
],
"license": "MIT",
"engines": {
"node": "*"
}
},
"node_modules/uglify-js": {
"version": "3.17.4",
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz",
@@ -13279,6 +13712,18 @@
"dev": true,
"license": "ISC"
},
"node_modules/yaml": {
"version": "2.4.5",
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.5.tgz",
"integrity": "sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==",
"license": "ISC",
"bin": {
"yaml": "bin.mjs"
},
"engines": {
"node": ">= 14"
}
},
"node_modules/yargs": {
"version": "17.7.2",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
@@ -13652,6 +14097,7 @@
"string-length": "^6.0.0",
"svgo": "^3.0.2",
"tiktoken": "^1.0.11",
"ua-parser-js": "^1.0.38",
"uglify-js": "^3.17.4",
"uuid": "^9.0.0",
"validator": "^13.9.0",
@@ -13762,7 +14208,7 @@
"@rollup/plugin-commonjs": "^24.1.0",
"@rollup/plugin-node-resolve": "^15.0.2",
"@rollup/plugin-replace": "^5.0.2",
"mocha": "^10.2.0",
"mocha": "^10.6.0",
"rollup": "^3.21.4",
"rollup-plugin-copy": "^3.4.0"
},
@@ -13853,6 +14299,106 @@
"src/useapi": {
"version": "1.0.0",
"license": "AGPL-3.0-only"
},
"tools/comment-parser": {
"version": "1.0.0",
"license": "AGPL-3.0-only",
"devDependencies": {
"chai": "^5.1.1"
}
},
"tools/comment-parser/node_modules/assertion-error": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz",
"integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=12"
}
},
"tools/comment-parser/node_modules/chai": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/chai/-/chai-5.1.1.tgz",
"integrity": "sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==",
"dev": true,
"license": "MIT",
"dependencies": {
"assertion-error": "^2.0.1",
"check-error": "^2.1.1",
"deep-eql": "^5.0.1",
"loupe": "^3.1.0",
"pathval": "^2.0.0"
},
"engines": {
"node": ">=12"
}
},
"tools/comment-parser/node_modules/check-error": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz",
"integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">= 16"
}
},
"tools/comment-parser/node_modules/deep-eql": {
"version": "5.0.2",
"resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz",
"integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=6"
}
},
"tools/comment-parser/node_modules/loupe": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.1.tgz",
"integrity": "sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==",
"dev": true,
"license": "MIT",
"dependencies": {
"get-func-name": "^2.0.1"
}
},
"tools/comment-parser/node_modules/pathval": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz",
"integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">= 14.16"
}
},
"tools/file-walker": {
"version": "1.0.0",
"license": "AGPL-3.0-only"
},
"tools/google-license": {
"version": "1.0.0",
"extraneous": true,
"license": "ISC",
"dependencies": {
"commander": "^12.1.0",
"glob": "^11.0.0",
"handlebars": "^4.7.8"
}
},
"tools/license-headers": {
"version": "1.0.0",
"license": "AGPL-3.0-only",
"dependencies": {
"console-table-printer": "^2.12.1",
"dedent": "^1.5.3",
"diff-match-patch": "^1.0.5",
"enquirer": "^2.4.1",
"js-levenshtein": "^1.1.6",
"yaml": "^2.4.5"
}
}
}
}
+9 -4
View File
@@ -1,6 +1,6 @@
{
"name": "puter.com",
"version": "1.0.0",
"version": "2.4.1",
"author": "Puter Technologies Inc.",
"license": "AGPL-3.0-only",
"description": "Desktop environment in the browser!",
@@ -19,20 +19,24 @@
"express": "^4.18.2",
"globals": "^15.0.0",
"html-entities": "^2.3.3",
"license-check-and-add": "^4.0.5",
"mocha": "^10.6.0",
"nodemon": "^3.1.0",
"uglify-js": "^3.17.4",
"webpack": "^5.88.2",
"webpack-cli": "^5.1.1"
},
"scripts": {
"test": "mocha ./src/phoenix/test ./src/phoenix/packages/contextlink/test",
"test": "npx mocha src/phoenix/test src/contextlink/test",
"start=gui": "nodemon --exec \"node dev-server.js\" ",
"start": "node run-selfhosted.js",
"start": "node ./tools/run-selfhosted.js",
"build": "cd src/gui; node ./build.js",
"check-translations": "node tools/check-translations.js"
},
"workspaces": [
"src/*"
"src/*",
"tools/*",
"experiments/js-parse-and-output"
],
"nodemonConfig": {
"ext": "js, json, mjs, jsx, svg, css",
@@ -43,6 +47,7 @@
},
"dependencies": {
"json-colorizer": "^3.0.1",
"simple-git": "^3.25.0",
"string-template": "^1.0.0",
"uuid": "^9.0.1"
}
@@ -2,7 +2,13 @@
This document describes the boot sequence of Puter's backend.
**Constriction**
**Runtime Environment**
- Configuration directory is determined
- Runtime directory is determined
- Mod directory is determined
- Services are instantiated
**Construction**
- Data structures are created
**Initialization**
-1
View File
@@ -18,7 +18,6 @@ const {
SelfHostedModule
} = (await import('@heyputer/backend')).default;
console.log('kerne', Kernel);
const k = new Kernel();
k.add_module(new CoreModule());
k.add_module(new DatabaseModule());
+1
View File
@@ -66,6 +66,7 @@
"string-length": "^6.0.0",
"svgo": "^3.0.2",
"tiktoken": "^1.0.11",
"ua-parser-js": "^1.0.38",
"uglify-js": "^3.17.4",
"uuid": "^9.0.0",
"validator": "^13.9.0",
+18
View File
@@ -1,3 +1,21 @@
/*
* Copyright (C) 2024 Puter Technologies Inc.
*
* This file is part of Puter.
*
* Puter is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
const { AdvancedBase } = require("@heyputer/puter-js-common");
const config = require("./config");
@@ -19,6 +19,7 @@
const { is_valid_path } = require("../../filesystem/validation");
const { is_valid_uuid4 } = require("../../helpers");
const { Context } = require("../../util/context");
const { PathBuilder } = require("../../util/pathutil");
const APIError = require("../APIError");
const _path = require('path');
@@ -73,6 +74,7 @@ module.exports = class FSNodeParam {
});
}
return await fs.node({ path: _path.resolve('/', uidOrPath) });
const resolved_path = PathBuilder.resolve(uidOrPath, { puterfs: true });
return await fs.node({ path: resolved_path });
}
}
+3 -1
View File
@@ -25,6 +25,9 @@ let config = {};
// Static defaults
config.servers = [];
// Will disable the auto-generated temp users. If a user lands on the site, they will be required to sign up or log in.
config.disable_temp_users = false;
config.max_file_size = 100_000_000_000,
config.max_thumb_size = 1_000,
config.max_fsentry_name_length = 767,
@@ -131,7 +134,6 @@ const config_pointer = {};
config_to_export = config_pointer;
}
// We have some methods that can be called on `config`
{
// Add configuration values with precedence over the current config
+18
View File
@@ -1,3 +1,21 @@
/*
* Copyright (C) 2024 Puter Technologies Inc.
*
* This file is part of Puter.
*
* Puter is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
const BaseService = require("../services/BaseService");
class Library extends BaseService {
@@ -1,3 +1,21 @@
/*
* Copyright (C) 2024 Puter Technologies Inc.
*
* This file is part of Puter.
*
* Puter is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
const { Context } = require("../util/context");
module.exports = function SimpleEntity ({ name, methods, fetchers }) {
+14 -4
View File
@@ -58,6 +58,11 @@ class DBKVStore extends Driver {
`SELECT * FROM kv WHERE user_id=? AND (app IS NULL OR app = 'global') AND kkey_hash=? LIMIT 1`,
[ user.id, key_hash ]
);
if ( kv[0] ) kv[0].value = db.case({
mysql: () => kv[0].value,
otherwise: () => JSON.parse(kv[0].value ?? 'null'),
})();
return kv[0]?.value ?? null;
},
@@ -74,10 +79,11 @@ class DBKVStore extends Driver {
}
// Validate the value
value = value === undefined ? null : String(value);
value = value === undefined ? null : value;
if (
value !== null &&
Buffer.byteLength(value, 'utf8') > config.kv_max_value_size
Buffer.byteLength(JSON.stringify(value), 'utf8') >
config.kv_max_value_size
) {
throw new Error(`value is too large. Max size is ${config.kv_max_value_size}.`);
}
@@ -102,7 +108,8 @@ class DBKVStore extends Driver {
sqlite: 'ON CONFLICT(user_id, app, kkey_hash) DO UPDATE SET value = excluded.value',
}),
[
user.id, app?.uid ?? 'global', key_hash, key, value,
user.id, app?.uid ?? 'global', key_hash, key,
JSON.stringify(value),
...db.case({ mysql: [value], otherwise: [] }),
]
);
@@ -164,7 +171,10 @@ class DBKVStore extends Driver {
rows = rows.map(row => ({
key: row.kkey,
value: row.value,
value: db.case({
mysql: () => row.value,
otherwise: () => JSON.parse(row.value ?? 'null')
})(),
}));
as = as || 'entries';
+18
View File
@@ -1,3 +1,21 @@
/*
* Copyright (C) 2024 Puter Technologies Inc.
*
* This file is part of Puter.
*
* Puter is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
const SimpleEntity = require("../definitions/SimpleEntity");
module.exports = SimpleEntity({
+3 -3
View File
@@ -17,7 +17,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
const { AdvancedBase } = require("@heyputer/puter-js-common");
const { AsyncProviderTrait } = require("../../traits/AsyncProviderTrait");
const { AsyncProviderFeature } = require("../../traits/AsyncProviderFeature");
const { HLMkdir, QuickMkdir } = require("../hl_operations/hl_mkdir");
const { Context } = require("../../util/context");
const { HLWrite } = require("../hl_operations/hl_write");
@@ -32,8 +32,8 @@ const { HLRemove } = require("../hl_operations/hl_remove");
class BatchCommand extends AdvancedBase {
static TRAITS = [
new AsyncProviderTrait(),
static FEATURES = [
new AsyncProviderFeature(),
]
static async run (executor, parameters) {
const instance = new this();
@@ -26,8 +26,8 @@ const StringParam = require('../../api/filesystem/StringParam');
const FlagParam = require("../../api/filesystem/FlagParam");
const UserParam = require('../../api/filesystem/UserParam');
const FSNodeContext = require('../FSNodeContext');
const { ContextAwareTrait } = require('../../traits/ContextAwareTrait');
const { OtelTrait } = require('../../traits/OtelTrait');
const { ContextAwareFeature } = require('../../traits/ContextAwareFeature');
const { OtelFeature } = require('../../traits/OtelFeature');
const { HLFilesystemOperation } = require('./definitions');
const { is_valid_path } = require('../validation');
const { HLRemove } = require('./hl_remove');
@@ -249,8 +249,8 @@ class HLMkdir extends HLFilesystemOperation {
parent_directories_created: () => [],
}
static TRAITS = [
new OtelTrait([
static FEATURES = [
new OtelFeature([
'_get_existing_parent',
'_create_parents',
]),
@@ -33,7 +33,7 @@ const { HLFilesystemOperation } = require("./definitions");
const { MkTree } = require("./hl_mkdir");
const { Actor } = require("../../services/auth/Actor");
class WriteCommonTrait {
class WriteCommonFeature {
install_in_instance (instance) {
instance._verify_size = async function () {
if (
@@ -84,8 +84,8 @@ class HLWrite extends HLFilesystemOperation {
- create shortcuts
`
static TRAITS = [
new WriteCommonTrait(),
static FEATURES = [
new WriteCommonFeature(),
]
static PARAMETERS = {
@@ -1,3 +1,21 @@
/*
* Copyright (C) 2024 Puter Technologies Inc.
*
* This file is part of Puter.
*
* Puter is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
const { RootNodeSelector, NodeChildSelector } = require("../node/selectors");
const { LLFilesystemOperation } = require("./definitions");
@@ -26,6 +26,24 @@ const { buffer_to_stream } = require("../../util/streamutil");
const { TYPE_SYMLINK, TYPE_DIRECTORY } = require("../FSNodeContext");
const { LLFilesystemOperation } = require("./definitions");
const dry_checks = [
async function check_ACL_for_read (a) {
if ( a.get('no_acl') ) return;
const context = a.iget('context');
const svc_acl = context.get('services').get('acl');
const { fsNode, actor } = a.values();
if ( ! await svc_acl.check(actor, fsNode, 'read') ) {
throw await svc_acl.get_safe_acl_error(actor, fsNode, 'read');
}
},
async function type_check_for_read (a) {
const fsNode = a.get('fsNode');
if ( await fsNode.get('type') === TYPE_DIRECTORY ) {
throw APIError.create('cannot_read_a_directory');
}
},
];
class LLRead extends LLFilesystemOperation {
static METHODS = {
_run: new Sequence({
@@ -39,12 +57,7 @@ class LLRead extends LLFilesystemOperation {
throw APIError.create('subject_does_not_exist');
}
},
async function type_check_for_read (a) {
const fsNode = a.get('fsNode');
if ( await fsNode.get('type') === TYPE_DIRECTORY ) {
throw APIError.create('cannot_read_a_directory');
}
},
...dry_checks,
async function resolve_symlink (a) {
let fsNode = a.get('fsNode');
let type = await fsNode.get('type');
@@ -54,15 +67,7 @@ class LLRead extends LLFilesystemOperation {
}
a.set('fsNode', fsNode);
},
async function check_ACL_for_read (a) {
if ( a.get('no_acl') ) return;
const context = a.iget('context');
const svc_acl = context.get('services').get('acl');
const { fsNode, actor } = a.values();
if ( ! await svc_acl.check(actor, fsNode, 'read') ) {
throw await svc_acl.get_safe_acl_error(actor, fsNode, 'read');
}
},
...dry_checks,
async function calculate_has_range (a) {
const { offset, length } = a.values();
const fsNode = a.get('fsNode');
@@ -1,3 +1,21 @@
/*
* Copyright (C) 2024 Puter Technologies Inc.
*
* This file is part of Puter.
*
* Puter is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
const { Context } = require("../../util/context");
const { TYPE_DIRECTORY } = require("../FSNodeContext");
const { LLFilesystemOperation } = require("./definitions");
@@ -21,7 +21,7 @@ const { id2path } = require("../../helpers");
const { PuterPath } = require("../lib/PuterPath");
const { NodeUIDSelector } = require("../node/selectors");
const { OtelTrait } = require("../../traits/OtelTrait");
const { OtelFeature } = require("../../traits/OtelFeature");
const { Context } = require("../../util/context");
const { DB_WRITE } = require("../../services/database/consts");
@@ -195,8 +195,8 @@ class DatabaseFSEntryService extends AdvancedBase {
static STATUS_READY = {};
static STATUS_RUNNING_JOB = {};
static TRAITS = [
new OtelTrait([
static FEATURES = [
new OtelFeature([
'insert',
'update',
'delete',
+18 -3
View File
@@ -1,3 +1,21 @@
/*
* Copyright (C) 2024 Puter Technologies Inc.
*
* This file is part of Puter.
*
* Puter is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
const config = require('../config');
const { TeePromise } = require('../util/promise');
@@ -38,9 +56,6 @@ const surrounding_box = (col, lines, lengths) => {
const c = str => `\x1b[${col}m${str}\x1b[0m`;
const bar = c(Array(max_length + 4).fill('━').join(''));
for ( let i = 0 ; i < lines.length ; i++ ) {
require('fs').appendFileSync('/tmp/asdfqwer',
'' + lines[i] +':'+ lines[i].length +':'+ lengths[i]+
':'+max_length+'\n');
if ( lengths[i] < max_length ) {
lines[i] += Array(max_length - lengths[i])
.fill(' ')
+18
View File
@@ -1,3 +1,21 @@
/*
* Copyright (C) 2024 Puter Technologies Inc.
*
* This file is part of Puter.
*
* Puter is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
module.exports = [
{
sz:40,
+9 -4
View File
@@ -31,6 +31,7 @@ const { BaseDatabaseAccessService } = require('./services/database/BaseDatabaseA
const { LLRmNode } = require('./filesystem/ll_operations/ll_rmnode');
const { Context } = require('./util/context');
const { NodeUIDSelector } = require('./filesystem/node/selectors');
const { PathBuilder } = require('./util/pathutil');
let systemfs = null;
let services = null;
@@ -1155,8 +1156,12 @@ async function jwt_auth(req){
async function mkdir(options){
const fs = systemfs;
const dirpath = _path.dirname(_path.resolve('/', options.path));
let target_name = _path.basename(_path.resolve('/', options.path));
debugger;
const resolved_path = PathBuilder.resolve(options.path, { puterfs: true });
const dirpath = _path.dirname(resolved_path);
let target_name = _path.basename(resolved_path);
const overwrite = options.overwrite ?? false;
const dedupe_name = options.dedupe_name ?? false;
const immutable = options.immutable ?? false;
@@ -1182,7 +1187,7 @@ async function mkdir(options){
// dirpath not found
if(parent === false && !create_missing_parents)
throw "Target path not found";
throw new Error("Target path not found");
// create missing parent directories
else if(parent === false && create_missing_parents){
const dirs = _path.resolve('/', dirpath).split('/');
@@ -1206,7 +1211,7 @@ async function mkdir(options){
// try setting parent again
parent = await convert_path_to_fsentry(dirpath);
if(parent === false)
throw "Target path not found";
throw new Error("Target path not found");
}
// check permission
+18
View File
@@ -1,3 +1,21 @@
/*
* Copyright (C) 2024 Puter Technologies Inc.
*
* This file is part of Puter.
*
* Puter is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
class ArrayUtil extends use.Library {
/**
*
@@ -1,3 +1,21 @@
/*
* Copyright (C) 2024 Puter Technologies Inc.
*
* This file is part of Puter.
*
* Puter is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
const { whatis } = require("../util/langutil");
class LibTypeTagged extends use.Library {
@@ -1,3 +1,21 @@
/*
* Copyright (C) 2024 Puter Technologies Inc.
*
* This file is part of Puter.
*
* Puter is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
const APIError = require('../api/APIError');
const config = require("../config");
const { LegacyTokenError } = require("../services/auth/AuthService");
+18
View File
@@ -1,3 +1,21 @@
/*
* Copyright (C) 2024 Puter Technologies Inc.
*
* This file is part of Puter.
*
* Puter is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
/**
* This middleware checks the subdomain, and if the subdomain doesn't
* match it calls `next('route')` to skip the current route.
+3 -3
View File
@@ -17,13 +17,13 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
const { AdvancedBase } = require("@heyputer/puter-js-common");
const { WeakConstructorTrait } = require("../traits/WeakConstructorTrait");
const { WeakConstructorFeature } = require("../traits/WeakConstructorFeature");
const { Eq, And } = require("./query/query");
const { Entity } = require("./entitystorage/Entity");
class IdentifierUtil extends AdvancedBase {
static TRAITS = [
new WeakConstructorTrait(),
static FEATURES = [
new WeakConstructorFeature(),
]
async detect_identifier (object) {
+3 -3
View File
@@ -18,7 +18,7 @@
*/
const { AdvancedBase } = require("@heyputer/puter-js-common");
const { instance_ } = require("../../monitor/PerformanceMonitor");
const { WeakConstructorTrait } = require("../../traits/WeakConstructorTrait");
const { WeakConstructorFeature } = require("../../traits/WeakConstructorFeature");
const { Property } = require("./Property");
const { Entity } = require("../entitystorage/Entity");
const FSNodeContext = require("../../filesystem/FSNodeContext");
@@ -29,13 +29,13 @@ const FSNodeContext = require("../../filesystem/FSNodeContext");
* Both wrapping and registering are done by RegistrantService.
*/
class Mapping extends AdvancedBase {
static TRAITS = [
static FEATURES = [
// Whenever you can override something, it's reasonable to want
// to pull the desired implementation from somewhere else to
// avoid repeating yourself. Class constructors are one of a few
// examples where this is typically not possible.
// However, javascript is magic, and we do what we want.
new WeakConstructorTrait(),
new WeakConstructorFeature(),
]
static create (context, data) {
+3 -3
View File
@@ -17,11 +17,11 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
const { AdvancedBase } = require("@heyputer/puter-js-common");
const { WeakConstructorTrait } = require("../../traits/WeakConstructorTrait");
const { WeakConstructorFeature } = require("../../traits/WeakConstructorFeature");
class PropType extends AdvancedBase {
static TRAITS = [
new WeakConstructorTrait(),
static FEATURES = [
new WeakConstructorFeature(),
]
static create (context, data, k) {
+3 -3
View File
@@ -17,11 +17,11 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
const { AdvancedBase } = require("@heyputer/puter-js-common");
const { WeakConstructorTrait } = require("../../traits/WeakConstructorTrait");
const { WeakConstructorFeature } = require("../../traits/WeakConstructorFeature");
class Property extends AdvancedBase {
static TRAITS = [
new WeakConstructorTrait(),
static FEATURES = [
new WeakConstructorFeature(),
]
static create (context, name, descriptor) {
+3 -3
View File
@@ -17,15 +17,15 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
const { AdvancedBase } = require("@heyputer/puter-js-common");
const { WeakConstructorTrait } = require("../../traits/WeakConstructorTrait");
const { WeakConstructorFeature } = require("../../traits/WeakConstructorFeature");
const { Context } = require("../../util/context");
/**
* BaseES is a base class for Entity Store classes.
*/
class BaseES extends AdvancedBase {
static TRAITS = [
new WeakConstructorTrait(),
static FEATURES = [
new WeakConstructorFeature(),
]
// Default implementations
+3 -3
View File
@@ -17,11 +17,11 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
const { AdvancedBase } = require("@heyputer/puter-js-common");
const { WeakConstructorTrait } = require("../../traits/WeakConstructorTrait");
const { WeakConstructorFeature } = require("../../traits/WeakConstructorFeature");
class Entity extends AdvancedBase {
static TRAITS = [
new WeakConstructorTrait(),
static FEATURES = [
new WeakConstructorFeature(),
]
constructor (args) {
@@ -1,3 +1,21 @@
/*
* Copyright (C) 2024 Puter Technologies Inc.
*
* This file is part of Puter.
*
* Puter is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
const { AppUnderUserActorType, UserActorType } = require("../../services/auth/Actor");
const context = require("../../util/context");
const { Context } = require("../../util/context");
@@ -1,3 +1,21 @@
/*
* Copyright (C) 2024 Puter Technologies Inc.
*
* This file is part of Puter.
*
* Puter is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
const { AppUnderUserActorType, UserActorType } = require("../../services/auth/Actor");
const { Context } = require("../../util/context");
const { BaseES } = require("./BaseES");
@@ -1,3 +1,21 @@
/*
* Copyright (C) 2024 Puter Technologies Inc.
*
* This file is part of Puter.
*
* Puter is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
const APIError = require("../../api/APIError");
const { BaseES } = require("./BaseES");
+3 -3
View File
@@ -21,14 +21,14 @@ const { BaseES } = require("./BaseES");
const APIError = require("../../api/APIError");
const { Entity } = require("./Entity");
const { WeakConstructorTrait } = require("../../traits/WeakConstructorTrait");
const { WeakConstructorFeature } = require("../../traits/WeakConstructorFeature");
const { And, Or, Eq, Like, Null, Predicate, PredicateUtil, IsNotNull } = require("../query/query");
const { DB_WRITE } = require("../../services/database/consts");
class RawCondition extends AdvancedBase {
// properties: sql:string, values:any[]
static TRAITS = [
new WeakConstructorTrait(),
static FEATURES = [
new WeakConstructorFeature(),
]
}
@@ -41,7 +41,10 @@ class ValidationES extends BaseES {
console.log('OLD ENT', extra.old_entity);
for ( const prop of Object.values(this.om.properties) ) {
if ( prop.descriptor.protected ) {
if (
prop.descriptor.protected ||
prop.descriptor.read_only
) {
await entity.del(prop.name);
}
}
+1 -1
View File
@@ -142,7 +142,7 @@ module.exports = {
// SYSTEM
godmode: {
type: 'flag',
protected: true,
read_only: true,
},
}
}
@@ -1,3 +1,21 @@
/*
* Copyright (C) 2024 Puter Technologies Inc.
*
* This file is part of Puter.
*
* Puter is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
module.exports = {
sql: {
table_name: 'notification'
+3 -3
View File
@@ -17,11 +17,11 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
const { AdvancedBase } = require("@heyputer/puter-js-common");
const { WeakConstructorTrait } = require("../../traits/WeakConstructorTrait");
const { WeakConstructorFeature } = require("../../traits/WeakConstructorFeature");
class Predicate extends AdvancedBase {
static TRAITS = [
new WeakConstructorTrait(),
static FEATURES = [
new WeakConstructorFeature(),
]
}
@@ -1,3 +1,21 @@
/*
* Copyright (C) 2024 Puter Technologies Inc.
*
* This file is part of Puter.
*
* Puter is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
const APIError = require("../../api/APIError");
const eggspress = require("../../api/eggspress");
const { get_user } = require("../../helpers");
@@ -1,3 +1,21 @@
/*
* Copyright (C) 2024 Puter Technologies Inc.
*
* This file is part of Puter.
*
* Puter is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
const eggspress = require("../../api/eggspress");
const { deleteUser, invalidate_cached_user } = require("../../helpers");
@@ -1,3 +1,21 @@
/*
* Copyright (C) 2024 Puter Technologies Inc.
*
* This file is part of Puter.
*
* Puter is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
const APIError = require("../../api/APIError");
const eggspress = require("../../api/eggspress");
const { UserActorType } = require("../../services/auth/Actor");
@@ -1,3 +1,21 @@
/*
* Copyright (C) 2024 Puter Technologies Inc.
*
* This file is part of Puter.
*
* Puter is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
const APIError = require("../../api/APIError");
const eggspress = require("../../api/eggspress");
const { UserActorType } = require("../../services/auth/Actor");
@@ -1,3 +1,21 @@
/*
* Copyright (C) 2024 Puter Technologies Inc.
*
* This file is part of Puter.
*
* Puter is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
const eggspress = require("../../api/eggspress");
const { UserActorType } = require("../../services/auth/Actor");
const { Context } = require("../../util/context");
@@ -1,3 +1,21 @@
/*
* Copyright (C) 2024 Puter Technologies Inc.
*
* This file is part of Puter.
*
* Puter is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
const APIError = require("../../api/APIError");
const eggspress = require("../../api/eggspress");
const { UserActorType } = require("../../services/auth/Actor");
@@ -1,3 +1,21 @@
/*
* Copyright (C) 2024 Puter Technologies Inc.
*
* This file is part of Puter.
*
* Puter is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
const APIError = require("../../api/APIError");
const eggspress = require("../../api/eggspress");
const { UserActorType } = require("../../services/auth/Actor");
@@ -1,3 +1,21 @@
/*
* Copyright (C) 2024 Puter Technologies Inc.
*
* This file is part of Puter.
*
* Puter is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
const APIError = require("../../api/APIError");
const eggspress = require("../../api/eggspress");
const { UserActorType } = require("../../services/auth/Actor");
+18
View File
@@ -1,3 +1,21 @@
/*
* Copyright (C) 2024 Puter Technologies Inc.
*
* This file is part of Puter.
*
* Puter is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
"use strict"
const express = require('express');
const router = express.Router();
@@ -81,16 +81,6 @@ module.exports = eggspress('/readdir', {
const no_thumbs = req.values.no_thumbs;
const no_assocs = req.values.no_assocs;
{
const fs = require('fs');
fs.appendFileSync('/tmp/readdir.log',
JSON.stringify({
recursive,
no_thumbs,
no_assocs,
}, null, 2) + '\n');
}
const hl_readdir = new HLReadDir();
const result = await hl_readdir.run({
subject,
+3 -1
View File
@@ -100,10 +100,12 @@ module.exports = eggspress(['/signup'], {
}
// temporary user
if(req.body.is_temp){
if(req.body.is_temp && !config.disable_temp_users){
req.body.username = await generate_random_username();
req.body.email = req.body.username + '@gmail.com';
req.body.password = 'sadasdfasdfsadfsa';
}else if(config.disable_temp_users){
return res.status(400).send('Temp users are disabled.');
}
// send_confirmation_code
@@ -1,3 +1,21 @@
/*
* Copyright (C) 2024 Puter Technologies Inc.
*
* This file is part of Puter.
*
* Puter is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
const APIError = require("../../api/APIError");
const { DB_WRITE } = require("../../services/database/consts");
const jwt = require('jsonwebtoken');
@@ -1,3 +1,21 @@
/*
* Copyright (C) 2024 Puter Technologies Inc.
*
* This file is part of Puter.
*
* Puter is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
// TODO: DRY: This is the same function used by UIWindowChangePassword!
const { invalidate_cached_user } = require("../../helpers");
@@ -1,3 +1,21 @@
/*
* Copyright (C) 2024 Puter Technologies Inc.
*
* This file is part of Puter.
*
* Puter is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
const { DB_WRITE } = require("../../services/database/consts");
module.exports = {
@@ -1,3 +1,21 @@
/*
* Copyright (C) 2024 Puter Technologies Inc.
*
* This file is part of Puter.
*
* Puter is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
const BaseService = require("./BaseService");
const DENY_SERVICE_INSTRUCTION = Symbol('DENY_SERVICE_INSTRUCTION');
Loaded 100 of 496 files, more files were not shown because too many files have changed in this diff. Show more