@volter/world-core 3.0.155 → 3.0.157
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/attach.cjs +2 -0
- package/capability-decision.cjs +6 -4
- package/dist/attach.cjs +2 -0
- package/dist/capability-decision.cjs +6 -4
- package/dist/generated/pack-facts.json +204 -4
- package/dist/inject.cjs +150 -86
- package/dist/network-policy.cjs +11 -1
- package/dist/network-policy.d.cts +1 -0
- package/dist/pack-facts.d.cts +3 -0
- package/dist/required-credential-transport.cjs +29 -0
- package/dist/required-credential-transport.d.cts +3 -0
- package/dist/src/actions.d.ts +15 -0
- package/dist/src/actions.js +82 -21
- package/dist/src/ancestry.d.ts +5 -4
- package/dist/src/ancestry.js +53 -28
- package/dist/src/blob-store.d.ts +16 -0
- package/dist/src/blob-store.js +76 -1
- package/dist/src/changeset.js +1 -1
- package/dist/src/clickhouse/compression.d.ts +28 -0
- package/dist/src/clickhouse/compression.js +281 -0
- package/dist/src/clickhouse/index.d.ts +1 -0
- package/dist/src/clickhouse/index.js +1 -0
- package/dist/src/derived-core.d.ts +84 -7
- package/dist/src/derived-core.js +336 -61
- package/dist/src/derived-real.js +97 -15
- package/dist/src/derived.d.ts +5 -0
- package/dist/src/derived.js +3 -0
- package/dist/src/executor.d.ts +7 -0
- package/dist/src/executor.js +15 -1
- package/dist/src/fork.js +1 -1
- package/dist/src/git/lfs.d.ts +13 -3
- package/dist/src/git/lfs.js +41 -9
- package/dist/src/grpc-wire.js +2 -1
- package/dist/src/h2.js +63 -10
- package/dist/src/head.d.ts +5 -0
- package/dist/src/head.js +15 -0
- package/dist/src/history.d.ts +1 -1
- package/dist/src/history.js +7 -7
- package/dist/src/index.d.ts +5 -1
- package/dist/src/index.js +6 -1
- package/dist/src/live/ingest.js +9 -13
- package/dist/src/live/rtmp.js +7 -5
- package/dist/src/live/segmenter.js +7 -1
- package/dist/src/log.d.ts +23 -3
- package/dist/src/log.js +160 -37
- package/dist/src/machines.js +5 -1
- package/dist/src/managed-go-programs.d.ts +55 -0
- package/dist/src/managed-go-programs.js +133 -0
- package/dist/src/managed-original-inputs.d.ts +101 -0
- package/dist/src/managed-original-inputs.js +125 -0
- package/dist/src/mongodb/client.d.ts +8 -0
- package/dist/src/mongodb/client.js +27 -0
- package/dist/src/mongodb/index.d.ts +2 -0
- package/dist/src/mongodb/index.js +5 -0
- package/dist/src/mongodb/stream.d.ts +97 -0
- package/dist/src/mongodb/stream.js +206 -0
- package/dist/src/observe.js +1 -1
- package/dist/src/pack-fetch.d.ts +6 -1
- package/dist/src/pack-fetch.js +69 -14
- package/dist/src/pack-paths.d.ts +2 -1
- package/dist/src/pack-paths.js +6 -1
- package/dist/src/packRegistry.d.ts +10 -14
- package/dist/src/packRegistry.js +2 -13
- package/dist/src/protocol.d.ts +13 -0
- package/dist/src/protocol.js +13 -0
- package/dist/src/redis/engine.d.ts +10 -4
- package/dist/src/redis/engine.js +103 -32
- package/dist/src/redis/member-storage.js +20 -8
- package/dist/src/redis/service-times.d.ts +25 -0
- package/dist/src/redis/service-times.js +87 -0
- package/dist/src/redis/stream.d.ts +2 -1
- package/dist/src/redis/stream.js +109 -20
- package/dist/src/resource-blob.d.ts +4 -0
- package/dist/src/resource-blob.js +8 -1
- package/dist/src/runtime-state.d.ts +11 -0
- package/dist/src/runtime-state.js +13 -0
- package/dist/src/runtime.d.ts +7 -5
- package/dist/src/runtime.js +7 -4
- package/dist/src/serve-http.d.ts +2 -0
- package/dist/src/serve-http.js +73 -6
- package/dist/src/serve.d.ts +10 -0
- package/dist/src/serve.js +43 -3
- package/dist/src/sockets.d.ts +4 -1
- package/dist/src/sockets.js +59 -6
- package/dist/src/storage.d.ts +2 -1
- package/dist/src/storage.js +6 -3
- package/dist/src/vendor-call.js +58 -0
- package/dist/src/world-boot.d.ts +1 -0
- package/dist/src/world-boot.js +6 -0
- package/dist/src/world-clock.js +6 -2
- package/dist/src/world-store.d.ts +122 -7
- package/dist/src/world-store.js +959 -103
- package/dist/src/xml.d.ts +30 -0
- package/dist/src/xml.js +74 -0
- package/generated/pack-facts.json +204 -4
- package/inject.cjs +150 -86
- package/network-policy.cjs +11 -1
- package/network-policy.d.cts +1 -0
- package/pack-facts.d.cts +3 -0
- package/package.json +27 -1
- package/required-credential-transport.cjs +29 -0
- package/required-credential-transport.d.cts +3 -0
- package/src/actions.ts +78 -21
- package/src/ancestry.ts +46 -24
- package/src/blob-store.ts +59 -1
- package/src/changeset.ts +1 -1
- package/src/clickhouse/compression.ts +172 -0
- package/src/clickhouse/index.ts +2 -0
- package/src/derived-core.ts +356 -61
- package/src/derived-real.ts +80 -14
- package/src/derived.ts +9 -1
- package/src/executor.ts +17 -3
- package/src/fork.ts +1 -1
- package/src/git/lfs.ts +40 -9
- package/src/grpc-wire.ts +2 -1
- package/src/h2.ts +46 -5
- package/src/head.ts +15 -0
- package/src/history.ts +7 -7
- package/src/index.ts +7 -1
- package/src/live/ingest.ts +7 -3
- package/src/live/rtmp.ts +7 -5
- package/src/live/segmenter.ts +7 -1
- package/src/log.ts +147 -32
- package/src/machines.ts +5 -1
- package/src/managed-go-programs.ts +146 -0
- package/src/managed-original-inputs.ts +163 -0
- package/src/mongodb/client.ts +27 -0
- package/src/mongodb/index.ts +5 -0
- package/src/mongodb/stream.ts +223 -0
- package/src/observe.ts +1 -1
- package/src/pack-fetch.ts +66 -16
- package/src/pack-paths.ts +5 -1
- package/src/packRegistry.ts +3 -15
- package/src/protocol.ts +13 -0
- package/src/redis/engine.ts +100 -57
- package/src/redis/member-storage.ts +17 -9
- package/src/redis/service-times.ts +81 -0
- package/src/redis/stream.ts +66 -14
- package/src/resource-blob.ts +9 -1
- package/src/runtime-state.ts +14 -0
- package/src/runtime.ts +10 -3
- package/src/serve-http.ts +65 -6
- package/src/serve.ts +45 -3
- package/src/sockets.ts +39 -8
- package/src/storage.ts +5 -3
- package/src/vendor-call.ts +54 -0
- package/src/world-boot.ts +6 -0
- package/src/world-clock.ts +6 -2
- package/src/world-store.ts +768 -91
- package/src/xml.ts +71 -0
package/attach.cjs
CHANGED
|
@@ -35,6 +35,8 @@ if (ref) {
|
|
|
35
35
|
throw new Error(`[twin-attach] could not fetch the world manifest from ${url}: ${(probe.stderr || '').trim()}`);
|
|
36
36
|
}
|
|
37
37
|
const manifest = JSON.parse(probe.stdout);
|
|
38
|
+
if (manifest === null || typeof manifest !== 'object' || Array.isArray(manifest)) throw new Error('[twin-attach] remote world returned no manifest');
|
|
39
|
+
if (Object.hasOwn(manifest, 'requiredCredentials')) throw new Error('[twin-attach] required credential remote transport is unsupported; refusing before bridges or injection');
|
|
38
40
|
const { worldAttachmentNetworkEnv, worldStrictEgress } = require('./network-policy.cjs');
|
|
39
41
|
Object.assign(process.env, worldAttachmentNetworkEnv(ref, manifest.network, process.env, worldStrictEgress(manifest.env ?? {})));
|
|
40
42
|
// a served World's twins as loopback listeners that add its key (./http-bridge.cjs), so a client with its own HTTP
|
package/capability-decision.cjs
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
// scoped proxy, a tab's relay, a native image run's Seatbelt profile) enforces this answer and decides nothing itself.
|
|
5
5
|
// Pure: no I/O, no environment and nothing at import. What only the substrate can observe (the twin route, the vendors
|
|
6
6
|
// sharing a host, which loopback ports are the World's doors or the run's own listeners) arrives as `facts`.
|
|
7
|
-
const { allowsWorldNetworkEgress, isWorldInternalHost, worldNetworkNeedsPathInspection, worldNetworkUsesPassthrough } = require('./network-policy.cjs');
|
|
7
|
+
const { allowsWorldNetworkEgress, explicitlyGrantsWorldNetworkEgress, isWorldInternalHost, worldNetworkNeedsPathInspection, worldNetworkUsesPassthrough } = require('./network-policy.cjs');
|
|
8
8
|
|
|
9
9
|
/** The declaration of a guest with no declaration format: an ordinary host process, which can reach what the host can.
|
|
10
10
|
* Its own loopback is what it observably opened (`facts.ownListener`). A substrate whose guest can declare never uses it. */
|
|
@@ -135,7 +135,8 @@ function unlisted(url, target, method, { declaration, grant = {} }) {
|
|
|
135
135
|
if (grant.strict === true) return refuse(capability, target, 'grant', 'sealed', `this sandbox refuses untwinned host ${url.hostname}`, declaration);
|
|
136
136
|
if (grant.unreadable) return refuse(capability, target, 'grant', 'policy-unreadable', `the World network policy is unreadable (${grant.unreadable}); refusing ${url.hostname}`, declaration);
|
|
137
137
|
if (grant.policy && !allowsWorldNetworkEgress(grant.policy, url, method ?? 'GET')) {
|
|
138
|
-
|
|
138
|
+
// a tunnel (CONNECT) shows no method: the refusal names what was asked, never a method nobody sent
|
|
139
|
+
return refuse(capability, target, 'grant', 'not-granted', `the World network policy does not allow ${method ? `${String(method).toUpperCase()} ` : ''}${url.origin}`, declaration);
|
|
139
140
|
}
|
|
140
141
|
return null;
|
|
141
142
|
}
|
|
@@ -254,9 +255,10 @@ function decideRead(request, { declaration, facts = {} }) {
|
|
|
254
255
|
return refuse(capability, path, 'declaration', 'read-undeclared', `in Docker this container cannot read ${path}: it sees its own filesystem, the World's files and its declared mounts; declare a mount`, declaration);
|
|
255
256
|
}
|
|
256
257
|
|
|
257
|
-
/** Whether the World's build-phase grant lists `url` itself, which then wins over a twin of its host.
|
|
258
|
+
/** Whether the World's build-phase grant lists `url` itself, which then wins over a twin of its host. The unlisted
|
|
259
|
+
* public build reads do not: on a twinned host the twin answers them. */
|
|
258
260
|
function publicBuildGrant(grant, url) {
|
|
259
|
-
return grant.strict !== true && !!grant.policy && grant.policy.phase === 'build' &&
|
|
261
|
+
return grant.strict !== true && !!grant.policy && grant.policy.phase === 'build' && explicitlyGrantsWorldNetworkEgress(grant.policy, url);
|
|
260
262
|
}
|
|
261
263
|
|
|
262
264
|
/** A path the guest writes as its data (a `VOLUME`). Declared, it passes run-scoped: writable for the run, not outliving
|
package/dist/attach.cjs
CHANGED
|
@@ -35,6 +35,8 @@ if (ref) {
|
|
|
35
35
|
throw new Error(`[twin-attach] could not fetch the world manifest from ${url}: ${(probe.stderr || '').trim()}`);
|
|
36
36
|
}
|
|
37
37
|
const manifest = JSON.parse(probe.stdout);
|
|
38
|
+
if (manifest === null || typeof manifest !== 'object' || Array.isArray(manifest)) throw new Error('[twin-attach] remote world returned no manifest');
|
|
39
|
+
if (Object.hasOwn(manifest, 'requiredCredentials')) throw new Error('[twin-attach] required credential remote transport is unsupported; refusing before bridges or injection');
|
|
38
40
|
const { worldAttachmentNetworkEnv, worldStrictEgress } = require('./network-policy.cjs');
|
|
39
41
|
Object.assign(process.env, worldAttachmentNetworkEnv(ref, manifest.network, process.env, worldStrictEgress(manifest.env ?? {})));
|
|
40
42
|
// a served World's twins as loopback listeners that add its key (./http-bridge.cjs), so a client with its own HTTP
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
// scoped proxy, a tab's relay, a native image run's Seatbelt profile) enforces this answer and decides nothing itself.
|
|
5
5
|
// Pure: no I/O, no environment and nothing at import. What only the substrate can observe (the twin route, the vendors
|
|
6
6
|
// sharing a host, which loopback ports are the World's doors or the run's own listeners) arrives as `facts`.
|
|
7
|
-
const { allowsWorldNetworkEgress, isWorldInternalHost, worldNetworkNeedsPathInspection, worldNetworkUsesPassthrough } = require('./network-policy.cjs');
|
|
7
|
+
const { allowsWorldNetworkEgress, explicitlyGrantsWorldNetworkEgress, isWorldInternalHost, worldNetworkNeedsPathInspection, worldNetworkUsesPassthrough } = require('./network-policy.cjs');
|
|
8
8
|
|
|
9
9
|
/** The declaration of a guest with no declaration format: an ordinary host process, which can reach what the host can.
|
|
10
10
|
* Its own loopback is what it observably opened (`facts.ownListener`). A substrate whose guest can declare never uses it. */
|
|
@@ -135,7 +135,8 @@ function unlisted(url, target, method, { declaration, grant = {} }) {
|
|
|
135
135
|
if (grant.strict === true) return refuse(capability, target, 'grant', 'sealed', `this sandbox refuses untwinned host ${url.hostname}`, declaration);
|
|
136
136
|
if (grant.unreadable) return refuse(capability, target, 'grant', 'policy-unreadable', `the World network policy is unreadable (${grant.unreadable}); refusing ${url.hostname}`, declaration);
|
|
137
137
|
if (grant.policy && !allowsWorldNetworkEgress(grant.policy, url, method ?? 'GET')) {
|
|
138
|
-
|
|
138
|
+
// a tunnel (CONNECT) shows no method: the refusal names what was asked, never a method nobody sent
|
|
139
|
+
return refuse(capability, target, 'grant', 'not-granted', `the World network policy does not allow ${method ? `${String(method).toUpperCase()} ` : ''}${url.origin}`, declaration);
|
|
139
140
|
}
|
|
140
141
|
return null;
|
|
141
142
|
}
|
|
@@ -254,9 +255,10 @@ function decideRead(request, { declaration, facts = {} }) {
|
|
|
254
255
|
return refuse(capability, path, 'declaration', 'read-undeclared', `in Docker this container cannot read ${path}: it sees its own filesystem, the World's files and its declared mounts; declare a mount`, declaration);
|
|
255
256
|
}
|
|
256
257
|
|
|
257
|
-
/** Whether the World's build-phase grant lists `url` itself, which then wins over a twin of its host.
|
|
258
|
+
/** Whether the World's build-phase grant lists `url` itself, which then wins over a twin of its host. The unlisted
|
|
259
|
+
* public build reads do not: on a twinned host the twin answers them. */
|
|
258
260
|
function publicBuildGrant(grant, url) {
|
|
259
|
-
return grant.strict !== true && !!grant.policy && grant.policy.phase === 'build' &&
|
|
261
|
+
return grant.strict !== true && !!grant.policy && grant.policy.phase === 'build' && explicitlyGrantsWorldNetworkEgress(grant.policy, url);
|
|
260
262
|
}
|
|
261
263
|
|
|
262
264
|
/** A path the guest writes as its data (a `VOLUME`). Declared, it passes run-scoped: writable for the run, not outliving
|
|
@@ -221,6 +221,50 @@
|
|
|
221
221
|
},
|
|
222
222
|
"serveExport": "createAxiomTwinServer"
|
|
223
223
|
},
|
|
224
|
+
"bitly": {
|
|
225
|
+
"adoption": {
|
|
226
|
+
"sdks": [],
|
|
227
|
+
"envStems": [
|
|
228
|
+
"BITLY",
|
|
229
|
+
"BUFFER_BITLY"
|
|
230
|
+
]
|
|
231
|
+
},
|
|
232
|
+
"hosts": [
|
|
233
|
+
{
|
|
234
|
+
"host": "api-ssl.bitly.com"
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
"host": "bitly.com",
|
|
238
|
+
"pathPattern": "^/oauth/authorize/?$"
|
|
239
|
+
}
|
|
240
|
+
],
|
|
241
|
+
"archetype": "crud",
|
|
242
|
+
"protocol": {
|
|
243
|
+
"declared": "3",
|
|
244
|
+
"major": 3,
|
|
245
|
+
"standing": "current"
|
|
246
|
+
},
|
|
247
|
+
"transport": "rest",
|
|
248
|
+
"resources": [
|
|
249
|
+
"group",
|
|
250
|
+
"bitlink"
|
|
251
|
+
],
|
|
252
|
+
"endpointEnvNone": "Dub uses literal vendor URLs and native fetch; the World routes them by host.",
|
|
253
|
+
"credentialDoor": {
|
|
254
|
+
"path": "/_twin/signup",
|
|
255
|
+
"body": {
|
|
256
|
+
"email": "publisher@example.test",
|
|
257
|
+
"password": "throwaway-bitly-password",
|
|
258
|
+
"login": "publisher"
|
|
259
|
+
},
|
|
260
|
+
"fill": {
|
|
261
|
+
"BITLY_CLIENT_ID": "client_id",
|
|
262
|
+
"BITLY_CLIENT_SECRET": "client_secret",
|
|
263
|
+
"BUFFER_BITLY_API_KEY": "access_token"
|
|
264
|
+
}
|
|
265
|
+
},
|
|
266
|
+
"serveExport": "createBitlyTwinServer"
|
|
267
|
+
},
|
|
224
268
|
"cerebras": {
|
|
225
269
|
"adoption": {
|
|
226
270
|
"sdks": [
|
|
@@ -331,6 +375,65 @@
|
|
|
331
375
|
},
|
|
332
376
|
"serveExport": "createClerkTwinServer"
|
|
333
377
|
},
|
|
378
|
+
"clickhouse": {
|
|
379
|
+
"adoption": {
|
|
380
|
+
"sdks": [
|
|
381
|
+
"@clickhouse/client",
|
|
382
|
+
"@clickhouse/client-web"
|
|
383
|
+
],
|
|
384
|
+
"pypi": [
|
|
385
|
+
"clickhouse-driver",
|
|
386
|
+
"clickhouse-connect",
|
|
387
|
+
"infi-clickhouse-orm"
|
|
388
|
+
],
|
|
389
|
+
"envStems": [
|
|
390
|
+
"CLICKHOUSE"
|
|
391
|
+
]
|
|
392
|
+
},
|
|
393
|
+
"hostsNone": "Self-hosted database: its own declared host and allocated listener are supplied by managed infrastructure.",
|
|
394
|
+
"archetype": "crud",
|
|
395
|
+
"protocol": {
|
|
396
|
+
"declared": "3",
|
|
397
|
+
"major": 3,
|
|
398
|
+
"standing": "current"
|
|
399
|
+
},
|
|
400
|
+
"transport": "rest",
|
|
401
|
+
"resources": [
|
|
402
|
+
"database",
|
|
403
|
+
"table",
|
|
404
|
+
"row"
|
|
405
|
+
],
|
|
406
|
+
"endpointEnv": {
|
|
407
|
+
"name": "CLICKHOUSE_URL",
|
|
408
|
+
"note": "HTTP base URL read by the documented JavaScript client."
|
|
409
|
+
},
|
|
410
|
+
"managedService": {
|
|
411
|
+
"kind": "clickhouse",
|
|
412
|
+
"scheme": "http",
|
|
413
|
+
"configurationArg": "--configuration",
|
|
414
|
+
"originalInputs": {
|
|
415
|
+
"version": 1,
|
|
416
|
+
"manifestArg": "--original-inputs",
|
|
417
|
+
"rootArg": "--original-root",
|
|
418
|
+
"digestArg": "--original-inputs-sha256",
|
|
419
|
+
"paths": [
|
|
420
|
+
"/etc/clickhouse-server",
|
|
421
|
+
"/docker-entrypoint-initdb.d",
|
|
422
|
+
"/entrypoint.sh"
|
|
423
|
+
]
|
|
424
|
+
},
|
|
425
|
+
"note": "One HTTP8123/native9000 process and store; declared operator configuration is installed before listeners."
|
|
426
|
+
},
|
|
427
|
+
"sidePorts": [
|
|
428
|
+
{
|
|
429
|
+
"name": "native",
|
|
430
|
+
"option": "nativePort",
|
|
431
|
+
"flag": "--native-port",
|
|
432
|
+
"note": "ClickHouse native TCP protocol, normally9000, beside HTTP8123."
|
|
433
|
+
}
|
|
434
|
+
],
|
|
435
|
+
"serveExport": "createClickhouseTwinServer"
|
|
436
|
+
},
|
|
334
437
|
"cloudflare": {
|
|
335
438
|
"adoption": {
|
|
336
439
|
"pypi": [
|
|
@@ -538,7 +641,7 @@
|
|
|
538
641
|
},
|
|
539
642
|
"transport": "rest",
|
|
540
643
|
"resources": [],
|
|
541
|
-
"endpointEnvNone": "
|
|
644
|
+
"endpointEnvNone": "No scanned application calls Deepgram; the World claims api.deepgram.com",
|
|
542
645
|
"serveExport": "createDeepgramTwinServer"
|
|
543
646
|
},
|
|
544
647
|
"discord": {
|
|
@@ -786,7 +889,7 @@
|
|
|
786
889
|
},
|
|
787
890
|
"transport": "rest",
|
|
788
891
|
"resources": [],
|
|
789
|
-
"endpointEnvNone": "
|
|
892
|
+
"endpointEnvNone": "the customer life calls https://fal.run/fal-ai/<model>; the World claims the hosts",
|
|
790
893
|
"credentialDoor": {
|
|
791
894
|
"path": "/_twin/app-credentials",
|
|
792
895
|
"body": {},
|
|
@@ -956,7 +1059,7 @@
|
|
|
956
1059
|
},
|
|
957
1060
|
{
|
|
958
1061
|
"host": "github.com",
|
|
959
|
-
"pathPattern": "^/login|^/session|^/settings/|^/organizations/|^/apps/|^/[^/]+/[^/]+/(?:info/refs|git-upload-pack|git-receive-pack)$|^/[^/]+/[^/]+\\.git
|
|
1062
|
+
"pathPattern": "^/login|^/session|^/settings/|^/organizations/|^/apps/|^/[^/]+/[^/]+/(?:info/refs|git-upload-pack|git-receive-pack)$|^/[^/]+/[^/]+\\.git/|^/[^/]+/[^/]+/?$|^/[^/]+/[^/]+/(?:issues|pulls?|blob|raw|tree|commits?|compare)(?:/|$)"
|
|
960
1063
|
}
|
|
961
1064
|
],
|
|
962
1065
|
"archetype": "crud",
|
|
@@ -1014,6 +1117,55 @@
|
|
|
1014
1117
|
"endpointEnvNone": "Google generated clients take rootUrl in code; the World routes the declared Calendar API paths.",
|
|
1015
1118
|
"serveExport": "createGooglecalendarTwinServer"
|
|
1016
1119
|
},
|
|
1120
|
+
"googlefonts": {
|
|
1121
|
+
"adoption": {
|
|
1122
|
+
"sdks": [],
|
|
1123
|
+
"envStems": [
|
|
1124
|
+
"GOOGLE_FONTS"
|
|
1125
|
+
]
|
|
1126
|
+
},
|
|
1127
|
+
"hosts": [
|
|
1128
|
+
{
|
|
1129
|
+
"host": "www.googleapis.com",
|
|
1130
|
+
"pathPattern": "^/webfonts/v1/webfonts$"
|
|
1131
|
+
},
|
|
1132
|
+
{
|
|
1133
|
+
"host": "webfonts.googleapis.com",
|
|
1134
|
+
"pathPattern": "^/v1/webfonts$"
|
|
1135
|
+
},
|
|
1136
|
+
{
|
|
1137
|
+
"host": "fonts.googleapis.com",
|
|
1138
|
+
"pathPattern": "^/css2?$"
|
|
1139
|
+
},
|
|
1140
|
+
{
|
|
1141
|
+
"host": "fonts.gstatic.com",
|
|
1142
|
+
"pathPattern": "^/(s/|l/font$)"
|
|
1143
|
+
}
|
|
1144
|
+
],
|
|
1145
|
+
"archetype": "crud",
|
|
1146
|
+
"protocol": {
|
|
1147
|
+
"declared": "3",
|
|
1148
|
+
"major": 3,
|
|
1149
|
+
"standing": "current"
|
|
1150
|
+
},
|
|
1151
|
+
"transport": "rest",
|
|
1152
|
+
"resources": [
|
|
1153
|
+
"webfont",
|
|
1154
|
+
"_api_key",
|
|
1155
|
+
"_font_catalog",
|
|
1156
|
+
"_stylesheet",
|
|
1157
|
+
"_font_file"
|
|
1158
|
+
],
|
|
1159
|
+
"endpointEnvNone": "Pinned helper hardcodes the vendor API and CSS hosts, then downloads their returned gstatic URLs. Scoped host routing preserves these URLs.",
|
|
1160
|
+
"credentialDoor": {
|
|
1161
|
+
"path": "/_twin/app-credentials",
|
|
1162
|
+
"body": {},
|
|
1163
|
+
"fill": {
|
|
1164
|
+
"GOOGLE_FONTS_API_KEY": "api_key"
|
|
1165
|
+
}
|
|
1166
|
+
},
|
|
1167
|
+
"serveExport": "createGooglefontsTwinServer"
|
|
1168
|
+
},
|
|
1017
1169
|
"googleoauth": {
|
|
1018
1170
|
"adoption": {
|
|
1019
1171
|
"sdks": [
|
|
@@ -1516,6 +1668,38 @@
|
|
|
1516
1668
|
},
|
|
1517
1669
|
"serveExport": "createMistralTwinServer"
|
|
1518
1670
|
},
|
|
1671
|
+
"mongodb": {
|
|
1672
|
+
"adoption": {
|
|
1673
|
+
"sdks": [
|
|
1674
|
+
"mongodb",
|
|
1675
|
+
"mongoose"
|
|
1676
|
+
],
|
|
1677
|
+
"envStems": [
|
|
1678
|
+
"MONGODB",
|
|
1679
|
+
"MONGO"
|
|
1680
|
+
]
|
|
1681
|
+
},
|
|
1682
|
+
"hosts": [],
|
|
1683
|
+
"archetype": "crud",
|
|
1684
|
+
"protocol": {
|
|
1685
|
+
"declared": "3",
|
|
1686
|
+
"major": 3,
|
|
1687
|
+
"standing": "current"
|
|
1688
|
+
},
|
|
1689
|
+
"transport": "raw-tcp",
|
|
1690
|
+
"resources": [
|
|
1691
|
+
"collection",
|
|
1692
|
+
"index",
|
|
1693
|
+
"document"
|
|
1694
|
+
],
|
|
1695
|
+
"endpointEnvNone": "Managed infrastructure injects the connection address from the declared mongodb service; it is a TCP endpoint, with no HTTP API host.",
|
|
1696
|
+
"managedService": {
|
|
1697
|
+
"kind": "mongodb",
|
|
1698
|
+
"scheme": "mongodb",
|
|
1699
|
+
"note": "MongoDB 7.0 wire: standalone, or a declared single-member handshake without sessions; state in the World tree"
|
|
1700
|
+
},
|
|
1701
|
+
"serveExport": "createMongodbTwinServer"
|
|
1702
|
+
},
|
|
1519
1703
|
"npm-registry": {
|
|
1520
1704
|
"adoption": {
|
|
1521
1705
|
"envStems": [
|
|
@@ -1910,6 +2094,10 @@
|
|
|
1910
2094
|
"host": "reddit.com",
|
|
1911
2095
|
"demandPathPattern": "^/api/"
|
|
1912
2096
|
},
|
|
2097
|
+
{
|
|
2098
|
+
"host": "old.reddit.com",
|
|
2099
|
+
"demandPathPattern": "^/api/"
|
|
2100
|
+
},
|
|
1913
2101
|
{
|
|
1914
2102
|
"host": "reddit-uploaded-media.s3-accelerate.amazonaws.com"
|
|
1915
2103
|
},
|
|
@@ -2566,7 +2754,7 @@
|
|
|
2566
2754
|
"publish",
|
|
2567
2755
|
"video"
|
|
2568
2756
|
],
|
|
2569
|
-
"endpointEnvNone": "
|
|
2757
|
+
"endpointEnvNone": "an app calls open.tiktokapis.com and sends people to www.tiktok.com; the World claims the hosts",
|
|
2570
2758
|
"credentialDoor": {
|
|
2571
2759
|
"path": "/_twin/app-credentials",
|
|
2572
2760
|
"body": {},
|
|
@@ -3149,6 +3337,18 @@
|
|
|
3149
3337
|
"_code_challenge",
|
|
3150
3338
|
"upload"
|
|
3151
3339
|
],
|
|
3340
|
+
"credentialDoor": {
|
|
3341
|
+
"path": "/_twin/app-credentials",
|
|
3342
|
+
"body": {},
|
|
3343
|
+
"fill": {
|
|
3344
|
+
"TWITTER_API_KEY": "consumer_key",
|
|
3345
|
+
"TWITTER_API_SECRET": "consumer_secret",
|
|
3346
|
+
"TWITTER_ACCESS_TOKEN": "access_token",
|
|
3347
|
+
"TWITTER_ACCESS_SECRET": "access_token_secret",
|
|
3348
|
+
"TWITTER_CLIENT_ID": "client_id",
|
|
3349
|
+
"TWITTER_CLIENT_SECRET": "client_secret"
|
|
3350
|
+
}
|
|
3351
|
+
},
|
|
3152
3352
|
"serveExport": "createXTwinServer"
|
|
3153
3353
|
},
|
|
3154
3354
|
"xai": {
|