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.
- package/.agent/rules/coding.md +27 -0
- package/.agent/rules/memory.md +33 -0
- package/.agent/rules/project.md +30 -0
- package/.agent/rules/workflow.md +16 -0
- package/.github/workflows/auto-pr-description.yml +3 -1
- package/.github/workflows/release.yml +42 -1
- package/.github/workflows/test-coverage.yml +6 -5
- package/.github/workflows/test-publish.yml +36 -0
- package/.husky/pre-commit +10 -0
- package/.husky/pre-push +13 -0
- package/.releaserc.js +3 -3
- package/CHANGELOG.md +184 -0
- package/README.md +53 -34
- package/bin/odac.js +181 -49
- package/client/odac.js +878 -995
- package/docs/backend/01-overview/03-development-server.md +39 -46
- package/docs/backend/02-structure/01-typical-project-layout.md +59 -25
- package/docs/backend/03-config/00-configuration-overview.md +15 -6
- package/docs/backend/03-config/01-database-connection.md +3 -3
- package/docs/backend/03-config/02-static-route-mapping-optional.md +1 -1
- package/docs/backend/03-config/03-request-timeout.md +1 -1
- package/docs/backend/03-config/04-environment-variables.md +4 -4
- package/docs/backend/03-config/05-early-hints.md +2 -2
- package/docs/backend/04-routing/02-controller-less-view-routes.md +9 -3
- package/docs/backend/04-routing/03-api-and-data-routes.md +18 -0
- package/docs/backend/04-routing/07-cron-jobs.md +17 -1
- package/docs/backend/04-routing/09-websocket.md +29 -0
- package/docs/backend/05-controllers/01-how-to-build-a-controller.md +48 -3
- package/docs/backend/05-controllers/02-your-trusty-odac-assistant.md +2 -0
- package/docs/backend/05-controllers/03-controller-classes.md +61 -55
- package/docs/backend/05-forms/01-custom-forms.md +103 -95
- package/docs/backend/05-forms/02-automatic-database-insert.md +21 -21
- package/docs/backend/06-request-and-response/01-the-request-object-what-is-the-user-asking-for.md +17 -0
- package/docs/backend/07-views/02-rendering-a-view.md +1 -1
- package/docs/backend/07-views/03-variables.md +5 -5
- package/docs/backend/07-views/04-request-data.md +1 -1
- package/docs/backend/07-views/08-backend-javascript.md +1 -1
- package/docs/backend/07-views/10-styling-and-tailwind.md +93 -0
- package/docs/backend/08-database/01-getting-started.md +100 -0
- package/docs/backend/08-database/02-basics.md +136 -0
- package/docs/backend/08-database/03-advanced.md +84 -0
- package/docs/backend/08-database/04-migrations.md +48 -0
- package/docs/backend/09-validation/01-the-validator-service.md +1 -0
- package/docs/backend/10-authentication/03-register.md +9 -2
- package/docs/backend/10-authentication/04-odac-register-forms.md +48 -48
- package/docs/backend/10-authentication/05-session-management.md +16 -2
- package/docs/backend/10-authentication/06-odac-login-forms.md +50 -50
- package/docs/backend/10-authentication/07-magic-links.md +134 -0
- package/docs/backend/11-mail/01-the-mail-service.md +118 -28
- package/docs/backend/12-streaming/01-streaming-overview.md +2 -2
- package/docs/backend/13-utilities/01-odac-var.md +7 -7
- package/docs/backend/13-utilities/02-ipc.md +73 -0
- package/docs/frontend/01-overview/01-introduction.md +5 -1
- package/docs/frontend/02-ajax-navigation/01-quick-start.md +1 -1
- package/docs/index.json +21 -125
- package/eslint.config.mjs +5 -47
- package/jest.config.js +1 -1
- package/package.json +16 -7
- package/src/Auth.js +414 -121
- package/src/Config.js +12 -7
- package/src/Database.js +188 -0
- package/src/Env.js +3 -1
- package/src/Ipc.js +337 -0
- package/src/Lang.js +9 -2
- package/src/Mail.js +408 -37
- package/src/Odac.js +105 -40
- package/src/Request.js +71 -49
- package/src/Route/Cron.js +62 -18
- package/src/Route/Internal.js +215 -12
- package/src/Route/Middleware.js +7 -2
- package/src/Route.js +372 -109
- package/src/Server.js +118 -12
- package/src/Storage.js +169 -0
- package/src/Token.js +6 -4
- package/src/Validator.js +95 -3
- package/src/Var.js +22 -6
- package/src/View/EarlyHints.js +43 -33
- package/src/View/Form.js +210 -28
- package/src/View.js +108 -7
- package/src/WebSocket.js +18 -3
- package/template/odac.json +5 -0
- package/template/package.json +3 -1
- package/template/route/www.js +12 -10
- package/template/view/content/home.html +3 -3
- package/template/view/head/main.html +2 -2
- package/test/Client.test.js +168 -0
- package/test/Config.test.js +112 -0
- package/test/Lang.test.js +92 -0
- package/test/Odac.test.js +86 -0
- package/test/{framework/middleware.test.js → Route/Middleware.test.js} +2 -2
- package/test/{framework/Route.test.js → Route.test.js} +1 -1
- package/test/{framework/View → View}/EarlyHints.test.js +1 -1
- package/test/{framework/WebSocket.test.js → WebSocket.test.js} +2 -2
- package/test/scripts/check-coverage.js +4 -4
- package/docs/backend/08-database/01-database-connection.md +0 -99
- package/docs/backend/08-database/02-using-mysql.md +0 -322
- package/src/Mysql.js +0 -575
- package/template/config.json +0 -5
- package/test/cli/Cli.test.js +0 -36
- package/test/core/Candy.test.js +0 -234
- package/test/core/Commands.test.js +0 -538
- package/test/core/Config.test.js +0 -1432
- package/test/core/Lang.test.js +0 -250
- package/test/core/Process.test.js +0 -156
- package/test/server/Api.test.js +0 -647
- package/test/server/DNS.test.js +0 -2050
- package/test/server/DNS.test.js.bak +0 -2084
- package/test/server/Hub.test.js +0 -497
- package/test/server/Log.test.js +0 -73
- package/test/server/Mail.account.test_.js +0 -460
- package/test/server/Mail.init.test_.js +0 -411
- package/test/server/Mail.test_.js +0 -1340
- package/test/server/SSL.test_.js +0 -1491
- package/test/server/Server.test.js +0 -765
- package/test/server/Service.test_.js +0 -1127
- package/test/server/Subdomain.test.js +0 -440
- package/test/server/Web/Firewall.test.js +0 -175
- package/test/server/Web/Proxy.test.js +0 -397
- package/test/server/Web.test.js +0 -1494
- package/test/server/__mocks__/acme-client.js +0 -17
- package/test/server/__mocks__/bcrypt.js +0 -50
- package/test/server/__mocks__/child_process.js +0 -389
- package/test/server/__mocks__/crypto.js +0 -432
- package/test/server/__mocks__/fs.js +0 -450
- package/test/server/__mocks__/globalOdac.js +0 -227
- package/test/server/__mocks__/http.js +0 -575
- package/test/server/__mocks__/https.js +0 -272
- package/test/server/__mocks__/index.js +0 -249
- package/test/server/__mocks__/mail/server.js +0 -100
- package/test/server/__mocks__/mail/smtp.js +0 -31
- package/test/server/__mocks__/mailparser.js +0 -81
- package/test/server/__mocks__/net.js +0 -369
- package/test/server/__mocks__/node-forge.js +0 -328
- package/test/server/__mocks__/os.js +0 -320
- package/test/server/__mocks__/path.js +0 -291
- package/test/server/__mocks__/selfsigned.js +0 -8
- package/test/server/__mocks__/server/src/mail/server.js +0 -100
- package/test/server/__mocks__/server/src/mail/smtp.js +0 -31
- package/test/server/__mocks__/smtp-server.js +0 -106
- package/test/server/__mocks__/sqlite3.js +0 -394
- package/test/server/__mocks__/testFactories.js +0 -299
- package/test/server/__mocks__/testHelpers.js +0 -363
- 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: ['
|
|
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: ['
|
|
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: ['
|
|
83
|
-
ignores: ['
|
|
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: ['
|
|
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: ['
|
|
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
|
|
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/
|
|
21
|
+
"url": "https://github.com/odac-run/odac.js.git"
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
24
|
-
"
|
|
25
|
-
"
|
|
26
|
-
"
|
|
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.
|
|
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 .",
|