katanakit-js 2.2.1 → 2.12.9

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 (148) hide show
  1. package/README.md +72 -437
  2. package/dist/adapters/astro/astro.service.d.ts +103 -15
  3. package/dist/adapters/astro/astro.service.d.ts.map +1 -1
  4. package/dist/adapters/astro/astro.service.js +145 -75
  5. package/dist/adapters/astro/astro.service.js.map +1 -1
  6. package/dist/adapters/astro/index.d.ts +1 -1
  7. package/dist/adapters/astro/index.d.ts.map +1 -1
  8. package/dist/adapters/astro/index.js +1 -1
  9. package/dist/adapters/astro/index.js.map +1 -1
  10. package/dist/adapters/astro/rss.service.d.ts +85 -105
  11. package/dist/adapters/astro/rss.service.d.ts.map +1 -1
  12. package/dist/adapters/astro/rss.service.js +172 -168
  13. package/dist/adapters/astro/rss.service.js.map +1 -1
  14. package/dist/adapters/astro/seo.service.d.ts +10 -0
  15. package/dist/adapters/astro/seo.service.d.ts.map +1 -0
  16. package/dist/adapters/astro/seo.service.js +3 -0
  17. package/dist/adapters/astro/seo.service.js.map +1 -0
  18. package/dist/adapters/express/app.d.ts +30 -1
  19. package/dist/adapters/express/app.d.ts.map +1 -1
  20. package/dist/adapters/express/app.js +31 -3
  21. package/dist/adapters/express/app.js.map +1 -1
  22. package/dist/adapters/express/index.d.ts +2 -2
  23. package/dist/adapters/express/index.d.ts.map +1 -1
  24. package/dist/adapters/express/index.js +2 -2
  25. package/dist/adapters/express/index.js.map +1 -1
  26. package/dist/adapters/express/main.js +2 -2
  27. package/dist/adapters/express/main.js.map +1 -1
  28. package/dist/adapters/express/products.controller.d.ts +67 -8
  29. package/dist/adapters/express/products.controller.d.ts.map +1 -1
  30. package/dist/adapters/express/products.controller.js +105 -49
  31. package/dist/adapters/express/products.controller.js.map +1 -1
  32. package/dist/adapters/express/server.d.ts +37 -13
  33. package/dist/adapters/express/server.d.ts.map +1 -1
  34. package/dist/adapters/express/server.js +118 -53
  35. package/dist/adapters/express/server.js.map +1 -1
  36. package/dist/adapters/nuxt/nuxt.service.d.ts +8 -6
  37. package/dist/adapters/nuxt/nuxt.service.d.ts.map +1 -1
  38. package/dist/adapters/nuxt/nuxt.service.js +34 -10
  39. package/dist/adapters/nuxt/nuxt.service.js.map +1 -1
  40. package/dist/adapters/vue/vue.service.d.ts +5 -2
  41. package/dist/adapters/vue/vue.service.d.ts.map +1 -1
  42. package/dist/adapters/vue/vue.service.js +41 -7
  43. package/dist/adapters/vue/vue.service.js.map +1 -1
  44. package/dist/config/index.d.ts +2 -1
  45. package/dist/config/index.d.ts.map +1 -1
  46. package/dist/config/index.js +1 -1
  47. package/dist/config/index.js.map +1 -1
  48. package/dist/config/seo-meta.types.d.ts +177 -0
  49. package/dist/config/seo-meta.types.d.ts.map +1 -0
  50. package/dist/config/seo-meta.types.js +11 -0
  51. package/dist/config/seo-meta.types.js.map +1 -0
  52. package/dist/config/seo.service.d.ts +41 -58
  53. package/dist/config/seo.service.d.ts.map +1 -1
  54. package/dist/config/seo.service.js +468 -136
  55. package/dist/config/seo.service.js.map +1 -1
  56. package/dist/config/site.config.d.ts +10 -50
  57. package/dist/config/site.config.d.ts.map +1 -1
  58. package/dist/config/site.config.js +8 -36
  59. package/dist/config/site.config.js.map +1 -1
  60. package/dist/core/index.d.ts +1 -3
  61. package/dist/core/index.d.ts.map +1 -1
  62. package/dist/core/index.js +1 -3
  63. package/dist/core/index.js.map +1 -1
  64. package/dist/core/services/dates.service.d.ts +149 -22
  65. package/dist/core/services/dates.service.d.ts.map +1 -1
  66. package/dist/core/services/dates.service.js +201 -54
  67. package/dist/core/services/dates.service.js.map +1 -1
  68. package/dist/core/services/error.service.d.ts +32 -20
  69. package/dist/core/services/error.service.d.ts.map +1 -1
  70. package/dist/core/services/error.service.js +44 -32
  71. package/dist/core/services/error.service.js.map +1 -1
  72. package/dist/core/services/formatter.service.d.ts +245 -35
  73. package/dist/core/services/formatter.service.d.ts.map +1 -1
  74. package/dist/core/services/formatter.service.js +281 -57
  75. package/dist/core/services/formatter.service.js.map +1 -1
  76. package/dist/core/services/generator.service.d.ts +115 -26
  77. package/dist/core/services/generator.service.d.ts.map +1 -1
  78. package/dist/core/services/generator.service.js +191 -56
  79. package/dist/core/services/generator.service.js.map +1 -1
  80. package/dist/core/services/geometry.service.d.ts +369 -39
  81. package/dist/core/services/geometry.service.d.ts.map +1 -1
  82. package/dist/core/services/geometry.service.js +424 -66
  83. package/dist/core/services/geometry.service.js.map +1 -1
  84. package/dist/core/services/http.service.d.ts +244 -21
  85. package/dist/core/services/http.service.d.ts.map +1 -1
  86. package/dist/core/services/http.service.js +419 -98
  87. package/dist/core/services/http.service.js.map +1 -1
  88. package/dist/core/services/logger.service.d.ts +95 -29
  89. package/dist/core/services/logger.service.d.ts.map +1 -1
  90. package/dist/core/services/logger.service.js +167 -41
  91. package/dist/core/services/logger.service.js.map +1 -1
  92. package/dist/core/services/reactive.service.d.ts +146 -19
  93. package/dist/core/services/reactive.service.d.ts.map +1 -1
  94. package/dist/core/services/reactive.service.js +278 -137
  95. package/dist/core/services/reactive.service.js.map +1 -1
  96. package/dist/core/services/timing.service.d.ts +142 -20
  97. package/dist/core/services/timing.service.d.ts.map +1 -1
  98. package/dist/core/services/timing.service.js +324 -185
  99. package/dist/core/services/timing.service.js.map +1 -1
  100. package/dist/core/services/utils.service.d.ts +228 -43
  101. package/dist/core/services/utils.service.d.ts.map +1 -1
  102. package/dist/core/services/utils.service.js +305 -125
  103. package/dist/core/services/utils.service.js.map +1 -1
  104. package/dist/infrastructure/dom/dom.service.d.ts +307 -44
  105. package/dist/infrastructure/dom/dom.service.d.ts.map +1 -1
  106. package/dist/infrastructure/dom/dom.service.js +408 -129
  107. package/dist/infrastructure/dom/dom.service.js.map +1 -1
  108. package/dist/infrastructure/index.d.ts +0 -3
  109. package/dist/infrastructure/index.d.ts.map +1 -1
  110. package/dist/infrastructure/index.js +0 -3
  111. package/dist/infrastructure/index.js.map +1 -1
  112. package/dist/infrastructure/observer/observer.service.d.ts +124 -31
  113. package/dist/infrastructure/observer/observer.service.d.ts.map +1 -1
  114. package/dist/infrastructure/observer/observer.service.js +227 -131
  115. package/dist/infrastructure/observer/observer.service.js.map +1 -1
  116. package/dist/infrastructure/sensors/sensors.service.d.ts +154 -22
  117. package/dist/infrastructure/sensors/sensors.service.d.ts.map +1 -1
  118. package/dist/infrastructure/sensors/sensors.service.js +264 -112
  119. package/dist/infrastructure/sensors/sensors.service.js.map +1 -1
  120. package/dist/infrastructure/storage/storage.service.d.ts +123 -45
  121. package/dist/infrastructure/storage/storage.service.d.ts.map +1 -1
  122. package/dist/infrastructure/storage/storage.service.js +236 -66
  123. package/dist/infrastructure/storage/storage.service.js.map +1 -1
  124. package/dist/infrastructure/theme/theme.service.d.ts +93 -29
  125. package/dist/infrastructure/theme/theme.service.d.ts.map +1 -1
  126. package/dist/infrastructure/theme/theme.service.js +198 -96
  127. package/dist/infrastructure/theme/theme.service.js.map +1 -1
  128. package/dist/infrastructure/viewport/viewport.service.d.ts +233 -35
  129. package/dist/infrastructure/viewport/viewport.service.d.ts.map +1 -1
  130. package/dist/infrastructure/viewport/viewport.service.js +358 -139
  131. package/dist/infrastructure/viewport/viewport.service.js.map +1 -1
  132. package/dist/infrastructure/worker/worker.service.d.ts +84 -38
  133. package/dist/infrastructure/worker/worker.service.d.ts.map +1 -1
  134. package/dist/infrastructure/worker/worker.service.js +234 -133
  135. package/dist/infrastructure/worker/worker.service.js.map +1 -1
  136. package/dist/prisma/index.d.ts +2 -0
  137. package/dist/prisma/index.d.ts.map +1 -0
  138. package/dist/prisma/index.js +2 -0
  139. package/dist/prisma/index.js.map +1 -0
  140. package/dist/prisma/schema.json +11 -33
  141. package/dist/prisma/use-prisma.d.ts +68 -0
  142. package/dist/prisma/use-prisma.d.ts.map +1 -0
  143. package/dist/prisma/use-prisma.js +82 -0
  144. package/dist/prisma/use-prisma.js.map +1 -0
  145. package/dist/types/index.d.ts +20 -12
  146. package/dist/types/index.d.ts.map +1 -1
  147. package/package.json +124 -125
  148. package/CHANGELOG.md +0 -101
