odac 1.0.1 → 1.2.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 (143) hide show
  1. package/.agent/rules/coding.md +27 -0
  2. package/.agent/rules/memory.md +33 -0
  3. package/.agent/rules/project.md +30 -0
  4. package/.agent/rules/workflow.md +16 -0
  5. package/.github/workflows/auto-pr-description.yml +3 -1
  6. package/.github/workflows/release.yml +42 -1
  7. package/.github/workflows/test-coverage.yml +6 -5
  8. package/.github/workflows/test-publish.yml +36 -0
  9. package/.husky/pre-commit +10 -0
  10. package/.husky/pre-push +13 -0
  11. package/.releaserc.js +3 -3
  12. package/CHANGELOG.md +184 -0
  13. package/README.md +53 -34
  14. package/bin/odac.js +181 -49
  15. package/client/odac.js +878 -995
  16. package/docs/backend/01-overview/03-development-server.md +39 -46
  17. package/docs/backend/02-structure/01-typical-project-layout.md +59 -25
  18. package/docs/backend/03-config/00-configuration-overview.md +15 -6
  19. package/docs/backend/03-config/01-database-connection.md +3 -3
  20. package/docs/backend/03-config/02-static-route-mapping-optional.md +1 -1
  21. package/docs/backend/03-config/03-request-timeout.md +1 -1
  22. package/docs/backend/03-config/04-environment-variables.md +4 -4
  23. package/docs/backend/03-config/05-early-hints.md +2 -2
  24. package/docs/backend/04-routing/02-controller-less-view-routes.md +9 -3
  25. package/docs/backend/04-routing/03-api-and-data-routes.md +18 -0
  26. package/docs/backend/04-routing/07-cron-jobs.md +17 -1
  27. package/docs/backend/04-routing/09-websocket.md +29 -0
  28. package/docs/backend/05-controllers/01-how-to-build-a-controller.md +48 -3
  29. package/docs/backend/05-controllers/02-your-trusty-odac-assistant.md +2 -0
  30. package/docs/backend/05-controllers/03-controller-classes.md +61 -55
  31. package/docs/backend/05-forms/01-custom-forms.md +103 -95
  32. package/docs/backend/05-forms/02-automatic-database-insert.md +21 -21
  33. package/docs/backend/06-request-and-response/01-the-request-object-what-is-the-user-asking-for.md +17 -0
  34. package/docs/backend/07-views/02-rendering-a-view.md +1 -1
  35. package/docs/backend/07-views/03-variables.md +5 -5
  36. package/docs/backend/07-views/04-request-data.md +1 -1
  37. package/docs/backend/07-views/08-backend-javascript.md +1 -1
  38. package/docs/backend/07-views/10-styling-and-tailwind.md +93 -0
  39. package/docs/backend/08-database/01-getting-started.md +100 -0
  40. package/docs/backend/08-database/02-basics.md +136 -0
  41. package/docs/backend/08-database/03-advanced.md +84 -0
  42. package/docs/backend/08-database/04-migrations.md +48 -0
  43. package/docs/backend/09-validation/01-the-validator-service.md +1 -0
  44. package/docs/backend/10-authentication/03-register.md +9 -2
  45. package/docs/backend/10-authentication/04-odac-register-forms.md +48 -48
  46. package/docs/backend/10-authentication/05-session-management.md +16 -2
  47. package/docs/backend/10-authentication/06-odac-login-forms.md +50 -50
  48. package/docs/backend/10-authentication/07-magic-links.md +134 -0
  49. package/docs/backend/11-mail/01-the-mail-service.md +118 -28
  50. package/docs/backend/12-streaming/01-streaming-overview.md +2 -2
  51. package/docs/backend/13-utilities/01-odac-var.md +7 -7
  52. package/docs/backend/13-utilities/02-ipc.md +73 -0
  53. package/docs/frontend/01-overview/01-introduction.md +5 -1
  54. package/docs/frontend/02-ajax-navigation/01-quick-start.md +1 -1
  55. package/docs/index.json +21 -125
  56. package/eslint.config.mjs +5 -47
  57. package/jest.config.js +1 -1
  58. package/package.json +16 -7
  59. package/src/Auth.js +414 -121
  60. package/src/Config.js +12 -7
  61. package/src/Database.js +188 -0
  62. package/src/Env.js +3 -1
  63. package/src/Ipc.js +337 -0
  64. package/src/Lang.js +9 -2
  65. package/src/Mail.js +408 -37
  66. package/src/Odac.js +105 -40
  67. package/src/Request.js +71 -49
  68. package/src/Route/Cron.js +62 -18
  69. package/src/Route/Internal.js +215 -12
  70. package/src/Route/Middleware.js +7 -2
  71. package/src/Route.js +372 -109
  72. package/src/Server.js +118 -12
  73. package/src/Storage.js +169 -0
  74. package/src/Token.js +6 -4
  75. package/src/Validator.js +95 -3
  76. package/src/Var.js +22 -6
  77. package/src/View/EarlyHints.js +43 -33
  78. package/src/View/Form.js +210 -28
  79. package/src/View.js +108 -7
  80. package/src/WebSocket.js +18 -3
  81. package/template/odac.json +5 -0
  82. package/template/package.json +3 -1
  83. package/template/route/www.js +12 -10
  84. package/template/view/content/home.html +3 -3
  85. package/template/view/head/main.html +2 -2
  86. package/test/Client.test.js +168 -0
  87. package/test/Config.test.js +112 -0
  88. package/test/Lang.test.js +92 -0
  89. package/test/Odac.test.js +86 -0
  90. package/test/{framework/middleware.test.js → Route/Middleware.test.js} +2 -2
  91. package/test/{framework/Route.test.js → Route.test.js} +1 -1
  92. package/test/{framework/View → View}/EarlyHints.test.js +1 -1
  93. package/test/{framework/WebSocket.test.js → WebSocket.test.js} +2 -2
  94. package/test/scripts/check-coverage.js +4 -4
  95. package/docs/backend/08-database/01-database-connection.md +0 -99
  96. package/docs/backend/08-database/02-using-mysql.md +0 -322
  97. package/src/Mysql.js +0 -575
  98. package/template/config.json +0 -5
  99. package/test/cli/Cli.test.js +0 -36
  100. package/test/core/Candy.test.js +0 -234
  101. package/test/core/Commands.test.js +0 -538
  102. package/test/core/Config.test.js +0 -1432
  103. package/test/core/Lang.test.js +0 -250
  104. package/test/core/Process.test.js +0 -156
  105. package/test/server/Api.test.js +0 -647
  106. package/test/server/DNS.test.js +0 -2050
  107. package/test/server/DNS.test.js.bak +0 -2084
  108. package/test/server/Hub.test.js +0 -497
  109. package/test/server/Log.test.js +0 -73
  110. package/test/server/Mail.account.test_.js +0 -460
  111. package/test/server/Mail.init.test_.js +0 -411
  112. package/test/server/Mail.test_.js +0 -1340
  113. package/test/server/SSL.test_.js +0 -1491
  114. package/test/server/Server.test.js +0 -765
  115. package/test/server/Service.test_.js +0 -1127
  116. package/test/server/Subdomain.test.js +0 -440
  117. package/test/server/Web/Firewall.test.js +0 -175
  118. package/test/server/Web/Proxy.test.js +0 -397
  119. package/test/server/Web.test.js +0 -1494
  120. package/test/server/__mocks__/acme-client.js +0 -17
  121. package/test/server/__mocks__/bcrypt.js +0 -50
  122. package/test/server/__mocks__/child_process.js +0 -389
  123. package/test/server/__mocks__/crypto.js +0 -432
  124. package/test/server/__mocks__/fs.js +0 -450
  125. package/test/server/__mocks__/globalOdac.js +0 -227
  126. package/test/server/__mocks__/http.js +0 -575
  127. package/test/server/__mocks__/https.js +0 -272
  128. package/test/server/__mocks__/index.js +0 -249
  129. package/test/server/__mocks__/mail/server.js +0 -100
  130. package/test/server/__mocks__/mail/smtp.js +0 -31
  131. package/test/server/__mocks__/mailparser.js +0 -81
  132. package/test/server/__mocks__/net.js +0 -369
  133. package/test/server/__mocks__/node-forge.js +0 -328
  134. package/test/server/__mocks__/os.js +0 -320
  135. package/test/server/__mocks__/path.js +0 -291
  136. package/test/server/__mocks__/selfsigned.js +0 -8
  137. package/test/server/__mocks__/server/src/mail/server.js +0 -100
  138. package/test/server/__mocks__/server/src/mail/smtp.js +0 -31
  139. package/test/server/__mocks__/smtp-server.js +0 -106
  140. package/test/server/__mocks__/sqlite3.js +0 -394
  141. package/test/server/__mocks__/testFactories.js +0 -299
  142. package/test/server/__mocks__/testHelpers.js +0 -363
  143. package/test/server/__mocks__/tls.js +0 -229
