@moorline/control-api 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bootstrap.d.ts +33 -0
- package/dist/bootstrap.js +149 -0
- package/dist/bootstrap.js.map +1 -0
- package/dist/client.d.ts +36 -0
- package/dist/client.js +123 -0
- package/dist/client.js.map +1 -0
- package/dist/contracts/api.d.ts +73 -0
- package/dist/contracts/api.js +32 -0
- package/dist/contracts/api.js.map +1 -0
- package/dist/contracts/routes.d.ts +118 -0
- package/dist/contracts/routes.js +588 -0
- package/dist/contracts/routes.js.map +1 -0
- package/dist/errors.d.ts +4 -0
- package/dist/errors.js +9 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/validation.d.ts +12 -0
- package/dist/validation.js +62 -0
- package/dist/validation.js.map +1 -0
- package/package.json +66 -0
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { parseRuntimeModeName } from '@moorline/contracts';
|
|
2
|
+
import { JsonBodyError } from './errors.js';
|
|
3
|
+
export function parseControlApiRuntimeMode(value, field) {
|
|
4
|
+
try {
|
|
5
|
+
return parseRuntimeModeName(value, field);
|
|
6
|
+
}
|
|
7
|
+
catch (error) {
|
|
8
|
+
throw new JsonBodyError(400, error instanceof Error ? error.message : String(error));
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export function requireString(body, field, options = {}) {
|
|
12
|
+
const value = body[field];
|
|
13
|
+
if (typeof value !== 'string') {
|
|
14
|
+
throw new JsonBodyError(422, `${field} must be a string.`);
|
|
15
|
+
}
|
|
16
|
+
const trim = options.trim !== false;
|
|
17
|
+
const normalized = trim ? value.trim() : value;
|
|
18
|
+
if (!options.allowEmpty && normalized.length === 0) {
|
|
19
|
+
throw new JsonBodyError(422, `${field} must be a non-empty string.`);
|
|
20
|
+
}
|
|
21
|
+
return normalized;
|
|
22
|
+
}
|
|
23
|
+
export function optionalString(body, field, options = {}) {
|
|
24
|
+
const value = body[field];
|
|
25
|
+
if (value === undefined || value === null) {
|
|
26
|
+
return undefined;
|
|
27
|
+
}
|
|
28
|
+
if (typeof value !== 'string') {
|
|
29
|
+
throw new JsonBodyError(422, `${field} must be a string when provided.`);
|
|
30
|
+
}
|
|
31
|
+
const trim = options.trim !== false;
|
|
32
|
+
const normalized = trim ? value.trim() : value;
|
|
33
|
+
if (!options.allowEmpty && normalized.length === 0) {
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
return normalized;
|
|
37
|
+
}
|
|
38
|
+
export function requireBoolean(body, field) {
|
|
39
|
+
const value = body[field];
|
|
40
|
+
if (typeof value !== 'boolean') {
|
|
41
|
+
throw new JsonBodyError(422, `${field} is required and must be a boolean.`);
|
|
42
|
+
}
|
|
43
|
+
return value;
|
|
44
|
+
}
|
|
45
|
+
export function optionalNullableId(body, field) {
|
|
46
|
+
const value = body[field];
|
|
47
|
+
if (value === undefined) {
|
|
48
|
+
return undefined;
|
|
49
|
+
}
|
|
50
|
+
if (value === null) {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
if (typeof value !== 'string') {
|
|
54
|
+
throw new JsonBodyError(422, `${field} must be a string, null, or undefined.`);
|
|
55
|
+
}
|
|
56
|
+
const normalized = value.trim();
|
|
57
|
+
if (normalized.length === 0) {
|
|
58
|
+
throw new JsonBodyError(422, `${field} must not be empty when provided.`);
|
|
59
|
+
}
|
|
60
|
+
return normalized;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../../src/validation.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@moorline/control-api",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "Typed Moorline control API contract and client",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"private": false,
|
|
7
|
+
"main": "./dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"default": "./dist/index.js"
|
|
13
|
+
},
|
|
14
|
+
"./contracts/*.js": {
|
|
15
|
+
"types": "./dist/contracts/*.d.ts",
|
|
16
|
+
"default": "./dist/contracts/*.js"
|
|
17
|
+
},
|
|
18
|
+
"./contracts/*": {
|
|
19
|
+
"types": "./dist/contracts/*.d.ts",
|
|
20
|
+
"default": "./dist/contracts/*.js"
|
|
21
|
+
},
|
|
22
|
+
"./client.js": {
|
|
23
|
+
"types": "./dist/client.d.ts",
|
|
24
|
+
"default": "./dist/client.js"
|
|
25
|
+
},
|
|
26
|
+
"./client": {
|
|
27
|
+
"types": "./dist/client.d.ts",
|
|
28
|
+
"default": "./dist/client.js"
|
|
29
|
+
},
|
|
30
|
+
"./bootstrap.js": {
|
|
31
|
+
"types": "./dist/bootstrap.d.ts",
|
|
32
|
+
"default": "./dist/bootstrap.js"
|
|
33
|
+
},
|
|
34
|
+
"./bootstrap": {
|
|
35
|
+
"types": "./dist/bootstrap.d.ts",
|
|
36
|
+
"default": "./dist/bootstrap.js"
|
|
37
|
+
},
|
|
38
|
+
"./errors.js": {
|
|
39
|
+
"types": "./dist/errors.d.ts",
|
|
40
|
+
"default": "./dist/errors.js"
|
|
41
|
+
},
|
|
42
|
+
"./errors": {
|
|
43
|
+
"types": "./dist/errors.d.ts",
|
|
44
|
+
"default": "./dist/errors.js"
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
"files": [
|
|
48
|
+
"dist"
|
|
49
|
+
],
|
|
50
|
+
"publishConfig": {
|
|
51
|
+
"access": "public"
|
|
52
|
+
},
|
|
53
|
+
"scripts": {
|
|
54
|
+
"build": "node ../../scripts/clean-package-dist.mjs control-api && tsc -p tsconfig.json && node ../../scripts/flatten-package-dist.mjs control-api",
|
|
55
|
+
"typecheck": "tsc --noEmit -p tsconfig.json && tsc --noEmit -p tsconfig.type-tests.json"
|
|
56
|
+
},
|
|
57
|
+
"dependencies": {
|
|
58
|
+
"@moorline/contracts": "0.0.1"
|
|
59
|
+
},
|
|
60
|
+
"license": "MIT",
|
|
61
|
+
"repository": {
|
|
62
|
+
"type": "git",
|
|
63
|
+
"url": "git+ssh://git@github.com/Moorline/moorline.git",
|
|
64
|
+
"directory": "packages/control-api"
|
|
65
|
+
}
|
|
66
|
+
}
|