package/package.json CHANGED
@@ -1,127 +1,126 @@
1
1
  {
2
- "name": "katanakit-js",
3
- "version": "2.2.1",
4
- "description": "KatanaKit — a sharp, framework-agnostic TypeScript service toolkit organized with hexagonal architecture.",
5
- "type": "module",
6
- "main": "./dist/index.js",
7
- "module": "./dist/index.js",
8
- "types": "./dist/index.d.ts",
9
- "exports": {
10
- ".": {
11
- "types": "./dist/index.d.ts",
12
- "import": "./dist/index.js"
13
- },
14
- "./adapters/express": {
15
- "types": "./dist/adapters/express/index.d.ts",
16
- "import": "./dist/adapters/express/index.js"
17
- },
18
- "./adapters/nuxt": {
19
- "types": "./dist/adapters/nuxt/index.d.ts",
20
- "import": "./dist/adapters/nuxt/index.js"
21
- },
22
- "./adapters/vue": {
23
- "types": "./dist/adapters/vue/index.d.ts",
24
- "import": "./dist/adapters/vue/index.js"
25
- }
26
- },
27
- "files": [
28
- "dist"
29
- ],
30
- "sideEffects": false,
31
- "engines": {
32
- "node": ">=22.18.0"
33
- },
34
- "publishConfig": {
35
- "access": "public"
36
- },
37
- "scripts": {
38
- "build": "tsc -p tsconfig.json",
39
- "dev": "bun run src/adapters/express/main.ts",
40
- "start": "bun run src/adapters/express/main.ts",
41
- "typecheck": "tsc --noEmit",
42
- "test": "vitest run",
43
- "test:watch": "vitest",
44
- "lint": "biome lint ./src",
45
- "lint:fix": "biome lint --write ./src",
46
- "format": "biome format ./src",
47
- "format:fix": "biome format --write ./src",
48
- "check": "biome check ./src",
49
- "check:fix": "biome check --write ./src",
50
- "prepublishOnly": "bun run check && bun run test && bun run build",
51
- "publish:patch": "npm version patch --no-git-tag-version && npm publish",
52
- "publish:minor": "npm version minor --no-git-tag-version && npm publish",
53
- "publish:major": "npm version major --no-git-tag-version && npm publish",
54
- "publish:beta": "npm version prerelease --no-git-tag-version && npm publish --tag beta"
55
- },
56
- "repository": {
57
- "type": "git",
58
- "url": "git@github.com:senseikatana/katanakit-js.git"
59
- },
60
- "keywords": [
61
- "api",
62
- "fetch",
63
- "http-client",
64
- "url-builder",
65
- "typescript",
66
- "hexagonal-architecture",
67
- "astro",
68
- "express",
69
- "nuxt",
70
- "vue",
71
- "singleton",
72
- "observer",
73
- "factory"
74
- ],
75
- "author": "senseikatana - Sergio Jurado",
76
- "license": "MIT",
77
- "bugs": {
78
- "url": "https://github.com/senseikatana/katanakit-js.git/issues"
79
- },
80
- "homepage": "https://github.com/senseikatana/katanakit-js.git#readme",
81
- "dependencies": {
82
- "@js-temporal/polyfill": "^0.5.1"
83
- },
84
- "peerDependencies": {
85
- "@prisma/orm-postgres": ">=8.0.0-rc.0",
86
- "cors": ">=2.8.0",
87
- "dotenv": ">=16.0.0",
88
- "express": ">=5.0.0",
89
- "vue": ">=3.0.0"
90
- },
91
- "peerDependenciesMeta": {
92
- "@prisma/orm-postgres": {
93
- "optional": true
94
- },
95
- "cors": {
96
- "optional": true
97
- },
98
- "dotenv": {
99
- "optional": true
100
- },
101
- "express": {
102
- "optional": true
103
- },
104
- "vue": {
105
- "optional": true
106
- }
107
- },
108
- "devDependencies": {
109
- "@biomejs/biome": "^2.5.12",
110
- "@prisma/cli-engine": "0.3.0",
111
- "@prisma/client": "^7.10.0",
112
- "@prisma/extension-accelerate": "^3.0.1",
113
- "@prisma/orm-postgres": "8.0.0-rc.8",
114
- "@types/bun": "latest",
115
- "@types/cors": "^2.8.19",
116
- "@types/express": "^5.0.6",
117
- "@types/node": "^26.4.1",
118
- "cors": "^2.8.6",
119
- "dotenv": "^17.4.2",
120
- "express": "^5.2.1",
121
- "prisma": "8.0.0-rc.12",
122
- "typescript": "^7.0.2",
123
- "vite": "^8.2.2",
124
- "vitest": "^5.0.0",
125
- "vue": "^3.5.0"
126
- }
2
+ "name": "katanakit-js",
3
+ "version": "2.12.9",
4
+ "description": "KatanaKit — a sharp, framework-agnostic TypeScript service toolkit organized with hexagonal architecture.",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "module": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.js",
13
+ "default": "./dist/index.js"
14
+ },
15
+ "./adapters/express": {
16
+ "types": "./dist/adapters/express/index.d.ts",
17
+ "import": "./dist/adapters/express/index.js",
18
+ "default": "./dist/adapters/express/index.js"
19
+ },
20
+ "./adapters/nuxt": {
21
+ "types": "./dist/adapters/nuxt/index.d.ts",
22
+ "import": "./dist/adapters/nuxt/index.js",
23
+ "default": "./dist/adapters/nuxt/index.js"
24
+ },
25
+ "./adapters/vue": {
26
+ "types": "./dist/adapters/vue/index.d.ts",
27
+ "import": "./dist/adapters/vue/index.js",
28
+ "default": "./dist/adapters/vue/index.js"
29
+ },
30
+ "./adapters/astro": {
31
+ "types": "./dist/adapters/astro/index.d.ts",
32
+ "import": "./dist/adapters/astro/index.js",
33
+ "default": "./dist/adapters/astro/index.js"
34
+ },
35
+ "./prisma": {
36
+ "types": "./dist/prisma/index.d.ts",
37
+ "import": "./dist/prisma/index.js",
38
+ "default": "./dist/prisma/index.js"
39
+ },
40
+ "./package.json": "./package.json"
41
+ },
42
+ "files": [
43
+ "dist"
44
+ ],
45
+ "sideEffects": false,
46
+ "engines": {
47
+ "node": ">=22.18.0"
48
+ },
49
+ "publishConfig": {
50
+ "access": "public"
51
+ },
52
+ "scripts": {
53
+ "dev": "tsx src/adapters/express/main.ts",
54
+ "check": "biome check ./src && tsc --noEmit && vitest run",
55
+ "fix": "biome check --write ./src && tsc --noEmit && vitest run",
56
+ "build": "yarn run check && tsc -p tsconfig.json",
57
+ "release": "yarn build && npm version",
58
+ "docs": "yarn --cwd docs"
59
+ },
60
+ "repository": {
61
+ "type": "git",
62
+ "url": "git@github.com:senseikatana/katanakit-js.git"
63
+ },
64
+ "keywords": [
65
+ "api",
66
+ "fetch",
67
+ "http-client",
68
+ "url-builder",
69
+ "typescript",
70
+ "hexagonal-architecture",
71
+ "astro",
72
+ "express",
73
+ "nuxt",
74
+ "vue",
75
+ "singleton",
76
+ "observer",
77
+ "factory"
78
+ ],
79
+ "author": "senseikatana - Sergio Jurado",
80
+ "license": "MIT",
81
+ "bugs": {
82
+ "url": "https://senseikatana.github.io/katanakit-js/issues"
83
+ },
84
+ "unpkg": "./dist/index.js",
85
+ "jsdelivr": "./dist/index.js",
86
+ "dependencies": {
87
+ "@js-temporal/polyfill": "^0.5.1",
88
+ "@prisma/orm-postgres": "^8.0.0-rc.8"
89
+ },
90
+ "peerDependencies": {
91
+ "cors": ">=2.8.0",
92
+ "dotenv": ">=16.0.0",
93
+ "express": ">=5.0.0",
94
+ "vue": ">=3.0.0"
95
+ },
96
+ "peerDependenciesMeta": {
97
+ "cors": {
98
+ "optional": true
99
+ },
100
+ "dotenv": {
101
+ "optional": true
102
+ },
103
+ "express": {
104
+ "optional": true
105
+ },
106
+ "vue": {
107
+ "optional": true
108
+ }
109
+ },
110
+ "devDependencies": {
111
+ "@biomejs/biome": "^2.5.12",
112
+ "@types/bun": "^1.4.1",
113
+ "@types/cors": "^2.8.19",
114
+ "@types/express": "^5.0.6",
115
+ "@types/node": "^26.5.0",
116
+ "cors": "^2.8.6",
117
+ "dotenv": "^17.4.2",
118
+ "express": "^5.2.1",
119
+ "prisma": "^8.0.0-rc.13",
120
+ "tsx": "^4.23.13",
121
+ "typescript": "^7.0.2",
122
+ "vite": "^8.2.2",
123
+ "vitest": "^5.0.0",
124
+ "vue": "^3.5.42"
125
+ }
127
126
  }
