@k8ts/instruments 0.5.2 → 0.6.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/dist/graph/dependencies.d.ts.map +1 -1
- package/dist/graph/dependencies.js +1 -5
- package/dist/graph/dependencies.js.map +1 -1
- package/dist/graph/origin-node.d.ts.map +1 -1
- package/dist/graph/origin-node.js +4 -1
- package/dist/graph/origin-node.js.map +1 -1
- package/dist/resources/objects.d.ts +3 -0
- package/dist/resources/objects.d.ts.map +1 -1
- package/dist/resources/objects.js +7 -4
- package/dist/resources/objects.js.map +1 -1
- package/dist/resources/types.d.ts +3 -0
- package/dist/resources/types.d.ts.map +1 -1
- package/dist/units/unit-parser.d.ts +17 -6
- package/dist/units/unit-parser.d.ts.map +1 -1
- package/dist/units/unit-parser.js +42 -15
- package/dist/units/unit-parser.js.map +1 -1
- package/dist/units/units.d.ts +4 -4
- package/dist/units/units.d.ts.map +1 -1
- package/dist/units/units.js +3 -3
- package/dist/units/units.js.map +1 -1
- package/package.json +3 -3
- package/src/graph/dependencies.ts +1 -2
- package/src/graph/origin-node.ts +9 -6
- package/src/resources/objects.ts +7 -4
- package/src/resources/types.ts +4 -0
- package/src/units/unit-parser.ts +48 -17
- package/src/units/units.ts +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dependencies.d.ts","sourceRoot":"","sources":["../../src/graph/dependencies.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dependencies.d.ts","sourceRoot":"","sources":["../../src/graph/dependencies.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAEhD,yBAAiB,YAAY,CAAC;IAC1B,KAAY,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,GAAG,SAAS,CAAC,CAAA;CACjE;AACD,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,sDAQtD;AACD,qBAOa,QAAQ,CAAC,IAAI,SAAS,QAAQ,CAAC,IAAI,CAAC;IAEzC,QAAQ,CAAC,GAAG,EAAE,MAAM;IACpB,QAAQ,CAAC,MAAM,EAAE,IAAI;gBADZ,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,IAAI;CAE5B"}
|
|
@@ -33,13 +33,9 @@ var __runInitializers = (this && this.__runInitializers) || function (thisArg, i
|
|
|
33
33
|
}
|
|
34
34
|
return useValue ? value : void 0;
|
|
35
35
|
};
|
|
36
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
37
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
38
|
-
};
|
|
39
36
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
37
|
exports.Relation = void 0;
|
|
41
38
|
exports.dependencies = dependencies;
|
|
42
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
43
39
|
const _string_1 = require("../_string");
|
|
44
40
|
const displayers_1 = require("../displayers");
|
|
45
41
|
function dependencies(record) {
|
|
@@ -56,7 +52,7 @@ let Relation = (() => {
|
|
|
56
52
|
simple: s => [s.why, "-->", s.needed],
|
|
57
53
|
pretty: (dep, format) => {
|
|
58
54
|
const neededFmt = (0, _string_1.pretty) `${["lowkey", dep.needed]}`;
|
|
59
|
-
return [
|
|
55
|
+
return [dep.why, neededFmt].join("➜ ");
|
|
60
56
|
}
|
|
61
57
|
})];
|
|
62
58
|
let _classDescriptor;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../../src/graph/dependencies.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../../src/graph/dependencies.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,oCAQC;AAhBD,wCAAmC;AACnC,8CAA0C;AAO1C,SAAgB,YAAY,CAAC,MAA0B;IACnD,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;SACxB,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QAClB,IAAI,KAAK,EAAE,CAAC;YACR,OAAO,IAAI,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;QACxC,CAAC;IACL,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACzB,CAAC;IAQY,QAAQ;4BAPpB,IAAA,uBAAU,EAAC;YACR,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;YACrC,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;gBACpB,MAAM,SAAS,GAAG,IAAA,gBAAM,EAAA,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAA;gBACnD,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC1C,CAAC;SACJ,CAAC;;;;;;;;YACF,6KAKC;;;YALY,uDAAQ;;QAEJ,GAAG;QACH,MAAM;QAFnB,YACa,GAAW,EACX,MAAY;YADZ,QAAG,GAAH,GAAG,CAAQ;YACX,WAAM,GAAN,MAAM,CAAM;QACtB,CAAC;;;;AAJK,4BAAQ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"origin-node.d.ts","sourceRoot":"","sources":["../../src/graph/origin-node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AAErC,OAAO,EAAe,GAAG,EAAE,MAAM,QAAQ,CAAA;AAIzC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAGnC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,qBAgBa,MAAO,SAAQ,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAE,YAAW,QAAQ,CAAC,YAAY,CAAC;IAcpF,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAE9B,QAAQ,CAAC,GAAG,EAAE,MAAM;IAfxB,OAAO,CAAC,KAAK,CAAiB;IAC9B,IAAI,IAAI,gBAEP;IACD,IAAI,IAAI,cAEP;IACD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAGjB;gBAEI,MAAM,EAAE,MAAM,GAAG,IAAI,EAC9B,MAAM,EAAE,YAAY,EACX,GAAG,EAAE,MAAM;IAMxB,IAAI,aAAa,YAEhB;IACD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAAuB;IAExC,IAAI,SAAS,eAEZ;IACD,CAAC,MAAM,CAAC,QAAQ,CAAC;IAGjB,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAC,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"origin-node.d.ts","sourceRoot":"","sources":["../../src/graph/origin-node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AAErC,OAAO,EAAe,GAAG,EAAE,MAAM,QAAQ,CAAA;AAIzC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAGnC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,qBAgBa,MAAO,SAAQ,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAE,YAAW,QAAQ,CAAC,YAAY,CAAC;IAcpF,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAE9B,QAAQ,CAAC,GAAG,EAAE,MAAM;IAfxB,OAAO,CAAC,KAAK,CAAiB;IAC9B,IAAI,IAAI,gBAEP;IACD,IAAI,IAAI,cAEP;IACD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAGjB;gBAEI,MAAM,EAAE,MAAM,GAAG,IAAI,EAC9B,MAAM,EAAE,YAAY,EACX,GAAG,EAAE,MAAM;IAMxB,IAAI,aAAa,YAEhB;IACD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAAuB;IAExC,IAAI,SAAS,eAEZ;IACD,CAAC,MAAM,CAAC,QAAQ,CAAC;IAGjB,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAC,YAAY,CAAC,CAY9B;IAEV,IAAI,SAAS,mBAEZ;IAED,MAAM,CAAC,kBAAkB,CAAC,CAAC,SAAS,QAAQ,EAAE,IAAI,EAAE,CAAC;IAyBrD,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,mBAAmB;CAM9B;AACD,MAAM,WAAW,YAAa,SAAQ,UAAU,CAAC,MAAM,CAAC;IACpD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,IAAI,CAAA;CACb;AAED,eAAO,MAAM,aAAa,kCAA4B,CAAA"}
|
|
@@ -111,7 +111,10 @@ let Origin = (() => {
|
|
|
111
111
|
}
|
|
112
112
|
attachedTree = (0, doddle_1.seq)(() => {
|
|
113
113
|
const self = this;
|
|
114
|
-
const desc = self.descendants
|
|
114
|
+
const desc = self.descendants
|
|
115
|
+
.concatFirst([this])
|
|
116
|
+
.map(x => x)
|
|
117
|
+
.concatMap(function* (x) {
|
|
115
118
|
yield* self.resources;
|
|
116
119
|
for (const kid of self.kids) {
|
|
117
120
|
yield* kid.resources;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"origin-node.js","sourceRoot":"","sources":["../../src/graph/origin-node.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,kDAAyB;AACzB,mCAAyC;AACzC,8DAAqC;AACrC,wCAAoE;AACpE,8CAA0C;AAC1C,0CAAqC;AAErC,wCAA0C;AAC1C,4CAAwC;AACxC,2CAAkD;AAClD,mDAA8C;IAiBjC,MAAM;4BAhBlB,IAAA,uBAAU,EAAC;YACR,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,GAAG;YAC9B,MAAM,EAAE,CAAC,CAAC,EAAE;gBACR,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;oBACxB,OAAO,IAAA,8BAAoB,GAAE,CAAA;gBACjC,CAAC;gBACD,OAAO,IAAA,2BAAiB,EAAC,CAAC,CAAC,KAAK,CAAC,CAAA;YACrC,CAAC;YACD,MAAM,CAAC,MAAM,EAAE,MAAM;gBACjB,MAAM,QAAQ,GAAG,eAAK,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBACzD,MAAM,YAAY,GAAG,eAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;gBAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,MAAO,EAAE,CAAA;gBAE3B,OAAO,eAAK,CAAC,SAAS,CAAC,GAAG,IAAI,GAAG,QAAQ,IAAI,YAAY,EAAE,CAAC,CAAA;YAChE,CAAC;SACJ,CAAC;;;;sBAC0B,oBAAQ;sBAAhB,SAAQ,WAA8B;;;;YAA1D,
|
|
1
|
+
{"version":3,"file":"origin-node.js","sourceRoot":"","sources":["../../src/graph/origin-node.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Map } from "immutable";
|
|
2
2
|
import { type Parjser } from "parjs";
|
|
3
3
|
import type { UnitParser, UnitValue } from "../units";
|
|
4
|
+
import { AnyUnitParser } from "../units/unit-parser";
|
|
4
5
|
import type { mt_Resource_Input_Map, mt_Resource_Unit_Map, ReqLimit } from "./types";
|
|
5
6
|
export declare class ResourcesMap<const RM extends mt_Resource_Unit_Map<RM>> {
|
|
6
7
|
private _map;
|
|
@@ -10,6 +11,8 @@ export declare class ResourcesMap<const RM extends mt_Resource_Unit_Map<RM>> {
|
|
|
10
11
|
export declare class ResourcesSpec<const RM extends mt_Resource_Unit_Map<RM>> {
|
|
11
12
|
readonly _unitParsers: Map<string, Parjser<UnitValue | undefined>>;
|
|
12
13
|
readonly _reqLimitParsers: Map<string, Parjser<ReqLimit>>;
|
|
14
|
+
readonly _anyUnitParser: AnyUnitParser;
|
|
15
|
+
readonly _anyReqLimitParser: Parjser<ReqLimit<string>>;
|
|
13
16
|
constructor(_unitMap: Map<string, UnitParser>);
|
|
14
17
|
private _parseUnitValue;
|
|
15
18
|
private _parseReqLimit;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"objects.d.ts","sourceRoot":"","sources":["../../src/resources/objects.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAO,MAAM,WAAW,CAAA;AAEpC,OAAO,EAAU,KAAK,OAAO,EAAE,MAAM,OAAO,CAAA;AAG5C,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"objects.d.ts","sourceRoot":"","sources":["../../src/resources/objects.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAO,MAAM,WAAW,CAAA;AAEpC,OAAO,EAAU,KAAK,OAAO,EAAE,MAAM,OAAO,CAAA;AAG5C,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEpD,OAAO,KAAK,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAEpF,qBAAa,YAAY,CAAC,KAAK,CAAC,EAAE,SAAS,oBAAoB,CAAC,EAAE,CAAC;IACnD,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC;IAE/C,QAAQ;CAqBX;AAED,qBAAa,aAAa,CAAC,KAAK,CAAC,EAAE,SAAS,oBAAoB,CAAC,EAAE,CAAC;IAChE,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC,CAAA;IAClE,QAAQ,CAAC,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAA;IACzD,QAAQ,CAAC,cAAc,gBAAuB;IAC9C,QAAQ,CAAC,kBAAkB,4BAA4C;gBAC3D,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC;IAM7C,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,cAAc;IAOtB,SAAS,EAAG,qBAAqB,CAAC,EAAE,CAAC,CAAA;IAErC,KAAK,CAAC,KAAK,CAAC,CAAC,SAAS,qBAAqB,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,YAAY,CAAC,EAAE,CAAC;IAgC5E,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,SAAS,oBAAoB,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE;SAC3D,CAAC,IAAI,MAAM,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;KACrC;CAGJ"}
|
|
@@ -6,6 +6,7 @@ const lodash_1 = require("lodash");
|
|
|
6
6
|
const parjs_1 = require("parjs");
|
|
7
7
|
const combinators_1 = require("parjs/combinators");
|
|
8
8
|
const error_1 = require("../error");
|
|
9
|
+
const unit_parser_1 = require("../units/unit-parser");
|
|
9
10
|
const parser_1 = require("./parser");
|
|
10
11
|
class ResourcesMap {
|
|
11
12
|
_map;
|
|
@@ -17,12 +18,12 @@ class ResourcesMap {
|
|
|
17
18
|
const result = {};
|
|
18
19
|
if (value.request) {
|
|
19
20
|
result.requests = {
|
|
20
|
-
[key]: value.request.
|
|
21
|
+
[key]: value.request.val
|
|
21
22
|
};
|
|
22
23
|
}
|
|
23
24
|
if (value.limit) {
|
|
24
25
|
result.limits = {
|
|
25
|
-
[key]: value.limit.
|
|
26
|
+
[key]: value.limit.val
|
|
26
27
|
};
|
|
27
28
|
}
|
|
28
29
|
if (!(0, lodash_1.isEmpty)(result)) {
|
|
@@ -37,6 +38,8 @@ exports.ResourcesMap = ResourcesMap;
|
|
|
37
38
|
class ResourcesSpec {
|
|
38
39
|
_unitParsers;
|
|
39
40
|
_reqLimitParsers;
|
|
41
|
+
_anyUnitParser = unit_parser_1.AnyUnitParser.make();
|
|
42
|
+
_anyReqLimitParser = (0, parser_1.createResourceParser)(this._anyUnitParser);
|
|
40
43
|
constructor(_unitMap) {
|
|
41
44
|
const questionMarkParser = (0, parjs_1.string)("?").pipe((0, combinators_1.mapConst)(undefined));
|
|
42
45
|
this._unitParsers = _unitMap.map(parser => parser.parser.pipe((0, combinators_1.or)(questionMarkParser)));
|
|
@@ -52,7 +55,7 @@ class ResourcesSpec {
|
|
|
52
55
|
_parseReqLimit(resource, input) {
|
|
53
56
|
const pReqLimit = this._reqLimitParsers.get(resource);
|
|
54
57
|
if (!pReqLimit) {
|
|
55
|
-
|
|
58
|
+
return this._anyReqLimitParser.parse(input).value;
|
|
56
59
|
}
|
|
57
60
|
return pReqLimit.parse(input).value;
|
|
58
61
|
}
|
|
@@ -61,7 +64,7 @@ class ResourcesSpec {
|
|
|
61
64
|
const allKeys = (0, immutable_1.Set)([...Object.keys(input), ...this._unitParsers.keys()]).toMap();
|
|
62
65
|
const map = allKeys.map((_, key) => {
|
|
63
66
|
const value = input[key];
|
|
64
|
-
const pUnitValue = this._unitParsers.get(key);
|
|
67
|
+
const pUnitValue = this._unitParsers.get(key) ?? this._anyUnitParser.parser;
|
|
65
68
|
if (!pUnitValue) {
|
|
66
69
|
throw new error_1.InstrumentsError(`No parser found for ${String(key)}`);
|
|
67
70
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"objects.js","sourceRoot":"","sources":["../../src/resources/objects.ts"],"names":[],"mappings":";;;AAAA,yCAAoC;AACpC,mCAAuC;AACvC,iCAA4C;AAC5C,mDAAgD;AAChD,oCAA2C;AAE3C,qCAA+C;AAG/C,MAAa,YAAY;IACD;IAApB,YAAoB,IAA2B;QAA3B,SAAI,GAAJ,IAAI,CAAuB;IAAG,CAAC;IAEnD,QAAQ;QACJ,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAChD,MAAM,MAAM,GAAG,EAAS,CAAA;YACxB,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBAChB,MAAM,CAAC,QAAQ,GAAG;oBACd,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG;iBAC3B,CAAA;YACL,CAAC;YACD,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;gBACd,MAAM,CAAC,MAAM,GAAG;oBACZ,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG;iBACzB,CAAA;YACL,CAAC;YACD,IAAI,CAAC,IAAA,gBAAO,EAAC,MAAM,CAAC,EAAE,CAAC;gBACnB,OAAO,MAAM,CAAA;YACjB,CAAC;YACD,OAAO,SAAS,CAAA;QACpB,CAAC,CAAC,CAAA;QAEF,OAAO,IAAA,cAAK,EAAC,EAAE,EAAE,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,CAAA;IAChD,CAAC;CACJ;AAxBD,oCAwBC;AAED,MAAa,aAAa;IACb,YAAY,CAA6C;IACzD,gBAAgB,CAAgC;
|
|
1
|
+
{"version":3,"file":"objects.js","sourceRoot":"","sources":["../../src/resources/objects.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,8 +14,11 @@ export interface ReqLimit<Unit extends string = string> {
|
|
|
14
14
|
readonly limit?: UnitValue<Unit>;
|
|
15
15
|
}
|
|
16
16
|
export type InputReqLimit<Unit extends string> = InputReqLimitString<Unit> | InputIdenticalReqLimitString<Unit> | InputReqLimitObject<Unit> | InputReqLimitArray<Unit>;
|
|
17
|
+
type CustomResource = `${string}/${string}`;
|
|
17
18
|
export type mt_Resource_Input_Map<ResourceUnit extends mt_Resource_Unit_Map<ResourceUnit>> = {
|
|
18
19
|
[K in keyof ResourceUnit]: InputReqLimit<ResourceUnit[K]>;
|
|
20
|
+
} & {
|
|
21
|
+
[K in CustomResource]?: InputReqLimit<string>;
|
|
19
22
|
};
|
|
20
23
|
export {};
|
|
21
24
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/resources/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AACrD,MAAM,MAAM,WAAW,CAAC,IAAI,SAAS,MAAM,IAAI,GAAG,MAAM,GAAG,IAAI,EAAE,GAAG,GAAG,CAAA;AAEvE,MAAM,WAAW,mBAAmB,CAAC,IAAI,SAAS,MAAM;IACpD,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,CAAA;IACnC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,CAAA;CACpC;AACD,MAAM,MAAM,kBAAkB,CAAC,IAAI,SAAS,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAA;AAC5F,MAAM,MAAM,oBAAoB,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAA;AAE7D,KAAK,MAAM,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,CAAA;AAC7B,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,MAAM,IAC5C,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,MAAM,KAAK,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,CAAA;AAC5D,MAAM,MAAM,4BAA4B,CAAC,CAAC,SAAS,MAAM,IAAI,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE,CAAA;AACjF,MAAM,WAAW,QAAQ,CAAC,IAAI,SAAS,MAAM,GAAG,MAAM;IAClD,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;IAClC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;CACnC;AACD,MAAM,MAAM,aAAa,CAAC,IAAI,SAAS,MAAM,IACvC,mBAAmB,CAAC,IAAI,CAAC,GACzB,4BAA4B,CAAC,IAAI,CAAC,GAClC,mBAAmB,CAAC,IAAI,CAAC,GACzB,kBAAkB,CAAC,IAAI,CAAC,CAAA;AAC9B,MAAM,MAAM,qBAAqB,CAAC,YAAY,SAAS,oBAAoB,CAAC,YAAY,CAAC,IAAI;KACxF,CAAC,IAAI,MAAM,YAAY,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;CAC5D,CAAA"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/resources/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AACrD,MAAM,MAAM,WAAW,CAAC,IAAI,SAAS,MAAM,IAAI,GAAG,MAAM,GAAG,IAAI,EAAE,GAAG,GAAG,CAAA;AAEvE,MAAM,WAAW,mBAAmB,CAAC,IAAI,SAAS,MAAM;IACpD,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,CAAA;IACnC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,CAAA;CACpC;AACD,MAAM,MAAM,kBAAkB,CAAC,IAAI,SAAS,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAA;AAC5F,MAAM,MAAM,oBAAoB,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAA;AAE7D,KAAK,MAAM,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,CAAA;AAC7B,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,MAAM,IAC5C,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,MAAM,KAAK,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,CAAA;AAC5D,MAAM,MAAM,4BAA4B,CAAC,CAAC,SAAS,MAAM,IAAI,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE,CAAA;AACjF,MAAM,WAAW,QAAQ,CAAC,IAAI,SAAS,MAAM,GAAG,MAAM;IAClD,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;IAClC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;CACnC;AACD,MAAM,MAAM,aAAa,CAAC,IAAI,SAAS,MAAM,IACvC,mBAAmB,CAAC,IAAI,CAAC,GACzB,4BAA4B,CAAC,IAAI,CAAC,GAClC,mBAAmB,CAAC,IAAI,CAAC,GACzB,kBAAkB,CAAC,IAAI,CAAC,CAAA;AAC9B,KAAK,cAAc,GAAG,GAAG,MAAM,IAAI,MAAM,EAAE,CAAA;AAE3C,MAAM,MAAM,qBAAqB,CAAC,YAAY,SAAS,oBAAoB,CAAC,YAAY,CAAC,IAAI;KACxF,CAAC,IAAI,MAAM,YAAY,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;CAC5D,GAAG;KACC,CAAC,IAAI,cAAc,CAAC,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC;CAChD,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Set } from "immutable";
|
|
1
|
+
import type { Set } from "immutable";
|
|
2
2
|
import { type Parjser } from "parjs";
|
|
3
3
|
export declare class UnitValue<Unit extends string = string> {
|
|
4
4
|
readonly unit: Unit;
|
|
@@ -6,14 +6,25 @@ export declare class UnitValue<Unit extends string = string> {
|
|
|
6
6
|
readonly type: string;
|
|
7
7
|
constructor(unit: Unit, value: number, type: string);
|
|
8
8
|
get str(): string;
|
|
9
|
+
get val(): string | number;
|
|
9
10
|
toString(): string;
|
|
10
11
|
}
|
|
11
|
-
export declare class UnitParser<const Unit extends string = string> {
|
|
12
|
-
|
|
13
|
-
private readonly _units;
|
|
12
|
+
export declare abstract class UnitParser<const Unit extends string = string> {
|
|
13
|
+
protected readonly _unitType: string;
|
|
14
14
|
readonly parser: Parjser<UnitValue<Unit>>;
|
|
15
|
-
|
|
15
|
+
protected abstract _validate(unit: string): asserts unit is Unit;
|
|
16
|
+
constructor(_unitType: string);
|
|
16
17
|
parse: (input: `${number}${Unit}`) => UnitValue<Unit>;
|
|
17
|
-
|
|
18
|
+
}
|
|
19
|
+
export declare class AnyUnitParser extends UnitParser<string> {
|
|
20
|
+
constructor();
|
|
21
|
+
_validate(_unit: string): void;
|
|
22
|
+
static make(): AnyUnitParser;
|
|
23
|
+
}
|
|
24
|
+
export declare class SetUnitParser<const Unit extends string = string> extends UnitParser<Unit> {
|
|
25
|
+
private readonly _units;
|
|
26
|
+
constructor(unitType: string, _units: Set<Unit>);
|
|
27
|
+
_validate(unit: string): asserts unit is Unit;
|
|
28
|
+
static make<const Unit extends string>(unitType: string, units: Set<Unit>): SetUnitParser<Unit>;
|
|
18
29
|
}
|
|
19
30
|
//# sourceMappingURL=unit-parser.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unit-parser.d.ts","sourceRoot":"","sources":["../../src/units/unit-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"unit-parser.d.ts","sourceRoot":"","sources":["../../src/units/unit-parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AACpC,OAAO,EAAe,KAAK,OAAO,EAAE,MAAM,OAAO,CAAA;AAajD,qBAAa,SAAS,CAAC,IAAI,SAAS,MAAM,GAAG,MAAM;IAE3C,QAAQ,CAAC,IAAI,EAAE,IAAI;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM;gBAFZ,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM;IAGzB,IAAI,GAAG,WAEN;IAED,IAAI,GAAG,oBAKN;IAED,QAAQ;CAGX;AAED,8BAAsB,UAAU,CAAC,KAAK,CAAC,IAAI,SAAS,MAAM,GAAG,MAAM;IAGnD,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM;IAFhD,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAA;IACzC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI;gBACjC,SAAS,EAAE,MAAM;IAUhD,KAAK,GAAI,OAAO,GAAG,MAAM,GAAG,IAAI,EAAE,qBASjC;CACJ;AAED,qBAAa,aAAc,SAAQ,UAAU,CAAC,MAAM,CAAC;;IAKjD,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI9B,MAAM,CAAC,IAAI;CAGd;AAED,qBAAa,aAAa,CAAC,KAAK,CAAC,IAAI,SAAS,MAAM,GAAG,MAAM,CAAE,SAAQ,UAAU,CAAC,IAAI,CAAC;IAG/E,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADvB,QAAQ,EAAE,MAAM,EACC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC;IAKtC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI;IAM7C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,SAAS,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC;CAG5E"}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.UnitParser = exports.UnitValue = void 0;
|
|
3
|
+
exports.SetUnitParser = exports.AnyUnitParser = exports.UnitParser = exports.UnitValue = void 0;
|
|
4
4
|
const parjs_1 = require("parjs");
|
|
5
5
|
const combinators_1 = require("parjs/combinators");
|
|
6
6
|
const error_1 = require("../error");
|
|
7
|
-
const pUnit = (0, parjs_1.letter)().pipe((0, combinators_1.
|
|
7
|
+
const pUnit = (0, parjs_1.letter)().pipe((0, combinators_1.many)(), (0, combinators_1.stringify)());
|
|
8
8
|
const pValueUnit = (0, parjs_1.int)().pipe((0, combinators_1.then)(pUnit), (0, combinators_1.map)(arr => {
|
|
9
9
|
const [value, unit] = arr;
|
|
10
10
|
return { value, unit };
|
|
11
11
|
}));
|
|
12
|
+
// TODO: Simplify unit parser to allow for arbitrary resources/units
|
|
12
13
|
class UnitValue {
|
|
13
14
|
unit;
|
|
14
15
|
value;
|
|
@@ -21,39 +22,65 @@ class UnitValue {
|
|
|
21
22
|
get str() {
|
|
22
23
|
return `${this.value}${this.unit}`;
|
|
23
24
|
}
|
|
25
|
+
get val() {
|
|
26
|
+
if (!this.unit) {
|
|
27
|
+
return +this.value;
|
|
28
|
+
}
|
|
29
|
+
return this.str;
|
|
30
|
+
}
|
|
24
31
|
toString() {
|
|
25
32
|
return this.str;
|
|
26
33
|
}
|
|
27
34
|
}
|
|
28
35
|
exports.UnitValue = UnitValue;
|
|
29
36
|
class UnitParser {
|
|
30
|
-
|
|
31
|
-
_units;
|
|
37
|
+
_unitType;
|
|
32
38
|
parser;
|
|
33
|
-
constructor(
|
|
34
|
-
this.
|
|
35
|
-
this._units = _units;
|
|
39
|
+
constructor(_unitType) {
|
|
40
|
+
this._unitType = _unitType;
|
|
36
41
|
this.parser = pValueUnit.pipe((0, combinators_1.map)(({ value, unit }) => {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
throw new error_1.InstrumentsError(`Unit ${unit} is not a valid unit of type ${this.unitType}`);
|
|
40
|
-
}
|
|
41
|
-
return new UnitValue(unit, value, this.unitType);
|
|
42
|
+
this._validate(unit);
|
|
43
|
+
return new UnitValue(unit, value, this._unitType);
|
|
42
44
|
}));
|
|
43
45
|
}
|
|
44
46
|
parse = (input) => {
|
|
45
47
|
const pUnitValue = this.parser;
|
|
46
48
|
const result = pUnitValue.parse(input);
|
|
47
49
|
if (result.kind !== "OK") {
|
|
48
|
-
throw new error_1.InstrumentsError(`Failed to parse ${this.
|
|
50
|
+
throw new error_1.InstrumentsError(`Failed to parse ${this._unitType}`, {
|
|
49
51
|
more: result.trace.toString()
|
|
50
52
|
});
|
|
51
53
|
}
|
|
52
54
|
return result.value;
|
|
53
55
|
};
|
|
56
|
+
}
|
|
57
|
+
exports.UnitParser = UnitParser;
|
|
58
|
+
class AnyUnitParser extends UnitParser {
|
|
59
|
+
constructor() {
|
|
60
|
+
super("any");
|
|
61
|
+
}
|
|
62
|
+
_validate(_unit) {
|
|
63
|
+
// Accept any unit
|
|
64
|
+
}
|
|
65
|
+
static make() {
|
|
66
|
+
return new AnyUnitParser();
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
exports.AnyUnitParser = AnyUnitParser;
|
|
70
|
+
class SetUnitParser extends UnitParser {
|
|
71
|
+
_units;
|
|
72
|
+
constructor(unitType, _units) {
|
|
73
|
+
super(unitType);
|
|
74
|
+
this._units = _units;
|
|
75
|
+
}
|
|
76
|
+
_validate(unit) {
|
|
77
|
+
if (!this._units.has(unit)) {
|
|
78
|
+
throw new error_1.InstrumentsError(`Unit ${unit} is not a valid unit of type ${this._unitType}`);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
54
81
|
static make(unitType, units) {
|
|
55
|
-
return new
|
|
82
|
+
return new SetUnitParser(unitType, units);
|
|
56
83
|
}
|
|
57
84
|
}
|
|
58
|
-
exports.
|
|
85
|
+
exports.SetUnitParser = SetUnitParser;
|
|
59
86
|
//# sourceMappingURL=unit-parser.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unit-parser.js","sourceRoot":"","sources":["../../src/units/unit-parser.ts"],"names":[],"mappings":";;;AACA,iCAAiD;AACjD,
|
|
1
|
+
{"version":3,"file":"unit-parser.js","sourceRoot":"","sources":["../../src/units/unit-parser.ts"],"names":[],"mappings":"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"}
|
package/dist/units/units.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { SetUnitParser } from "./unit-parser";
|
|
2
2
|
export type G = `${number}G`;
|
|
3
3
|
export declare const G: (n: number) => G;
|
|
4
4
|
export type M = `${number}M`;
|
|
@@ -30,8 +30,8 @@ export declare namespace Unit {
|
|
|
30
30
|
type Cpu = m;
|
|
31
31
|
type Time = m | h | d | s | ms;
|
|
32
32
|
type Any = Data | Cpu | Time;
|
|
33
|
-
const Cpu:
|
|
34
|
-
const Data:
|
|
35
|
-
const Time:
|
|
33
|
+
const Cpu: SetUnitParser<"m">;
|
|
34
|
+
const Data: SetUnitParser<"M" | "G" | "T" | "K" | "Mi" | "Gi" | "Ki">;
|
|
35
|
+
const Time: SetUnitParser<"d" | "h" | "m" | "s" | "ms">;
|
|
36
36
|
}
|
|
37
37
|
//# sourceMappingURL=units.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"units.d.ts","sourceRoot":"","sources":["../../src/units/units.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"units.d.ts","sourceRoot":"","sources":["../../src/units/units.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAE7C,MAAM,MAAM,CAAC,GAAG,GAAG,MAAM,GAAG,CAAA;AAC5B,eAAO,MAAM,CAAC,GAAI,GAAG,MAAM,KAAgB,CAAC,CAAA;AAE5C,MAAM,MAAM,CAAC,GAAG,GAAG,MAAM,GAAG,CAAA;AAC5B,eAAO,MAAM,CAAC,GAAI,GAAG,MAAM,KAAgB,CAAC,CAAA;AAE5C,MAAM,MAAM,CAAC,GAAG,GAAG,MAAM,GAAG,CAAA;AAC5B,eAAO,MAAM,CAAC,GAAI,GAAG,MAAM,KAAgB,CAAC,CAAA;AAE5C,MAAM,MAAM,CAAC,GAAG,GAAG,MAAM,GAAG,CAAA;AAC5B,eAAO,MAAM,CAAC,GAAI,GAAG,MAAM,KAAgB,CAAC,CAAA;AAE5C,MAAM,MAAM,EAAE,GAAG,GAAG,MAAM,IAAI,CAAA;AAC9B,eAAO,MAAM,EAAE,GAAI,GAAG,MAAM,KAAiB,EAAE,CAAA;AAE/C,MAAM,MAAM,EAAE,GAAG,GAAG,MAAM,IAAI,CAAA;AAC9B,eAAO,MAAM,EAAE,GAAI,GAAG,MAAM,KAAiB,EAAE,CAAA;AAE/C,MAAM,MAAM,EAAE,GAAG,GAAG,MAAM,IAAI,CAAA;AAC9B,eAAO,MAAM,EAAE,GAAI,GAAG,MAAM,KAAiB,EAAE,CAAA;AAE/C,MAAM,MAAM,CAAC,GAAG,GAAG,MAAM,GAAG,CAAA;AAC5B,eAAO,MAAM,CAAC,GAAI,GAAG,MAAM,KAAgB,CAAC,CAAA;AAE5C,MAAM,MAAM,CAAC,GAAG,GAAG,MAAM,GAAG,CAAA;AAC5B,eAAO,MAAM,CAAC,GAAI,GAAG,MAAM,KAAgB,CAAC,CAAA;AAE5C,MAAM,MAAM,CAAC,GAAG,GAAG,MAAM,GAAG,CAAA;AAC5B,eAAO,MAAM,CAAC,GAAI,GAAG,MAAM,KAAqB,CAAC,CAAA;AAEjD,MAAM,MAAM,CAAC,GAAG,GAAG,MAAM,GAAG,CAAA;AAC5B,eAAO,MAAM,CAAC,GAAI,GAAG,MAAM,KAAgB,CAAC,CAAA;AAE5C,MAAM,MAAM,EAAE,GAAG,GAAG,MAAM,IAAI,CAAA;AAC9B,eAAO,MAAM,EAAE,GAAI,GAAG,MAAM,KAAiB,EAAE,CAAA;AAE/C,MAAM,WAAW,cAAc,CAAC,IAAI,SAAS,MAAM;CAAI;AAEvD,yBAAiB,IAAI,CAAC;IAClB,KAAY,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA;IAC/C,KAAY,GAAG,GAAG,CAAC,CAAA;IACnB,KAAY,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAA;IACrC,KAAY,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,CAAA;IAE5B,MAAM,GAAG,oBAAwC,CAAA;IAEjD,MAAM,IAAI,2DAA0E,CAAA;IAEpF,MAAM,IAAI,6CAA8D,CAAA;CAClF"}
|
package/dist/units/units.js
CHANGED
|
@@ -29,8 +29,8 @@ const ms = (n) => `${n}ms`;
|
|
|
29
29
|
exports.ms = ms;
|
|
30
30
|
var Unit;
|
|
31
31
|
(function (Unit) {
|
|
32
|
-
Unit.Cpu = unit_parser_1.
|
|
33
|
-
Unit.Data = unit_parser_1.
|
|
34
|
-
Unit.Time = unit_parser_1.
|
|
32
|
+
Unit.Cpu = unit_parser_1.SetUnitParser.make("cpu", (0, immutable_1.Set)(["m"]));
|
|
33
|
+
Unit.Data = unit_parser_1.SetUnitParser.make("data", (0, immutable_1.Set)(["M", "G", "T", "K", "Mi", "Gi", "Ki"]));
|
|
34
|
+
Unit.Time = unit_parser_1.SetUnitParser.make("time", (0, immutable_1.Set)(["m", "h", "d", "s", "ms"]));
|
|
35
35
|
})(Unit || (exports.Unit = Unit = {}));
|
|
36
36
|
//# sourceMappingURL=units.js.map
|
package/dist/units/units.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"units.js","sourceRoot":"","sources":["../../src/units/units.ts"],"names":[],"mappings":";;;AAAA,yCAA+B;AAC/B,+
|
|
1
|
+
{"version":3,"file":"units.js","sourceRoot":"","sources":["../../src/units/units.ts"],"names":[],"mappings":";;;AAAA,yCAA+B;AAC/B,+CAA6C;AAGtC,MAAM,CAAC,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,GAAG,CAAC,GAAQ,CAAA;AAA/B,QAAA,CAAC,KAA8B;AAGrC,MAAM,CAAC,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,GAAG,CAAC,GAAQ,CAAA;AAA/B,QAAA,CAAC,KAA8B;AAGrC,MAAM,CAAC,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,GAAG,CAAC,GAAQ,CAAA;AAA/B,QAAA,CAAC,KAA8B;AAGrC,MAAM,CAAC,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,GAAG,CAAC,GAAQ,CAAA;AAA/B,QAAA,CAAC,KAA8B;AAGrC,MAAM,EAAE,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,GAAG,CAAC,IAAU,CAAA;AAAlC,QAAA,EAAE,MAAgC;AAGxC,MAAM,EAAE,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,GAAG,CAAC,IAAU,CAAA;AAAlC,QAAA,EAAE,MAAgC;AAGxC,MAAM,EAAE,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,GAAG,CAAC,IAAU,CAAA;AAAlC,QAAA,EAAE,MAAgC;AAGxC,MAAM,CAAC,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,GAAG,CAAC,GAAQ,CAAA;AAA/B,QAAA,CAAC,KAA8B;AAGrC,MAAM,CAAC,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,GAAG,CAAC,GAAQ,CAAA;AAA/B,QAAA,CAAC,KAA8B;AAGrC,MAAM,CAAC,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAQ,CAAA;AAApC,QAAA,CAAC,KAAmC;AAG1C,MAAM,CAAC,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,GAAG,CAAC,GAAQ,CAAA;AAA/B,QAAA,CAAC,KAA8B;AAGrC,MAAM,EAAE,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,GAAG,CAAC,IAAU,CAAA;AAAlC,QAAA,EAAE,MAAgC;AAI/C,IAAiB,IAAI,CAWpB;AAXD,WAAiB,IAAI;IAMJ,QAAG,GAAG,2BAAa,CAAC,IAAI,CAAC,KAAK,EAAE,IAAA,eAAG,EAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IAE3C,SAAI,GAAG,2BAAa,CAAC,IAAI,CAAC,MAAM,EAAE,IAAA,eAAG,EAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;IAE9E,SAAI,GAAG,2BAAa,CAAC,IAAI,CAAC,MAAM,EAAE,IAAA,eAAG,EAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;AACnF,CAAC,EAXgB,IAAI,oBAAJ,IAAI,QAWpB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@k8ts/instruments",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "A collection of utilities and core components for k8ts.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"kubernetes",
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
"what-are-you": "^0.1.12"
|
|
70
70
|
},
|
|
71
71
|
"devDependencies": {
|
|
72
|
-
"@k8ts/metadata": "^0.4.
|
|
72
|
+
"@k8ts/metadata": "^0.4.15",
|
|
73
73
|
"@swc/core": "^1.11.11",
|
|
74
74
|
"@swc/jest": "^0.2.37",
|
|
75
75
|
"@types/jest": "^29.5.12",
|
|
@@ -85,7 +85,7 @@
|
|
|
85
85
|
"yamprint": "^0.8.4"
|
|
86
86
|
},
|
|
87
87
|
"peerDependencies": {
|
|
88
|
-
"@k8ts/metadata": "^0.4.
|
|
88
|
+
"@k8ts/metadata": "^0.4.15"
|
|
89
89
|
},
|
|
90
90
|
"packageManager": "yarn@4.1.1",
|
|
91
91
|
"engines": {
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import chalk from "chalk"
|
|
2
1
|
import { pretty } from "../_string"
|
|
3
2
|
import { displayers } from "../displayers"
|
|
4
3
|
import { BaseNode } from "./base-node"
|
|
@@ -20,7 +19,7 @@ export function dependencies(record: Dependencies.Input) {
|
|
|
20
19
|
simple: s => [s.why, "-->", s.needed],
|
|
21
20
|
pretty: (dep, format) => {
|
|
22
21
|
const neededFmt = pretty`${["lowkey", dep.needed]}`
|
|
23
|
-
return [
|
|
22
|
+
return [dep.why, neededFmt].join("➜ ")
|
|
24
23
|
}
|
|
25
24
|
})
|
|
26
25
|
export class Relation<Node extends BaseNode<Node>> {
|
package/src/graph/origin-node.ts
CHANGED
|
@@ -62,12 +62,15 @@ export class Origin extends BaseNode<Origin, OriginEntity> implements Iterable<R
|
|
|
62
62
|
}
|
|
63
63
|
readonly attachedTree: Seq<ResourceNode> = seq(() => {
|
|
64
64
|
const self = this
|
|
65
|
-
const desc = self.descendants
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
65
|
+
const desc = self.descendants
|
|
66
|
+
.concatFirst([this])
|
|
67
|
+
.map(x => x)
|
|
68
|
+
.concatMap(function* (x) {
|
|
69
|
+
yield* self.resources
|
|
70
|
+
for (const kid of self.kids) {
|
|
71
|
+
yield* kid.resources
|
|
72
|
+
}
|
|
73
|
+
})
|
|
71
74
|
return desc
|
|
72
75
|
}).cache()
|
|
73
76
|
|
package/src/resources/objects.ts
CHANGED
|
@@ -4,6 +4,7 @@ import { string, type Parjser } from "parjs"
|
|
|
4
4
|
import { mapConst, or } from "parjs/combinators"
|
|
5
5
|
import { InstrumentsError } from "../error"
|
|
6
6
|
import type { UnitParser, UnitValue } from "../units"
|
|
7
|
+
import { AnyUnitParser } from "../units/unit-parser"
|
|
7
8
|
import { createResourceParser } from "./parser"
|
|
8
9
|
import type { mt_Resource_Input_Map, mt_Resource_Unit_Map, ReqLimit } from "./types"
|
|
9
10
|
|
|
@@ -15,12 +16,12 @@ export class ResourcesMap<const RM extends mt_Resource_Unit_Map<RM>> {
|
|
|
15
16
|
const result = {} as any
|
|
16
17
|
if (value.request) {
|
|
17
18
|
result.requests = {
|
|
18
|
-
[key]: value.request.
|
|
19
|
+
[key]: value.request.val
|
|
19
20
|
}
|
|
20
21
|
}
|
|
21
22
|
if (value.limit) {
|
|
22
23
|
result.limits = {
|
|
23
|
-
[key]: value.limit.
|
|
24
|
+
[key]: value.limit.val
|
|
24
25
|
}
|
|
25
26
|
}
|
|
26
27
|
if (!isEmpty(result)) {
|
|
@@ -36,6 +37,8 @@ export class ResourcesMap<const RM extends mt_Resource_Unit_Map<RM>> {
|
|
|
36
37
|
export class ResourcesSpec<const RM extends mt_Resource_Unit_Map<RM>> {
|
|
37
38
|
readonly _unitParsers: Map<string, Parjser<UnitValue | undefined>>
|
|
38
39
|
readonly _reqLimitParsers: Map<string, Parjser<ReqLimit>>
|
|
40
|
+
readonly _anyUnitParser = AnyUnitParser.make()
|
|
41
|
+
readonly _anyReqLimitParser = createResourceParser(this._anyUnitParser)
|
|
39
42
|
constructor(_unitMap: Map<string, UnitParser>) {
|
|
40
43
|
const questionMarkParser = string("?").pipe(mapConst(undefined))
|
|
41
44
|
this._unitParsers = _unitMap.map(parser => parser.parser.pipe(or(questionMarkParser)))
|
|
@@ -53,7 +56,7 @@ export class ResourcesSpec<const RM extends mt_Resource_Unit_Map<RM>> {
|
|
|
53
56
|
private _parseReqLimit(resource: string, input: string): ReqLimit {
|
|
54
57
|
const pReqLimit = this._reqLimitParsers.get(resource)
|
|
55
58
|
if (!pReqLimit) {
|
|
56
|
-
|
|
59
|
+
return this._anyReqLimitParser.parse(input).value
|
|
57
60
|
}
|
|
58
61
|
return pReqLimit.parse(input).value
|
|
59
62
|
}
|
|
@@ -63,7 +66,7 @@ export class ResourcesSpec<const RM extends mt_Resource_Unit_Map<RM>> {
|
|
|
63
66
|
const allKeys = Set([...Object.keys(input), ...this._unitParsers.keys()]).toMap()
|
|
64
67
|
const map = allKeys.map((_, key) => {
|
|
65
68
|
const value = input[key as keyof R]
|
|
66
|
-
const pUnitValue = this._unitParsers.get(key)
|
|
69
|
+
const pUnitValue = this._unitParsers.get(key) ?? this._anyUnitParser.parser
|
|
67
70
|
if (!pUnitValue) {
|
|
68
71
|
throw new InstrumentsError(`No parser found for ${String(key)}`)
|
|
69
72
|
}
|
package/src/resources/types.ts
CHANGED
|
@@ -21,6 +21,10 @@ export type InputReqLimit<Unit extends string> =
|
|
|
21
21
|
| InputIdenticalReqLimitString<Unit>
|
|
22
22
|
| InputReqLimitObject<Unit>
|
|
23
23
|
| InputReqLimitArray<Unit>
|
|
24
|
+
type CustomResource = `${string}/${string}`
|
|
25
|
+
|
|
24
26
|
export type mt_Resource_Input_Map<ResourceUnit extends mt_Resource_Unit_Map<ResourceUnit>> = {
|
|
25
27
|
[K in keyof ResourceUnit]: InputReqLimit<ResourceUnit[K]>
|
|
28
|
+
} & {
|
|
29
|
+
[K in CustomResource]?: InputReqLimit<string>
|
|
26
30
|
}
|
package/src/units/unit-parser.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { Set } from "immutable"
|
|
1
|
+
import type { Set } from "immutable"
|
|
2
2
|
import { int, letter, type Parjser } from "parjs"
|
|
3
|
-
import {
|
|
3
|
+
import { many, map, stringify, then } from "parjs/combinators"
|
|
4
4
|
import { InstrumentsError } from "../error"
|
|
5
|
-
const pUnit = letter().pipe(
|
|
5
|
+
const pUnit = letter().pipe(many(), stringify())
|
|
6
6
|
|
|
7
7
|
const pValueUnit = int().pipe(
|
|
8
8
|
then(pUnit),
|
|
@@ -11,6 +11,7 @@ const pValueUnit = int().pipe(
|
|
|
11
11
|
return { value, unit }
|
|
12
12
|
})
|
|
13
13
|
)
|
|
14
|
+
// TODO: Simplify unit parser to allow for arbitrary resources/units
|
|
14
15
|
export class UnitValue<Unit extends string = string> {
|
|
15
16
|
constructor(
|
|
16
17
|
readonly unit: Unit,
|
|
@@ -22,26 +23,27 @@ export class UnitValue<Unit extends string = string> {
|
|
|
22
23
|
return `${this.value}${this.unit}`
|
|
23
24
|
}
|
|
24
25
|
|
|
26
|
+
get val() {
|
|
27
|
+
if (!this.unit) {
|
|
28
|
+
return +this.value
|
|
29
|
+
}
|
|
30
|
+
return this.str
|
|
31
|
+
}
|
|
32
|
+
|
|
25
33
|
toString() {
|
|
26
34
|
return this.str
|
|
27
35
|
}
|
|
28
36
|
}
|
|
29
37
|
|
|
30
|
-
export class UnitParser<const Unit extends string = string> {
|
|
38
|
+
export abstract class UnitParser<const Unit extends string = string> {
|
|
31
39
|
readonly parser: Parjser<UnitValue<Unit>>
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
private readonly _units: Set<Unit>
|
|
35
|
-
) {
|
|
40
|
+
protected abstract _validate(unit: string): asserts unit is Unit
|
|
41
|
+
constructor(protected readonly _unitType: string) {
|
|
36
42
|
this.parser = pValueUnit.pipe(
|
|
37
43
|
map(({ value, unit }) => {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
`Unit ${unit} is not a valid unit of type ${this.unitType}`
|
|
42
|
-
)
|
|
43
|
-
}
|
|
44
|
-
return new UnitValue<Unit>(unit as any, value, this.unitType)
|
|
44
|
+
this._validate(unit)
|
|
45
|
+
|
|
46
|
+
return new UnitValue<Unit>(unit as any, value, this._unitType)
|
|
45
47
|
})
|
|
46
48
|
)
|
|
47
49
|
}
|
|
@@ -50,14 +52,43 @@ export class UnitParser<const Unit extends string = string> {
|
|
|
50
52
|
const pUnitValue = this.parser
|
|
51
53
|
const result = pUnitValue.parse(input)
|
|
52
54
|
if (result.kind !== "OK") {
|
|
53
|
-
throw new InstrumentsError(`Failed to parse ${this.
|
|
55
|
+
throw new InstrumentsError(`Failed to parse ${this._unitType}`, {
|
|
54
56
|
more: result.trace.toString()
|
|
55
57
|
})
|
|
56
58
|
}
|
|
57
59
|
return result.value
|
|
58
60
|
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export class AnyUnitParser extends UnitParser<string> {
|
|
64
|
+
constructor() {
|
|
65
|
+
super("any")
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
_validate(_unit: string): void {
|
|
69
|
+
// Accept any unit
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
static make() {
|
|
73
|
+
return new AnyUnitParser()
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export class SetUnitParser<const Unit extends string = string> extends UnitParser<Unit> {
|
|
78
|
+
constructor(
|
|
79
|
+
unitType: string,
|
|
80
|
+
private readonly _units: Set<Unit>
|
|
81
|
+
) {
|
|
82
|
+
super(unitType)
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
_validate(unit: string): asserts unit is Unit {
|
|
86
|
+
if (!this._units.has(unit as Unit)) {
|
|
87
|
+
throw new InstrumentsError(`Unit ${unit} is not a valid unit of type ${this._unitType}`)
|
|
88
|
+
}
|
|
89
|
+
}
|
|
59
90
|
|
|
60
91
|
static make<const Unit extends string>(unitType: string, units: Set<Unit>) {
|
|
61
|
-
return new
|
|
92
|
+
return new SetUnitParser<Unit>(unitType, units)
|
|
62
93
|
}
|
|
63
94
|
}
|
package/src/units/units.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Set } from "immutable"
|
|
2
|
-
import {
|
|
2
|
+
import { SetUnitParser } from "./unit-parser"
|
|
3
3
|
|
|
4
4
|
export type G = `${number}G`
|
|
5
5
|
export const G = (n: number) => `${n}G` as G
|
|
@@ -45,9 +45,9 @@ export namespace Unit {
|
|
|
45
45
|
export type Time = m | h | d | s | ms
|
|
46
46
|
export type Any = Data | Cpu | Time
|
|
47
47
|
|
|
48
|
-
export const Cpu =
|
|
48
|
+
export const Cpu = SetUnitParser.make("cpu", Set(["m"]))
|
|
49
49
|
|
|
50
|
-
export const Data =
|
|
50
|
+
export const Data = SetUnitParser.make("data", Set(["M", "G", "T", "K", "Mi", "Gi", "Ki"]))
|
|
51
51
|
|
|
52
|
-
export const Time =
|
|
52
|
+
export const Time = SetUnitParser.make("time", Set(["m", "h", "d", "s", "ms"]))
|
|
53
53
|
}
|