@ariestools/aries-dapp-serve 0.1.7
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/README.md +31 -0
- package/dist/node/DappBacking.d.ts +21 -0
- package/dist/node/DappBacking.d.ts.map +1 -0
- package/dist/node/index.d.ts +5 -0
- package/dist/node/index.d.ts.map +1 -0
- package/dist/node/index.mjs +85 -0
- package/dist/node/index.mjs.map +7 -0
- package/dist/node/startDappServer.d.ts +42 -0
- package/dist/node/startDappServer.d.ts.map +1 -0
- package/package.json +52 -0
package/README.md
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# @ariestools/aries-dapp-serve
|
|
2
|
+
|
|
3
|
+
> **Dev only.** This package is a local development fixture — it accepts any
|
|
4
|
+
> S3 credentials, carries no auth or metrics, and only ships an ephemeral
|
|
5
|
+
> in-memory backing. It is not meant for production at this time; production
|
|
6
|
+
> dapp backends are published to real object storage (S3/R2) behind the
|
|
7
|
+
> standard sub-domain layout.
|
|
8
|
+
|
|
9
|
+
Serves a dapp backend's layout from a single origin using subfolders
|
|
10
|
+
(`/state`, `/data`, `/index`) — the S3-compatible storage half of the
|
|
11
|
+
`aries dapp` local backend. The subfolders are S3 buckets on an embedded
|
|
12
|
+
S3-compatible server ([s3rver](https://www.npmjs.com/package/s3rver)), so any
|
|
13
|
+
S3 client writes into them unchanged while readers (browser dapps, `curl`)
|
|
14
|
+
fetch the same layout paths over plain HTTP or optional TLS.
|
|
15
|
+
|
|
16
|
+
The three buckets:
|
|
17
|
+
|
|
18
|
+
- **`data`** — immutable, append-only facts (the source of truth).
|
|
19
|
+
- **`state`** — mutable current derived view, rebuilt on an interval by the
|
|
20
|
+
`DappActor`.
|
|
21
|
+
- **`index`** — query-optimized derived views, rebuilt on an interval by the
|
|
22
|
+
`DappActor`.
|
|
23
|
+
|
|
24
|
+
This package is the storage layer only. The `DappActor` that derives `state`
|
|
25
|
+
and `index` from `data`, and the composed daemon that runs both the server
|
|
26
|
+
and the actor, live in
|
|
27
|
+
[`@ariestools/aries-dapp-core`](../dapp-core). `aries dapp up` spawns that
|
|
28
|
+
composed daemon.
|
|
29
|
+
|
|
30
|
+
Backings (`DappBackingKind`): `memory` (ephemeral temp directory, wiped on
|
|
31
|
+
shutdown). `disk` and `s3` are planned.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export declare const DAPP_BACKINGS: readonly ["memory"];
|
|
2
|
+
export type DappBackingKind = typeof DAPP_BACKINGS[number];
|
|
3
|
+
export declare function isDappBackingKind(value: string): value is DappBackingKind;
|
|
4
|
+
/**
|
|
5
|
+
* Where the served dapp layout's objects live. v1 ships only `memory` (an
|
|
6
|
+
* ephemeral temp directory wiped on shutdown); a `disk` kind (caller-owned
|
|
7
|
+
* directory, no-op cleanup) is the natural next addition. An `s3` kind will
|
|
8
|
+
* proxy a remote bucket instead of running a local store, so it will lift
|
|
9
|
+
* this seam up to the server level rather than fit this interface.
|
|
10
|
+
*/
|
|
11
|
+
export interface DappBacking {
|
|
12
|
+
/** Human-readable label for banners and status output. */
|
|
13
|
+
readonly description: string;
|
|
14
|
+
/** Directory the S3-compatible server persists bucket objects under. Only valid after prepare(). */
|
|
15
|
+
readonly directory: string;
|
|
16
|
+
cleanup(): Promise<void>;
|
|
17
|
+
prepare(): Promise<void>;
|
|
18
|
+
}
|
|
19
|
+
export declare function createMemoryBacking(): DappBacking;
|
|
20
|
+
export declare function resolveBacking(kind: DappBackingKind): DappBacking;
|
|
21
|
+
//# sourceMappingURL=DappBacking.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DappBacking.d.ts","sourceRoot":"","sources":["../../src/DappBacking.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,aAAa,qBAAsB,CAAA;AAChD,MAAM,MAAM,eAAe,GAAG,OAAO,aAAa,CAAC,MAAM,CAAC,CAAA;AAE1D,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,eAAe,CAEzE;AAED;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B,0DAA0D;IAC1D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,oGAAoG;IACpG,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACxB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACzB;AAED,wBAAgB,mBAAmB,IAAI,WAAW,CAgBjD;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,eAAe,GAAG,WAAW,CAMjE"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export type { DappBacking, DappBackingKind } from './DappBacking.ts';
|
|
2
|
+
export { createMemoryBacking, DAPP_BACKINGS, isDappBackingKind, resolveBacking, } from './DappBacking.ts';
|
|
3
|
+
export type { DappBucket, DappServerOptions, RunningDappServer, } from './startDappServer.ts';
|
|
4
|
+
export { DAPP_BUCKETS, startDappServer } from './startDappServer.ts';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACpE,OAAO,EACL,mBAAmB,EAAE,aAAa,EAAE,iBAAiB,EAAE,cAAc,GACtE,MAAM,kBAAkB,CAAA;AACzB,YAAY,EACV,UAAU,EAAE,iBAAiB,EAAE,iBAAiB,GACjD,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
// src/DappBacking.ts
|
|
2
|
+
import { mkdtemp, rm } from "node:fs/promises";
|
|
3
|
+
import { tmpdir } from "node:os";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
var DAPP_BACKINGS = ["memory"];
|
|
6
|
+
function isDappBackingKind(value) {
|
|
7
|
+
return DAPP_BACKINGS.includes(value);
|
|
8
|
+
}
|
|
9
|
+
function createMemoryBacking() {
|
|
10
|
+
let dir;
|
|
11
|
+
return {
|
|
12
|
+
description: "memory (ephemeral temp directory)",
|
|
13
|
+
get directory() {
|
|
14
|
+
if (dir === void 0) throw new Error("Memory backing not prepared");
|
|
15
|
+
return dir;
|
|
16
|
+
},
|
|
17
|
+
async prepare() {
|
|
18
|
+
dir ??= await mkdtemp(path.join(tmpdir(), "aries-dapp-"));
|
|
19
|
+
},
|
|
20
|
+
async cleanup() {
|
|
21
|
+
if (dir !== void 0) await rm(dir, { recursive: true, force: true });
|
|
22
|
+
dir = void 0;
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
function resolveBacking(kind) {
|
|
27
|
+
switch (kind) {
|
|
28
|
+
case "memory": {
|
|
29
|
+
return createMemoryBacking();
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// src/startDappServer.ts
|
|
35
|
+
import S3rver from "s3rver";
|
|
36
|
+
var DAPP_BUCKETS = ["state", "data", "index"];
|
|
37
|
+
var DEFAULT_HOST = "127.0.0.1";
|
|
38
|
+
var DEFAULT_PORT = 8801;
|
|
39
|
+
var CORS_ALLOW_READS = `<CORSConfiguration>
|
|
40
|
+
<CORSRule>
|
|
41
|
+
<AllowedOrigin>*</AllowedOrigin>
|
|
42
|
+
<AllowedMethod>GET</AllowedMethod>
|
|
43
|
+
<AllowedMethod>HEAD</AllowedMethod>
|
|
44
|
+
<AllowedHeader>*</AllowedHeader>
|
|
45
|
+
</CORSRule>
|
|
46
|
+
</CORSConfiguration>`;
|
|
47
|
+
async function startDappServer(options) {
|
|
48
|
+
const host = options.host ?? DEFAULT_HOST;
|
|
49
|
+
const publicHost = options.publicHost ?? host;
|
|
50
|
+
await options.backing.prepare();
|
|
51
|
+
const server = new S3rver({
|
|
52
|
+
address: host,
|
|
53
|
+
allowMismatchedSignatures: true,
|
|
54
|
+
cert: options.tls?.cert,
|
|
55
|
+
configureBuckets: DAPP_BUCKETS.map((name) => ({ name, configs: [CORS_ALLOW_READS] })),
|
|
56
|
+
directory: options.backing.directory,
|
|
57
|
+
key: options.tls?.key,
|
|
58
|
+
port: options.port ?? DEFAULT_PORT,
|
|
59
|
+
silent: options.silent ?? false,
|
|
60
|
+
vhostBuckets: false
|
|
61
|
+
});
|
|
62
|
+
try {
|
|
63
|
+
const { port } = await server.run();
|
|
64
|
+
return {
|
|
65
|
+
baseUrl: `${options.tls === void 0 ? "http" : "https"}://${publicHost}:${port}`,
|
|
66
|
+
port,
|
|
67
|
+
close: async () => {
|
|
68
|
+
await server.close();
|
|
69
|
+
await options.backing.cleanup();
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
} catch (error) {
|
|
73
|
+
await options.backing.cleanup();
|
|
74
|
+
throw error;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
export {
|
|
78
|
+
DAPP_BACKINGS,
|
|
79
|
+
DAPP_BUCKETS,
|
|
80
|
+
createMemoryBacking,
|
|
81
|
+
isDappBackingKind,
|
|
82
|
+
resolveBacking,
|
|
83
|
+
startDappServer
|
|
84
|
+
};
|
|
85
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/DappBacking.ts", "../../src/startDappServer.ts"],
|
|
4
|
+
"sourcesContent": ["import { mkdtemp, rm } from 'node:fs/promises'\nimport { tmpdir } from 'node:os'\nimport path from 'node:path'\n\nexport const DAPP_BACKINGS = ['memory'] as const\nexport type DappBackingKind = typeof DAPP_BACKINGS[number]\n\nexport function isDappBackingKind(value: string): value is DappBackingKind {\n return (DAPP_BACKINGS as readonly string[]).includes(value)\n}\n\n/**\n * Where the served dapp layout's objects live. v1 ships only `memory` (an\n * ephemeral temp directory wiped on shutdown); a `disk` kind (caller-owned\n * directory, no-op cleanup) is the natural next addition. An `s3` kind will\n * proxy a remote bucket instead of running a local store, so it will lift\n * this seam up to the server level rather than fit this interface.\n */\nexport interface DappBacking {\n /** Human-readable label for banners and status output. */\n readonly description: string\n /** Directory the S3-compatible server persists bucket objects under. Only valid after prepare(). */\n readonly directory: string\n cleanup(): Promise<void>\n prepare(): Promise<void>\n}\n\nexport function createMemoryBacking(): DappBacking {\n let dir: string | undefined\n return {\n description: 'memory (ephemeral temp directory)',\n get directory(): string {\n if (dir === undefined) throw new Error('Memory backing not prepared')\n return dir\n },\n async prepare(): Promise<void> {\n dir ??= await mkdtemp(path.join(tmpdir(), 'aries-dapp-'))\n },\n async cleanup(): Promise<void> {\n if (dir !== undefined) await rm(dir, { recursive: true, force: true })\n dir = undefined\n },\n }\n}\n\nexport function resolveBacking(kind: DappBackingKind): DappBacking {\n switch (kind) {\n case 'memory': {\n return createMemoryBacking()\n }\n }\n}\n", "import S3rver from 's3rver'\n\nimport type { DappBacking } from './DappBacking.ts'\n\n/**\n * The bucket-per-role split of a dapp backend's layout. Path-style\n * addressing turns each bucket into a subfolder of the one origin \u2014\n * `/state`, `/data`, `/index`:\n *\n * - `data` \u2014 immutable, append-only facts (the source of truth)\n * - `state` \u2014 mutable current derived view, rebuilt by the DappActor\n * - `index` \u2014 query-optimized derived views, rebuilt by the DappActor\n */\nexport const DAPP_BUCKETS = ['state', 'data', 'index'] as const\nexport type DappBucket = typeof DAPP_BUCKETS[number]\n\nconst DEFAULT_HOST = '127.0.0.1'\nconst DEFAULT_PORT = 8801\n\n/** Allow browser dapp clients to read the layout cross-origin. */\nconst CORS_ALLOW_READS = `<CORSConfiguration>\n <CORSRule>\n <AllowedOrigin>*</AllowedOrigin>\n <AllowedMethod>GET</AllowedMethod>\n <AllowedMethod>HEAD</AllowedMethod>\n <AllowedHeader>*</AllowedHeader>\n </CORSRule>\n</CORSConfiguration>`\n\nexport interface DappServerOptions {\n backing: DappBacking\n host?: string\n port?: number\n publicHost?: string\n silent?: boolean\n tls?: {\n cert: string | Buffer\n key: string | Buffer\n }\n}\n\nexport interface RunningDappServer {\n baseUrl: string\n port: number\n close(): Promise<void>\n}\n\n/**\n * Boots an S3-compatible server (s3rver) pre-configured with the three dapp\n * layout buckets. Writers use the S3 API (any credentials are accepted);\n * readers fetch `/{bucket}/{layout-path}` over HTTP or optional TLS.\n *\n * DEV ONLY \u2014 this server is a local development fixture, not a production\n * dapp host. It intentionally skips the production concerns the datalake and\n * signing-pool planes carry (auth, metrics, durable multi-instance storage):\n * any S3 credentials are accepted and the only backing is an ephemeral temp\n * directory. Production dapps stay on real object storage (S3/R2) behind the\n * standard sub-domain layout.\n */\nexport async function startDappServer(options: DappServerOptions): Promise<RunningDappServer> {\n const host = options.host ?? DEFAULT_HOST\n const publicHost = options.publicHost ?? host\n await options.backing.prepare()\n const server = new S3rver({\n address: host,\n allowMismatchedSignatures: true,\n cert: options.tls?.cert,\n configureBuckets: DAPP_BUCKETS.map(name => ({ name, configs: [CORS_ALLOW_READS] })),\n directory: options.backing.directory,\n key: options.tls?.key,\n port: options.port ?? DEFAULT_PORT,\n silent: options.silent ?? false,\n vhostBuckets: false,\n })\n try {\n const { port } = await server.run()\n return {\n baseUrl: `${options.tls === undefined ? 'http' : 'https'}://${publicHost}:${port}`,\n port,\n close: async (): Promise<void> => {\n await server.close()\n await options.backing.cleanup()\n },\n }\n } catch (error) {\n await options.backing.cleanup()\n throw error\n }\n}\n"],
|
|
5
|
+
"mappings": ";AAAA,SAAS,SAAS,UAAU;AAC5B,SAAS,cAAc;AACvB,OAAO,UAAU;AAEV,IAAM,gBAAgB,CAAC,QAAQ;AAG/B,SAAS,kBAAkB,OAAyC;AACzE,SAAQ,cAAoC,SAAS,KAAK;AAC5D;AAkBO,SAAS,sBAAmC;AACjD,MAAI;AACJ,SAAO;AAAA,IACL,aAAa;AAAA,IACb,IAAI,YAAoB;AACtB,UAAI,QAAQ,OAAW,OAAM,IAAI,MAAM,6BAA6B;AACpE,aAAO;AAAA,IACT;AAAA,IACA,MAAM,UAAyB;AAC7B,cAAQ,MAAM,QAAQ,KAAK,KAAK,OAAO,GAAG,aAAa,CAAC;AAAA,IAC1D;AAAA,IACA,MAAM,UAAyB;AAC7B,UAAI,QAAQ,OAAW,OAAM,GAAG,KAAK,EAAE,WAAW,MAAM,OAAO,KAAK,CAAC;AACrE,YAAM;AAAA,IACR;AAAA,EACF;AACF;AAEO,SAAS,eAAe,MAAoC;AACjE,UAAQ,MAAM;AAAA,IACZ,KAAK,UAAU;AACb,aAAO,oBAAoB;AAAA,IAC7B;AAAA,EACF;AACF;;;ACnDA,OAAO,YAAY;AAaZ,IAAM,eAAe,CAAC,SAAS,QAAQ,OAAO;AAGrD,IAAM,eAAe;AACrB,IAAM,eAAe;AAGrB,IAAM,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAuCzB,eAAsB,gBAAgB,SAAwD;AAC5F,QAAM,OAAO,QAAQ,QAAQ;AAC7B,QAAM,aAAa,QAAQ,cAAc;AACzC,QAAM,QAAQ,QAAQ,QAAQ;AAC9B,QAAM,SAAS,IAAI,OAAO;AAAA,IACxB,SAAS;AAAA,IACT,2BAA2B;AAAA,IAC3B,MAAM,QAAQ,KAAK;AAAA,IACnB,kBAAkB,aAAa,IAAI,WAAS,EAAE,MAAM,SAAS,CAAC,gBAAgB,EAAE,EAAE;AAAA,IAClF,WAAW,QAAQ,QAAQ;AAAA,IAC3B,KAAK,QAAQ,KAAK;AAAA,IAClB,MAAM,QAAQ,QAAQ;AAAA,IACtB,QAAQ,QAAQ,UAAU;AAAA,IAC1B,cAAc;AAAA,EAChB,CAAC;AACD,MAAI;AACF,UAAM,EAAE,KAAK,IAAI,MAAM,OAAO,IAAI;AAClC,WAAO;AAAA,MACL,SAAS,GAAG,QAAQ,QAAQ,SAAY,SAAS,OAAO,MAAM,UAAU,IAAI,IAAI;AAAA,MAChF;AAAA,MACA,OAAO,YAA2B;AAChC,cAAM,OAAO,MAAM;AACnB,cAAM,QAAQ,QAAQ,QAAQ;AAAA,MAChC;AAAA,IACF;AAAA,EACF,SAAS,OAAO;AACd,UAAM,QAAQ,QAAQ,QAAQ;AAC9B,UAAM;AAAA,EACR;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { DappBacking } from './DappBacking.ts';
|
|
2
|
+
/**
|
|
3
|
+
* The bucket-per-role split of a dapp backend's layout. Path-style
|
|
4
|
+
* addressing turns each bucket into a subfolder of the one origin —
|
|
5
|
+
* `/state`, `/data`, `/index`:
|
|
6
|
+
*
|
|
7
|
+
* - `data` — immutable, append-only facts (the source of truth)
|
|
8
|
+
* - `state` — mutable current derived view, rebuilt by the DappActor
|
|
9
|
+
* - `index` — query-optimized derived views, rebuilt by the DappActor
|
|
10
|
+
*/
|
|
11
|
+
export declare const DAPP_BUCKETS: readonly ["state", "data", "index"];
|
|
12
|
+
export type DappBucket = typeof DAPP_BUCKETS[number];
|
|
13
|
+
export interface DappServerOptions {
|
|
14
|
+
backing: DappBacking;
|
|
15
|
+
host?: string;
|
|
16
|
+
port?: number;
|
|
17
|
+
publicHost?: string;
|
|
18
|
+
silent?: boolean;
|
|
19
|
+
tls?: {
|
|
20
|
+
cert: string | Buffer;
|
|
21
|
+
key: string | Buffer;
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
export interface RunningDappServer {
|
|
25
|
+
baseUrl: string;
|
|
26
|
+
port: number;
|
|
27
|
+
close(): Promise<void>;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Boots an S3-compatible server (s3rver) pre-configured with the three dapp
|
|
31
|
+
* layout buckets. Writers use the S3 API (any credentials are accepted);
|
|
32
|
+
* readers fetch `/{bucket}/{layout-path}` over HTTP or optional TLS.
|
|
33
|
+
*
|
|
34
|
+
* DEV ONLY — this server is a local development fixture, not a production
|
|
35
|
+
* dapp host. It intentionally skips the production concerns the datalake and
|
|
36
|
+
* signing-pool planes carry (auth, metrics, durable multi-instance storage):
|
|
37
|
+
* any S3 credentials are accepted and the only backing is an ephemeral temp
|
|
38
|
+
* directory. Production dapps stay on real object storage (S3/R2) behind the
|
|
39
|
+
* standard sub-domain layout.
|
|
40
|
+
*/
|
|
41
|
+
export declare function startDappServer(options: DappServerOptions): Promise<RunningDappServer>;
|
|
42
|
+
//# sourceMappingURL=startDappServer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"startDappServer.d.ts","sourceRoot":"","sources":["../../src/startDappServer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAEnD;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY,qCAAsC,CAAA;AAC/D,MAAM,MAAM,UAAU,GAAG,OAAO,YAAY,CAAC,MAAM,CAAC,CAAA;AAepD,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,WAAW,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,GAAG,CAAC,EAAE;QACJ,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;QACrB,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KACrB,CAAA;CACF;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACvB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA6B5F"}
|
package/package.json
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@ariestools/aries-dapp-serve",
|
|
3
|
+
"version": "0.1.7",
|
|
4
|
+
"description": "Aries dapp REST server: serves a dapp backend's S3 layout from one origin with /state, /data, /index subfolders",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"ariestools",
|
|
7
|
+
"xl1",
|
|
8
|
+
"xyo",
|
|
9
|
+
"dapp",
|
|
10
|
+
"s3",
|
|
11
|
+
"typescript"
|
|
12
|
+
],
|
|
13
|
+
"homepage": "https://ariestools.ai",
|
|
14
|
+
"license": "LGPL-3.0-only",
|
|
15
|
+
"author": {
|
|
16
|
+
"name": "Arie Trouw",
|
|
17
|
+
"email": "support@ariestools.ai",
|
|
18
|
+
"url": "https://ariestools.ai"
|
|
19
|
+
},
|
|
20
|
+
"sideEffects": false,
|
|
21
|
+
"type": "module",
|
|
22
|
+
"exports": {
|
|
23
|
+
".": {
|
|
24
|
+
"types": "./dist/node/index.d.ts",
|
|
25
|
+
"default": "./dist/node/index.mjs"
|
|
26
|
+
},
|
|
27
|
+
"./package.json": "./package.json"
|
|
28
|
+
},
|
|
29
|
+
"files": [
|
|
30
|
+
"dist",
|
|
31
|
+
"README.md"
|
|
32
|
+
],
|
|
33
|
+
"publishConfig": {
|
|
34
|
+
"access": "public"
|
|
35
|
+
},
|
|
36
|
+
"dependencies": {
|
|
37
|
+
"s3rver": "~3.7.1"
|
|
38
|
+
},
|
|
39
|
+
"devDependencies": {
|
|
40
|
+
"@ariestools/tsconfig": "~8.7.16",
|
|
41
|
+
"@aws-sdk/client-s3": "~3.1090.0",
|
|
42
|
+
"@types/node": "~26.1.1",
|
|
43
|
+
"@types/s3rver": "~3.7.4",
|
|
44
|
+
"typescript": "~6.0.3",
|
|
45
|
+
"vite": "~8.1.5",
|
|
46
|
+
"vitest": "~4.1.10"
|
|
47
|
+
},
|
|
48
|
+
"engines": {
|
|
49
|
+
"node": ">=18.17.1"
|
|
50
|
+
},
|
|
51
|
+
"engineStrict": true
|
|
52
|
+
}
|