package/CHANGELOG.md DELETED
@@ -1,101 +0,0 @@
1
- # Changelog
2
-
3
- All notable changes to this project are documented in this file.
4
-
5
- The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
- and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
-
8
- ## [2.1.4] - Unreleased
9
-
10
- Current development version. This is the first release published under the
11
- **`katanakit-js`** npm name (previous development releases were published as
12
- `katanakit-dev`).
13
-
14
- ### Added
15
-
16
- - **Vue adapter** — new `katanakit-js/adapters/vue` subpath exporting the
17
- `useKatanaFetch` composable, which bridges KatanaKit Safe Results to Vue 3
18
- reactivity (`data`, `error`, `loading`, `refetch`). Accepts a reactive `Ref`
19
- of `UrlOptions` and refetches automatically on change. `vue` is an optional
20
- peer dependency.
21
- - **Nuxt adapter** — new `katanakit-js/adapters/nuxt` subpath exporting three
22
- pure helpers that bridge KatanaKit Safe Results to Nuxt/Nitro server routes:
23
- `useUnwrap(result, context?)`, `useSafeResponse(result)` and
24
- `useEventResponse(event, result)`. They avoid a hard dependency on `h3`
25
- (which ships with Nuxt).
26
- - **Site config and SEO module** — new `src/config/` layer with
27
- `siteConfig`/`SiteConfig` and pure SEO helpers (`useGenerateMetaTags`,
28
- `useHeadTags`, `useTitle`, `useRssHeadLink`), re-exported from the main
29
- barrel. Includes HTML/attribute escaping and JSON-LD breakout protection.
30
- - **`publish:*` scripts** — `publish:patch`, `publish:minor`, `publish:major`
31
- and `publish:beta` (tagged `beta`) with a `prepublishOnly` gate that runs
32
- Biome, tests and the build before publishing.
33
- - New Vitest suites for RSS, Nuxt and SEO services (57 tests across 7 files).
34
-
35
- ### Changed
36
-
37
- - **Renamed the npm package** from `katanakit-dev` to **`katanakit-js`**
38
- (version bumped to 2.1.4). The `exports` map now exposes the root entry plus
39
- two framework subpaths: `katanakit-js/adapters/express` and
40
- `katanakit-js/adapters/nuxt`.
41
- - **Restructured dependencies** — only `@js-temporal/polyfill` remains a
42
- runtime dependency; `express`, `cors`, `dotenv` and `@prisma/orm-postgres`
43
- are now **optional peer dependencies** installed only by consumers that use
44
- the Express adapter or the Prisma layer.
45
- - Upgraded the toolchain: Biome to v2 (migrated `biome.json` schema), Vitest to
46
- v5, TypeScript to v7; Node engine floor raised to `>=22.18.0`.
47
- - Hardened the Express reference adapter: CORS defaults to the comma-separated
48
- `CORS_ORIGINS` allow-list (localhost fallback), `x-powered-by` is disabled
49
- and JSON/urlencoded bodies are capped at 100 kb.
50
-
51
- ### Fixed
52
-
53
- - **Pure ESM `.js` exports** — all relative imports in `src/` now use explicit
54
- `.js` extensions (`module: nodenext`), so Node's ESM loader and bundlers
55
- resolve the emitted `dist/` correctly.
56
- - **`WorkerService` pool correlation** — `useRunPool` now correlates responses
57
- by echoing a `taskId` from the worker blob, fixing concurrent race
58
- conditions.
59
- - **`useEncrypt` salt** — generates a random 128-bit salt when none is provided
60
- instead of relying on a fixed default.
61
- - **SEO JSON-LD escaping** — `<`, `>` and `&` are escaped inside the
62
- `application/ld+json` script to prevent `</script>` breakout.
63
-
64
- ## [2.0.0] - 2026-09-03
65
-
66
- Developed and published as `katanakit-dev`.
67
-
68
- ### Changed
69
-
70
- - **Reorganized the project with hexagonal architecture** into `types/`,
71
- `core/services/` (ports + pure services), `infrastructure/` (browser/runtime
72
- adapters), `adapters/` (Astro + Express) and `prisma/`, replacing the previous
73
- flat `helpers/`/`api/` layout.
74
- - Exposed the public API through barrel files (`src/index.ts` and per-layer
75
- `index.ts`).
76
-
77
- ### Added
78
-
79
- - Added `biome.json` and `vitest.config.ts`; wired `typecheck`, `build`, `test`,
80
- `lint`, `format` and `check` scripts.
81
- - Added Vitest unit tests for the HTTP client, logger, storage, geometry, errors
82
- and reactive signals.
83
- - Added English documentation (`README.md`, `CONTRIBUTING.md`, `docs/`,
84
- `SECURITY.md`).
85
-
86
- ### Fixed
87
-
88
- - Fixed TypeScript compile errors: broken imports, broken singleton guards
89
- (`TimingService` and `ViewportService`), the `FIND_ENTRY` scope bug in
90
- `AstroService`, and Express `Request`/`Response` typing.
91
- - Removed all side effects on import (top-level `fetch` to dummyjson.com,
92
- `console.log` calls, storage writes and timers).
93
- - Fixed the Express server: `listen` now uses the configured port/host, the user
94
- router is mounted, and handler `(req, res)` argument order is correct.
95
- - Fixed the logger call sites (level is now the first argument of `useLog`).
96
-
97
- ### Removed
98
-
99
- - Removed duplicate type definitions (unified in `src/types/`), dead code, empty
100
- files and the broken signals draft.
101
- - Moved demos to `examples/` and dropped the obsolete `wiki/` documentation.