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
@@ -9,7 +9,6 @@ on:
9
9
  jobs:
10
10
  update-pr-description:
11
11
  runs-on: ubuntu-latest
12
- # Only run for PRs from `dev` to `main`
13
12
  if: github.head_ref == 'dev' && github.base_ref == 'main'
14
13
  permissions:
15
14
  pull-requests: write
@@ -18,7 +17,6 @@ jobs:
18
17
  - name: Checkout
19
18
  uses: actions/checkout@v4
20
19
  with:
21
- # Fetch all history for all branches and tags to get the commit messages
22
20
  fetch-depth: 0
23
21
 
24
22
  - name: Generate PR Body
@@ -0,0 +1,46 @@
1
+ name: CodeQL Analysis
2
+
3
+ on:
4
+ push:
5
+ branches: [main, dev]
6
+ pull_request:
7
+ branches: [main, dev]
8
+ schedule:
9
+ - cron: '0 0 * * 1'
10
+
11
+ jobs:
12
+ analyze:
13
+ name: Analyze
14
+ runs-on: ubuntu-latest
15
+ permissions:
16
+ actions: read
17
+ contents: read
18
+ security-events: write
19
+
20
+ strategy:
21
+ fail-fast: false
22
+ matrix:
23
+ language: ['javascript']
24
+
25
+ steps:
26
+ - name: Checkout repository
27
+ uses: actions/checkout@v4
28
+
29
+ - name: Setup Node.js
30
+ uses: actions/setup-node@v4
31
+ with:
32
+ node-version: '22'
33
+
34
+ - name: Initialize CodeQL
35
+ uses: github/codeql-action/init@v3
36
+ with:
37
+ languages: ${{ matrix.language }}
38
+ queries: security-extended,security-and-quality
39
+
40
+ - name: Autobuild
41
+ uses: github/codeql-action/autobuild@v3
42
+
43
+ - name: Perform CodeQL Analysis
44
+ uses: github/codeql-action/analyze@v3
45
+ with:
46
+ category: "/language:${{matrix.language}}"
@@ -5,28 +5,35 @@ on:
5
5
  branches:
6
6
  - main
7
7
  paths-ignore:
8
- - 'CHANGELOG.md'
9
- - 'package.json'
8
+ - 'CHANGELOG.md'
9
+ - 'package.json'
10
10
  workflow_dispatch:
11
11
 
12
12
  jobs:
13
13
  release:
14
14
  name: Release
15
15
  runs-on: ubuntu-latest
16
- if: "!contains(github.event.head_commit.message, 'CandyPack v') || github.event_name == 'workflow_dispatch'"
16
+ permissions:
17
+ contents: write
18
+ issues: write
19
+ pull-requests: write
20
+ id-token: write
21
+ if: "!contains(github.event.head_commit.message, 'Odac v') || github.event_name == 'workflow_dispatch'"
17
22
  steps:
18
23
  - name: Checkout
19
24
  uses: actions/checkout@v3
20
25
  with:
21
26
  fetch-depth: 0
22
27
  - name: Setup Node.js
23
- uses: actions/setup-node@v3
28
+ uses: actions/setup-node@v4
24
29
  with:
25
- node-version: '20'
30
+ node-version: '22'
31
+ registry-url: 'https://registry.npmjs.org'
32
+
26
33
  - name: Install dependencies
27
34
  run: npm install
35
+
28
36
  - name: Release
29
37
  env:
30
38
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
31
- NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
32
39
  run: npx semantic-release
@@ -20,7 +20,7 @@ jobs:
20
20
 
21
21
  strategy:
22
22
  matrix:
23
- node-version: [18.x, 22.x]
23
+ node-version: 22.x
24
24
 
25
25
  steps:
26
26
  - name: Checkout code
@@ -41,7 +41,7 @@ jobs:
41
41
  run: npm test
42
42
 
43
43
  - name: Upload coverage reports
44
- if: matrix.node-version == '18.x'
44
+ if: matrix.node-version == '22.x'
45
45
  uses: codecov/codecov-action@v3
46
46
  with:
47
47
  files: ./coverage/lcov.info
