odac 0.9.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (208) hide show
  1. package/.github/workflows/auto-pr-description.yml +0 -2
  2. package/.github/workflows/codeql.yml +46 -0
  3. package/.github/workflows/release.yml +13 -6
  4. package/.github/workflows/test-coverage.yml +10 -9
  5. package/.releaserc.js +9 -6
  6. package/CHANGELOG.md +62 -150
  7. package/CODE_OF_CONDUCT.md +1 -1
  8. package/CONTRIBUTING.md +8 -8
  9. package/LICENSE +21 -661
  10. package/README.md +12 -12
  11. package/SECURITY.md +4 -4
  12. package/bin/odac.js +101 -0
  13. package/{framework/web/candy.js → client/odac.js} +310 -44
  14. package/docs/backend/01-overview/{01-whats-in-the-candy-box.md → 01-whats-in-the-odac-box.md} +4 -2
  15. package/docs/backend/01-overview/02-super-handy-helper-functions.md +29 -1
  16. package/docs/backend/01-overview/03-development-server.md +11 -11
  17. package/docs/backend/02-structure/01-typical-project-layout.md +4 -4
  18. package/docs/backend/03-config/00-configuration-overview.md +6 -6
  19. package/docs/backend/03-config/01-database-connection.md +1 -1
  20. package/docs/backend/03-config/02-static-route-mapping-optional.md +4 -4
  21. package/docs/backend/03-config/04-environment-variables.md +20 -20
  22. package/docs/backend/03-config/05-early-hints.md +4 -4
  23. package/docs/backend/04-routing/01-basic-page-routes.md +4 -4
  24. package/docs/backend/04-routing/02-controller-less-view-routes.md +5 -5
  25. package/docs/backend/04-routing/03-api-and-data-routes.md +3 -3
  26. package/docs/backend/04-routing/04-authentication-aware-routes.md +5 -5
  27. package/docs/backend/04-routing/05-advanced-routing.md +3 -3
  28. package/docs/backend/04-routing/06-error-pages.md +17 -17
  29. package/docs/backend/04-routing/07-cron-jobs.md +13 -13
  30. package/docs/backend/04-routing/08-middleware.md +214 -0
  31. package/docs/backend/04-routing/09-websocket-auth-middleware.md +292 -0
  32. package/docs/backend/04-routing/09-websocket-examples.md +381 -0
  33. package/docs/backend/04-routing/09-websocket-quick-reference.md +211 -0
  34. package/docs/backend/04-routing/09-websocket.md +298 -0
  35. package/docs/backend/05-controllers/01-how-to-build-a-controller.md +3 -3
  36. package/docs/backend/05-controllers/02-your-trusty-odac-assistant.md +41 -0
  37. package/docs/backend/05-controllers/03-controller-classes.md +19 -19
  38. package/docs/backend/05-forms/01-custom-forms.md +114 -114
  39. package/docs/backend/05-forms/02-automatic-database-insert.md +82 -82
  40. package/docs/backend/06-request-and-response/01-the-request-object-what-is-the-user-asking-for.md +26 -26
  41. package/docs/backend/06-request-and-response/02-sending-a-response-replying-to-the-user.md +10 -10
  42. package/docs/backend/07-views/01-the-view-directory.md +1 -1
  43. package/docs/backend/07-views/02-rendering-a-view.md +22 -22
  44. package/docs/backend/07-views/03-template-syntax.md +52 -52
  45. package/docs/backend/07-views/03-variables.md +84 -84
  46. package/docs/backend/07-views/04-request-data.md +57 -57
  47. package/docs/backend/07-views/05-conditionals.md +78 -78
  48. package/docs/backend/07-views/06-loops.md +114 -114
  49. package/docs/backend/07-views/07-translations.md +66 -66
  50. package/docs/backend/07-views/08-backend-javascript.md +103 -103
  51. package/docs/backend/07-views/09-comments.md +71 -71
  52. package/docs/backend/08-database/01-database-connection.md +8 -8
  53. package/docs/backend/08-database/02-using-mysql.md +49 -49
  54. package/docs/backend/09-validation/01-the-validator-service.md +38 -38
  55. package/docs/backend/10-authentication/01-user-logins-with-authjs.md +15 -15
  56. package/docs/backend/10-authentication/02-foiling-villains-with-csrf-protection.md +10 -10
  57. package/docs/backend/10-authentication/03-register.md +12 -12
  58. package/docs/backend/10-authentication/{04-candy-register-forms.md → 04-odac-register-forms.md} +141 -141
  59. package/docs/backend/10-authentication/05-session-management.md +10 -10
  60. package/docs/backend/10-authentication/{06-candy-login-forms.md → 06-odac-login-forms.md} +125 -125
  61. package/docs/backend/11-mail/01-the-mail-service.md +5 -5
  62. package/docs/backend/12-streaming/01-streaming-overview.md +96 -54
  63. package/docs/backend/13-utilities/{01-candy-var.md → 01-odac-var.md} +109 -109
  64. package/docs/frontend/01-overview/01-introduction.md +30 -30
  65. package/docs/frontend/02-ajax-navigation/01-quick-start.md +45 -45
  66. package/docs/frontend/02-ajax-navigation/02-configuration.md +14 -14
  67. package/docs/frontend/02-ajax-navigation/03-advanced-usage.md +36 -36
  68. package/docs/frontend/03-forms/01-form-handling.md +32 -32
  69. package/docs/frontend/04-api-requests/01-get-post.md +33 -33
  70. package/docs/frontend/05-streaming/01-client-streaming.md +15 -15
  71. package/docs/frontend/06-websocket/00-overview.md +76 -0
  72. package/docs/frontend/06-websocket/01-websocket-client.md +139 -0
  73. package/docs/frontend/06-websocket/02-shared-websocket.md +149 -0
  74. package/docs/index.json +49 -11
  75. package/eslint.config.mjs +6 -6
  76. package/{framework/index.js → index.js} +1 -1
  77. package/package.json +14 -39
  78. package/{framework/src → src}/Auth.js +59 -59
  79. package/{framework/src → src}/Config.js +3 -3
  80. package/{framework/src → src}/Lang.js +7 -7
  81. package/{framework/src → src}/Mail.js +5 -5
  82. package/{framework/src → src}/Mysql.js +42 -42
  83. package/src/Odac.js +112 -0
  84. package/{framework/src → src}/Request.js +38 -36
  85. package/{framework/src → src}/Route/Internal.js +116 -116
  86. package/src/Route/Middleware.js +75 -0
  87. package/src/Route.js +621 -0
  88. package/src/Server.js +22 -0
  89. package/{framework/src → src}/Stream.js +11 -3
  90. package/{framework/src → src}/Validator.js +21 -21
  91. package/{framework/src → src}/Var.js +5 -5
  92. package/{framework/src → src}/View/EarlyHints.js +1 -1
  93. package/{framework/src → src}/View/Form.js +69 -69
  94. package/{framework/src → src}/View.js +78 -81
  95. package/src/WebSocket.js +403 -0
  96. package/template/config.json +5 -0
  97. package/{web → template}/controller/page/about.js +6 -6
  98. package/{web → template}/controller/page/index.js +9 -9
  99. package/{web → template}/package.json +4 -5
  100. package/{web → template}/public/assets/css/style.css +4 -4
  101. package/{web → template}/public/assets/js/app.js +6 -6
  102. package/{web → template}/route/www.js +6 -6
  103. package/{web → template}/skeleton/main.html +1 -1
  104. package/{web → template}/view/content/about.html +5 -5
  105. package/{web → template}/view/content/home.html +12 -12
  106. package/template/view/footer/main.html +11 -0
  107. package/{web → template}/view/head/main.html +1 -1
  108. package/{web → template}/view/header/main.html +2 -2
  109. package/test/core/Candy.test.js +58 -58
  110. package/test/core/Commands.test.js +7 -7
  111. package/test/core/Config.test.js +82 -85
  112. package/test/core/Lang.test.js +2 -2
  113. package/test/core/Process.test.js +6 -6
  114. package/test/framework/Route.test.js +56 -37
  115. package/test/framework/View/EarlyHints.test.js +2 -2
  116. package/test/framework/WebSocket.test.js +100 -0
  117. package/test/framework/middleware.test.js +85 -0
  118. package/test/server/Api.test.js +31 -31
  119. package/test/server/DNS.test.js +11 -11
  120. package/test/server/Hub.test.js +497 -0
  121. package/test/server/Mail.account.test_.js +3 -3
  122. package/test/server/Mail.init.test_.js +10 -10
  123. package/test/server/Mail.test_.js +20 -20
  124. package/test/server/SSL.test_.js +54 -54
  125. package/test/server/Server.test.js +39 -39
  126. package/test/server/Service.test_.js +7 -7
  127. package/test/server/Subdomain.test.js +7 -7
  128. package/test/server/Web/Firewall.test.js +87 -87
  129. package/test/server/Web/Proxy.test.js +397 -0
  130. package/test/server/{Web.test_.js → Web.test.js} +137 -205
  131. package/test/server/__mocks__/fs.js +2 -2
  132. package/test/server/__mocks__/{globalCandy.js → globalOdac.js} +5 -5
  133. package/test/server/__mocks__/index.js +6 -6
  134. package/test/server/__mocks__/testFactories.js +1 -1
  135. package/test/server/__mocks__/testHelpers.js +7 -7
  136. package/.husky/pre-commit +0 -2
  137. package/.kiro/steering/code-style.md +0 -56
  138. package/.kiro/steering/product.md +0 -20
  139. package/.kiro/steering/structure.md +0 -77
  140. package/.kiro/steering/tech.md +0 -87
  141. package/AGENTS.md +0 -84
  142. package/bin/candy +0 -10
  143. package/bin/candypack +0 -10
  144. package/cli/index.js +0 -3
  145. package/cli/src/Cli.js +0 -348
  146. package/cli/src/Connector.js +0 -93
  147. package/cli/src/Monitor.js +0 -416
  148. package/core/Candy.js +0 -87
  149. package/core/Commands.js +0 -239
  150. package/core/Config.js +0 -1094
  151. package/core/Lang.js +0 -52
  152. package/core/Log.js +0 -43
  153. package/core/Process.js +0 -26
  154. package/docs/backend/05-controllers/02-your-trusty-candy-assistant.md +0 -20
  155. package/docs/server/01-installation/01-quick-install.md +0 -19
  156. package/docs/server/01-installation/02-manual-installation-via-npm.md +0 -9
  157. package/docs/server/02-get-started/01-core-concepts.md +0 -7
  158. package/docs/server/02-get-started/02-basic-commands.md +0 -57
  159. package/docs/server/02-get-started/03-cli-reference.md +0 -276
  160. package/docs/server/02-get-started/04-cli-quick-reference.md +0 -102
  161. package/docs/server/03-service/01-start-a-new-service.md +0 -57
  162. package/docs/server/03-service/02-delete-a-service.md +0 -48
  163. package/docs/server/04-web/01-create-a-website.md +0 -36
  164. package/docs/server/04-web/02-list-websites.md +0 -9
  165. package/docs/server/04-web/03-delete-a-website.md +0 -29
  166. package/docs/server/05-subdomain/01-create-a-subdomain.md +0 -32
  167. package/docs/server/05-subdomain/02-list-subdomains.md +0 -33
  168. package/docs/server/05-subdomain/03-delete-a-subdomain.md +0 -41
  169. package/docs/server/06-ssl/01-renew-an-ssl-certificate.md +0 -34
  170. package/docs/server/07-mail/01-create-a-mail-account.md +0 -23
  171. package/docs/server/07-mail/02-delete-a-mail-account.md +0 -20
  172. package/docs/server/07-mail/03-list-mail-accounts.md +0 -20
  173. package/docs/server/07-mail/04-change-account-password.md +0 -23
  174. package/framework/src/Candy.js +0 -81
  175. package/framework/src/Route.js +0 -455
  176. package/framework/src/Server.js +0 -15
  177. package/locale/de-DE.json +0 -80
  178. package/locale/en-US.json +0 -79
  179. package/locale/es-ES.json +0 -80
  180. package/locale/fr-FR.json +0 -80
  181. package/locale/pt-BR.json +0 -80
  182. package/locale/ru-RU.json +0 -80
  183. package/locale/tr-TR.json +0 -85
  184. package/locale/zh-CN.json +0 -80
  185. package/server/index.js +0 -5
  186. package/server/src/Api.js +0 -88
  187. package/server/src/DNS.js +0 -940
  188. package/server/src/Hub.js +0 -535
  189. package/server/src/Mail.js +0 -571
  190. package/server/src/SSL.js +0 -180
  191. package/server/src/Server.js +0 -27
  192. package/server/src/Service.js +0 -248
  193. package/server/src/Subdomain.js +0 -64
  194. package/server/src/Web/Firewall.js +0 -170
  195. package/server/src/Web/Proxy.js +0 -134
  196. package/server/src/Web.js +0 -451
  197. package/server/src/mail/imap.js +0 -1091
  198. package/server/src/mail/server.js +0 -32
  199. package/server/src/mail/smtp.js +0 -786
  200. package/test/server/Client.test.js +0 -338
  201. package/test/server/__mocks__/http-proxy.js +0 -105
  202. package/watchdog/index.js +0 -3
  203. package/watchdog/src/Watchdog.js +0 -156
  204. package/web/config.json +0 -5
  205. package/web/view/footer/main.html +0 -11
  206. /package/{framework/src → src}/Env.js +0 -0
  207. /package/{framework/src → src}/Route/Cron.js +0 -0
  208. /package/{framework/src → src}/Token.js +0 -0
