miki-template 2.3.1 → 2.3.2

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 (159) hide show
  1. package/package.json +45 -1
  2. package/.eslintrc.json +0 -16
  3. package/.github/release-notes/v1.3.1.md +0 -55
  4. package/.github/release-notes/v1.3.3.md +0 -77
  5. package/.github/release-notes/v1.3.7.md +0 -20
  6. package/.github/workflows/ci.yml +0 -42
  7. package/.github/workflows/docs.yml +0 -107
  8. package/.github/workflows/release.yml +0 -107
  9. package/AGENT.md +0 -71
  10. package/API_REFERENCE.md +0 -341
  11. package/CHANGELOG.md +0 -173
  12. package/CODE_OF_CONDUCT.md +0 -14
  13. package/CONTRIBUTING.md +0 -27
  14. package/ROADMAP.md +0 -40
  15. package/assets/banner.png +0 -0
  16. package/assets/logo.png +0 -0
  17. package/benchmarks/ejs-results.json +0 -17
  18. package/benchmarks/ejs.js +0 -38
  19. package/benchmarks/handlebars-results.json +0 -17
  20. package/benchmarks/handlebars.js +0 -45
  21. package/benchmarks/miki-results.json +0 -17
  22. package/benchmarks/miki.js +0 -39
  23. package/benchmarks/pug-results.json +0 -17
  24. package/benchmarks/pug.js +0 -38
  25. package/benchmarks/report.json +0 -17
  26. package/benchmarks/run.js +0 -81
  27. package/benchmarks/stress.mjs +0 -647
  28. package/benchmarks/templates/large.dtpl +0 -7
  29. package/benchmarks/templates/medium.dtpl +0 -3
  30. package/benchmarks/templates/small.dtpl +0 -7
  31. package/context/component.md +0 -109
  32. package/context/prd.md +0 -131
  33. package/context/project-structure.md +0 -33
  34. package/dir/base.html +0 -23
  35. package/dir/cmpnt.html +0 -11
  36. package/dir/footer.html +0 -3
  37. package/dir/home.html +0 -80
  38. package/dir/index.html +0 -80
  39. package/dir/navbar.html +0 -9
  40. package/docs/api/async-render.md +0 -170
  41. package/docs/api/cache.md +0 -174
  42. package/docs/api/compile.md +0 -256
  43. package/docs/api/context-processors.md +0 -154
  44. package/docs/api/filters.md +0 -437
  45. package/docs/api/finder.md +0 -188
  46. package/docs/api/helpers.md +0 -106
  47. package/docs/api/i18n.md +0 -314
  48. package/docs/api/index.md +0 -108
  49. package/docs/api/libraries.md +0 -414
  50. package/docs/api/render-partial.md +0 -162
  51. package/docs/api/render.md +0 -184
  52. package/docs/api/security.md +0 -290
  53. package/docs/api/setup-express.md +0 -152
  54. package/docs/api/tags.md +0 -268
  55. package/docs/assets/banner.png +0 -0
  56. package/docs/assets/logo.png +0 -0
  57. package/docs/filter.md +0 -0
  58. package/docs/guide/advanced-usage.md +0 -794
  59. package/docs/guide/async-rendering.md +0 -616
  60. package/docs/guide/context-processors.md +0 -514
  61. package/docs/guide/custom-filters.md +0 -622
  62. package/docs/guide/custom-tags.md +0 -542
  63. package/docs/guide/filters.md +0 -1314
  64. package/docs/guide/getting-started.md +0 -204
  65. package/docs/guide/installation.md +0 -190
  66. package/docs/guide/partial-templates.md +0 -734
  67. package/docs/guide/quick-start.md +0 -444
  68. package/docs/guide/security.md +0 -690
  69. package/docs/guide/tags.md +0 -1566
  70. package/docs/guide/template-discovery.md +0 -340
  71. package/docs/guide/template-inheritance.md +0 -546
  72. package/docs/guide/what-is-miki-template.md +0 -28
  73. package/docs/guide/why-miki-template.md +0 -75
  74. package/docs/index.md +0 -86
  75. package/docs/integrations/elysia.md +0 -80
  76. package/docs/integrations/express.md +0 -219
  77. package/docs/integrations/fastify.md +0 -79
  78. package/docs/integrations/hono.md +0 -80
  79. package/docs/integrations/index.md +0 -68
  80. package/docs/integrations/koa.md +0 -90
  81. package/docs/integrations/nestjs.md +0 -80
  82. package/docs/integrations/tsed.md +0 -83
  83. package/docs/performance.md +0 -74
  84. package/eslint.config.mjs +0 -42
  85. package/ex.mjs +0 -36
  86. package/live-test/integrations/elysia-example.js +0 -16
  87. package/live-test/integrations/express-example.js +0 -24
  88. package/live-test/integrations/fastify-example.js +0 -20
  89. package/live-test/integrations/hono-example.js +0 -16
  90. package/live-test/integrations/koa-example.js +0 -30
  91. package/live-test/integrations/nestjs-example.js +0 -25
  92. package/live-test/integrations/smoke-test.js +0 -166
  93. package/live-test/integrations/tsed-example.js +0 -23
  94. package/live-test/package-lock.json +0 -1150
  95. package/live-test/package.json +0 -13
  96. package/live-test/packages/product/templates/product/detail.html +0 -7
  97. package/live-test/server.js +0 -38
  98. package/live-test/templates/app_templates/detail.html +0 -6
  99. package/live-test/views/base.html +0 -8
  100. package/live-test/views/child.html +0 -7
  101. package/live-test/views/home.html +0 -17
  102. package/live-test/views/index.html +0 -1
  103. package/miki-template-extension/.github/workflows/ci.yml +0 -116
  104. package/miki-template-extension/.vscodeignore +0 -7
  105. package/miki-template-extension/CHANGELOG.md +0 -99
  106. package/miki-template-extension/LICENSE +0 -21
  107. package/miki-template-extension/README.md +0 -273
  108. package/miki-template-extension/extension.js +0 -1013
  109. package/miki-template-extension/icon.png +0 -0
  110. package/miki-template-extension/icon.svg +0 -10
  111. package/miki-template-extension/miki-template-1.7.1.vsix +0 -0
  112. package/miki-template-extension/package.json +0 -280
  113. package/miki-template-extension/snippets/miki-template.json +0 -717
  114. package/miki-template-extension/syntaxes/language-configuration.json +0 -114
  115. package/miki-template-extension/syntaxes/miki-template.tmLanguage.json +0 -355
  116. package/miki-template-extension/tests/grammar-tests.json +0 -162
  117. package/miki-template-extension/tests/run-grammar-tests.js +0 -82
  118. package/mkdocs.yml +0 -195
  119. package/overrides/main.html +0 -26
  120. package/requirements-docs.txt +0 -2
  121. package/sample-app/package-lock.json +0 -901
  122. package/sample-app/package.json +0 -9
  123. package/sample-app/server.js +0 -14
  124. package/sample-app/views/index.html +0 -1
  125. package/scripts/build-vsix.js +0 -129
  126. package/scripts/build-vsix.ps1 +0 -15
  127. package/snippets/miki-template.json +0 -177
  128. package/src/asyncRender.js +0 -21
  129. package/src/types.d.ts +0 -107
  130. package/syntaxes/language-configuration.json +0 -26
  131. package/syntaxes/miki-template.tmLanguage.json +0 -146
  132. package/tests/asyncRender.test.js +0 -17
  133. package/tests/base.html +0 -6
  134. package/tests/child.html +0 -3
  135. package/tests/context_processors.test.js +0 -13
  136. package/tests/esm.test.mjs +0 -61
  137. package/tests/filters.test.js +0 -263
  138. package/tests/finder-appdirs.test.js +0 -19
  139. package/tests/finder.test.js +0 -17
  140. package/tests/fixtures/views/nested/index.html +0 -1
  141. package/tests/fixtures/views/partial.html +0 -1
  142. package/tests/fixtures/views/sub/deepfile.html +0 -1
  143. package/tests/fixtures/views-appdirs/product/site/detail.html +0 -1
  144. package/tests/include_security.test.js +0 -9
  145. package/tests/integration/README.md +0 -32
  146. package/tests/integration/features.test.cjs +0 -1681
  147. package/tests/integration/features.test.mjs +0 -1697
  148. package/tests/integration/finder.esm.test.mjs +0 -13
  149. package/tests/integration/partial-render.test.cjs +0 -13
  150. package/tests/integration/templates/base.miki +0 -6
  151. package/tests/integration/templates/child.miki +0 -6
  152. package/tests/integration/templates/index.html +0 -17
  153. package/tests/lexer.test.js +0 -45
  154. package/tests/parser.test.js +0 -57
  155. package/tests/partial.html +0 -1
  156. package/tests/partialdef.test.js +0 -79
  157. package/tests/production_checks.js +0 -57
  158. package/tests/security.test.js +0 -28
  159. package/tests/tags.test.js +0 -233