@@ -49,10 +49,11 @@ jobs:
49
49
  name: codecov-umbrella
50
50
  fail_ci_if_error: false
51
51
 
52
- - name: Comment PR with coverage
53
- if: github.event_name == 'pull_request' && matrix.node-version == '18.x'
54
- uses: romeovs/lcov-reporter-action@v0.3.1
55
- with:
56
- lcov-file: ./coverage/lcov.info
57
- github-token: ${{ secrets.GITHUB_TOKEN }}
58
- delete-old-comments: true
52
+ - name: Coverage Summary
53
+ if: matrix.node-version == '22.x'
54
+ run: |
55
+ echo "## Test Coverage Summary" >> $GITHUB_STEP_SUMMARY
56
+ echo "" >> $GITHUB_STEP_SUMMARY
57
+ echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
58
+ npx nyc report --reporter=text-summary >> $GITHUB_STEP_SUMMARY || echo "Coverage report not available" >> $GITHUB_STEP_SUMMARY
59
+ echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
package/.releaserc.js CHANGED
@@ -52,8 +52,6 @@ module.exports = {
52
52
  commit.subject = commit.subject.replace(prRegex, '')
53
53
  }
54
54
 
55
- let prLink = ''
56
-
57
55
  // Get author name - prefer GitHub login if available
58
56
  const email = commit.committer.email || commit.authorEmail || ''
59
57
  const ghUserMatch = email.match(/^(?:\d+\+)?([a-zA-Z0-9-]+)@users\.noreply\.github\.com$/)