package/eslint.config.mjs CHANGED
@@ -6,49 +6,7 @@ import prettierConfig from 'eslint-config-prettier'
6
6
 
7
7
  export default defineConfig([
8
8
  {
9
- files: ['core/**/*.js', 'watchdog/**/*.js', 'server/**/*.js', 'cli/**/*.js'],
10
- ignores: ['server/src/Odac.js'],
11
- languageOptions: {
12
- globals: {
13
- ...globals.node,
14
- Odac: 'readonly',
15
- __: 'readonly'
16
- },
17
- sourceType: 'script'
18
- },
19
- plugins: {
20
- js,
21
- prettier: prettierPlugin
22
- },
23
- rules: {
24
- ...js.configs.recommended.rules,
25
- ...prettierConfig.rules,
26
- 'prettier/prettier': 'error'
27
- }
28
- },
29
- {
30
- files: ['server/src/Odac.js'],
31
- languageOptions: {
32
- globals: {
33
- ...globals.node,
34
- log: 'readonly',
35
- __: 'readonly'
36
- },
37
- sourceType: 'script'
38
- },
39
- plugins: {
40
- js,
41
- prettier: prettierPlugin
42
- },
43
- rules: {
44
- ...js.configs.recommended.rules,
45
- ...prettierConfig.rules,
46
- 'prettier/prettier': 'error'
47
- }
48
- },
49
- {
50
- files: ['framework/**/*.js'],
51
- ignores: ['framework/web/**/*.js'],
9
+ files: ['src/**/*.js'],
52
10
  languageOptions: {
53
11
  globals: {
54
12
  ...globals.node,
@@ -68,7 +26,7 @@ export default defineConfig([
68
26
  }
69
27
  },
70
28
  {
71
- files: ['framework/web/**/*.js'],
29
+ files: ['client/**/*.js'],
72
30
  languageOptions: {
73
31
  globals: {...globals.browser},
74
32
  sourceType: 'module'
@@ -79,8 +37,8 @@ export default defineConfig([
79
37
  }
80
38
  },
81
39
  {
82
- files: ['web/**/*.js'],
83
- ignores: ['web/public/**/*.js'],
40
+ files: ['template/**/*.js'],
41
+ ignores: ['template/public/**/*.js'],
84
42
  languageOptions: {
85
43
  globals: {
86
44
  ...globals.node,
@@ -99,7 +57,7 @@ export default defineConfig([
99
57
  }
100
58
  },
101
59
  {
102
- files: ['web/public/**/*.js'],
60
+ files: ['template/public/**/*.js'],
103
61
  languageOptions: {
104
62
  globals: {
105
63
  ...globals.browser,
package/jest.config.js CHANGED
@@ -5,7 +5,7 @@ const config = {
5
5
  testMatch: ['**/test/**/*.test.js', '**/?(*.)+(spec|test).js'],
6
6
  collectCoverage: true,
7
7
  coverageDirectory: 'coverage',
8
- collectCoverageFrom: ['core/**/*.js', 'server/**/*.js']
8
+ collectCoverageFrom: ['src/**/*.js', 'client/**/*.js']
9
9
  // Coverage thresholds disabled - focus on test pass/fail only
10
10
  // Coverage is still collected and reported, but doesn't block commits
11
11
  // This allows incremental test development without artificial barriers
package/package.json CHANGED
@@ -7,7 +7,7 @@
7
7
  "email": "mail@emre.red",
8
8
  "url": "https://emre.red"
9
9
  },
10
- "version": "1.0.1",
10
+ "version": "1.2.0",
11
11
  "license": "MIT",
12
12
  "engines": {
13
13
  "node": ">=18.0.0"
@@ -18,12 +18,20 @@
18
18
  "main": "index.js",
19
19
  "repository": {
20
20
  "type": "git",
21
- "url": "https://github.com/odac-run/framework.git"
21
+ "url": "https://github.com/odac-run/odac.js.git"
22
22
  },
23
23
  "dependencies": {
24
- "axios": "^1.7.9",
25
- "bcrypt": "^5.1.1",
26
- "mysql2": "^3.6.5"
24
+ "@tailwindcss/cli": "^4.1.18",
25
+ "knex": "^3.1.0",
26
+ "lmdb": "^3.4.4",
27
+ "mysql2": "^3.16.0",
28
+ "pg": "^8.16.3",
29
+ "redis": "^5.10.0",
30
+ "tailwindcss": "^4.1.18"
31
+ },
32
+ "overrides": {
33
+ "tar": "^7.5.7",
34
+ "undici": "^6.23.0"
27
35
  },
28
36
  "devDependencies": {
29
37
  "@eslint/js": "^9.33.0",
@@ -31,7 +39,7 @@
31
39
  "@semantic-release/commit-analyzer": "^13.0.1",
32
40
  "@semantic-release/git": "^10.0.1",
33
41
  "@semantic-release/github": "^12.0.2",
34
- "@semantic-release/npm": "^13.1.3",
42
+ "@semantic-release/npm": "^13.1.2",
35
43
  "@semantic-release/release-notes-generator": "^14.1.0",
36
44
  "conventional-changelog-conventionalcommits": "^9.1.0",
37
45
  "eslint": "^9.33.0",
@@ -42,7 +50,8 @@
42
50
  "jest": "^30.0.5",
43
51
  "lint-staged": "^16.1.5",
44
52
  "prettier": "3.6.2",
45
- "semantic-release": "^25.0.2"
53
+ "semantic-release": "^25.0.2",
54
+ "sqlite3": "^5.1.7"
46
55
  },
47
56
  "scripts": {
48
57
  "lint": "eslint .",