@@ -1,340 +0,0 @@
1
- # Smart Template Discovery
2
-
3
-
4
-
5
- miki-template includes a Django-inspired template finder that searches your project structure intelligently. You no longer need to manually configure every views directory or worry about `Failed to lookup view` errors when templates live in nested app folders.
6
-
7
-
8
-
9
- ## Table of Contents
10
-
11
-
12
-
13
- - [How It Works](#how-it-works)
14
-
15
- - [Supported Layouts](#supported-layouts)
16
-
17
- - [Express Integration](#express-integration)
18
-
19
- - [Custom Template Directory Names](#custom-template-directory-names)
20
-
21
- - [Manual Lookup](#manual-lookup)
22
-
23
- - [ESM Import](#esm-import)
24
-
25
- - [Next Steps](#next-steps)
26
-
27
-
28
-
29
- ---
30
-
31
-
32
-
33
- ## How It Works
34
-
35
-
36
-
37
- When you call `res.render('name')` or `render('name', ctx, { views })`, miki-template:
38
-
39
-
40
-
41
- 1. Resolves the view name against the configured views directories.
42
-
43
- 2. Searches recursively through subdirectories for matching files.
44
-
45
- 3. Recognizes app-style `templates/` directories automatically.
46
-
47
- 4. Supports custom directory names via `setAppTemplateDirNames()`.
48
-
49
-
50
-
51
- The search order is:
52
-
53
-
54
-
55
- 1. **Direct resolution** — if you pass `nested/path`, it resolves relative to each views root.
56
-
57
- 2. **Recursive search** — if you pass a bare name like `home`, the engine walks subdirectories searching for `home.html` or `home.miki`.
58
-
59
- 3. **App-style directories** — directories named `templates` (or whatever you configure) are treated as additional view roots at any depth.
60
-
61
-
62
-
63
- ## Supported Layouts
64
-
65
-
66
-
67
- ```text
68
-
69
- project/
70
-
71
- ├── views/
72
-
73
- │ └── home.html
74
-
75
- ├── app/
76
-
77
- │ └── templates/
78
-
79
- │ └── dashboard.html
80
-
81
- ├── packages/
82
-
83
- │ └── admin/
84
-
85
- │ └── templates/
86
-
87
- │ └── settings.html
88
-
89
- ```
90
-
91
-
92
-
93
- All of these are discoverable without extra configuration.
94
-
95
-
96
-
97
- ## Express Integration
98
-
99
-
100
-
101
- When you use `setupExpress()`, the engine automatically expands your views roots to include all directories that contain template files:
102
-
103
-
104
-
105
- === "CommonJS"
106
-
107
-
108
-
109
- ```javascript
110
-
111
- const express = require('express');
112
-
113
- const miki = require('miki-template');
114
-
115
-
116
-
117
- const app = express();
118
-
119
- miki.setupExpress(app, { extension: 'html', views: './views' });
120
-
121
-
122
-
123
- // Templates placed deeply in your project are found automatically:
124
-
125
- app.get('/', (req, res) => res.render('home'));
126
-
127
- app.get('/admin', (req, res) => res.render('settings'));
128
-
129
- ```
130
-
131
-
132
-
133
- === "ES Modules"
134
-
135
-
136
-
137
- ```javascript
138
-
139
- import express from 'express';
140
-
141
- import miki from 'miki-template';
142
-
143
-
144
-
145
- const app = express();
146
-
147
- miki.setupExpress(app, { extension: 'html', views: './views' });
148
-
149
-
150
-
151
- app.get('/', (req, res) => res.render('home'));
152
-
153
- app.get('/admin', (req, res) => res.render('settings'));
154
-
155
- ```
156
-
157
-
158
-
159
- You can also pass multiple roots:
160
-
161
-
162
-
163
- ```javascript
164
-
165
- miki.setupExpress(app, {
166
-
167
- extension: 'html',
168
-
169
- views: ['./views', './app/templates', './packages/*/templates']
170
-
171
- });
172
-
173
- ```
174
-
175
-
176
-
177
- ## Custom Template Directory Names
178
-
179
-
180
-
181
- If your project uses a different convention than `templates`, configure it globally:
182
-
183
-
184
-
185
- === "CommonJS"
186
-
187
-
188
-
189
- ```javascript
190
-
191
- const { setAppTemplateDirNames } = require('miki-template');
192
-
193
-
194
-
195
- setAppTemplateDirNames(['templates', 'views', 'pages']);
196
-
197
- ```
198
-
199
-
200
-
201
- === "ES Modules"
202
-
203
-
204
-
205
- ```javascript
206
-
207
- import { setAppTemplateDirNames } from 'miki-template';
208
-
209
-
210
-
211
- setAppTemplateDirNames(['templates', 'views', 'pages']);
212
-
213
- ```
214
-
215
-
216
-
217
- This affects both Express integration and manual `render()` / `findTemplateInViews()` calls.
218
-
219
-
220
-
221
- ## Manual Lookup
222
-
223
-
224
-
225
- You can use the finder directly:
226
-
227
-
228
-
229
- === "CommonJS"
230
-
231
-
232
-
233
- ```javascript
234
-
235
- const { findTemplateInViews } = require('miki-template');
236
-
237
-
238
-
239
- const found = findTemplateInViews('home', [
240
-
241
- './views',
242
-
243
- './app/templates'
244
-
245
- ]);
246
-
247
-
248
-
249
- console.log(found);
250
-
251
- // Output: /absolute/path/to/home.html
252
-
253
- ```
254
-
255
-
256
-
257
- === "ES Modules"
258
-
259
-
260
-
261
- ```javascript
262
-
263
- import { findTemplateInViews } from 'miki-template';
264
-
265
-
266
-
267
- const found = findTemplateInViews('home', [
268
-
269
- './views',
270
-
271
- './app/templates'
272
-
273
- ]);
274
-
275
-
276
-
277
- console.log(found);
278
-
279
- // Output: /absolute/path/to/home.html
280
-
281
- ```
282
-
283
-
284
-
285
- ### Finder Behavior
286
-
287
-
288
-
289
- - Searches recursively through subdirectories for bare template names.
290
-
291
- - Tries `.html` and `.miki` extensions when no extension is provided.
292
-
293
- - Also searches app-style `templates/` directories nested inside the views root.
294
-
295
- - Returns the first match found, or `null` if not found.
296
-
297
-
298
-
299
- ### ESM Import
300
-
301
-
302
-
303
- === "ES Modules"
304
-
305
-
306
-
307
- ```javascript
308
-
309
- import { findTemplateInViews, setAppTemplateDirNames } from 'miki-template';
310
-
311
-
312
-
313
- // Set custom directory names
314
-
315
- setAppTemplateDirNames(['templates', 'app_templates']);
316
-
317
-
318
-
319
- // Find a template
320
-
321
- const path = findTemplateInViews('detail', ['./views', './packages']);
322
-
323
- console.log(path);
324
-
325
- // → /absolute/path/to/packages/product/templates/detail.html
326
-
327
- ```
328
-
329
-
330
-
331
- ## Next Steps
332
-
333
-
334
-
335
- - [Partial Templates](./partial-templates.md)
336
-
337
- - [Template Inheritance](./template-inheritance.md)
338
-
339
- - [Integrations: Express](../integrations/express.md)
340
-