@@ -110,7 +108,7 @@ module.exports = {
110
108
 
111
109
  ---
112
110
 
113
- Powered by [🍭 CandyPack](https://candypack.dev)
111
+ Powered by [ ODAC](https://odac.run)
114
112
  `
115
113
  }
116
114
  }
@@ -121,14 +119,19 @@ Powered by [🍭 CandyPack](https://candypack.dev)
121
119
  changelogFile: 'CHANGELOG.md'
122
120
  }
123
121
  ],
124
- '@semantic-release/npm',
122
+ [
123
+ '@semantic-release/npm',
124
+ {
125
+ provenance: true
126
+ }
127
+ ],
125
128
  [
126
129
  '@semantic-release/git',
127
130
  {
128
131
  assets: ['package.json', 'CHANGELOG.md'],
129
- message: '🍭 CandyPack v${nextRelease.version} Released'
132
+ message: ' ODAC v${nextRelease.version} Released'
130
133
  }
131
134
  ],
132
135
  '@semantic-release/github'
133
136
  ]
134
- }
137
+ }
package/CHANGELOG.md CHANGED
@@ -1,181 +1,93 @@
1
+ ### Framework
2
+
3
+ - HTML Email
4
+
1
5
  ### ⚙️ Engine Tuning
2
6
 
7
+ - 'for' and 'list' directive argument handling
8
+ - externalize semantic-release configuration to `.releaserc.js` with enhanced changelog generation and update release workflow permissions.
9
+ - Hub polling
3
10
  - Modular Config
4
11
  - New default web template
12
+ - Proxy logic
13
+ - rebrand from CandyPack to Odac
14
+ - Refactor documentation files
15
+ - restructure for standalone framework package
16
+ - View rendering to support async operations
5
17
 
6
18
  ### ✨ What's New
7
19
 
20
+ - Add <candy:form> system with automatic validation and DB insert
8
21
  - add <candy:login> component for zero-config registration
9
22
  - add <candy:register> component for zero-config registration
23
+ - Add cloud integration
24
+ - Add DDoS Protection Firewall
25
+ - Add GitHub Actions workflows for test coverage, auto PR descriptions, and CodeQL analysis.
26
+ - Add Jest for testing
27
+ - Add Jest for unit testing and code coverage
28
+ - add semantic-release
29
+ - add semantic-release with npm publishing
30
+ - Add skeleton-aware navigation and auto-navigation support
31
+ - Add support for controller classes and update docs
32
+ - Added CLI prefix arguments support
33
+ - Development Server Mode
10
34
  - Environment variable support
35
+ - **framework:** add Early Hints (HTTP 103) support with zero-config
36
+ - **Framework:** Add middleware support
37
+ - **Framework:** Custom Cron Jobs
11
38
  - **Framework:** Support multiple validation checks per field
12
39
  - HTTP2 & Server-Sent Events (SSE) Support
40
+ - Introduce CLI for project initialization and development, refactor framework dependencies, and add automated release workflow.
41
+ - Make package.json name, version, and dependency updates unconditional.
13
42
  - Modernize view template syntax with <candy> tags
14
43
  - No-Code AJAX Navigation
44
+ - Re-enable release workflow and configure semantic-release with NPM provenance.
45
+ - **server:** New Logging Module
46
+ - Synchronize main with dev branch
47
+ - WebSocket Support
15
48
 
16
49
  ### 📚 Documentation
17
50
 
18
- - Add examples for complex MySQL where conditions
51
+ - Add AGENTS.md and update contribution guidelines
52
+ - Add Candy.Var utility documentation
53
+ - clarify difference between candy get and var tags
19
54
  - Expand and update view system documentation
55
+ - Framework Docs
56
+ - Remove 'coming soon' from documentation link
20
57
  - Revamp database docs: connection and queries
21
-
22
- ### 🛠️ Fixes & Improvements
23
-
24
- - Added config module to candy debug
25
- - Improve config force save and migration verification
26
-
27
-
28
-
29
- ---
30
-
31
- Powered by [🍭 CandyPack](https://candypack.dev)
32
-
33
- ### ⚙️ Engine Tuning
34
-
35
- - Refactor SSL certificate generation and error handling
36
-
37
- ### ✨ What's New
38
-
39
- - Development Server Mode
40
- - **Framework:** Custom Cron Jobs
41
-
42
- ### 📚 Documentation
43
-
44
58
  - Simplify and standardize documentation titles
59
+ - split template syntax into separate detailed pages
45
60
 
46
61
  ### 🛠️ Fixes & Improvements
47
62
 
48
- - Add CAA record support and default Let's Encrypt CAA
49
- - Enhance system DNS config to use public resolvers
50
- - Handle systemd-resolved conflict on DNS port 53
51
- - Improve external IP detection with multiple fallbacks
52
- - Log stderr output to log buffer with timestamp
63
+ - Add input validation to Auth.check method
64
+ - Add memory-safe timers and auto-cleanup for streaming
65
+ - Add missing conventional-changelog-conventionalcommits dependency
66
+ - Add WebSocket cleanup
67
+ - Adjust route reload timing and cache invalidation
68
+ - Correct license and supported version in docs
69
+ - Enable object stringification in MySQL connection
70
+ - escape backslash characters in View.js regex replacements
71
+ - Escape backticks earlier in view content processing
72
+ - Escape backticks in cached view templates
73
+ - File type check in Route controller path logic
74
+ - **Framework:** Add error handling for config file parsing
75
+ - **Framework:** No Controller View
76
+ - Handle null and undefined in Var.html()
53
77
  - Make husky prepare script non-failing
54
- - Skip rate limiting for localhost in DNS requests
55
-
78
+ - Preserve template literals in <script:candy> blocks
79
+ - Prevent replace error when candy get value is undefined
80
+ - Refactor route controller lookup and page handling
81
+ - release workflow, update package config with MIT license and reduced dependencies, fix View.js regex handling, and refine template scripts.
82
+ - **server:** Refactor server restart and initialization logic
83
+ - Support view config object in authPage third parameter
56
84
 
57
85
 
58
- ---
59
-
60
- Powered by [🍭 CandyPack](https://candypack.dev)
61
-
62
- ### 🛠️ Fixes & Improvements
63
-
64
- - Server Startup
86
+ ### 💥 BREAKING CHANGES
65
87
 
88
+ - rebrand from CandyPack to Odac (#88)
66
89
 
67
90
 
68
91
  ---
69
92
 
70
- Powered by [🍭 CandyPack](https://candypack.dev)
71
-
72
- ### Refactor
73
-
74
- - Improve IMAP and SMTP authentication and TLS handling
75
-
76
- ### ⚙️ Engine Tuning
77
-
78
- - Improve error handling for HTTP/HTTPS server startup
79
- - Refactor documentation files
80
-
81
- ### ✨ What's New
82
-
83
- - Added 'candy service delete' command.
84
- - Added 'candy subdomain delete' command.
85
- - Added CLI prefix arguments support
86
- - CLI Mouse Support
87
- - **cli:** Add Progress-Based Output
88
-
89
- ### 🛠️ Fixes & Improvements
90
-
91
- - Fix module instantiation and nullish services handling
92
- - Limit log and error buffer sizes in Web and Watchdog
93
-
94
- ---
95
-
96
- Powered by [🍭 CandyPack](https://candypack.dev)
97
-
98
- **v**
99
-
100
- ### ✨ What's New
101
-
102
- - Added 'candy web delete' command.
103
- - Added German, Spanish, French, Portuguese, Russian, and Chinese language support for CLI
104
-
105
- ### 🛠️ Fixes & Improvements
106
-
107
- - DNS Server Improvements
108
- - Fixed website creation problem
109
- - **Framework:** Add error handling for config file parsing
110
- - IMAP Server Improvements
111
- - Refactor website creation and config handling
112
- - **Server:** Logs fixed
113
- - SMTP Server Improvements
114
- - Web Server Improvements
115
-
116
- ---
117
-
118
- Powered by [🍭 CandyPack](https://candypack.dev)
119
-
120
- **v**
121
-
122
- ## [0.5.0](https://github.com/CandyPack/CandyPack/compare/v0.4.1...v0.5.0) (2025-09-02)
123
-
124
- - add view helper to page and authPage methods [#20](https://https://github.com/CandyPack/CandyPack/pull/20) ([](https://github.com/CandyPack/CandyPack/commit/863eaf35950831dd1166b6b2d0a50f48c19af508)), closes [#20](https://github.com/CandyPack/CandyPack/issues/20)
125
- - merge branch 'main' into dev-1 ([](https://github.com/CandyPack/CandyPack/commit/5c96b1e0e5e0a3a86172ef6ad047cdf6f0c5c029))
126
- - merge pull request #14 from CandyPack/doc/update-contribution-guidelines ([](https://github.com/CandyPack/CandyPack/commit/eb92bdf66537c5a973629b99762424e31d8fa3a1)), closes [#14](https://github.com/CandyPack/CandyPack/issues/14)
127
- - merge pull request #16 from CandyPack/feat/custom-semantic-release-notes ([](https://github.com/CandyPack/CandyPack/commit/3ea998e24c27e03878258ac0de8563223dced2f8)), closes [#16](https://github.com/CandyPack/CandyPack/issues/16)
128
- - merge pull request #21 from CandyPack/dev-1 ([](https://github.com/CandyPack/CandyPack/commit/ae87fd8d50a226d854a8b85345558d7d5b7e81f9)), closes [#21](https://github.com/CandyPack/CandyPack/issues/21)
129
- - merge pull request #23 from CandyPack/dev ([](https://github.com/CandyPack/CandyPack/commit/b28a237ea070bc66f9ea3dbc2efa967e4d73ab27)), closes [#23](https://github.com/CandyPack/CandyPack/issues/23)
130
- - merge pull request #25 from CandyPack/dev ([](https://github.com/CandyPack/CandyPack/commit/b9cb9127d64c80d03c407052124b40da86b7caec)), closes [#25](https://github.com/CandyPack/CandyPack/issues/25)
131
- - refactor server restart and initialization logic ([](https://github.com/CandyPack/CandyPack/commit/2e7a23fce515b6a6e6fdfb58e91810d558001c66))
132
-
133
- ### ⚡️ Performance Upgrades
134
-
135
- - core Process Module ([](https://github.com/CandyPack/CandyPack/commit/59ece15756bfb80a3ce8a430d60106ec8b9cea7e))
136
-
137
- ### ✨ What's New
138
-
139
- - **release:** customize semantic-release notes generation ([](https://github.com/CandyPack/CandyPack/commit/70ba94ef010c10609cce69d2dd7fc32eb8ddd157))
140
- - **server:** new Logging Module ([](https://github.com/CandyPack/CandyPack/commit/70699006a36dbcce1f8de3ad549ee6000cd6e3a1))
141
- - synchronize main with dev branch ([](https://github.com/CandyPack/CandyPack/commit/654ecd33e9296f3753b95f11568f9d289f0d5a23))
142
-
143
- ### 🎨 Style
144
-
145
- - add PR and author attribution to release notes [#17](https://https://github.com/CandyPack/CandyPack/pull/17) ([](https://github.com/CandyPack/CandyPack/commit/8ef3e77edb3fc3f6de4582bacf8c3088f5941b76)), closes [#17](https://github.com/CandyPack/CandyPack/issues/17) [#1234](https://github.com/CandyPack/CandyPack/issues/1234) [#1234](https://github.com/CandyPack/CandyPack/issues/1234)
146
-
147
- ### 📚 Documentation
148
-
149
- - add AGENTS.md and update contribution guidelines ([](https://github.com/CandyPack/CandyPack/commit/2ef7dcb125eb9b341ecf209cd6f87dc6e0873389))
150
- - framework Docs ([](https://github.com/CandyPack/CandyPack/commit/cd7a1cec6ebecc5748bae3ccd0dd934ddf77c3fa))
151
- - server documentation ([](https://github.com/CandyPack/CandyPack/commit/27eb89a0f9c5d17c0364112743f3a032d2999195))
152
- - update AGENTS.md with detailed developer guide [#18](https://https://github.com/CandyPack/CandyPack/pull/18) ([](https://github.com/CandyPack/CandyPack/commit/65a05649ea61ac1d29ae73e3f27dabe0d82425cd)), closes [#18](https://github.com/CandyPack/CandyPack/issues/18)
153
-
154
- ### 🛠️ Fixes & Improvements
155
-
156
- - add missing conventional-changelog-conventionalcommits dependency [#22](https://https://github.com/CandyPack/CandyPack/pull/22) ([](https://github.com/CandyPack/CandyPack/commit/8f8a64fe3a81a5c9015e62755013d141571e5f0d)), closes [#22](https://github.com/CandyPack/CandyPack/issues/22)
157
- - **CLI:** fixed CLI Commands ([](https://github.com/CandyPack/CandyPack/commit/44c8ef7a2aca9ebdf82317b20dc3c39728cf2676))
158
- - **Framework:** no Controller View ([](https://github.com/CandyPack/CandyPack/commit/ae73ae793be0e3b6b6d95eaeb75ba981f0eb49f5))
159
- - rebooting ([](https://github.com/CandyPack/CandyPack/commit/9ab17df2a39621be0429cc3ffd52f0326dc8c64a))
160
- - resolve semantic-release configuration and dependency errors [#24](https://https://github.com/CandyPack/CandyPack/pull/24) ([](https://github.com/CandyPack/CandyPack/commit/b6359b4687f1f15cbb1847e82d49a998e74f5dde)), closes [#24](https://github.com/CandyPack/CandyPack/issues/24)
161
-
162
- ## [0.4.1](https://github.com/CandyPack/CandyPack/compare/v0.4.0...v0.4.1) (2025-08-31)
163
-
164
- ### Bug Fixes
165
-
166
- - **server:** Refactor server restart and initialization logic ([#15](https://github.com/CandyPack/CandyPack/issues/15)) ([6cc688e](https://github.com/CandyPack/CandyPack/commit/6cc688ed95212fa73d022e3f2d8e773a17fe299e))
167
-
168
- # [0.4.0](https://github.com/CandyPack/CandyPack/compare/v0.3.1...v0.4.0) (2025-08-28)
169
-
170
- ### Bug Fixes
171
-
172
- - Correct license and supported version in docs ([1af458e](https://github.com/CandyPack/CandyPack/commit/1af458ead8a1a577e8e4c6c45d8cae4ee1432d5c))
173
- - Update auto-generated PR text to English ([27bab61](https://github.com/CandyPack/CandyPack/commit/27bab61461d65737f95e89737bda06753de3bfc5))
174
-
175
- ### Features
176
-
177
- - Add Jest for testing ([4e51bbb](https://github.com/CandyPack/CandyPack/commit/4e51bbb1295d44b14f64e661019ac7a526fa96bb))
178
- - Add Jest for unit testing and code coverage ([1bfe78e](https://github.com/CandyPack/CandyPack/commit/1bfe78eeabc0af1178ba9bc678ab8a2eaa7d9bf8))
179
- - add semantic-release ([7a88e9e](https://github.com/CandyPack/CandyPack/commit/7a88e9eb3cee12d6d316c776e7d88e8de6b26c55))
180
- - add semantic-release with npm publishing ([5c2568d](https://github.com/CandyPack/CandyPack/commit/5c2568dac9ca6284718e087ce67a519a21bfe1c5))
181
- - Complete project refactor and feature enhancement ([d3bcc19](https://github.com/CandyPack/CandyPack/commit/d3bcc1995af8f0548a0bbd8c0396db6775d4b5cf))
93
+ Powered by [ ODAC](https://odac.run)
@@ -36,7 +36,7 @@ This Code of Conduct applies within all community spaces, and also applies when
36
36
 
37
37
  ## Enforcement
38
38
 
39
- Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at security@candypack.dev. All complaints will be reviewed and investigated promptly and fairly.
39
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at security@odac.run. All complaints will be reviewed and investigated promptly and fairly.
40
40
 
41
41
  All community leaders are obligated to respect the privacy and security of the reporter of any incident.
42
42
 
package/CONTRIBUTING.md CHANGED
@@ -1,16 +1,16 @@
1
- # Contributing to CandyPack
1
+ # Contributing to Odac
2
2
 
3
- First off, thank you for considering contributing to CandyPack! It's people like you that make CandyPack such a great tool.
3
+ First off, thank you for considering contributing to Odac! It's people like you that make Odac such a great tool.
4
4
 
5
- This project and everyone participating in it is governed by the [CandyPack Code of Conduct](CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code. Please report unacceptable behavior to security@candypack.dev.
5
+ This project and everyone participating in it is governed by the [Odac Code of Conduct](CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code. Please report unacceptable behavior to security@odac.run.
6
6
 
7
7
  ## How Can I Contribute?
8
8
 
9
- There are many ways to contribute, from writing tutorials or blog posts, improving the documentation, submitting bug reports and feature requests or writing code which can be incorporated into CandyPack itself.
9
+ There are many ways to contribute, from writing tutorials or blog posts, improving the documentation, submitting bug reports and feature requests or writing code which can be incorporated into Odac itself.
10
10
 
11
11
  ### Reporting Bugs
12
12
 
13
- Before creating a bug report, please check the [issues list](https://github.com/CandyPack/CandyPack/issues) to see if the bug has already been reported. If it has, please add a comment to the existing issue instead of creating a new one.
13
+ Before creating a bug report, please check the [issues list](https://github.com/Odac/Odac/issues) to see if the bug has already been reported. If it has, please add a comment to the existing issue instead of creating a new one.
14
14
 
15
15
  When you are creating a bug report, please include as many details as possible. Fill out the required template, the information it asks for helps us resolve issues faster.
16
16
 
@@ -20,10 +20,10 @@ If you have an idea for a new feature or an improvement to an existing one, plea
20
20
 
21
21
  ### Your First Code Contribution
22
22
 
23
- Unsure where to begin contributing to CandyPack? You can start by looking through `good first issue` and `help wanted` issues:
23
+ Unsure where to begin contributing to Odac? You can start by looking through `good first issue` and `help wanted` issues:
24
24
 
25
- * [Good first issues](https://github.com/CandyPack/CandyPack/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) - issues which should only require a few lines of code, and a test or two.
26
- * [Help wanted issues](https://github.com/CandyPack/CandyPack/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22) - issues which should be a bit more involved than `good first issue` issues.
25
+ * [Good first issues](https://github.com/Odac/Odac/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) - issues which should only require a few lines of code, and a test or two.
26
+ * [Help wanted issues](https://github.com/Odac/Odac/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22) - issues which should be a bit more involved than `good first issue` issues.
27
27
 
28
28
  ### Development Workflow
29
29