isite 2026.4.5 → 2026.6.1
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/AGENTS.md +72 -0
- package/README.md +5 -0
- package/apps/client-side/site_files/js/angular.min.js +1 -1
- package/desktop.ini +2 -0
- package/docs/agent-guide.md +51 -0
- package/docs/ai-context.md +130 -0
- package/docs/api-map.json +288 -0
- package/docs/examples-for-ai.md +186 -0
- package/docs/index.html +1009 -0
- package/docs/llms.txt +39 -0
- package/docs/script.js +86 -0
- package/docs/style.css +445 -0
- package/isite_files/js/angular.js +1 -1
- package/llms.txt +40 -0
- package/package.json +1 -1
package/docs/llms.txt
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# isite
|
|
2
|
+
|
|
3
|
+
isite is a CommonJS Node.js web framework for multi-language websites with automatic routing, server-side site file parsing, sessions, cookies, permissions, MongoDB helpers, uploads/downloads, WebSocket support, custom apps, and utilities.
|
|
4
|
+
|
|
5
|
+
## Documentation
|
|
6
|
+
|
|
7
|
+
- Main docs: ./index.html
|
|
8
|
+
- Agent guide: ./agent-guide.md
|
|
9
|
+
- AI context: ./ai-context.md
|
|
10
|
+
- API map: ./api-map.json
|
|
11
|
+
- Examples for AI: ./examples-for-ai.md
|
|
12
|
+
|
|
13
|
+
## Main source areas
|
|
14
|
+
|
|
15
|
+
- Core entry: ../index.js
|
|
16
|
+
- Routing: ../lib/routing.js
|
|
17
|
+
- Files: ../lib/fsm.js
|
|
18
|
+
- MongoDB wrapper: ../lib/mongodb.js
|
|
19
|
+
- Collection wrapper: ../lib/collection.js
|
|
20
|
+
- Security: ../lib/security.js
|
|
21
|
+
- Sessions: ../lib/sessions.js
|
|
22
|
+
- WebSocket: ../lib/ws.js and ../lib/wsClient.js
|
|
23
|
+
- Parser: ../lib/parser.js
|
|
24
|
+
- Apps: ../lib/app.js
|
|
25
|
+
- Utilities: ../object-options/lib/fn.js
|
|
26
|
+
- Events: ../object-options/lib/event.js
|
|
27
|
+
|
|
28
|
+
## Canonical startup
|
|
29
|
+
|
|
30
|
+
```js
|
|
31
|
+
var isite = require('isite');
|
|
32
|
+
var site = isite({ port: 8080 });
|
|
33
|
+
|
|
34
|
+
site.loadLocalApp('client-side');
|
|
35
|
+
site.loadLocalApp('security');
|
|
36
|
+
|
|
37
|
+
site.run();
|
|
38
|
+
```
|
|
39
|
+
|
package/docs/script.js
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
(function () {
|
|
2
|
+
var searchInput = document.getElementById('searchInput');
|
|
3
|
+
var sections = Array.prototype.slice.call(document.querySelectorAll('.doc-section'));
|
|
4
|
+
var navLinks = Array.prototype.slice.call(document.querySelectorAll('.nav a'));
|
|
5
|
+
var emptyState = document.getElementById('emptyState');
|
|
6
|
+
var topButton = document.getElementById('topButton');
|
|
7
|
+
|
|
8
|
+
function normalize(value) {
|
|
9
|
+
return String(value || '').toLowerCase().trim();
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
function sectionText(section) {
|
|
13
|
+
return normalize(section.innerText + ' ' + section.getAttribute('data-tags'));
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
function filterSections() {
|
|
17
|
+
var query = normalize(searchInput.value);
|
|
18
|
+
var visibleCount = 0;
|
|
19
|
+
|
|
20
|
+
sections.forEach(function (section) {
|
|
21
|
+
var isVisible = !query || sectionText(section).indexOf(query) !== -1;
|
|
22
|
+
section.classList.toggle('hidden', !isVisible);
|
|
23
|
+
if (isVisible) {
|
|
24
|
+
visibleCount += 1;
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
navLinks.forEach(function (link) {
|
|
29
|
+
var target = document.querySelector(link.getAttribute('href'));
|
|
30
|
+
link.style.display = !query || (target && !target.classList.contains('hidden')) ? '' : 'none';
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
emptyState.classList.toggle('show', visibleCount === 0);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function updateActiveNav() {
|
|
37
|
+
var current = sections.find(function (section) {
|
|
38
|
+
if (section.classList.contains('hidden')) {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
return section.getBoundingClientRect().top >= 0;
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
if (!current) {
|
|
45
|
+
current = sections.filter(function (section) {
|
|
46
|
+
return !section.classList.contains('hidden');
|
|
47
|
+
}).pop();
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
navLinks.forEach(function (link) {
|
|
51
|
+
link.classList.toggle('active', current && link.getAttribute('href') === '#' + current.id);
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
topButton.classList.toggle('show', window.scrollY > 480);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
function setupCopyButtons() {
|
|
58
|
+
document.querySelectorAll('pre').forEach(function (pre) {
|
|
59
|
+
var button = document.createElement('button');
|
|
60
|
+
button.className = 'copy-button';
|
|
61
|
+
button.type = 'button';
|
|
62
|
+
button.textContent = 'Copy';
|
|
63
|
+
button.addEventListener('click', function () {
|
|
64
|
+
var code = pre.querySelector('code').innerText;
|
|
65
|
+
navigator.clipboard.writeText(code).then(function () {
|
|
66
|
+
button.textContent = 'Copied';
|
|
67
|
+
window.setTimeout(function () {
|
|
68
|
+
button.textContent = 'Copy';
|
|
69
|
+
}, 1300);
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
pre.appendChild(button);
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
searchInput.addEventListener('input', filterSections);
|
|
77
|
+
window.addEventListener('scroll', updateActiveNav, { passive: true });
|
|
78
|
+
window.addEventListener('resize', updateActiveNav);
|
|
79
|
+
topButton.addEventListener('click', function () {
|
|
80
|
+
window.scrollTo({ top: 0, behavior: 'smooth' });
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
setupCopyButtons();
|
|
84
|
+
filterSections();
|
|
85
|
+
updateActiveNav();
|
|
86
|
+
})();
|
package/docs/style.css
ADDED
|
@@ -0,0 +1,445 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
--bg: #f7f8fb;
|
|
3
|
+
--surface: #ffffff;
|
|
4
|
+
--ink: #17202a;
|
|
5
|
+
--muted: #607086;
|
|
6
|
+
--line: #dce2ea;
|
|
7
|
+
--blue: #1e63ff;
|
|
8
|
+
--blue-dark: #1647b8;
|
|
9
|
+
--green: #12a672;
|
|
10
|
+
--amber: #d89118;
|
|
11
|
+
--code-bg: #111827;
|
|
12
|
+
--code-ink: #e8eef8;
|
|
13
|
+
--sidebar: #101827;
|
|
14
|
+
--sidebar-muted: #9cabc2;
|
|
15
|
+
--shadow: 0 18px 45px rgba(21, 34, 58, 0.12);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
* {
|
|
19
|
+
box-sizing: border-box;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
html {
|
|
23
|
+
scroll-behavior: smooth;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
body {
|
|
27
|
+
margin: 0;
|
|
28
|
+
min-height: 100vh;
|
|
29
|
+
color: var(--ink);
|
|
30
|
+
background: var(--bg);
|
|
31
|
+
font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Arial, sans-serif;
|
|
32
|
+
line-height: 1.6;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
a {
|
|
36
|
+
color: inherit;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.sidebar {
|
|
40
|
+
position: fixed;
|
|
41
|
+
inset: 0 auto 0 0;
|
|
42
|
+
width: 292px;
|
|
43
|
+
padding: 24px 18px;
|
|
44
|
+
color: #fff;
|
|
45
|
+
background: var(--sidebar);
|
|
46
|
+
overflow-y: auto;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.brand {
|
|
50
|
+
display: flex;
|
|
51
|
+
align-items: center;
|
|
52
|
+
gap: 12px;
|
|
53
|
+
text-decoration: none;
|
|
54
|
+
margin-bottom: 26px;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.brand-mark {
|
|
58
|
+
display: grid;
|
|
59
|
+
place-items: center;
|
|
60
|
+
width: 42px;
|
|
61
|
+
height: 42px;
|
|
62
|
+
border-radius: 8px;
|
|
63
|
+
color: #fff;
|
|
64
|
+
background: linear-gradient(135deg, var(--blue), var(--green));
|
|
65
|
+
font-size: 26px;
|
|
66
|
+
font-weight: 800;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.brand strong,
|
|
70
|
+
.brand small {
|
|
71
|
+
display: block;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.brand strong {
|
|
75
|
+
font-size: 22px;
|
|
76
|
+
line-height: 1.1;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
.brand small {
|
|
80
|
+
color: var(--sidebar-muted);
|
|
81
|
+
font-size: 12px;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.search {
|
|
85
|
+
display: block;
|
|
86
|
+
margin-bottom: 22px;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
.search span {
|
|
90
|
+
display: block;
|
|
91
|
+
margin-bottom: 8px;
|
|
92
|
+
color: var(--sidebar-muted);
|
|
93
|
+
font-size: 12px;
|
|
94
|
+
text-transform: uppercase;
|
|
95
|
+
letter-spacing: 0.08em;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
.search input {
|
|
99
|
+
width: 100%;
|
|
100
|
+
min-height: 42px;
|
|
101
|
+
border: 1px solid rgba(255, 255, 255, 0.15);
|
|
102
|
+
border-radius: 8px;
|
|
103
|
+
padding: 0 12px;
|
|
104
|
+
color: #fff;
|
|
105
|
+
background: rgba(255, 255, 255, 0.08);
|
|
106
|
+
outline: none;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
.search input:focus {
|
|
110
|
+
border-color: rgba(120, 180, 255, 0.85);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
.nav {
|
|
114
|
+
display: grid;
|
|
115
|
+
gap: 2px;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
.nav a {
|
|
119
|
+
display: block;
|
|
120
|
+
border-radius: 8px;
|
|
121
|
+
padding: 9px 11px;
|
|
122
|
+
color: var(--sidebar-muted);
|
|
123
|
+
text-decoration: none;
|
|
124
|
+
font-size: 14px;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
.nav a:hover,
|
|
128
|
+
.nav a.active {
|
|
129
|
+
color: #fff;
|
|
130
|
+
background: rgba(255, 255, 255, 0.1);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
main {
|
|
134
|
+
max-width: 1120px;
|
|
135
|
+
margin-left: 292px;
|
|
136
|
+
padding: 32px clamp(20px, 5vw, 64px) 72px;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
.hero {
|
|
140
|
+
min-height: 520px;
|
|
141
|
+
display: grid;
|
|
142
|
+
grid-template-columns: minmax(0, 1fr) 320px;
|
|
143
|
+
align-items: center;
|
|
144
|
+
gap: 32px;
|
|
145
|
+
color: #fff;
|
|
146
|
+
background:
|
|
147
|
+
linear-gradient(110deg, rgba(14, 25, 43, 0.95), rgba(20, 60, 85, 0.78)),
|
|
148
|
+
url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='900' height='520' viewBox='0 0 900 520'%3E%3Crect width='900' height='520' fill='%23213a55'/%3E%3Cg fill='none' stroke='%23ffffff' stroke-opacity='.12' stroke-width='2'%3E%3Cpath d='M90 80h260v120H90zM420 80h360v70H420zM420 190h230v70H420zM90 250h300v160H90zM470 310h310v110H470z'/%3E%3Cpath d='M130 120h120M130 150h170M460 115h220M130 300h190M130 335h130M510 355h180'/%3E%3C/g%3E%3Ccircle cx='760' cy='110' r='42' fill='%2312a672' fill-opacity='.55'/%3E%3Ccircle cx='705' cy='390' r='58' fill='%231e63ff' fill-opacity='.42'/%3E%3C/svg%3E");
|
|
149
|
+
background-size: cover;
|
|
150
|
+
background-position: center;
|
|
151
|
+
border-radius: 8px;
|
|
152
|
+
padding: clamp(28px, 5vw, 56px);
|
|
153
|
+
box-shadow: var(--shadow);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
.hero h1 {
|
|
157
|
+
max-width: 720px;
|
|
158
|
+
margin: 0;
|
|
159
|
+
font-size: clamp(42px, 6vw, 76px);
|
|
160
|
+
line-height: 0.95;
|
|
161
|
+
letter-spacing: 0;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
.hero p {
|
|
165
|
+
max-width: 680px;
|
|
166
|
+
color: rgba(255, 255, 255, 0.82);
|
|
167
|
+
font-size: 18px;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
.eyebrow {
|
|
171
|
+
margin: 0 0 14px;
|
|
172
|
+
color: #91d7ff;
|
|
173
|
+
font-size: 13px;
|
|
174
|
+
font-weight: 800;
|
|
175
|
+
text-transform: uppercase;
|
|
176
|
+
letter-spacing: 0.09em;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
.hero-actions {
|
|
180
|
+
display: flex;
|
|
181
|
+
flex-wrap: wrap;
|
|
182
|
+
gap: 12px;
|
|
183
|
+
margin-top: 26px;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
.button {
|
|
187
|
+
display: inline-flex;
|
|
188
|
+
align-items: center;
|
|
189
|
+
justify-content: center;
|
|
190
|
+
min-height: 44px;
|
|
191
|
+
border: 1px solid rgba(255, 255, 255, 0.25);
|
|
192
|
+
border-radius: 8px;
|
|
193
|
+
padding: 0 16px;
|
|
194
|
+
color: #fff;
|
|
195
|
+
text-decoration: none;
|
|
196
|
+
font-weight: 700;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
.button.primary {
|
|
200
|
+
border-color: var(--blue);
|
|
201
|
+
background: var(--blue);
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
.hero-panel {
|
|
205
|
+
display: grid;
|
|
206
|
+
gap: 8px;
|
|
207
|
+
border: 1px solid rgba(255, 255, 255, 0.18);
|
|
208
|
+
border-radius: 8px;
|
|
209
|
+
padding: 22px;
|
|
210
|
+
background: rgba(7, 18, 34, 0.58);
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
.hero-panel span {
|
|
214
|
+
color: rgba(255, 255, 255, 0.62);
|
|
215
|
+
font-size: 12px;
|
|
216
|
+
text-transform: uppercase;
|
|
217
|
+
letter-spacing: 0.08em;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
.hero-panel strong {
|
|
221
|
+
margin-bottom: 10px;
|
|
222
|
+
font-size: 22px;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
.doc-section {
|
|
226
|
+
scroll-margin-top: 24px;
|
|
227
|
+
margin-bottom: 28px;
|
|
228
|
+
border: 1px solid var(--line);
|
|
229
|
+
border-radius: 8px;
|
|
230
|
+
padding: clamp(22px, 4vw, 34px);
|
|
231
|
+
background: var(--surface);
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
.doc-section.hidden {
|
|
235
|
+
display: none;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
h2,
|
|
239
|
+
h3 {
|
|
240
|
+
line-height: 1.2;
|
|
241
|
+
letter-spacing: 0;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
h2 {
|
|
245
|
+
margin: 0 0 14px;
|
|
246
|
+
font-size: clamp(26px, 3vw, 38px);
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
h3 {
|
|
250
|
+
margin: 24px 0 10px;
|
|
251
|
+
font-size: 19px;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
p {
|
|
255
|
+
color: var(--muted);
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
code {
|
|
259
|
+
border-radius: 5px;
|
|
260
|
+
padding: 0.12em 0.36em;
|
|
261
|
+
color: #0f4fb9;
|
|
262
|
+
background: #edf4ff;
|
|
263
|
+
font-family: "Cascadia Code", Consolas, "Liberation Mono", monospace;
|
|
264
|
+
font-size: 0.92em;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
pre {
|
|
268
|
+
position: relative;
|
|
269
|
+
margin: 16px 0;
|
|
270
|
+
border-radius: 8px;
|
|
271
|
+
overflow: auto;
|
|
272
|
+
background: var(--code-bg);
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
pre code {
|
|
276
|
+
display: block;
|
|
277
|
+
min-width: max-content;
|
|
278
|
+
padding: 18px 20px;
|
|
279
|
+
color: var(--code-ink);
|
|
280
|
+
background: transparent;
|
|
281
|
+
line-height: 1.55;
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
.copy-button {
|
|
285
|
+
position: absolute;
|
|
286
|
+
top: 10px;
|
|
287
|
+
right: 10px;
|
|
288
|
+
min-height: 32px;
|
|
289
|
+
border: 1px solid rgba(255, 255, 255, 0.2);
|
|
290
|
+
border-radius: 7px;
|
|
291
|
+
padding: 0 10px;
|
|
292
|
+
color: #fff;
|
|
293
|
+
background: rgba(255, 255, 255, 0.1);
|
|
294
|
+
cursor: pointer;
|
|
295
|
+
font-weight: 700;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
.feature-grid {
|
|
299
|
+
display: grid;
|
|
300
|
+
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
301
|
+
gap: 14px;
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
.feature-grid article {
|
|
305
|
+
border: 1px solid var(--line);
|
|
306
|
+
border-radius: 8px;
|
|
307
|
+
padding: 18px;
|
|
308
|
+
background: #fbfcff;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
.feature-grid h3 {
|
|
312
|
+
margin-top: 0;
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
.table-wrap {
|
|
316
|
+
overflow-x: auto;
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
.function-index {
|
|
320
|
+
display: grid;
|
|
321
|
+
gap: 16px;
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
.function-index article {
|
|
325
|
+
border: 1px solid var(--line);
|
|
326
|
+
border-radius: 8px;
|
|
327
|
+
padding: 18px;
|
|
328
|
+
background: #fbfcff;
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
.function-index h3 {
|
|
332
|
+
margin-top: 0;
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
.method-list {
|
|
336
|
+
display: flex;
|
|
337
|
+
flex-wrap: wrap;
|
|
338
|
+
gap: 8px;
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
.method-list code {
|
|
342
|
+
max-width: 100%;
|
|
343
|
+
white-space: normal;
|
|
344
|
+
overflow-wrap: anywhere;
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
table {
|
|
348
|
+
width: 100%;
|
|
349
|
+
min-width: 720px;
|
|
350
|
+
border-collapse: collapse;
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
th,
|
|
354
|
+
td {
|
|
355
|
+
border-bottom: 1px solid var(--line);
|
|
356
|
+
padding: 14px 12px;
|
|
357
|
+
text-align: left;
|
|
358
|
+
vertical-align: top;
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
th {
|
|
362
|
+
color: #32435a;
|
|
363
|
+
background: #f0f4f9;
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
.empty-state {
|
|
367
|
+
display: none;
|
|
368
|
+
border: 1px dashed var(--line);
|
|
369
|
+
border-radius: 8px;
|
|
370
|
+
padding: 28px;
|
|
371
|
+
text-align: center;
|
|
372
|
+
background: #fff;
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
.empty-state.show {
|
|
376
|
+
display: block;
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
.top-button {
|
|
380
|
+
position: fixed;
|
|
381
|
+
right: 22px;
|
|
382
|
+
bottom: 22px;
|
|
383
|
+
display: none;
|
|
384
|
+
width: 44px;
|
|
385
|
+
height: 44px;
|
|
386
|
+
border: 0;
|
|
387
|
+
border-radius: 8px;
|
|
388
|
+
color: #fff;
|
|
389
|
+
background: var(--blue-dark);
|
|
390
|
+
cursor: pointer;
|
|
391
|
+
font-size: 22px;
|
|
392
|
+
box-shadow: var(--shadow);
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
.top-button.show {
|
|
396
|
+
display: block;
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
@media (max-width: 960px) {
|
|
400
|
+
.sidebar {
|
|
401
|
+
position: static;
|
|
402
|
+
width: auto;
|
|
403
|
+
max-height: none;
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
.nav {
|
|
407
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
main {
|
|
411
|
+
margin-left: 0;
|
|
412
|
+
padding: 24px 16px 56px;
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
.hero {
|
|
416
|
+
grid-template-columns: 1fr;
|
|
417
|
+
min-height: auto;
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
.feature-grid {
|
|
421
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
@media (max-width: 620px) {
|
|
426
|
+
.nav {
|
|
427
|
+
grid-template-columns: 1fr;
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
.hero {
|
|
431
|
+
padding: 28px 20px;
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
.hero h1 {
|
|
435
|
+
font-size: 42px;
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
.feature-grid {
|
|
439
|
+
grid-template-columns: 1fr;
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
.doc-section {
|
|
443
|
+
padding: 20px 16px;
|
|
444
|
+
}
|
|
445
|
+
}
|
|
@@ -193,7 +193,7 @@ a.$modelValue||b===b)){a.$modelValue=a.$$rawModelValue=b;a.$$parserValid=void 0;
|
|
|
193
193
|
N=function(a){return C(a)?a.toLowerCase():a},wb=function(a){return C(a)?a.toUpperCase():a},Ba,z,ta,xa=[].slice,vg=[].splice,Xg=[].push,la=Object.prototype.toString,Oc=Object.getPrototypeOf,za=K("ng"),fa=x.angular||(x.angular={}),dc,sb=0;Ba=x.document.documentMode;var ba=Number.isNaN||function(a){return a!==a};B.$inject=[];ab.$inject=[];var I=Array.isArray,te=/^\[object (?:Uint8|Uint8Clamped|Uint16|Uint32|Int8|Int16|Int32|Float32|Float64)Array]$/,P=function(a){return C(a)?a.trim():a},Nd=function(a){return a.replace(/([-()[\]{}+?*.$^|,:#<!\\])/g,
|
|
194
194
|
"\\$1").replace(/\x08/g,"\\x08")},Ja=function(){if(!t(Ja.rules)){var a=x.document.querySelector("[ng-csp]")||x.document.querySelector("[data-ng-csp]");if(a){var b=a.getAttribute("ng-csp")||a.getAttribute("data-ng-csp");Ja.rules={noUnsafeEval:!b||-1!==b.indexOf("no-unsafe-eval"),noInlineStyle:!b||-1!==b.indexOf("no-inline-style")}}else{a=Ja;try{new Function(""),b=!1}catch(d){b=!0}a.rules={noUnsafeEval:b,noInlineStyle:!1}}}return Ja.rules},tb=function(){if(t(tb.name_))return tb.name_;var a,b,d=Na.length,
|
|
195
195
|
c,e;for(b=0;b<d;++b)if(c=Na[b],a=x.document.querySelector("["+c.replace(":","\\:")+"jq]")){e=a.getAttribute(c+"jq");break}return tb.name_=e},ve=/:/g,Na=["ng-","data-ng-","ng:","x-ng-"],ye=function(a){var b=a.currentScript;if(!b)return!0;if(!(b instanceof x.HTMLScriptElement||b instanceof x.SVGScriptElement))return!1;b=b.attributes;return[b.getNamedItem("src"),b.getNamedItem("href"),b.getNamedItem("xlink:href")].every(function(b){if(!b)return!0;if(!b.value)return!1;var c=a.createElement("a");c.href=
|
|
196
|
-
b.value;if(a.location.origin===c.origin)return!0;switch(c.protocol){case "http:":case "https:":case "ftp:":case "blob:":case "file:":case "data:":return!0;default:return!1}})}(x.document),Be=/[A-Z]/g,Wc=!1,Ma=3,Ge={full:"1.6.5",major:1,minor:6,dot:5,codeName:"toffee-salinization"};S.expando="ng339";var jb=S.cache={},hg=1;S._data=function(a){return this.cache[a[this.expando]]||{}};var dg=/-([a-z])/g,Yg=/^-ms-/,Bb={mouseleave:"mouseout",mouseenter:"mouseover"},gc=K("jqLite"),gg=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,
|
|
196
|
+
b.value;if(a.location.origin===c.origin)return!0;switch(c.protocol){case "http:":case "https:":case "browser:":case "browser-extension:":case "ftp:":case "blob:":case "file:":case "data:":return!0;default:return!1}})}(x.document),Be=/[A-Z]/g,Wc=!1,Ma=3,Ge={full:"1.6.5",major:1,minor:6,dot:5,codeName:"toffee-salinization"};S.expando="ng339";var jb=S.cache={},hg=1;S._data=function(a){return this.cache[a[this.expando]]||{}};var dg=/-([a-z])/g,Yg=/^-ms-/,Bb={mouseleave:"mouseout",mouseenter:"mouseover"},gc=K("jqLite"),gg=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,
|
|
197
197
|
fc=/<|&#?\w+;/,eg=/<([\w:-]+)/,fg=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,pa={option:[1,'<select multiple="multiple">',"</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};pa.optgroup=pa.option;pa.tbody=pa.tfoot=pa.colgroup=pa.caption=pa.thead;pa.th=pa.td;var mg=x.Node.prototype.contains||function(a){return!!(this.compareDocumentPosition(a)&
|
|
198
198
|
16)},Ra=S.prototype={ready:gd,toString:function(){var a=[];p(this,function(b){a.push(""+b)});return"["+a.join(", ")+"]"},eq:function(a){return 0<=a?z(this[a]):z(this[this.length+a])},length:0,push:Xg,sort:[].sort,splice:[].splice},Hb={};p("multiple selected checked disabled readOnly required open".split(" "),function(a){Hb[N(a)]=a});var ld={};p("input select option textarea button form details".split(" "),function(a){ld[a]=!0});var td={ngMinlength:"minlength",ngMaxlength:"maxlength",ngMin:"min",ngMax:"max",
|
|
199
199
|
ngPattern:"pattern",ngStep:"step"};p({data:kc,removeData:jc,hasData:function(a){for(var b in jb[a.ng339])return!0;return!1},cleanData:function(a){for(var b=0,d=a.length;b<d;b++)jc(a[b])}},function(a,b){S[b]=a});p({data:kc,inheritedData:Fb,scope:function(a){return z.data(a,"$scope")||Fb(a.parentNode||a,["$isolateScope","$scope"])},isolateScope:function(a){return z.data(a,"$isolateScope")||z.data(a,"$isolateScopeNoTemplate")},controller:id,injector:function(a){return Fb(a,"$injector")},removeAttr:function(a,
|
package/llms.txt
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# isite
|
|
2
|
+
|
|
3
|
+
isite is a CommonJS Node.js web framework for building multi-language websites with automatic routing, server-side site file parsing, sessions, cookies, permissions, MongoDB helpers, uploads/downloads, WebSocket support, custom apps, and utility functions.
|
|
4
|
+
|
|
5
|
+
## Main documentation
|
|
6
|
+
|
|
7
|
+
- Documentation site: ./docs/index.html
|
|
8
|
+
- AI context: ./docs/ai-context.md
|
|
9
|
+
- API map: ./docs/api-map.json
|
|
10
|
+
- AI examples: ./docs/examples-for-ai.md
|
|
11
|
+
- Agent guide: ./AGENTS.md
|
|
12
|
+
- Package entry point: ./index.js
|
|
13
|
+
- README: ./README.md
|
|
14
|
+
|
|
15
|
+
## Main source areas
|
|
16
|
+
|
|
17
|
+
- Routing and request/response helpers: ./lib/routing.js
|
|
18
|
+
- File helpers: ./lib/fsm.js
|
|
19
|
+
- MongoDB wrapper: ./lib/mongodb.js
|
|
20
|
+
- Collection wrapper: ./lib/collection.js
|
|
21
|
+
- Security: ./lib/security.js
|
|
22
|
+
- Sessions: ./lib/sessions.js
|
|
23
|
+
- WebSocket: ./lib/ws.js and ./lib/wsClient.js
|
|
24
|
+
- Server-side parser: ./lib/parser.js
|
|
25
|
+
- Custom apps: ./lib/app.js
|
|
26
|
+
- General utilities: ./object-options/lib/fn.js
|
|
27
|
+
- Events: ./object-options/lib/event.js
|
|
28
|
+
|
|
29
|
+
## Canonical startup example
|
|
30
|
+
|
|
31
|
+
```js
|
|
32
|
+
var isite = require('isite');
|
|
33
|
+
var site = isite({ port: 8080 });
|
|
34
|
+
|
|
35
|
+
site.loadLocalApp('client-side');
|
|
36
|
+
site.loadLocalApp('security');
|
|
37
|
+
|
|
38
|
+
site.run();
|
|
39
|
+
```
|
|
40
|
+
|