euclid-ndk 0.2.0
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/LICENSE +201 -0
- package/README.md +603 -0
- package/dist/auth/index.d.ts +18 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +17 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/rfc9421.d.ts +112 -0
- package/dist/auth/rfc9421.d.ts.map +1 -0
- package/dist/auth/rfc9421.js +452 -0
- package/dist/auth/rfc9421.js.map +1 -0
- package/dist/auth/scheme.d.ts +46 -0
- package/dist/auth/scheme.d.ts.map +1 -0
- package/dist/auth/scheme.js +44 -0
- package/dist/auth/scheme.js.map +1 -0
- package/dist/auth/signable.d.ts +37 -0
- package/dist/auth/signable.d.ts.map +1 -0
- package/dist/auth/signable.js +70 -0
- package/dist/auth/signable.js.map +1 -0
- package/dist/auth/sigv4.d.ts +72 -0
- package/dist/auth/sigv4.d.ts.map +1 -0
- package/dist/auth/sigv4.js +227 -0
- package/dist/auth/sigv4.js.map +1 -0
- package/dist/credentials.d.ts +56 -0
- package/dist/credentials.d.ts.map +1 -0
- package/dist/credentials.js +135 -0
- package/dist/credentials.js.map +1 -0
- package/dist/dto/com.d.ts +101 -0
- package/dist/dto/com.d.ts.map +1 -0
- package/dist/dto/com.js +132 -0
- package/dist/dto/com.js.map +1 -0
- package/dist/dto/eag.d.ts +104 -0
- package/dist/dto/eag.d.ts.map +1 -0
- package/dist/dto/eag.js +70 -0
- package/dist/dto/eag.js.map +1 -0
- package/dist/dto/eam.d.ts +105 -0
- package/dist/dto/eam.d.ts.map +1 -0
- package/dist/dto/eam.js +98 -0
- package/dist/dto/eam.js.map +1 -0
- package/dist/dto/eap.d.ts +88 -0
- package/dist/dto/eap.d.ts.map +1 -0
- package/dist/dto/eap.js +54 -0
- package/dist/dto/eap.js.map +1 -0
- package/dist/dto/ekm.d.ts +109 -0
- package/dist/dto/ekm.d.ts.map +1 -0
- package/dist/dto/ekm.js +78 -0
- package/dist/dto/ekm.js.map +1 -0
- package/dist/dto/ekv.d.ts +73 -0
- package/dist/dto/ekv.d.ts.map +1 -0
- package/dist/dto/ekv.js +45 -0
- package/dist/dto/ekv.js.map +1 -0
- package/dist/dto/ens.d.ts +84 -0
- package/dist/dto/ens.d.ts.map +1 -0
- package/dist/dto/ens.js +72 -0
- package/dist/dto/ens.js.map +1 -0
- package/dist/dto/eqs.d.ts +160 -0
- package/dist/dto/eqs.d.ts.map +1 -0
- package/dist/dto/eqs.js +120 -0
- package/dist/dto/eqs.js.map +1 -0
- package/dist/dto/esm.d.ts +192 -0
- package/dist/dto/esm.d.ts.map +1 -0
- package/dist/dto/esm.js +147 -0
- package/dist/dto/esm.js.map +1 -0
- package/dist/dto/ess.d.ts +49 -0
- package/dist/dto/ess.d.ts.map +1 -0
- package/dist/dto/ess.js +30 -0
- package/dist/dto/ess.js.map +1 -0
- package/dist/dto/json.d.ts +24 -0
- package/dist/dto/json.d.ts.map +1 -0
- package/dist/dto/json.js +47 -0
- package/dist/dto/json.js.map +1 -0
- package/dist/errors.d.ts +40 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +73 -0
- package/dist/errors.js.map +1 -0
- package/dist/http/client.d.ts +96 -0
- package/dist/http/client.d.ts.map +1 -0
- package/dist/http/client.js +258 -0
- package/dist/http/client.js.map +1 -0
- package/dist/index.d.ts +93 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +110 -0
- package/dist/index.js.map +1 -0
- package/dist/modules/base.d.ts +121 -0
- package/dist/modules/base.d.ts.map +1 -0
- package/dist/modules/base.js +142 -0
- package/dist/modules/base.js.map +1 -0
- package/dist/modules/eag.d.ts +166 -0
- package/dist/modules/eag.d.ts.map +1 -0
- package/dist/modules/eag.js +189 -0
- package/dist/modules/eag.js.map +1 -0
- package/dist/modules/eam.d.ts +314 -0
- package/dist/modules/eam.d.ts.map +1 -0
- package/dist/modules/eam.js +641 -0
- package/dist/modules/eam.js.map +1 -0
- package/dist/modules/eap.d.ts +204 -0
- package/dist/modules/eap.d.ts.map +1 -0
- package/dist/modules/eap.js +218 -0
- package/dist/modules/eap.js.map +1 -0
- package/dist/modules/ekm.d.ts +182 -0
- package/dist/modules/ekm.d.ts.map +1 -0
- package/dist/modules/ekm.js +228 -0
- package/dist/modules/ekm.js.map +1 -0
- package/dist/modules/ekv.d.ts +189 -0
- package/dist/modules/ekv.d.ts.map +1 -0
- package/dist/modules/ekv.js +212 -0
- package/dist/modules/ekv.js.map +1 -0
- package/dist/modules/ens.d.ts +122 -0
- package/dist/modules/ens.d.ts.map +1 -0
- package/dist/modules/ens.js +167 -0
- package/dist/modules/ens.js.map +1 -0
- package/dist/modules/eqs.d.ts +283 -0
- package/dist/modules/eqs.d.ts.map +1 -0
- package/dist/modules/eqs.js +355 -0
- package/dist/modules/eqs.js.map +1 -0
- package/dist/modules/esm.d.ts +358 -0
- package/dist/modules/esm.d.ts.map +1 -0
- package/dist/modules/esm.js +660 -0
- package/dist/modules/esm.js.map +1 -0
- package/dist/modules/ess.d.ts +96 -0
- package/dist/modules/ess.d.ts.map +1 -0
- package/dist/modules/ess.js +110 -0
- package/dist/modules/ess.js.map +1 -0
- package/dist/url.d.ts +31 -0
- package/dist/url.d.ts.map +1 -0
- package/dist/url.js +47 -0
- package/dist/url.js.map +1 -0
- package/package.json +47 -0
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The shapes EAM sends back.
|
|
3
|
+
*
|
|
4
|
+
* Interfaces and the functions that parse them, rather than untyped objects, so a typo in a field
|
|
5
|
+
* name is a compile error here instead of an `undefined` that travels. Each parse is defensive -
|
|
6
|
+
* see {@link import("./json.js")}.
|
|
7
|
+
*
|
|
8
|
+
* Field names are the server's (`dto/include/euclid/dto/eam`), converted to camelCase where they
|
|
9
|
+
* differ; where they do not, the JSON name is the one on the wire.
|
|
10
|
+
*/
|
|
11
|
+
/** The caller identity a response echoes back, from the server's `BaseDto`. */
|
|
12
|
+
export interface Metadata {
|
|
13
|
+
region: string;
|
|
14
|
+
accountId: string;
|
|
15
|
+
user: string;
|
|
16
|
+
}
|
|
17
|
+
/** A signing credential. The secret is returned once, at creation, and never again. */
|
|
18
|
+
export interface AccessKey {
|
|
19
|
+
accessKeyId: string;
|
|
20
|
+
active: boolean;
|
|
21
|
+
createdAt: string;
|
|
22
|
+
}
|
|
23
|
+
/** What a user may reach in one account: which namespaces, and whether they administer it. */
|
|
24
|
+
export interface AccountGrant {
|
|
25
|
+
accountId: string;
|
|
26
|
+
namespaces: string[];
|
|
27
|
+
isAdmin: boolean;
|
|
28
|
+
granted: string;
|
|
29
|
+
}
|
|
30
|
+
/** A user. `password` is a hash when the server sends one at all - never the plaintext. */
|
|
31
|
+
export interface User {
|
|
32
|
+
userId: string;
|
|
33
|
+
ern: string;
|
|
34
|
+
password: string;
|
|
35
|
+
email: string;
|
|
36
|
+
accountId: string;
|
|
37
|
+
region: string;
|
|
38
|
+
accountGrants: AccountGrant[];
|
|
39
|
+
created: string;
|
|
40
|
+
modified: string;
|
|
41
|
+
}
|
|
42
|
+
/** A named set of users. Membership in the `administrator` group is what makes an admin. */
|
|
43
|
+
export interface UserGroup {
|
|
44
|
+
name: string;
|
|
45
|
+
ern: string;
|
|
46
|
+
accountId: string;
|
|
47
|
+
region: string;
|
|
48
|
+
description: string;
|
|
49
|
+
userIds: string[];
|
|
50
|
+
created: string;
|
|
51
|
+
modified: string;
|
|
52
|
+
}
|
|
53
|
+
/** A tenant. Namespaces live under it, and everything else is scoped by the pair. */
|
|
54
|
+
export interface Account {
|
|
55
|
+
accountId: string;
|
|
56
|
+
name: string;
|
|
57
|
+
ern: string;
|
|
58
|
+
description: string;
|
|
59
|
+
created: string;
|
|
60
|
+
modified: string;
|
|
61
|
+
}
|
|
62
|
+
/** A namespace within an account, unique by name within it. */
|
|
63
|
+
export interface Namespace {
|
|
64
|
+
accountId: string;
|
|
65
|
+
name: string;
|
|
66
|
+
ern: string;
|
|
67
|
+
description: string;
|
|
68
|
+
created: string;
|
|
69
|
+
modified: string;
|
|
70
|
+
}
|
|
71
|
+
/** What `login` answers with: a bearer token and, usually, an access key to sign with. */
|
|
72
|
+
export interface LoginResult {
|
|
73
|
+
token: string;
|
|
74
|
+
accessKeyId: string;
|
|
75
|
+
secretAccessKey: string;
|
|
76
|
+
createdAt: string;
|
|
77
|
+
isAdmin: boolean;
|
|
78
|
+
metadata: Metadata;
|
|
79
|
+
/** The response as it arrived, for anything a later euclid added that this does not name. */
|
|
80
|
+
raw: Record<string, unknown>;
|
|
81
|
+
}
|
|
82
|
+
/** One page of something, and how many exist in total. */
|
|
83
|
+
export interface Page<T> {
|
|
84
|
+
total: number;
|
|
85
|
+
items: T[];
|
|
86
|
+
}
|
|
87
|
+
/** A newly created access key. This is the only time the secret is ever returned. */
|
|
88
|
+
export interface CreateAccessKeyResult {
|
|
89
|
+
accessKeyId: string;
|
|
90
|
+
secretAccessKey: string;
|
|
91
|
+
createdAt: string;
|
|
92
|
+
metadata: Metadata;
|
|
93
|
+
}
|
|
94
|
+
export declare function toMetadata(document: unknown): Metadata;
|
|
95
|
+
export declare function toAccessKey(document: unknown): AccessKey;
|
|
96
|
+
export declare function toAccountGrant(document: unknown): AccountGrant;
|
|
97
|
+
export declare function toUser(document: unknown): User;
|
|
98
|
+
export declare function toUserGroup(document: unknown): UserGroup;
|
|
99
|
+
export declare function toAccount(document: unknown): Account;
|
|
100
|
+
export declare function toNamespace(document: unknown): Namespace;
|
|
101
|
+
export declare function toLoginResult(document: unknown): LoginResult;
|
|
102
|
+
export declare function toCreateAccessKeyResult(document: unknown): CreateAccessKeyResult;
|
|
103
|
+
/** One page of whatever a listing returns, under the field the server puts it in. */
|
|
104
|
+
export declare function toPage<T>(document: unknown, field: string, parse: (entry: unknown) => T): Page<T>;
|
|
105
|
+
//# sourceMappingURL=eam.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eam.d.ts","sourceRoot":"","sources":["../../src/dto/eam.ts"],"names":[],"mappings":"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"}
|
package/dist/dto/eam.js
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The shapes EAM sends back.
|
|
3
|
+
*
|
|
4
|
+
* Interfaces and the functions that parse them, rather than untyped objects, so a typo in a field
|
|
5
|
+
* name is a compile error here instead of an `undefined` that travels. Each parse is defensive -
|
|
6
|
+
* see {@link import("./json.js")}.
|
|
7
|
+
*
|
|
8
|
+
* Field names are the server's (`dto/include/euclid/dto/eam`), converted to camelCase where they
|
|
9
|
+
* differ; where they do not, the JSON name is the one on the wire.
|
|
10
|
+
*/
|
|
11
|
+
import { documents, flag, number, object, strings, text } from "./json.js";
|
|
12
|
+
export function toMetadata(document) {
|
|
13
|
+
return { region: text(document, "region"), accountId: text(document, "accountId"), user: text(document, "user") };
|
|
14
|
+
}
|
|
15
|
+
export function toAccessKey(document) {
|
|
16
|
+
return {
|
|
17
|
+
accessKeyId: text(document, "accessKeyId"),
|
|
18
|
+
active: flag(document, "active", true),
|
|
19
|
+
createdAt: text(document, "createdAt"),
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export function toAccountGrant(document) {
|
|
23
|
+
return {
|
|
24
|
+
accountId: text(document, "accountId"),
|
|
25
|
+
namespaces: strings(document, "namespaces"),
|
|
26
|
+
isAdmin: flag(document, "isAdmin"),
|
|
27
|
+
granted: text(document, "granted"),
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
export function toUser(document) {
|
|
31
|
+
return {
|
|
32
|
+
userId: text(document, "userId"),
|
|
33
|
+
ern: text(document, "ern"),
|
|
34
|
+
password: text(document, "password"),
|
|
35
|
+
email: text(document, "email"),
|
|
36
|
+
accountId: text(document, "accountId"),
|
|
37
|
+
region: text(document, "region"),
|
|
38
|
+
accountGrants: documents(document, "accountGrants").map(toAccountGrant),
|
|
39
|
+
created: text(document, "created"),
|
|
40
|
+
modified: text(document, "modified"),
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
export function toUserGroup(document) {
|
|
44
|
+
return {
|
|
45
|
+
name: text(document, "name"),
|
|
46
|
+
ern: text(document, "ern"),
|
|
47
|
+
accountId: text(document, "accountId"),
|
|
48
|
+
region: text(document, "region"),
|
|
49
|
+
description: text(document, "description"),
|
|
50
|
+
userIds: strings(document, "userIds"),
|
|
51
|
+
created: text(document, "created"),
|
|
52
|
+
modified: text(document, "modified"),
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
export function toAccount(document) {
|
|
56
|
+
return {
|
|
57
|
+
accountId: text(document, "accountId"),
|
|
58
|
+
name: text(document, "name"),
|
|
59
|
+
ern: text(document, "ern"),
|
|
60
|
+
description: text(document, "description"),
|
|
61
|
+
created: text(document, "created"),
|
|
62
|
+
modified: text(document, "modified"),
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
export function toNamespace(document) {
|
|
66
|
+
return {
|
|
67
|
+
accountId: text(document, "accountId"),
|
|
68
|
+
name: text(document, "name"),
|
|
69
|
+
ern: text(document, "ern"),
|
|
70
|
+
description: text(document, "description"),
|
|
71
|
+
created: text(document, "created"),
|
|
72
|
+
modified: text(document, "modified"),
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
export function toLoginResult(document) {
|
|
76
|
+
return {
|
|
77
|
+
token: text(document, "token"),
|
|
78
|
+
accessKeyId: text(document, "accessKeyId"),
|
|
79
|
+
secretAccessKey: text(document, "secretAccessKey"),
|
|
80
|
+
createdAt: text(document, "createdAt"),
|
|
81
|
+
isAdmin: flag(document, "isAdmin"),
|
|
82
|
+
metadata: toMetadata(object(document)["metadata"]),
|
|
83
|
+
raw: object(document),
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
export function toCreateAccessKeyResult(document) {
|
|
87
|
+
return {
|
|
88
|
+
accessKeyId: text(document, "accessKeyId"),
|
|
89
|
+
secretAccessKey: text(document, "secretAccessKey"),
|
|
90
|
+
createdAt: text(document, "createdAt"),
|
|
91
|
+
metadata: toMetadata(object(document)["metadata"]),
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
/** One page of whatever a listing returns, under the field the server puts it in. */
|
|
95
|
+
export function toPage(document, field, parse) {
|
|
96
|
+
return { total: number(document, "total"), items: documents(document, field).map(parse) };
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=eam.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eam.js","sourceRoot":"","sources":["../../src/dto/eam.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The shapes EAP sends back.
|
|
3
|
+
*
|
|
4
|
+
* Parsed the same defensive way as every other module's, and on this module the field names are worth
|
|
5
|
+
* reading twice: a request and the response to it call some of the same things by different names. An
|
|
6
|
+
* application is deployed from a `bucket` and an `artifact`, and comes back describing a
|
|
7
|
+
* {@link Application.bucketErn} and an {@link Application.artifactKey}. Names are what an operator has
|
|
8
|
+
* in hand; ERNs are what euclid stores, and the server resolves the one into the other.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* One running instance of an application, and where it can be reached.
|
|
12
|
+
*
|
|
13
|
+
* A pool's instances are started and stopped as it grows and shrinks, and each is given a port of its
|
|
14
|
+
* own when it starts - so this is a snapshot rather than a setting.
|
|
15
|
+
*/
|
|
16
|
+
export interface Endpoint {
|
|
17
|
+
instanceId: string;
|
|
18
|
+
pid: number;
|
|
19
|
+
httpPort: number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* A deployed application: what euclid runs, as what, and how much of it.
|
|
23
|
+
*
|
|
24
|
+
* `desiredState` is what somebody asked for - see
|
|
25
|
+
* {@link import("../modules/eap.js").EuclidEap.startApplication} - and `state` is what is actually
|
|
26
|
+
* running, which is `RUNNING` exactly when at least one instance answers. The two differing is the
|
|
27
|
+
* ordinary picture of an application starting up, and the lasting picture of one that cannot.
|
|
28
|
+
*
|
|
29
|
+
* `userId` is the identity the application runs as. Unless one was named at deployment it is a technical
|
|
30
|
+
* principal euclid made for it - no password, no login, one access key - so that nothing an application
|
|
31
|
+
* leaks is a person's credential.
|
|
32
|
+
*/
|
|
33
|
+
export interface Application {
|
|
34
|
+
applicationId: string;
|
|
35
|
+
ern: string;
|
|
36
|
+
accountId: string;
|
|
37
|
+
region: string;
|
|
38
|
+
/** `JAVA`, `PYTHON`, `NODEJS` or `BINARY` - see {@link import("../modules/eap.js")}. */
|
|
39
|
+
runtime: string;
|
|
40
|
+
/** The bucket the artifact was deployed from, as an ERN. Deployed by name. */
|
|
41
|
+
bucketErn: string;
|
|
42
|
+
/** The object key of the artifact within that bucket. */
|
|
43
|
+
artifactKey: string;
|
|
44
|
+
version: string;
|
|
45
|
+
/**
|
|
46
|
+
* ESM's checksum of the artifact - the same hash the manager compares the copy on the host against,
|
|
47
|
+
* and the one a redeploy has to differ from.
|
|
48
|
+
*/
|
|
49
|
+
md5Sum: string;
|
|
50
|
+
command: string;
|
|
51
|
+
arguments: string[];
|
|
52
|
+
environment: Record<string, string>;
|
|
53
|
+
/**
|
|
54
|
+
* The ERNs of the buckets and queues this application was granted, resolved from the names it was
|
|
55
|
+
* deployed with.
|
|
56
|
+
*/
|
|
57
|
+
resources: string[];
|
|
58
|
+
userId: string;
|
|
59
|
+
/** The level this application logs at, or empty when it is under the configured default. */
|
|
60
|
+
logLevel: string;
|
|
61
|
+
minInstances: number;
|
|
62
|
+
maxInstances: number;
|
|
63
|
+
readyTimeoutMs: number;
|
|
64
|
+
/** `RUNNING` or `STOPPED`, as asked for. */
|
|
65
|
+
desiredState: string;
|
|
66
|
+
/** `RUNNING` or `STOPPED`, as observed - which is not the same as having been started. */
|
|
67
|
+
state: string;
|
|
68
|
+
/** How many instances are running - the length of {@link endpoints}. */
|
|
69
|
+
instances: number;
|
|
70
|
+
endpoints: Endpoint[];
|
|
71
|
+
created: string;
|
|
72
|
+
modified: string;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* What an application logs at now, and the channel it logs on.
|
|
76
|
+
*
|
|
77
|
+
* An empty `logLevel` means the level was taken back rather than changed: the application is under
|
|
78
|
+
* whatever the installation's logging configuration says again.
|
|
79
|
+
*/
|
|
80
|
+
export interface LogLevelResult {
|
|
81
|
+
applicationId: string;
|
|
82
|
+
logLevel: string;
|
|
83
|
+
channel: string;
|
|
84
|
+
}
|
|
85
|
+
export declare function toEndpoint(document: unknown): Endpoint;
|
|
86
|
+
export declare function toApplication(document: unknown): Application;
|
|
87
|
+
export declare function toLogLevelResult(document: unknown): LogLevelResult;
|
|
88
|
+
//# sourceMappingURL=eap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eap.d.ts","sourceRoot":"","sources":["../../src/dto/eap.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH;;;;;GAKG;AACH,MAAM,WAAW,QAAQ;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,WAAW;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,wFAAwF;IACxF,OAAO,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,SAAS,EAAE,MAAM,CAAC;IAClB,yDAAyD;IACzD,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC;;;OAGG;IACH,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,4FAA4F;IAC5F,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,4CAA4C;IAC5C,YAAY,EAAE,MAAM,CAAC;IACrB,0FAA0F;IAC1F,KAAK,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAID,wBAAgB,UAAU,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,CAMtD;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,OAAO,GAAG,WAAW,CA2B5D;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,OAAO,GAAG,cAAc,CAMlE"}
|
package/dist/dto/eap.js
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The shapes EAP sends back.
|
|
3
|
+
*
|
|
4
|
+
* Parsed the same defensive way as every other module's, and on this module the field names are worth
|
|
5
|
+
* reading twice: a request and the response to it call some of the same things by different names. An
|
|
6
|
+
* application is deployed from a `bucket` and an `artifact`, and comes back describing a
|
|
7
|
+
* {@link Application.bucketErn} and an {@link Application.artifactKey}. Names are what an operator has
|
|
8
|
+
* in hand; ERNs are what euclid stores, and the server resolves the one into the other.
|
|
9
|
+
*/
|
|
10
|
+
import { documents, number, stringMap, strings, text } from "./json.js";
|
|
11
|
+
// -- parsers ---------------------------------------------------------------------------------------
|
|
12
|
+
export function toEndpoint(document) {
|
|
13
|
+
return {
|
|
14
|
+
instanceId: text(document, "instanceId"),
|
|
15
|
+
pid: number(document, "pid"),
|
|
16
|
+
httpPort: number(document, "httpPort"),
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export function toApplication(document) {
|
|
20
|
+
return {
|
|
21
|
+
applicationId: text(document, "applicationId"),
|
|
22
|
+
ern: text(document, "ern"),
|
|
23
|
+
accountId: text(document, "accountId"),
|
|
24
|
+
region: text(document, "region"),
|
|
25
|
+
runtime: text(document, "runtime"),
|
|
26
|
+
bucketErn: text(document, "bucketErn"),
|
|
27
|
+
artifactKey: text(document, "artifactKey"),
|
|
28
|
+
version: text(document, "version"),
|
|
29
|
+
md5Sum: text(document, "md5Sum"),
|
|
30
|
+
command: text(document, "command"),
|
|
31
|
+
arguments: strings(document, "arguments"),
|
|
32
|
+
environment: stringMap(document, "environment"),
|
|
33
|
+
resources: strings(document, "resources"),
|
|
34
|
+
userId: text(document, "userId"),
|
|
35
|
+
logLevel: text(document, "logLevel"),
|
|
36
|
+
minInstances: number(document, "minInstances"),
|
|
37
|
+
maxInstances: number(document, "maxInstances"),
|
|
38
|
+
readyTimeoutMs: number(document, "readyTimeoutMs"),
|
|
39
|
+
desiredState: text(document, "desiredState"),
|
|
40
|
+
state: text(document, "state"),
|
|
41
|
+
instances: number(document, "instances"),
|
|
42
|
+
endpoints: documents(document, "endpoints").map(toEndpoint),
|
|
43
|
+
created: text(document, "created"),
|
|
44
|
+
modified: text(document, "modified"),
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
export function toLogLevelResult(document) {
|
|
48
|
+
return {
|
|
49
|
+
applicationId: text(document, "applicationId"),
|
|
50
|
+
logLevel: text(document, "logLevel"),
|
|
51
|
+
channel: text(document, "channel"),
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=eap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eap.js","sourceRoot":"","sources":["../../src/dto/eap.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAgFxE,qGAAqG;AAErG,MAAM,UAAU,UAAU,CAAC,QAAiB;IAC1C,OAAO;QACL,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;QACxC,GAAG,EAAE,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC;QAC5B,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC;KACvC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,QAAiB;IAC7C,OAAO;QACL,aAAa,EAAE,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;QAC9C,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC;QAC1B,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;QACtC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;QAChC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;QAClC,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;QACtC,WAAW,EAAE,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;QAC1C,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;QAClC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;QAChC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;QAClC,SAAS,EAAE,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC;QACzC,WAAW,EAAE,SAAS,CAAC,QAAQ,EAAE,aAAa,CAAC;QAC/C,SAAS,EAAE,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC;QACzC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;QAChC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;QACpC,YAAY,EAAE,MAAM,CAAC,QAAQ,EAAE,cAAc,CAAC;QAC9C,YAAY,EAAE,MAAM,CAAC,QAAQ,EAAE,cAAc,CAAC;QAC9C,cAAc,EAAE,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;QAClD,YAAY,EAAE,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;QAC5C,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;QAC9B,SAAS,EAAE,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC;QACxC,SAAS,EAAE,SAAS,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC;QAC3D,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;QAClC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;KACrC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,QAAiB;IAChD,OAAO;QACL,aAAa,EAAE,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;QAC9C,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;QACpC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;KACnC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The shapes EKM sends back.
|
|
3
|
+
*
|
|
4
|
+
* Parsed the same defensive way as every other module's - see {@link import("./json.js")}. Field names
|
|
5
|
+
* are the server's (`dto/include/euclid/dto/ekm`), converted to camelCase.
|
|
6
|
+
*
|
|
7
|
+
* Nothing here carries key material: a key's bytes never leave the server, which is the point of having
|
|
8
|
+
* a key module rather than a table of keys. What a caller gets is a handle - the key's name to encrypt
|
|
9
|
+
* with, its ERN to administer - and the description it was given, which is what answers, months later,
|
|
10
|
+
* whether the key can be deleted.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* An encryption key, described rather than disclosed.
|
|
14
|
+
*
|
|
15
|
+
* `name` is the ID the server minted, and what {@link import("../modules/ekm.js").EuclidEkm.encrypt}
|
|
16
|
+
* takes; `ern` is what the administrative actions take. The two are not interchangeable, which is the
|
|
17
|
+
* one thing about EKM worth remembering.
|
|
18
|
+
*/
|
|
19
|
+
export interface Key {
|
|
20
|
+
name: string;
|
|
21
|
+
ern: string;
|
|
22
|
+
description: string;
|
|
23
|
+
algorithm: string;
|
|
24
|
+
length: number;
|
|
25
|
+
/**
|
|
26
|
+
* `AVAILABLE`, `REVOKED` or `PENDING_DELETION`. Only an available key encrypts; a revoked one and one
|
|
27
|
+
* scheduled for deletion still decrypt what they wrote.
|
|
28
|
+
*/
|
|
29
|
+
status: string;
|
|
30
|
+
tags: Record<string, string>;
|
|
31
|
+
/** When a key scheduled for deletion goes for good. Empty for a key that is not. */
|
|
32
|
+
deletionDate: string;
|
|
33
|
+
created: string;
|
|
34
|
+
modified: string;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* A stored X.509 certificate.
|
|
38
|
+
*
|
|
39
|
+
* `certificate` is the PEM, which is public and comes back. The private key does not: it goes in once
|
|
40
|
+
* and no action returns it, so there is no field for it here.
|
|
41
|
+
*/
|
|
42
|
+
export interface Certificate {
|
|
43
|
+
name: string;
|
|
44
|
+
ern: string;
|
|
45
|
+
description: string;
|
|
46
|
+
/** The PEM-encoded certificate. */
|
|
47
|
+
certificate: string;
|
|
48
|
+
subject: string;
|
|
49
|
+
issuer: string;
|
|
50
|
+
serialNumber: string;
|
|
51
|
+
fingerprint: string;
|
|
52
|
+
subjectAltNames: string[];
|
|
53
|
+
/**
|
|
54
|
+
* Whether euclid generated and signed this itself, in which case nobody else has vouched for it and a
|
|
55
|
+
* client still has to be told to trust it.
|
|
56
|
+
*/
|
|
57
|
+
generated: boolean;
|
|
58
|
+
notBefore: string;
|
|
59
|
+
notAfter: string;
|
|
60
|
+
tags: Record<string, string>;
|
|
61
|
+
created: string;
|
|
62
|
+
modified: string;
|
|
63
|
+
}
|
|
64
|
+
/** A newly created key. `name` is the ID the server minted - the only handle to it. */
|
|
65
|
+
export interface CreateKeyResult {
|
|
66
|
+
name: string;
|
|
67
|
+
ern: string;
|
|
68
|
+
description: string;
|
|
69
|
+
algorithm: string;
|
|
70
|
+
length: number;
|
|
71
|
+
status: string;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* A key scheduled for deletion, and the date it goes for good.
|
|
75
|
+
*
|
|
76
|
+
* Scheduled rather than deleted: everything the key encrypted becomes unreadable when that date passes,
|
|
77
|
+
* and the window is the only chance anybody gets to notice.
|
|
78
|
+
*/
|
|
79
|
+
export interface DeleteKeyResult {
|
|
80
|
+
name: string;
|
|
81
|
+
ern: string;
|
|
82
|
+
deletionDate: string;
|
|
83
|
+
status: string;
|
|
84
|
+
}
|
|
85
|
+
/** A revoked key: it encrypts nothing further, and still decrypts what it wrote. */
|
|
86
|
+
export interface RevokeKeyResult {
|
|
87
|
+
name: string;
|
|
88
|
+
ern: string;
|
|
89
|
+
status: string;
|
|
90
|
+
}
|
|
91
|
+
/** A key as it now reads. Only the description changed - not the material, and not the life. */
|
|
92
|
+
export interface KeyDescriptionResult {
|
|
93
|
+
name: string;
|
|
94
|
+
ern: string;
|
|
95
|
+
description: string;
|
|
96
|
+
}
|
|
97
|
+
/** The name and ERN of a deleted certificate. */
|
|
98
|
+
export interface DeleteCertificateResult {
|
|
99
|
+
name: string;
|
|
100
|
+
ern: string;
|
|
101
|
+
}
|
|
102
|
+
export declare function toKey(document: unknown): Key;
|
|
103
|
+
export declare function toCertificate(document: unknown): Certificate;
|
|
104
|
+
export declare function toCreateKeyResult(document: unknown): CreateKeyResult;
|
|
105
|
+
export declare function toDeleteKeyResult(document: unknown): DeleteKeyResult;
|
|
106
|
+
export declare function toRevokeKeyResult(document: unknown): RevokeKeyResult;
|
|
107
|
+
export declare function toKeyDescriptionResult(document: unknown): KeyDescriptionResult;
|
|
108
|
+
export declare function toDeleteCertificateResult(document: unknown): DeleteCertificateResult;
|
|
109
|
+
//# sourceMappingURL=ekm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ekm.d.ts","sourceRoot":"","sources":["../../src/dto/ekm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH;;;;;;GAMG;AACH,MAAM,WAAW,GAAG;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,oFAAoF;IACpF,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,mCAAmC;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B;;;OAGG;IACH,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAID,uFAAuF;AACvF,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,oFAAoF;AACpF,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,gGAAgG;AAChG,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,iDAAiD;AACjD,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAID,wBAAgB,KAAK,CAAC,QAAQ,EAAE,OAAO,GAAG,GAAG,CAa5C;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,OAAO,GAAG,WAAW,CAkB5D;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,OAAO,GAAG,eAAe,CASpE;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,OAAO,GAAG,eAAe,CAOpE;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,OAAO,GAAG,eAAe,CAEpE;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,OAAO,GAAG,oBAAoB,CAM9E;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,OAAO,GAAG,uBAAuB,CAEpF"}
|
package/dist/dto/ekm.js
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The shapes EKM sends back.
|
|
3
|
+
*
|
|
4
|
+
* Parsed the same defensive way as every other module's - see {@link import("./json.js")}. Field names
|
|
5
|
+
* are the server's (`dto/include/euclid/dto/ekm`), converted to camelCase.
|
|
6
|
+
*
|
|
7
|
+
* Nothing here carries key material: a key's bytes never leave the server, which is the point of having
|
|
8
|
+
* a key module rather than a table of keys. What a caller gets is a handle - the key's name to encrypt
|
|
9
|
+
* with, its ERN to administer - and the description it was given, which is what answers, months later,
|
|
10
|
+
* whether the key can be deleted.
|
|
11
|
+
*/
|
|
12
|
+
import { flag, number, stringMap, strings, text } from "./json.js";
|
|
13
|
+
// -- parsers ---------------------------------------------------------------------------------------
|
|
14
|
+
export function toKey(document) {
|
|
15
|
+
return {
|
|
16
|
+
name: text(document, "name"),
|
|
17
|
+
ern: text(document, "ern"),
|
|
18
|
+
description: text(document, "description"),
|
|
19
|
+
algorithm: text(document, "algorithm"),
|
|
20
|
+
length: number(document, "length"),
|
|
21
|
+
status: text(document, "status"),
|
|
22
|
+
tags: stringMap(document, "tags"),
|
|
23
|
+
deletionDate: text(document, "deletionDate"),
|
|
24
|
+
created: text(document, "created"),
|
|
25
|
+
modified: text(document, "modified"),
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
export function toCertificate(document) {
|
|
29
|
+
return {
|
|
30
|
+
name: text(document, "name"),
|
|
31
|
+
ern: text(document, "ern"),
|
|
32
|
+
description: text(document, "description"),
|
|
33
|
+
certificate: text(document, "certificate"),
|
|
34
|
+
subject: text(document, "subject"),
|
|
35
|
+
issuer: text(document, "issuer"),
|
|
36
|
+
serialNumber: text(document, "serialNumber"),
|
|
37
|
+
fingerprint: text(document, "fingerprint"),
|
|
38
|
+
subjectAltNames: strings(document, "subjectAltNames"),
|
|
39
|
+
generated: flag(document, "generated"),
|
|
40
|
+
notBefore: text(document, "notBefore"),
|
|
41
|
+
notAfter: text(document, "notAfter"),
|
|
42
|
+
tags: stringMap(document, "tags"),
|
|
43
|
+
created: text(document, "created"),
|
|
44
|
+
modified: text(document, "modified"),
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
export function toCreateKeyResult(document) {
|
|
48
|
+
return {
|
|
49
|
+
name: text(document, "name"),
|
|
50
|
+
ern: text(document, "ern"),
|
|
51
|
+
description: text(document, "description"),
|
|
52
|
+
algorithm: text(document, "algorithm"),
|
|
53
|
+
length: number(document, "length"),
|
|
54
|
+
status: text(document, "status"),
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
export function toDeleteKeyResult(document) {
|
|
58
|
+
return {
|
|
59
|
+
name: text(document, "name"),
|
|
60
|
+
ern: text(document, "ern"),
|
|
61
|
+
deletionDate: text(document, "deletionDate"),
|
|
62
|
+
status: text(document, "status"),
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
export function toRevokeKeyResult(document) {
|
|
66
|
+
return { name: text(document, "name"), ern: text(document, "ern"), status: text(document, "status") };
|
|
67
|
+
}
|
|
68
|
+
export function toKeyDescriptionResult(document) {
|
|
69
|
+
return {
|
|
70
|
+
name: text(document, "name"),
|
|
71
|
+
ern: text(document, "ern"),
|
|
72
|
+
description: text(document, "description"),
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
export function toDeleteCertificateResult(document) {
|
|
76
|
+
return { name: text(document, "name"), ern: text(document, "ern") };
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=ekm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ekm.js","sourceRoot":"","sources":["../../src/dto/ekm.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The shapes EKV sends back.
|
|
3
|
+
*
|
|
4
|
+
* Parsed the same defensive way as every other module's. One thing is not just parsed but rearranged: the
|
|
5
|
+
* server stores an item's timestamps as two ordinary attributes, `_created` and `_modified`, and
|
|
6
|
+
* {@link toItem} lifts them out. Leaving them in would mean an item read, changed and written back acquires
|
|
7
|
+
* two attributes it never had - and since a write replaces rather than merges, they would stick.
|
|
8
|
+
*/
|
|
9
|
+
/** The attributes the server keeps an item's timestamps in, and which {@link toItem} takes back out. */
|
|
10
|
+
export declare const CREATED_ATTRIBUTE = "_created";
|
|
11
|
+
export declare const MODIFIED_ATTRIBUTE = "_modified";
|
|
12
|
+
/**
|
|
13
|
+
* One stored item: its attributes, and when it was written.
|
|
14
|
+
*
|
|
15
|
+
* The attributes are plain values - strings, numbers, booleans, arrays, nested objects - not the tagged
|
|
16
|
+
* {@link import("./com.js").Variant} that EQS, ENS and ESM attributes use. EKV stores documents rather than
|
|
17
|
+
* typed attribute maps, and only a table's key attributes have a declared type.
|
|
18
|
+
*
|
|
19
|
+
* `attributes` is the object itself, which is what to pass back to
|
|
20
|
+
* {@link import("../modules/ekv.js").EuclidEkv.putItem} - the timestamps are deliberately not in it.
|
|
21
|
+
*/
|
|
22
|
+
export interface Item {
|
|
23
|
+
attributes: Record<string, unknown>;
|
|
24
|
+
created: string;
|
|
25
|
+
modified: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* A table: what it is keyed on, and how many items it holds.
|
|
29
|
+
*
|
|
30
|
+
* `sortKey` is empty for a table that has none, which is also what says that
|
|
31
|
+
* {@link import("../modules/ekv.js").EuclidEkv.query} cannot narrow by sort key on this table.
|
|
32
|
+
*
|
|
33
|
+
* `itemCount` is counted rather than looked up, so describing a large table is not free.
|
|
34
|
+
*/
|
|
35
|
+
export interface TableDescription {
|
|
36
|
+
name: string;
|
|
37
|
+
ern: string;
|
|
38
|
+
partitionKey: string;
|
|
39
|
+
/** `string`, `number` or `binary` - see {@link import("../modules/ekv.js")}. */
|
|
40
|
+
partitionKeyType: string;
|
|
41
|
+
sortKey: string;
|
|
42
|
+
sortKeyType: string;
|
|
43
|
+
itemCount: number;
|
|
44
|
+
created: string;
|
|
45
|
+
modified: string;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* The items of one partition that matched, in the order they were asked for.
|
|
49
|
+
*
|
|
50
|
+
* `count` is how many came back rather than how many exist, which is why this is not one of the pages the
|
|
51
|
+
* rest of this SDK answers listings with: a query knows what it returned and the server does not count the
|
|
52
|
+
* partition to tell you what it did not.
|
|
53
|
+
*/
|
|
54
|
+
export interface QueryResult {
|
|
55
|
+
items: Item[];
|
|
56
|
+
count: number;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* A page of a table's items, and how many the table holds in total.
|
|
60
|
+
*
|
|
61
|
+
* `count` is what came back and `total` what there is - the pair a caller pages against.
|
|
62
|
+
*/
|
|
63
|
+
export interface ScanResult {
|
|
64
|
+
items: Item[];
|
|
65
|
+
count: number;
|
|
66
|
+
total: number;
|
|
67
|
+
}
|
|
68
|
+
/** One item, with its two timestamp attributes lifted out of the rest. */
|
|
69
|
+
export declare function toItem(document: unknown): Item;
|
|
70
|
+
export declare function toTableDescription(document: unknown): TableDescription;
|
|
71
|
+
export declare function toQueryResult(document: unknown): QueryResult;
|
|
72
|
+
export declare function toScanResult(document: unknown): ScanResult;
|
|
73
|
+
//# sourceMappingURL=ekv.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ekv.d.ts","sourceRoot":"","sources":["../../src/dto/ekv.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,wGAAwG;AACxG,eAAO,MAAM,iBAAiB,aAAa,CAAC;AAC5C,eAAO,MAAM,kBAAkB,cAAc,CAAC;AAE9C;;;;;;;;;GASG;AACH,MAAM,WAAW,IAAI;IACnB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,gFAAgF;IAChF,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAID,0EAA0E;AAC1E,wBAAgB,MAAM,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAO9C;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,OAAO,GAAG,gBAAgB,CAYtE;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,OAAO,GAAG,WAAW,CAI5D;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,OAAO,GAAG,UAAU,CAG1D"}
|