@veryfront/ext-content-mdx 0.1.1183 → 0.1.1186
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/esm/deno.d.ts +20 -1
- package/esm/deno.js +31 -6
- package/esm/src/errors/error-registry.d.ts +2 -2
- package/esm/src/extensions/websocket/index.d.ts +3 -0
- package/esm/src/extensions/websocket/index.d.ts.map +1 -0
- package/esm/src/extensions/websocket/index.js +2 -0
- package/esm/src/extensions/websocket/node-websocket-server-provider.d.ts +51 -0
- package/esm/src/extensions/websocket/node-websocket-server-provider.d.ts.map +1 -0
- package/esm/src/extensions/websocket/node-websocket-server-provider.js +146 -0
- package/esm/src/platform/adapters/base.d.ts +35 -0
- package/esm/src/platform/adapters/base.d.ts.map +1 -1
- package/esm/src/platform/adapters/base.js +54 -5
- package/esm/src/platform/adapters/bounded-file-read.d.ts +34 -0
- package/esm/src/platform/adapters/bounded-file-read.d.ts.map +1 -0
- package/esm/src/platform/adapters/bounded-file-read.js +179 -0
- package/esm/src/platform/adapters/file-snapshot-error.d.ts +6 -0
- package/esm/src/platform/adapters/file-snapshot-error.d.ts.map +1 -0
- package/esm/src/platform/adapters/file-snapshot-error.js +11 -0
- package/esm/src/platform/adapters/runtime/shared/native-file-capabilities.d.ts +33 -0
- package/esm/src/platform/adapters/runtime/shared/native-file-capabilities.d.ts.map +1 -0
- package/esm/src/platform/adapters/runtime/shared/native-file-capabilities.js +205 -0
- package/esm/src/platform/compat/fs.d.ts +6 -2
- package/esm/src/platform/compat/fs.d.ts.map +1 -1
- package/esm/src/platform/compat/fs.js +55 -19
- package/esm/src/platform/compat/not-found-error.d.ts +7 -0
- package/esm/src/platform/compat/not-found-error.d.ts.map +1 -0
- package/esm/src/platform/compat/not-found-error.js +41 -0
- package/esm/src/platform/compat/path/basic-operations.d.ts +1 -1
- package/esm/src/platform/compat/path/basic-operations.d.ts.map +1 -1
- package/esm/src/platform/compat/path/basic-operations.js +24 -44
- package/esm/src/platform/compat/path/index.d.ts +1 -0
- package/esm/src/platform/compat/path/index.d.ts.map +1 -1
- package/esm/src/platform/compat/path/index.js +1 -0
- package/esm/src/platform/compat/path/parse-format.d.ts.map +1 -1
- package/esm/src/platform/compat/path/parse-format.js +26 -20
- package/esm/src/platform/compat/path/portable.d.ts +16 -0
- package/esm/src/platform/compat/path/portable.d.ts.map +1 -0
- package/esm/src/platform/compat/path/portable.js +307 -0
- package/esm/src/platform/compat/path/posix.d.ts +14 -0
- package/esm/src/platform/compat/path/posix.d.ts.map +1 -0
- package/esm/src/platform/compat/path/posix.js +206 -0
- package/esm/src/platform/compat/path/resolution.d.ts +1 -1
- package/esm/src/platform/compat/path/resolution.d.ts.map +1 -1
- package/esm/src/platform/compat/path/resolution.js +28 -112
- package/esm/src/platform/compat/path/runtime.d.ts +2 -1
- package/esm/src/platform/compat/path/runtime.d.ts.map +1 -1
- package/esm/src/platform/compat/path/runtime.js +5 -0
- package/esm/src/platform/compat/path/types.d.ts +5 -1
- package/esm/src/platform/compat/path/types.d.ts.map +1 -1
- package/esm/src/platform/compat/path/url-conversion.d.ts +10 -0
- package/esm/src/platform/compat/path/url-conversion.d.ts.map +1 -1
- package/esm/src/platform/compat/path/url-conversion.js +63 -41
- package/esm/src/platform/compat/process.d.ts +1 -1
- package/esm/src/utils/constants/build.d.ts +9 -0
- package/esm/src/utils/constants/build.d.ts.map +1 -1
- package/esm/src/utils/constants/build.js +9 -0
- package/esm/src/utils/constants/index.d.ts +1 -1
- package/esm/src/utils/constants/index.d.ts.map +1 -1
- package/esm/src/utils/constants/index.js +1 -1
- package/esm/src/utils/css-artifact-identity.d.ts +23 -0
- package/esm/src/utils/css-artifact-identity.d.ts.map +1 -0
- package/esm/src/utils/css-artifact-identity.js +77 -0
- package/esm/src/utils/index.d.ts +1 -0
- package/esm/src/utils/index.d.ts.map +1 -1
- package/esm/src/utils/index.js +1 -0
- package/esm/src/utils/version-constant.d.ts +1 -1
- package/esm/src/utils/version-constant.js +1 -1
- package/package.json +2 -2
package/esm/deno.d.ts
CHANGED
|
@@ -35,8 +35,10 @@ declare namespace _default {
|
|
|
35
35
|
"./channels/invoke": string;
|
|
36
36
|
"./tool": string;
|
|
37
37
|
"./workflow": string;
|
|
38
|
+
"./workflow/blob": string;
|
|
38
39
|
"./workflow/worker": string;
|
|
39
40
|
"./workflow/claude-code": string;
|
|
41
|
+
"./workflow/claude-code/types": string;
|
|
40
42
|
"./workflow/claude-code/react": string;
|
|
41
43
|
"./workflow/discovery": string;
|
|
42
44
|
"./schemas": string;
|
|
@@ -50,9 +52,12 @@ declare namespace _default {
|
|
|
50
52
|
"./webhook": string;
|
|
51
53
|
"./mcp": string;
|
|
52
54
|
"./middleware": string;
|
|
55
|
+
"./errors": string;
|
|
53
56
|
"./observability": string;
|
|
54
57
|
"./observability/sentry": string;
|
|
55
58
|
"./observability/otlp-setup": string;
|
|
59
|
+
"./errors/general": string;
|
|
60
|
+
"./errors/module": string;
|
|
56
61
|
"./utils": string;
|
|
57
62
|
"./utils/logger": string;
|
|
58
63
|
"./release-assets": string;
|
|
@@ -66,21 +71,26 @@ declare namespace _default {
|
|
|
66
71
|
"./embedding": string;
|
|
67
72
|
"./knowledge": string;
|
|
68
73
|
"./extensions": string;
|
|
74
|
+
"./extensions/types": string;
|
|
69
75
|
"./extensions/llm": string;
|
|
70
76
|
"./extensions/auth": string;
|
|
71
77
|
"./extensions/bundler": string;
|
|
72
78
|
"./extensions/cache": string;
|
|
73
79
|
"./extensions/content": string;
|
|
80
|
+
"./extensions/distributed": string;
|
|
74
81
|
"./extensions/contracts": string;
|
|
75
82
|
"./extensions/compat": string;
|
|
76
83
|
"./extensions/first-party-import": string;
|
|
77
84
|
"./extensions/css": string;
|
|
85
|
+
"./extensions/image": string;
|
|
78
86
|
"./extensions/database": string;
|
|
79
87
|
"./extensions/eval": string;
|
|
80
88
|
"./extensions/parser": string;
|
|
81
89
|
"./extensions/sandbox": string;
|
|
82
90
|
"./extensions/schema": string;
|
|
83
91
|
"./extensions/observability": string;
|
|
92
|
+
"./extensions/websocket": string;
|
|
93
|
+
"./platform/env": string;
|
|
84
94
|
"./testing": string;
|
|
85
95
|
"./testing/assert": string;
|
|
86
96
|
"./testing/bdd": string;
|
|
@@ -127,6 +137,7 @@ declare namespace _default {
|
|
|
127
137
|
"veryfront/workflow/runtime": string;
|
|
128
138
|
"veryfront/workflow/worker": string;
|
|
129
139
|
"veryfront/workflow/claude-code": string;
|
|
140
|
+
"veryfront/workflow/claude-code/types": string;
|
|
130
141
|
"veryfront/workflow/claude-code/react": string;
|
|
131
142
|
"veryfront/workflow/discovery": string;
|
|
132
143
|
"veryfront/utils": string;
|
|
@@ -144,6 +155,7 @@ declare namespace _default {
|
|
|
144
155
|
"veryfront/observability/otlp-setup": string;
|
|
145
156
|
"veryfront/observability/sentry": string;
|
|
146
157
|
"veryfront/platform/esbuild-init": string;
|
|
158
|
+
"veryfront/platform/env": string;
|
|
147
159
|
"veryfront/platform/path": string;
|
|
148
160
|
"veryfront/platform/http": string;
|
|
149
161
|
"veryfront/cli": string;
|
|
@@ -163,6 +175,8 @@ declare namespace _default {
|
|
|
163
175
|
"veryfront/cache": string;
|
|
164
176
|
"veryfront/security": string;
|
|
165
177
|
"veryfront/errors": string;
|
|
178
|
+
"veryfront/errors/general": string;
|
|
179
|
+
"veryfront/errors/module": string;
|
|
166
180
|
"veryfront/trigger/target": string;
|
|
167
181
|
"veryfront/trigger/validation": string;
|
|
168
182
|
"veryfront/issues": string;
|
|
@@ -174,6 +188,7 @@ declare namespace _default {
|
|
|
174
188
|
"veryfront/tool/schema": string;
|
|
175
189
|
"veryfront/agent/composition": string;
|
|
176
190
|
"veryfront/extensions": string;
|
|
191
|
+
"veryfront/extensions/types": string;
|
|
177
192
|
"veryfront/testing": string;
|
|
178
193
|
"veryfront/testing/assert": string;
|
|
179
194
|
"veryfront/testing/bdd": string;
|
|
@@ -182,10 +197,12 @@ declare namespace _default {
|
|
|
182
197
|
"veryfront/extensions/bundler": string;
|
|
183
198
|
"veryfront/extensions/cache": string;
|
|
184
199
|
"veryfront/extensions/content": string;
|
|
200
|
+
"veryfront/extensions/distributed": string;
|
|
185
201
|
"veryfront/extensions/compat": string;
|
|
186
202
|
"veryfront/extensions/contracts": string;
|
|
187
203
|
"veryfront/extensions/first-party-import": string;
|
|
188
204
|
"veryfront/extensions/css": string;
|
|
205
|
+
"veryfront/extensions/image": string;
|
|
189
206
|
"veryfront/extensions/database": string;
|
|
190
207
|
"veryfront/extensions/eval": string;
|
|
191
208
|
"veryfront/extensions/parser": string;
|
|
@@ -214,6 +231,8 @@ declare namespace _default {
|
|
|
214
231
|
"#veryfront/eval/agent-service": string;
|
|
215
232
|
"#veryfront/metrics": string;
|
|
216
233
|
"#veryfront/extensions/eval": string;
|
|
234
|
+
"#veryfront/extensions/distributed": string;
|
|
235
|
+
"#veryfront/extensions/distributed/": string;
|
|
217
236
|
"#veryfront/extensions/first-party-import.ts": string;
|
|
218
237
|
"#veryfront/html": string;
|
|
219
238
|
"#veryfront/mcp": string;
|
|
@@ -240,6 +259,7 @@ declare namespace _default {
|
|
|
240
259
|
"#veryfront/trigger/": string;
|
|
241
260
|
"#veryfront/server": string;
|
|
242
261
|
"#veryfront/server/project-env": string;
|
|
262
|
+
"#veryfront/extensions/websocket": string;
|
|
243
263
|
"#veryfront/testing": string;
|
|
244
264
|
"#veryfront/testing/assert": string;
|
|
245
265
|
"#veryfront/testing/bdd": string;
|
|
@@ -323,7 +343,6 @@ declare namespace _default {
|
|
|
323
343
|
"react/jsx-dev-runtime": string;
|
|
324
344
|
"veryfront/schemas": string;
|
|
325
345
|
"veryfront/chat/message-prep": string;
|
|
326
|
-
"#dnt": string;
|
|
327
346
|
};
|
|
328
347
|
export namespace compilerOptions {
|
|
329
348
|
let jsx: string;
|
package/esm/deno.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export default {
|
|
2
2
|
"name": "veryfront",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1186",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"nodeModulesDir": "auto",
|
|
6
6
|
"minimumDependencyAge": {
|
|
@@ -44,9 +44,16 @@ export default {
|
|
|
44
44
|
"./extensions/ext-llm-google",
|
|
45
45
|
"./extensions/ext-llm-openai",
|
|
46
46
|
"./extensions/ext-auth-jwt",
|
|
47
|
+
"./extensions/ext-blob-gcs",
|
|
48
|
+
"./extensions/ext-blob-s3",
|
|
47
49
|
"./extensions/ext-bundler-esbuild",
|
|
48
50
|
"./extensions/ext-cache-redis",
|
|
51
|
+
"./extensions/ext-redis",
|
|
52
|
+
"./extensions/ext-css-lightning",
|
|
53
|
+
"./extensions/ext-css-purgecss",
|
|
49
54
|
"./extensions/ext-css-tailwind",
|
|
55
|
+
"./extensions/ext-image-sharp",
|
|
56
|
+
"./extensions/ext-node-websocket-ws",
|
|
50
57
|
"./extensions/ext-document-kreuzberg",
|
|
51
58
|
"./extensions/ext-db-sqlite",
|
|
52
59
|
"./extensions/ext-parser-babel",
|
|
@@ -68,8 +75,7 @@ export default {
|
|
|
68
75
|
"data/",
|
|
69
76
|
".deno_cache/",
|
|
70
77
|
"cli/templates/files/",
|
|
71
|
-
"cli/templates/integrations/"
|
|
72
|
-
"extensions/"
|
|
78
|
+
"cli/templates/integrations/"
|
|
73
79
|
],
|
|
74
80
|
"exports": {
|
|
75
81
|
".": "./src/index.ts",
|
|
@@ -96,8 +102,10 @@ export default {
|
|
|
96
102
|
"./channels/invoke": "./src/channels/invoke.ts",
|
|
97
103
|
"./tool": "./src/tool/index.ts",
|
|
98
104
|
"./workflow": "./src/workflow/index.ts",
|
|
105
|
+
"./workflow/blob": "./src/workflow/blob/index.ts",
|
|
99
106
|
"./workflow/worker": "./src/workflow/worker/index.ts",
|
|
100
107
|
"./workflow/claude-code": "./src/workflow/claude-code/index.ts",
|
|
108
|
+
"./workflow/claude-code/types": "./src/workflow/claude-code/types.ts",
|
|
101
109
|
"./workflow/claude-code/react": "./src/workflow/claude-code/react/index.ts",
|
|
102
110
|
"./workflow/discovery": "./src/workflow/discovery/index.ts",
|
|
103
111
|
"./schemas": "./src/schemas/index.ts",
|
|
@@ -111,9 +119,12 @@ export default {
|
|
|
111
119
|
"./webhook": "./src/webhook/index.ts",
|
|
112
120
|
"./mcp": "./src/mcp/index.ts",
|
|
113
121
|
"./middleware": "./src/middleware/index.ts",
|
|
122
|
+
"./errors": "./src/errors/index.ts",
|
|
114
123
|
"./observability": "./src/observability/index.ts",
|
|
115
124
|
"./observability/sentry": "./src/observability/sentry.ts",
|
|
116
125
|
"./observability/otlp-setup": "./src/observability/tracing/otlp-setup.ts",
|
|
126
|
+
"./errors/general": "./src/errors/error-registry/general.ts",
|
|
127
|
+
"./errors/module": "./src/errors/error-registry/module.ts",
|
|
117
128
|
"./utils": "./src/utils/index.ts",
|
|
118
129
|
"./utils/logger": "./src/utils/logger/index.ts",
|
|
119
130
|
"./release-assets": "./src/release-assets/index.ts",
|
|
@@ -127,21 +138,26 @@ export default {
|
|
|
127
138
|
"./embedding": "./src/embedding/index.ts",
|
|
128
139
|
"./knowledge": "./src/knowledge/index.ts",
|
|
129
140
|
"./extensions": "./src/extensions/index.ts",
|
|
141
|
+
"./extensions/types": "./src/extensions/types.ts",
|
|
130
142
|
"./extensions/llm": "./src/extensions/llm/index.ts",
|
|
131
143
|
"./extensions/auth": "./src/extensions/auth/index.ts",
|
|
132
144
|
"./extensions/bundler": "./src/extensions/bundler/index.ts",
|
|
133
145
|
"./extensions/cache": "./src/extensions/cache/index.ts",
|
|
134
146
|
"./extensions/content": "./src/extensions/content/index.ts",
|
|
147
|
+
"./extensions/distributed": "./src/extensions/distributed/index.ts",
|
|
135
148
|
"./extensions/contracts": "./src/extensions/contracts.ts",
|
|
136
149
|
"./extensions/compat": "./src/extensions/compat/index.ts",
|
|
137
150
|
"./extensions/first-party-import": "./src/extensions/first-party-import.ts",
|
|
138
151
|
"./extensions/css": "./src/extensions/css/index.ts",
|
|
152
|
+
"./extensions/image": "./src/extensions/image/index.ts",
|
|
139
153
|
"./extensions/database": "./src/extensions/database/index.ts",
|
|
140
154
|
"./extensions/eval": "./src/extensions/eval/index.ts",
|
|
141
155
|
"./extensions/parser": "./src/extensions/parser/index.ts",
|
|
142
156
|
"./extensions/sandbox": "./src/extensions/sandbox/index.ts",
|
|
143
157
|
"./extensions/schema": "./src/extensions/schema/index.ts",
|
|
144
158
|
"./extensions/observability": "./src/extensions/observability/index.ts",
|
|
159
|
+
"./extensions/websocket": "./src/extensions/websocket/index.ts",
|
|
160
|
+
"./platform/env": "./src/platform/compat/process/env.ts",
|
|
145
161
|
"./testing": "./src/testing/index.ts",
|
|
146
162
|
"./testing/assert": "./src/testing/assert.ts",
|
|
147
163
|
"./testing/bdd": "./src/testing/bdd.ts",
|
|
@@ -188,6 +204,7 @@ export default {
|
|
|
188
204
|
"veryfront/workflow/runtime": "./src/workflow/runtime/index.ts",
|
|
189
205
|
"veryfront/workflow/worker": "./src/workflow/worker/index.ts",
|
|
190
206
|
"veryfront/workflow/claude-code": "./src/workflow/claude-code/index.ts",
|
|
207
|
+
"veryfront/workflow/claude-code/types": "./src/workflow/claude-code/types.ts",
|
|
191
208
|
"veryfront/workflow/claude-code/react": "./src/workflow/claude-code/react/index.ts",
|
|
192
209
|
"veryfront/workflow/discovery": "./src/workflow/discovery/index.ts",
|
|
193
210
|
"veryfront/utils": "./src/utils/index.ts",
|
|
@@ -205,6 +222,7 @@ export default {
|
|
|
205
222
|
"veryfront/observability/otlp-setup": "./src/observability/tracing/otlp-setup.ts",
|
|
206
223
|
"veryfront/observability/sentry": "./src/observability/sentry.ts",
|
|
207
224
|
"veryfront/platform/esbuild-init": "./src/platform/compat/esbuild-init.ts",
|
|
225
|
+
"veryfront/platform/env": "./src/platform/compat/process/env.ts",
|
|
208
226
|
"veryfront/platform/path": "./src/platform/compat/path/index.ts",
|
|
209
227
|
"veryfront/platform/http": "./src/platform/compat/http/index.ts",
|
|
210
228
|
"veryfront/cli": "./cli/main.ts",
|
|
@@ -224,6 +242,8 @@ export default {
|
|
|
224
242
|
"veryfront/cache": "./src/cache/index.ts",
|
|
225
243
|
"veryfront/security": "./src/security/index.ts",
|
|
226
244
|
"veryfront/errors": "./src/errors/index.ts",
|
|
245
|
+
"veryfront/errors/general": "./src/errors/error-registry/general.ts",
|
|
246
|
+
"veryfront/errors/module": "./src/errors/error-registry/module.ts",
|
|
227
247
|
"veryfront/trigger/target": "./src/trigger/target.ts",
|
|
228
248
|
"veryfront/trigger/validation": "./src/trigger/validation.ts",
|
|
229
249
|
"veryfront/issues": "./src/issues/index.ts",
|
|
@@ -235,6 +255,7 @@ export default {
|
|
|
235
255
|
"veryfront/tool/schema": "./src/tool/schema/index.ts",
|
|
236
256
|
"veryfront/agent/composition": "./src/agent/composition/index.ts",
|
|
237
257
|
"veryfront/extensions": "./src/extensions/index.ts",
|
|
258
|
+
"veryfront/extensions/types": "./src/extensions/types.ts",
|
|
238
259
|
"veryfront/testing": "./src/testing/index.ts",
|
|
239
260
|
"veryfront/testing/assert": "./src/testing/assert.ts",
|
|
240
261
|
"veryfront/testing/bdd": "./src/testing/bdd.ts",
|
|
@@ -243,10 +264,12 @@ export default {
|
|
|
243
264
|
"veryfront/extensions/bundler": "./src/extensions/bundler/index.ts",
|
|
244
265
|
"veryfront/extensions/cache": "./src/extensions/cache/index.ts",
|
|
245
266
|
"veryfront/extensions/content": "./src/extensions/content/index.ts",
|
|
267
|
+
"veryfront/extensions/distributed": "./src/extensions/distributed/index.ts",
|
|
246
268
|
"veryfront/extensions/compat": "./src/extensions/compat/index.ts",
|
|
247
269
|
"veryfront/extensions/contracts": "./src/extensions/contracts.ts",
|
|
248
270
|
"veryfront/extensions/first-party-import": "./src/extensions/first-party-import.ts",
|
|
249
271
|
"veryfront/extensions/css": "./src/extensions/css/index.ts",
|
|
272
|
+
"veryfront/extensions/image": "./src/extensions/image/index.ts",
|
|
250
273
|
"veryfront/extensions/database": "./src/extensions/database/index.ts",
|
|
251
274
|
"veryfront/extensions/eval": "./src/extensions/eval/index.ts",
|
|
252
275
|
"veryfront/extensions/parser": "./src/extensions/parser/index.ts",
|
|
@@ -275,6 +298,8 @@ export default {
|
|
|
275
298
|
"#veryfront/eval/agent-service": "./src/eval/agent-service.ts",
|
|
276
299
|
"#veryfront/metrics": "./src/metrics/index.ts",
|
|
277
300
|
"#veryfront/extensions/eval": "./src/extensions/eval/index.ts",
|
|
301
|
+
"#veryfront/extensions/distributed": "./src/extensions/distributed/index.ts",
|
|
302
|
+
"#veryfront/extensions/distributed/": "./src/extensions/distributed/",
|
|
278
303
|
"#veryfront/extensions/first-party-import.ts": "./src/extensions/first-party-import.ts",
|
|
279
304
|
"#veryfront/html": "./src/html/index.ts",
|
|
280
305
|
"#veryfront/mcp": "./src/mcp/index.ts",
|
|
@@ -301,6 +326,7 @@ export default {
|
|
|
301
326
|
"#veryfront/trigger/": "./src/trigger/",
|
|
302
327
|
"#veryfront/server": "./src/server/index.ts",
|
|
303
328
|
"#veryfront/server/project-env": "./src/server/project-env/index.ts",
|
|
329
|
+
"#veryfront/extensions/websocket": "./src/extensions/websocket/index.ts",
|
|
304
330
|
"#veryfront/testing": "./src/testing/index.ts",
|
|
305
331
|
"#veryfront/testing/assert": "./src/testing/assert.ts",
|
|
306
332
|
"#veryfront/testing/bdd": "./src/testing/bdd.ts",
|
|
@@ -383,8 +409,7 @@ export default {
|
|
|
383
409
|
"react/jsx-runtime": "./react/jsx-runtime.ts",
|
|
384
410
|
"react/jsx-dev-runtime": "./react/jsx-dev-runtime.ts",
|
|
385
411
|
"veryfront/schemas": "./src/schemas/index.ts",
|
|
386
|
-
"veryfront/chat/message-prep": "./src/chat/message-prep.ts"
|
|
387
|
-
"#dnt": "jsr:@deno/dnt@0.42.3"
|
|
412
|
+
"veryfront/chat/message-prep": "./src/chat/message-prep.ts"
|
|
388
413
|
},
|
|
389
414
|
"compilerOptions": {
|
|
390
415
|
"jsx": "react-jsx",
|
|
@@ -411,7 +436,7 @@ export default {
|
|
|
411
436
|
"production": "deno task generate && deno run --allow-read --allow-write --allow-net --allow-env --allow-run --allow-sys --unstable-worker-options --unstable-net cli/main.ts serve --mode=production",
|
|
412
437
|
"build:prepare": "deno run -A scripts/build/generate-integrations-module.ts && deno task generate && deno run -A scripts/build/prepare-framework-sources.ts",
|
|
413
438
|
"build": "deno task build:prepare && deno run -A scripts/build/compile-binary.ts --output ./bin/veryfront",
|
|
414
|
-
"build:npm": "deno run -A scripts/build/generate-integrations-module.ts && deno task generate && deno run -A scripts/build/build-npm-dnt.ts",
|
|
439
|
+
"build:npm": "deno run -A scripts/build/generate-integrations-module.ts && deno task generate && deno run --config=scripts/test.deno.json --frozen -A scripts/build/build-npm-dnt.ts",
|
|
415
440
|
"release": "deno run -A scripts/release.ts",
|
|
416
441
|
"test": "deno task generate && DENO_TESTING=1 VF_DISABLE_LRU_INTERVAL=1 SSR_TRANSFORM_PER_PROJECT_LIMIT=0 REVALIDATION_PER_PROJECT_LIMIT=0 NODE_ENV=production LOG_FORMAT=text deno test --preload=src/schemas/_test-setup.ts --no-check --parallel --allow-all '--ignore=tests/e2e,tests/integration/compiled-binary-e2e.test.ts' --unstable-worker-options --unstable-net",
|
|
417
442
|
"test:unit": "deno task generate && DENO_TESTING=1 VF_DISABLE_LRU_INTERVAL=1 SSR_TRANSFORM_PER_PROJECT_LIMIT=0 REVALIDATION_PER_PROJECT_LIMIT=0 NODE_ENV=production LOG_FORMAT=text deno test --preload=src/schemas/_test-setup.ts --no-check --parallel --allow-all --v8-flags=--max-old-space-size=8192 '--ignore=tests,src/workflow/__tests__' --unstable-worker-options --unstable-net $(find src cli -name '*.test.ts*' ! -name '*.integration.test.ts*')",
|
|
@@ -3,13 +3,13 @@ export * from "./error-registry/config.js";
|
|
|
3
3
|
export * from "./error-registry/build.js";
|
|
4
4
|
export * from "./error-registry/runtime.js";
|
|
5
5
|
export * from "./error-registry/route.js";
|
|
6
|
-
export * from "
|
|
6
|
+
export * from "veryfront/errors/module";
|
|
7
7
|
export * from "./error-registry/server.js";
|
|
8
8
|
export * from "./error-registry/boundary.js";
|
|
9
9
|
export * from "./error-registry/dev.js";
|
|
10
10
|
export * from "./error-registry/deploy.js";
|
|
11
11
|
export * from "./error-registry/agent.js";
|
|
12
|
-
export * from "
|
|
12
|
+
export * from "veryfront/errors/general";
|
|
13
13
|
/**
|
|
14
14
|
* Central registry mapping every error slug to its definition. Assembled from
|
|
15
15
|
* the per-category registry fragments.
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/** Contracts for extension-owned Node.js WebSocket implementations. */
|
|
2
|
+
export { captureNodeWebSocketServer, createNodeWebSocketServerProvider, NODE_WEBSOCKET_SERVER_PROVIDER_MISSING_MESSAGE, NODE_WEBSOCKET_SERVER_PROVIDER_PACKAGE, type NodeWebSocketConnection, type NodeWebSocketMessageData, type NodeWebSocketServer, type NodeWebSocketServerOptions, type NodeWebSocketServerProvider, NodeWebSocketServerProviderName, snapshotNodeWebSocketServerProvider, } from "./node-websocket-server-provider.js";
|
|
3
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/src/extensions/websocket/index.ts"],"names":[],"mappings":"AAAA,uEAAuE;AAEvE,OAAO,EACL,0BAA0B,EAC1B,iCAAiC,EACjC,8CAA8C,EAC9C,sCAAsC,EACtC,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,EACxB,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,EAChC,+BAA+B,EAC/B,mCAAmC,GACpC,MAAM,qCAAqC,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/** Contracts for extension-owned Node.js WebSocket implementations. */
|
|
2
|
+
export { captureNodeWebSocketServer, createNodeWebSocketServerProvider, NODE_WEBSOCKET_SERVER_PROVIDER_MISSING_MESSAGE, NODE_WEBSOCKET_SERVER_PROVIDER_PACKAGE, NodeWebSocketServerProviderName, snapshotNodeWebSocketServerProvider, } from "./node-websocket-server-provider.js";
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dependency-free contract for Node.js WebSocket server implementations.
|
|
3
|
+
*
|
|
4
|
+
* Core owns HTTP upgrade authorization and lifecycle. An explicitly composed
|
|
5
|
+
* extension owns the protocol implementation used to complete an authorized
|
|
6
|
+
* upgrade on an existing Node socket.
|
|
7
|
+
*/
|
|
8
|
+
export declare const NodeWebSocketServerProviderName = "NodeWebSocketServerProvider";
|
|
9
|
+
export declare const NODE_WEBSOCKET_SERVER_PROVIDER_PACKAGE = "@veryfront/ext-node-websocket-ws";
|
|
10
|
+
export declare const NODE_WEBSOCKET_SERVER_PROVIDER_MISSING_MESSAGE = "Node.js WebSocket upgrades require an explicitly enabled @veryfront/ext-node-websocket-ws extension.";
|
|
11
|
+
export type NodeWebSocketMessageData = ArrayBuffer | ArrayBufferView | readonly ArrayBufferView[];
|
|
12
|
+
/** Minimal connection surface consumed by core's runtime-neutral adapter. */
|
|
13
|
+
export interface NodeWebSocketConnection extends EventTarget {
|
|
14
|
+
on(event: "open", listener: () => void): this;
|
|
15
|
+
on(event: "message", listener: (data: NodeWebSocketMessageData, isBinary: boolean) => void): this;
|
|
16
|
+
on(event: "close", listener: (code?: number, reason?: ArrayBufferView | string) => void): this;
|
|
17
|
+
on(event: "error", listener: (error: Error) => void): this;
|
|
18
|
+
send(data: string | ArrayBuffer): void;
|
|
19
|
+
close(code?: number, reason?: string): void;
|
|
20
|
+
terminate?(): void;
|
|
21
|
+
}
|
|
22
|
+
/** Exact no-server options supplied by core for an existing HTTP listener. */
|
|
23
|
+
export interface NodeWebSocketServerOptions {
|
|
24
|
+
readonly noServer: true;
|
|
25
|
+
readonly handleProtocols: (protocols: ReadonlySet<string>, request: object) => string | false;
|
|
26
|
+
}
|
|
27
|
+
/** Minimal server surface used by upgrade and shutdown ownership. */
|
|
28
|
+
export interface NodeWebSocketServer {
|
|
29
|
+
readonly clients?: Iterable<NodeWebSocketConnection>;
|
|
30
|
+
on(event: "headers", listener: (headers: string[], request: unknown) => void): this;
|
|
31
|
+
close(callback?: (error?: Error) => void): void;
|
|
32
|
+
handleUpgrade(request: unknown, socket: unknown, head: unknown, callback: (socket: NodeWebSocketConnection) => void): void;
|
|
33
|
+
emit(event: string, socket: NodeWebSocketConnection, request: unknown): void;
|
|
34
|
+
}
|
|
35
|
+
export interface NodeWebSocketServerProvider {
|
|
36
|
+
readonly createServer: (options: NodeWebSocketServerOptions) => NodeWebSocketServer;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Capture one server instance without retaining mutable method lookups. The
|
|
40
|
+
* underlying implementation remains the receiver because protocol engines
|
|
41
|
+
* legitimately keep mutable transport state on their instance.
|
|
42
|
+
*/
|
|
43
|
+
export declare function captureNodeWebSocketServer(value: unknown): Readonly<NodeWebSocketServer>;
|
|
44
|
+
/**
|
|
45
|
+
* Capture a provider generation without retaining its mutable registration
|
|
46
|
+
* object or invoking extension-owned accessors.
|
|
47
|
+
*/
|
|
48
|
+
export declare function snapshotNodeWebSocketServerProvider(value: unknown): Readonly<NodeWebSocketServerProvider>;
|
|
49
|
+
/** Create immutable registration metadata from a standalone factory. */
|
|
50
|
+
export declare function createNodeWebSocketServerProvider(createServer: (options: NodeWebSocketServerOptions) => NodeWebSocketServer): Readonly<NodeWebSocketServerProvider>;
|
|
51
|
+
//# sourceMappingURL=node-websocket-server-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-websocket-server-provider.d.ts","sourceRoot":"","sources":["../../../../src/src/extensions/websocket/node-websocket-server-provider.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,eAAO,MAAM,+BAA+B,gCAAgC,CAAC;AAC7E,eAAO,MAAM,sCAAsC,qCAAqC,CAAC;AACzF,eAAO,MAAM,8CAA8C,yGACsD,CAAC;AAIlH,MAAM,MAAM,wBAAwB,GAChC,WAAW,GACX,eAAe,GACf,SAAS,eAAe,EAAE,CAAC;AAE/B,6EAA6E;AAC7E,MAAM,WAAW,uBAAwB,SAAQ,WAAW;IAC1D,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IAC9C,EAAE,CACA,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,CAAC,IAAI,EAAE,wBAAwB,EAAE,QAAQ,EAAE,OAAO,KAAK,IAAI,GACpE,IAAI,CAAC;IACR,EAAE,CACA,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,eAAe,GAAG,MAAM,KAAK,IAAI,GACnE,IAAI,CAAC;IACR,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI,CAAC;IAC3D,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAAC;IACvC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5C,SAAS,CAAC,IAAI,IAAI,CAAC;CACpB;AAED,8EAA8E;AAC9E,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;IACxB,QAAQ,CAAC,eAAe,EAAE,CACxB,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,EAC9B,OAAO,EAAE,MAAM,KACZ,MAAM,GAAG,KAAK,CAAC;CACrB;AAED,qEAAqE;AACrE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,uBAAuB,CAAC,CAAC;IACrD,EAAE,CACA,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,GACtD,IAAI,CAAC;IACR,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI,CAAC;IAChD,aAAa,CACX,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,OAAO,EACf,IAAI,EAAE,OAAO,EACb,QAAQ,EAAE,CAAC,MAAM,EAAE,uBAAuB,KAAK,IAAI,GAClD,IAAI,CAAC;IACR,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,uBAAuB,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;CAC9E;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,YAAY,EAAE,CACrB,OAAO,EAAE,0BAA0B,KAChC,mBAAmB,CAAC;CAC1B;AAmED;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,OAAO,GACb,QAAQ,CAAC,mBAAmB,CAAC,CAgC/B;AASD;;;GAGG;AACH,wBAAgB,mCAAmC,CACjD,KAAK,EAAE,OAAO,GACb,QAAQ,CAAC,2BAA2B,CAAC,CAqCvC;AAED,wEAAwE;AACxE,wBAAgB,iCAAiC,CAC/C,YAAY,EAAE,CACZ,OAAO,EAAE,0BAA0B,KAChC,mBAAmB,GACvB,QAAQ,CAAC,2BAA2B,CAAC,CAEvC"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dependency-free contract for Node.js WebSocket server implementations.
|
|
3
|
+
*
|
|
4
|
+
* Core owns HTTP upgrade authorization and lifecycle. An explicitly composed
|
|
5
|
+
* extension owns the protocol implementation used to complete an authorized
|
|
6
|
+
* upgrade on an existing Node socket.
|
|
7
|
+
*/
|
|
8
|
+
import { types as nodeUtilTypes } from "node:util";
|
|
9
|
+
export const NodeWebSocketServerProviderName = "NodeWebSocketServerProvider";
|
|
10
|
+
export const NODE_WEBSOCKET_SERVER_PROVIDER_PACKAGE = "@veryfront/ext-node-websocket-ws";
|
|
11
|
+
export const NODE_WEBSOCKET_SERVER_PROVIDER_MISSING_MESSAGE = `Node.js WebSocket upgrades require an explicitly enabled ${NODE_WEBSOCKET_SERVER_PROVIDER_PACKAGE} extension.`;
|
|
12
|
+
const isProxy = nodeUtilTypes.isProxy;
|
|
13
|
+
function serverInspectionError(cause) {
|
|
14
|
+
return new TypeError("Node WebSocket server must expose data-function on, close, handleUpgrade, and emit methods", cause === undefined ? undefined : { cause });
|
|
15
|
+
}
|
|
16
|
+
function captureServerMethod(server, name) {
|
|
17
|
+
try {
|
|
18
|
+
let owner = server;
|
|
19
|
+
while (owner !== null) {
|
|
20
|
+
if (isProxy(owner))
|
|
21
|
+
throw serverInspectionError();
|
|
22
|
+
const descriptor = Object.getOwnPropertyDescriptor(owner, name);
|
|
23
|
+
if (descriptor !== undefined) {
|
|
24
|
+
if (!("value" in descriptor) || typeof descriptor.value !== "function") {
|
|
25
|
+
throw serverInspectionError();
|
|
26
|
+
}
|
|
27
|
+
return descriptor.value;
|
|
28
|
+
}
|
|
29
|
+
owner = Object.getPrototypeOf(owner);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
catch (cause) {
|
|
33
|
+
if (cause instanceof TypeError && cause.message.startsWith("Node WebSocket")) {
|
|
34
|
+
throw cause;
|
|
35
|
+
}
|
|
36
|
+
throw serverInspectionError(cause);
|
|
37
|
+
}
|
|
38
|
+
throw serverInspectionError();
|
|
39
|
+
}
|
|
40
|
+
function captureServerClients(server) {
|
|
41
|
+
try {
|
|
42
|
+
let owner = server;
|
|
43
|
+
while (owner !== null) {
|
|
44
|
+
if (isProxy(owner))
|
|
45
|
+
throw serverInspectionError();
|
|
46
|
+
const descriptor = Object.getOwnPropertyDescriptor(owner, "clients");
|
|
47
|
+
if (descriptor !== undefined) {
|
|
48
|
+
if (!("value" in descriptor))
|
|
49
|
+
throw serverInspectionError();
|
|
50
|
+
const clients = descriptor.value;
|
|
51
|
+
if (clients === undefined)
|
|
52
|
+
return undefined;
|
|
53
|
+
if ((typeof clients !== "object" && typeof clients !== "function") ||
|
|
54
|
+
clients === null || isProxy(clients) ||
|
|
55
|
+
typeof clients[Symbol.iterator] !== "function") {
|
|
56
|
+
throw serverInspectionError();
|
|
57
|
+
}
|
|
58
|
+
return clients;
|
|
59
|
+
}
|
|
60
|
+
owner = Object.getPrototypeOf(owner);
|
|
61
|
+
}
|
|
62
|
+
return undefined;
|
|
63
|
+
}
|
|
64
|
+
catch (cause) {
|
|
65
|
+
if (cause instanceof TypeError && cause.message.startsWith("Node WebSocket")) {
|
|
66
|
+
throw cause;
|
|
67
|
+
}
|
|
68
|
+
throw serverInspectionError(cause);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Capture one server instance without retaining mutable method lookups. The
|
|
73
|
+
* underlying implementation remains the receiver because protocol engines
|
|
74
|
+
* legitimately keep mutable transport state on their instance.
|
|
75
|
+
*/
|
|
76
|
+
export function captureNodeWebSocketServer(value) {
|
|
77
|
+
if (typeof value !== "object" || value === null || isProxy(value)) {
|
|
78
|
+
throw serverInspectionError();
|
|
79
|
+
}
|
|
80
|
+
const on = captureServerMethod(value, "on");
|
|
81
|
+
const close = captureServerMethod(value, "close");
|
|
82
|
+
const handleUpgrade = captureServerMethod(value, "handleUpgrade");
|
|
83
|
+
const emit = captureServerMethod(value, "emit");
|
|
84
|
+
const clients = captureServerClients(value);
|
|
85
|
+
const captured = Object.freeze({
|
|
86
|
+
...(clients === undefined ? {} : { clients }),
|
|
87
|
+
on(event, listener) {
|
|
88
|
+
Reflect.apply(on, value, [event, listener]);
|
|
89
|
+
return captured;
|
|
90
|
+
},
|
|
91
|
+
close(callback) {
|
|
92
|
+
Reflect.apply(close, value, callback === undefined ? [] : [callback]);
|
|
93
|
+
},
|
|
94
|
+
handleUpgrade(request, socket, head, callback) {
|
|
95
|
+
Reflect.apply(handleUpgrade, value, [request, socket, head, callback]);
|
|
96
|
+
},
|
|
97
|
+
emit(event, socket, request) {
|
|
98
|
+
Reflect.apply(emit, value, [event, socket, request]);
|
|
99
|
+
},
|
|
100
|
+
});
|
|
101
|
+
return captured;
|
|
102
|
+
}
|
|
103
|
+
function providerInspectionError(cause) {
|
|
104
|
+
return new TypeError("Node WebSocket server provider must be a plain object with one enumerable createServer data property", cause === undefined ? undefined : { cause });
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Capture a provider generation without retaining its mutable registration
|
|
108
|
+
* object or invoking extension-owned accessors.
|
|
109
|
+
*/
|
|
110
|
+
export function snapshotNodeWebSocketServerProvider(value) {
|
|
111
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) {
|
|
112
|
+
throw providerInspectionError();
|
|
113
|
+
}
|
|
114
|
+
let prototype;
|
|
115
|
+
let descriptors;
|
|
116
|
+
try {
|
|
117
|
+
if (isProxy(value))
|
|
118
|
+
throw providerInspectionError();
|
|
119
|
+
prototype = Object.getPrototypeOf(value);
|
|
120
|
+
descriptors = Object.getOwnPropertyDescriptors(value);
|
|
121
|
+
}
|
|
122
|
+
catch (cause) {
|
|
123
|
+
if (cause instanceof TypeError && cause.message.startsWith("Node WebSocket")) {
|
|
124
|
+
throw cause;
|
|
125
|
+
}
|
|
126
|
+
throw providerInspectionError(cause);
|
|
127
|
+
}
|
|
128
|
+
const keys = Reflect.ownKeys(descriptors);
|
|
129
|
+
const descriptor = descriptors.createServer;
|
|
130
|
+
if ((prototype !== Object.prototype && prototype !== null) ||
|
|
131
|
+
keys.length !== 1 || keys[0] !== "createServer" ||
|
|
132
|
+
!descriptor?.enumerable || !("value" in descriptor) ||
|
|
133
|
+
typeof descriptor.value !== "function") {
|
|
134
|
+
throw providerInspectionError();
|
|
135
|
+
}
|
|
136
|
+
const createServer = descriptor.value;
|
|
137
|
+
return Object.freeze({
|
|
138
|
+
createServer(options) {
|
|
139
|
+
return Reflect.apply(createServer, undefined, [options]);
|
|
140
|
+
},
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
/** Create immutable registration metadata from a standalone factory. */
|
|
144
|
+
export function createNodeWebSocketServerProvider(createServer) {
|
|
145
|
+
return snapshotNodeWebSocketServerProvider({ createServer });
|
|
146
|
+
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/***********************
|
|
2
2
|
* Runtime identifier for platform-specific code paths
|
|
3
3
|
***********************/
|
|
4
|
+
import type { NodeWebSocketServerProvider } from "veryfront/extensions/websocket";
|
|
4
5
|
export type RuntimeId = "deno" | "node" | "bun" | "cloudflare" | "memory";
|
|
5
6
|
/**
|
|
6
7
|
* Core runtime adapter interface
|
|
@@ -72,6 +73,10 @@ export interface WebSocketConnection {
|
|
|
72
73
|
removeEventListener(type: string, listener: EventListener): void;
|
|
73
74
|
}
|
|
74
75
|
declare const WEBSOCKET_UPGRADE_RESPONSE_KIND = "websocket-upgrade";
|
|
76
|
+
/**
|
|
77
|
+
* Explicit upgrade signal used when a runtime cannot construct a native
|
|
78
|
+
* `Response` with status 101.
|
|
79
|
+
*/
|
|
75
80
|
export interface WebSocketUpgradeResponse {
|
|
76
81
|
readonly kind: typeof WEBSOCKET_UPGRADE_RESPONSE_KIND;
|
|
77
82
|
readonly status: 101;
|
|
@@ -96,6 +101,18 @@ export interface ServeOptions {
|
|
|
96
101
|
hostname: string;
|
|
97
102
|
port: number;
|
|
98
103
|
}) => void;
|
|
104
|
+
/**
|
|
105
|
+
* Node.js only. Called synchronously for each raw HTTP listener `error` event
|
|
106
|
+
* emitted after `onListen` returns. Returned promises are observed only for
|
|
107
|
+
* rejection and are not awaited by the listener or shutdown.
|
|
108
|
+
*/
|
|
109
|
+
onRuntimeError?: (error: Error) => void | Promise<void>;
|
|
110
|
+
/**
|
|
111
|
+
* Node.js only. Explicitly selected implementation for completing approved
|
|
112
|
+
* WebSocket upgrades. When absent, HTTP serving remains available and every
|
|
113
|
+
* Node WebSocket upgrade fails closed.
|
|
114
|
+
*/
|
|
115
|
+
nodeWebSocketServerProvider?: Readonly<NodeWebSocketServerProvider>;
|
|
99
116
|
}
|
|
100
117
|
export interface Server {
|
|
101
118
|
stop(): Promise<void>;
|
|
@@ -105,10 +122,26 @@ export interface Server {
|
|
|
105
122
|
};
|
|
106
123
|
}
|
|
107
124
|
export interface FileSystemAdapter {
|
|
125
|
+
/** Explicit marker for virtual filesystems that never resolve symbolic links. */
|
|
126
|
+
readonly symlinkSemantics?: "none";
|
|
108
127
|
readFile(path: string): Promise<string>;
|
|
109
128
|
/** Read raw bytes when binary-safe access is required */
|
|
110
129
|
readFileBytes?(path: string): Promise<Uint8Array>;
|
|
130
|
+
/** Fixed upstream whole-object ceiling, valid only with `readFileBytes`. */
|
|
131
|
+
readonly maxWholeFileReadBytes?: number;
|
|
132
|
+
/** Read at most a caller-selected byte prefix without materializing the whole source. */
|
|
133
|
+
readFileBytesBounded?(path: string, byteLimit: number): Promise<Uint8Array>;
|
|
134
|
+
/** Read a complete file only when it fits within the caller-selected limit. */
|
|
135
|
+
readFileBytesWithinLimit?(path: string, byteLimit: number): Promise<Uint8Array>;
|
|
136
|
+
/** Read one verified native snapshot beneath `containmentRoot`. */
|
|
137
|
+
readFileSnapshotWithinLimit?(path: string, containmentRoot: string, byteLimit: number): Promise<Uint8Array>;
|
|
111
138
|
writeFile(path: string, content: string): Promise<void>;
|
|
139
|
+
/** Write raw bytes when binary-safe output is required. */
|
|
140
|
+
writeFileBytes?(path: string, content: Uint8Array): Promise<void>;
|
|
141
|
+
/** Create a new file atomically, refusing to replace an existing path. */
|
|
142
|
+
createFileBytesExclusive?(path: string, content: Uint8Array): Promise<void>;
|
|
143
|
+
/** Atomically replace a path when the runtime supports same-filesystem rename. */
|
|
144
|
+
rename?(from: string, to: string): Promise<void>;
|
|
112
145
|
exists(path: string): Promise<boolean>;
|
|
113
146
|
readDir(path: string): AsyncIterable<DirEntry>;
|
|
114
147
|
stat(path: string): Promise<FileInfo>;
|
|
@@ -151,6 +184,8 @@ export interface FileSystemAdapter {
|
|
|
151
184
|
*/
|
|
152
185
|
getSourceSnapshotVersion?(): number | undefined | Promise<number | undefined>;
|
|
153
186
|
}
|
|
187
|
+
export type BoundedFileSystemAdapter = FileSystemAdapter & Required<Pick<FileSystemAdapter, "readFileBytesBounded">>;
|
|
188
|
+
export type ExactBoundedFileSystemAdapter = FileSystemAdapter & Required<Pick<FileSystemAdapter, "readFileBytesWithinLimit">>;
|
|
154
189
|
export interface ResolveFileOptions {
|
|
155
190
|
allowPagesPrefix?: boolean;
|
|
156
191
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../src/src/platform/adapters/base.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../src/src/platform/adapters/base.ts"],"names":[],"mappings":"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"}
|