@@ -1,48 +0,0 @@
1
- ## 🗑️ Delete a Service
2
-
3
- This command removes a running service from CandyPack's monitoring and stops its execution.
4
-
5
- ### Interactive Usage
6
- ```bash
7
- candy service delete
8
- ```
9
- You will be prompted to enter the service ID or name that you want to delete.
10
-
11
- ### Single-Line Usage with Prefixes
12
- ```bash
13
- # Specify service ID or name directly
14
- candy service delete -i my-service
15
- candy service delete -i /path/to/app/index.js
16
-
17
- # Or use long form prefix
18
- candy service delete --id my-service
19
- ```
20
-
21
- ### Available Prefixes
22
- - `-i`, `--id`: Service ID or name to delete
23
-
24
- ### Finding Service Information
25
- To find the service ID or name, use:
26
- ```bash
27
- candy monit # Interactive monitoring view
28
- candy # Quick status with service count
29
- ```
30
-
31
- ### Interactive Example
32
- ```bash
33
- $ candy service delete
34
- > Enter the Service ID or Name: my-api-service
35
- ✓ Service 'my-api-service' deleted successfully
36
- ```
37
-
38
- ### Single-Line Example
39
- ```bash
40
- $ candy service delete -i my-api-service
41
- ✓ Service 'my-api-service' deleted successfully
42
- ```
43
-
44
- ### Important Notes
45
- - Deleting a service stops its execution immediately
46
- - The service will no longer be monitored or automatically restarted
47
- - This does not delete the source code files, only removes the service from CandyPack
48
- - You can restart the same service later using `candy run <file>`
@@ -1,36 +0,0 @@
1
- ## 🌐 Create a Website
2
- This command helps you set up a new website on your server. CandyPack will ask for the domain name and the path to the website's files.
3
-
4
- ### Interactive Usage
5
- ```bash
6
- candy web create
7
- ```
8
- After running the command, you will be prompted to enter the following information:
9
- - **Domain Name:** The primary domain for your website (e.g., `example.com`).
10
- - **Path:** The absolute path to your website's root directory (e.g., `/var/www/example.com`). If you leave this blank, CandyPack will suggest a default path based on the domain name.
11
-
12
- ### Single-Line Usage with Prefixes
13
- ```bash
14
- # Specify domain directly
15
- candy web create -d example.com
16
-
17
- # Or use long form prefix
18
- candy web create --domain example.com
19
- ```
20
-
21
- ### Available Prefixes
22
- - `-d`, `--domain`: Domain name for the new website
23
-
24
- ### Interactive Example
25
- ```bash
26
- $ candy web create
27
- > Enter the domain name: example.com
28
- > Enter the path to the website (/home/user/example.com/):
29
- ```
30
-
31
- ### Single-Line Example
32
- ```bash
33
- $ candy web create -d example.com
34
- ✓ Website created successfully for example.com
35
- ```
36
-
@@ -1,9 +0,0 @@
1
- ## 📋 List Websites
2
- To see a list of all websites currently configured on your server, use the `list` command.
3
-
4
- ### Usage
5
- ```bash
6
- candy web list
7
- ```
8
-
9
- This command will output a table of your websites, showing their status and other relevant details. You can also monitor your websites in real-time with the `candy monit` command.
@@ -1,29 +0,0 @@
1
- ## 🗑️ Delete a Website
2
-
3
- You can delete a website using the `web delete` command. This command will prompt you for the domain name of the website you want to delete.
4
-
5
- ### Interactive Usage
6
- ```bash
7
- candy web delete
8
- ```
9
-
10
- The command will then ask for the domain name:
11
- ```
12
- Enter the domain name: my-website.com
13
- ```
14
-
15
- ### Single-Line Usage with Prefixes
16
- ```bash
17
- # Specify domain directly
18
- candy web delete -d my-website.com
19
-
20
- # Or use long form prefix
21
- candy web delete --domain my-website.com
22
- ```
23
-
24
- ### Available Prefixes
25
- - `-d`, `--domain`: Domain name of the website to delete
26
-
27
- ### Important Note
28
-
29
- This command only removes the server configuration for the website. It **does not** delete the website's source code directory. If you want to remove the source code as well, you must delete the directory manually.
@@ -1,32 +0,0 @@
1
- ## 🔗 Create a Subdomain
2
- This command allows you to create a new subdomain. CandyPack will automatically configure it to point to a directory with the same name inside your main domain's root directory.
3
-
4
- ### Interactive Usage
5
- ```bash
6
- candy subdomain create
7
- ```
8
- After running the command, you will be prompted to enter the new subdomain name, including the main domain (e.g., `blog.example.com`).
9
-
10
- ### Single-Line Usage with Prefixes
11
- ```bash
12
- # Specify subdomain directly
13
- candy subdomain create -s blog.example.com
14
-
15
- # Or use long form prefix
16
- candy subdomain create --subdomain blog.example.com
17
- ```
18
-
19
- ### Available Prefixes
20
- - `-s`, `--subdomain`: Full subdomain name (e.g., blog.example.com)
21
-
22
- ### Interactive Example
23
- ```bash
24
- $ candy subdomain create
25
- > Enter the subdomain name (subdomain.example.com): blog.example.com
26
- ```
27
-
28
- ### Single-Line Example
29
- ```bash
30
- $ candy subdomain create -s blog.example.com
31
- ✓ Subdomain blog.example.com created successfully
32
- ```
@@ -1,33 +0,0 @@
1
- ## 📋 List Subdomains
2
- To see a list of all subdomains configured for a specific domain, use the `list` command.
3
-
4
- ### Interactive Usage
5
- ```bash
6
- candy subdomain list
7
- ```
8
- This command will prompt you to enter the main domain name for which you want to list the subdomains.
9
-
10
- ### Single-Line Usage with Prefixes
11
- ```bash
12
- # Specify domain directly
13
- candy subdomain list -d example.com
14
-
15
- # Or use long form prefix
16
- candy subdomain list --domain example.com
17
- ```
18
-
19
- ### Available Prefixes
20
- - `-d`, `--domain`: Domain name to list subdomains for
21
-
22
- ### Interactive Example
23
- ```bash
24
- $ candy subdomain list
25
- > Enter the domain name: example.com
26
- ```
27
-
28
- ### Single-Line Example
29
- ```bash
30
- $ candy subdomain list -d example.com
31
- ```
32
-
33
- This will display a list of all subdomains associated with `example.com`.
@@ -1,41 +0,0 @@
1
- ## 🗑️ Delete a Subdomain
2
-
3
- This command removes a subdomain configuration from your server.
4
-
5
- ### Interactive Usage
6
- ```bash
7
- candy subdomain delete
8
- ```
9
- You will be prompted to enter the full subdomain name (including the main domain) that you want to delete.
10
-
11
- ### Single-Line Usage with Prefixes
12
- ```bash
13
- # Specify subdomain directly
14
- candy subdomain delete -s blog.example.com
15
-
16
- # Or use long form prefix
17
- candy subdomain delete --subdomain blog.example.com
18
- ```
19
-
20
- ### Available Prefixes
21
- - `-s`, `--subdomain`: Full subdomain name to delete (e.g., blog.example.com)
22
-
23
- ### Interactive Example
24
- ```bash
25
- $ candy subdomain delete
26
- > Enter the subdomain name (subdomain.example.com): blog.example.com
27
- ✓ Subdomain 'blog.example.com' deleted successfully
28
- ```
29
-
30
- ### Single-Line Example
31
- ```bash
32
- $ candy subdomain delete -s blog.example.com
33
- ✓ Subdomain 'blog.example.com' deleted successfully
34
- ```
35
-
36
- ### Important Notes
37
- - This command only removes the server configuration for the subdomain
38
- - It **does not** delete the subdomain's directory or files
39
- - If you want to remove the files as well, you must delete the directory manually
40
- - The subdomain will no longer be accessible after deletion
41
- - SSL certificates associated with the subdomain may need to be renewed for the main domain
@@ -1,34 +0,0 @@
1
- ## 🔒 Renew an SSL Certificate
2
- This command attempts to renew the SSL certificate for a given domain. This can be useful if a certificate is close to expiring and you want to force an early renewal.
3
-
4
- ### Interactive Usage
5
- ```bash
6
- candy ssl renew
7
- ```
8
- After running the command, you will be prompted to enter the domain name for which you want to renew the SSL certificate.
9
-
10
- ### Single-Line Usage with Prefixes
11
- ```bash
12
- # Specify domain directly
13
- candy ssl renew -d example.com
14
-
15
- # Or use long form prefix
16
- candy ssl renew --domain example.com
17
- ```
18
-
19
- ### Available Prefixes
20
- - `-d`, `--domain`: Domain name to renew SSL certificate for
21
-
22
- ### Interactive Example
23
- ```bash
24
- $ candy ssl renew
25
- > Enter the domain name: example.com
26
- ```
27
-
28
- ### Single-Line Example
29
- ```bash
30
- $ candy ssl renew -d example.com
31
- ✓ SSL certificate renewal initiated for example.com
32
- ```
33
-
34
- CandyPack will then handle the process of validating your domain and renewing the certificate.
@@ -1,23 +0,0 @@
1
- ## ✉️ Create a Mail Account
2
- This command allows you to create a new email account.
3
-
4
- ### Interactive Usage
5
- ```bash
6
- candy mail create
7
- ```
8
- You will be prompted to enter the new email address and a password for the account.
9
-
10
- ### Single-Line Usage with Prefixes
11
- ```bash
12
- # Specify email and password directly
13
- candy mail create -e user@example.com -p mypassword
14
-
15
- # Or use long form prefixes
16
- candy mail create --email user@example.com --password mypassword
17
- ```
18
-
19
- ### Available Prefixes
20
- - `-e`, `--email`: Email address for the new account
21
- - `-p`, `--password`: Password for the new account
22
-
23
- **Note:** When using the `-p` prefix, you won't be prompted to confirm the password. In interactive mode, you'll need to enter the password twice for confirmation.
@@ -1,20 +0,0 @@
1
- ## 🗑️ Delete a Mail Account
2
- This command removes an existing email account.
3
-
4
- ### Interactive Usage
5
- ```bash
6
- candy mail delete
7
- ```
8
- You will be prompted to enter the email address you wish to delete.
9
-
10
- ### Single-Line Usage with Prefixes
11
- ```bash
12
- # Specify email directly
13
- candy mail delete -e user@example.com
14
-
15
- # Or use long form prefix
16
- candy mail delete --email user@example.com
17
- ```
18
-
19
- ### Available Prefixes
20
- - `-e`, `--email`: Email address to delete
@@ -1,20 +0,0 @@
1
- ## 📋 List Mail Accounts
2
- This command lists all email accounts associated with a specific domain.
3
-
4
- ### Interactive Usage
5
- ```bash
6
- candy mail list
7
- ```
8
- You will be prompted to enter the domain name (e.g., `example.com`) to see all its email accounts.
9
-
10
- ### Single-Line Usage with Prefixes
11
- ```bash
12
- # Specify domain directly
13
- candy mail list -d example.com
14
-
15
- # Or use long form prefix
16
- candy mail list --domain example.com
17
- ```
18
-
19
- ### Available Prefixes
20
- - `-d`, `--domain`: Domain name to list email accounts for
@@ -1,23 +0,0 @@
1
- ## 🔑 Change Account Password
2
- This command allows you to change the password for an existing email account.
3
-
4
- ### Interactive Usage
5
- ```bash
6
- candy mail password
7
- ```
8
- You will be prompted to enter the email address and the new password.
9
-
10
- ### Single-Line Usage with Prefixes
11
- ```bash
12
- # Specify email and new password directly
13
- candy mail password -e user@example.com -p newpassword
14
-
15
- # Or use long form prefixes
16
- candy mail password --email user@example.com --password newpassword
17
- ```
18
-
19
- ### Available Prefixes
20
- - `-e`, `--email`: Email address to change password for
21
- - `-p`, `--password`: New password for the account
22
-
23
- **Note:** When using the `-p` prefix, you won't be prompted to confirm the password. In interactive mode, you'll need to enter the password twice for confirmation.
@@ -1,81 +0,0 @@
1
- module.exports = {
2
- init: async function () {
3
- global.Candy = this.instance()
4
- await global.Candy.Env.init()
5
- await global.Candy.Config.init()
6
- await global.Candy.Mysql.init()
7
- await global.Candy.Route.init()
8
- await global.Candy.Server.init()
9
- global.Candy.instance = this.instance
10
- global.__ = value => {
11
- return value
12
- }
13
- },
14
-
15
- instance(id, req, res) {
16
- let _candy = {}
17
-
18
- _candy.Config = require('./Config.js')
19
- _candy.Env = require('./Env.js')
20
- _candy.Mail = (...args) => new (require('./Mail.js'))(...args)
21
- _candy.Mysql = require('./Mysql.js')
22
- _candy.Route = global.Candy?.Route ?? new (require('./Route.js'))()
23
- _candy.Server = require('./Server.js')
24
- _candy.Var = (...args) => new (require('./Var.js'))(...args)
25
-
26
- if (req && res) {
27
- _candy.Request = new (require('./Request.js'))(id, req, res, _candy)
28
- _candy.Auth = new (require('./Auth.js'))(_candy.Request)
29
- _candy.Token = new (require('./Token.js'))(_candy.Request)
30
- _candy.Lang = new (require('./Lang.js'))(_candy)
31
- _candy.View = new (require('./View.js'))(_candy)
32
-
33
- if (global.Candy?.Route?.class) {
34
- for (const name in global.Candy.Route.class) {
35
- const Module = global.Candy.Route.class[name].module
36
- _candy[name] = typeof Module === 'function' ? new Module(_candy) : Module
37
- }
38
- }
39
-
40
- _candy.__ = function (...args) {
41
- return _candy.Lang.get(...args)
42
- }
43
- _candy.abort = function (code) {
44
- return _candy.Request.abort(code)
45
- }
46
- _candy.cookie = function (key, value, options) {
47
- return _candy.Request.cookie(key, value, options)
48
- }
49
- _candy.direct = function (url) {
50
- return _candy.Request.redirect(url)
51
- }
52
- _candy.env = function (key, defaultValue) {
53
- return _candy.Env.get(key, defaultValue)
54
- }
55
- _candy.return = function (data) {
56
- return _candy.Request.end(data)
57
- }
58
- _candy.request = function (key) {
59
- return _candy.Request.request(key)
60
- }
61
- _candy.set = function (key, value) {
62
- return _candy.Request.set(key, value)
63
- }
64
- _candy.token = function (hash) {
65
- return hash ? _candy.Token.check(hash) : _candy.Token.generate()
66
- }
67
- _candy.validator = function () {
68
- return new (require('./Validator.js'))(_candy.Request)
69
- }
70
- _candy.write = function (value) {
71
- return _candy.Request.write(value)
72
- }
73
- _candy.stream = function (input) {
74
- _candy.Request.clearTimeout()
75
- return new (require('./Stream'))(_candy.Request.req, _candy.Request.res, input)
76
- }
77
- }
78
-
79
- return _candy
80
- }
81
- }