@k8ts/metadata 0.10.3 → 0.11.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/error.d.ts +1 -1
- package/dist/error.d.ts.map +1 -1
- package/dist/error.js +3 -3
- package/dist/error.js.map +1 -1
- package/dist/index.d.ts +2 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -5
- package/dist/index.js.map +1 -1
- package/dist/input/dict-input.d.ts +5 -8
- package/dist/input/dict-input.d.ts.map +1 -1
- package/dist/input/index.d.ts +8 -0
- package/dist/input/index.d.ts.map +1 -0
- package/dist/input/index.js +24 -0
- package/dist/input/index.js.map +1 -0
- package/dist/input/key/base.d.ts +6 -0
- package/dist/input/key/base.d.ts.map +1 -0
- package/dist/input/key/base.js +13 -0
- package/dist/input/key/base.js.map +1 -0
- package/dist/input/key/domain-prefix.d.ts +8 -0
- package/dist/input/key/domain-prefix.d.ts.map +1 -0
- package/dist/input/key/domain-prefix.js +19 -0
- package/dist/input/key/domain-prefix.js.map +1 -0
- package/dist/input/key/metadata-key.d.ts +21 -0
- package/dist/input/key/metadata-key.d.ts.map +1 -0
- package/dist/input/key/metadata-key.js +82 -0
- package/dist/input/key/metadata-key.js.map +1 -0
- package/dist/input/key/parse-key.d.ts +10 -0
- package/dist/input/key/parse-key.d.ts.map +1 -0
- package/dist/{key → input/key}/parse-key.js +10 -8
- package/dist/input/key/parse-key.js.map +1 -0
- package/dist/input/key/string-types.d.ts +10 -0
- package/dist/input/key/string-types.d.ts.map +1 -0
- package/dist/input/key/string-types.js +3 -0
- package/dist/input/key/string-types.js.map +1 -0
- package/dist/input/parse-dict.d.ts +3 -2
- package/dist/input/parse-dict.d.ts.map +1 -1
- package/dist/input/parse-dict.js +16 -7
- package/dist/input/parse-dict.js.map +1 -1
- package/dist/meta.d.ts +243 -273
- package/dist/meta.d.ts.map +1 -1
- package/dist/meta.js +259 -297
- package/dist/meta.js.map +1 -1
- package/dist/util.d.ts +1 -22
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +15 -110
- package/dist/util.js.map +1 -1
- package/dist/utils/map.d.ts +23 -0
- package/dist/utils/map.d.ts.map +1 -0
- package/dist/utils/map.js +113 -0
- package/dist/utils/map.js.map +1 -0
- package/dist/utils/order-meta-keyed-object.d.ts.map +1 -0
- package/dist/{order-meta-keyed-object.js → utils/order-meta-keyed-object.js} +2 -1
- package/dist/utils/order-meta-keyed-object.js.map +1 -0
- package/dist/utils/validate.d.ts +4 -0
- package/dist/utils/validate.d.ts.map +1 -0
- package/dist/utils/validate.js +38 -0
- package/dist/utils/validate.js.map +1 -0
- package/package.json +2 -8
- package/src/error.ts +1 -1
- package/src/index.ts +2 -3
- package/src/input/dict-input.ts +5 -12
- package/src/input/index.ts +7 -0
- package/src/input/key/base.ts +10 -0
- package/src/input/key/domain-prefix.ts +14 -0
- package/src/input/key/metadata-key.ts +90 -0
- package/src/{key → input/key}/parse-key.ts +12 -8
- package/src/input/key/string-types.ts +15 -0
- package/src/input/parse-dict.ts +23 -13
- package/src/meta.ts +391 -417
- package/src/util.ts +1 -115
- package/src/utils/map.ts +115 -0
- package/src/{order-meta-keyed-object.ts → utils/order-meta-keyed-object.ts} +2 -1
- package/src/utils/validate.ts +32 -0
- package/dist/key/index.d.ts +0 -4
- package/dist/key/index.d.ts.map +0 -1
- package/dist/key/index.js +0 -11
- package/dist/key/index.js.map +0 -1
- package/dist/key/parse-key.d.ts +0 -8
- package/dist/key/parse-key.d.ts.map +0 -1
- package/dist/key/parse-key.js.map +0 -1
- package/dist/key/repr.d.ts +0 -36
- package/dist/key/repr.d.ts.map +0 -1
- package/dist/key/repr.js +0 -113
- package/dist/key/repr.js.map +0 -1
- package/dist/key/types.d.ts +0 -20
- package/dist/key/types.d.ts.map +0 -1
- package/dist/key/types.js +0 -11
- package/dist/key/types.js.map +0 -1
- package/dist/order-meta-keyed-object.d.ts.map +0 -1
- package/dist/order-meta-keyed-object.js.map +0 -1
- package/src/key/index.ts +0 -4
- package/src/key/repr.ts +0 -128
- package/src/key/types.ts +0 -21
- /package/dist/{order-meta-keyed-object.d.ts → utils/order-meta-keyed-object.d.ts} +0 -0
package/dist/util.d.ts
CHANGED
|
@@ -1,23 +1,2 @@
|
|
|
1
|
-
export
|
|
2
|
-
export declare function merge<K1, K2, V1, V2>(map1: Map<K1, V1>, map2: Map<K2, V2>): Map<K1 | K2, V1 | V2>;
|
|
3
|
-
export declare function filterMap<K, V>(map: Map<K, V>, pred: (v: V, k: K) => boolean): Map<K, V>;
|
|
4
|
-
export declare function mapKeys<K, V, NK>(map: Map<K, V>, fn: (k: K) => NK): Map<NK, V>;
|
|
5
|
-
export declare function mapValues<K, V, NV>(map: Map<K, V>, fn: (v: V, k: K) => NV): Map<K, NV>;
|
|
6
|
-
export declare function toObject<K, V>(map: Map<K, V>): {
|
|
7
|
-
[k: string]: V;
|
|
8
|
-
};
|
|
9
|
-
export declare function toJS<K, V>(map: Map<K, V>): {
|
|
10
|
-
[k: string]: V;
|
|
11
|
-
};
|
|
12
|
-
export declare function equalsMap<K, V>(a: Map<K, V>, b: Map<K, V>): boolean;
|
|
13
|
-
export declare function mapFromObject<V>(obj: {
|
|
14
|
-
[k: string]: V;
|
|
15
|
-
}): Map<string, V>;
|
|
16
|
-
export declare function mapToObject<V>(map: Map<string, V>): {
|
|
17
|
-
[k: string]: V;
|
|
18
|
-
};
|
|
19
|
-
export type SourcedPropertyDescriptor = PropertyDescriptor & {
|
|
20
|
-
source: object;
|
|
21
|
-
};
|
|
22
|
-
export declare function getDeepPropertyDescriptor(obj: any, propertyKey: string | symbol): SourcedPropertyDescriptor | undefined;
|
|
1
|
+
export * from "./utils/map";
|
|
23
2
|
//# sourceMappingURL=util.d.ts.map
|
package/dist/util.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA"}
|
package/dist/util.js
CHANGED
|
@@ -1,113 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
2
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports
|
|
4
|
-
exports.merge = merge;
|
|
5
|
-
exports.filterMap = filterMap;
|
|
6
|
-
exports.mapKeys = mapKeys;
|
|
7
|
-
exports.mapValues = mapValues;
|
|
8
|
-
exports.toObject = toObject;
|
|
9
|
-
exports.toJS = toJS;
|
|
10
|
-
exports.equalsMap = equalsMap;
|
|
11
|
-
exports.mapFromObject = mapFromObject;
|
|
12
|
-
exports.mapToObject = mapToObject;
|
|
13
|
-
exports.getDeepPropertyDescriptor = getDeepPropertyDescriptor;
|
|
14
|
-
function mergeWith(map1, map2, merger) {
|
|
15
|
-
const result = new Map(map1);
|
|
16
|
-
const allKeys = new Set([...map1.keys(), ...map2.keys()]);
|
|
17
|
-
for (const k of allKeys) {
|
|
18
|
-
const val1 = map1.get(k);
|
|
19
|
-
const val2 = map2.get(k);
|
|
20
|
-
if (val1 !== undefined && val2 !== undefined) {
|
|
21
|
-
result.set(k, merger(val1, val2, k));
|
|
22
|
-
}
|
|
23
|
-
else if (val2 !== undefined) {
|
|
24
|
-
result.set(k, val2);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
return result;
|
|
28
|
-
}
|
|
29
|
-
function merge(map1, map2) {
|
|
30
|
-
return mergeWith(map1, map2, (_old, _new) => _new);
|
|
31
|
-
}
|
|
32
|
-
function filterMap(map, pred) {
|
|
33
|
-
const out = new Map();
|
|
34
|
-
for (const [k, v] of map.entries()) {
|
|
35
|
-
if (pred(v, k))
|
|
36
|
-
out.set(k, v);
|
|
37
|
-
}
|
|
38
|
-
return out;
|
|
39
|
-
}
|
|
40
|
-
function mapKeys(map, fn) {
|
|
41
|
-
const out = new Map();
|
|
42
|
-
for (const [k, v] of map.entries()) {
|
|
43
|
-
out.set(fn(k), v);
|
|
44
|
-
}
|
|
45
|
-
return out;
|
|
46
|
-
}
|
|
47
|
-
function mapValues(map, fn) {
|
|
48
|
-
const out = new Map();
|
|
49
|
-
for (const [k, v] of map.entries()) {
|
|
50
|
-
out.set(k, fn(v, k));
|
|
51
|
-
}
|
|
52
|
-
return out;
|
|
53
|
-
}
|
|
54
|
-
function toObject(map) {
|
|
55
|
-
const out = {};
|
|
56
|
-
for (const [k, v] of map.entries()) {
|
|
57
|
-
const key = k?.str ?? String(k);
|
|
58
|
-
out[key] = v;
|
|
59
|
-
}
|
|
60
|
-
return out;
|
|
61
|
-
}
|
|
62
|
-
function toJS(map) {
|
|
63
|
-
return toObject(map);
|
|
64
|
-
}
|
|
65
|
-
function equalsMap(a, b) {
|
|
66
|
-
if (a.size !== b.size)
|
|
67
|
-
return false;
|
|
68
|
-
for (const [ka, va] of a.entries()) {
|
|
69
|
-
let found = false;
|
|
70
|
-
for (const [kb, vb] of b.entries()) {
|
|
71
|
-
const sa = ka?.str ?? ka;
|
|
72
|
-
const sb = kb?.str ?? kb;
|
|
73
|
-
if (sa === sb) {
|
|
74
|
-
found = true;
|
|
75
|
-
if (va !== vb)
|
|
76
|
-
return false;
|
|
77
|
-
break;
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
if (!found)
|
|
81
|
-
return false;
|
|
82
|
-
}
|
|
83
|
-
return true;
|
|
84
|
-
}
|
|
85
|
-
function mapFromObject(obj) {
|
|
86
|
-
const map = new Map();
|
|
87
|
-
for (const k of Object.keys(obj)) {
|
|
88
|
-
map.set(k, obj[k]);
|
|
89
|
-
}
|
|
90
|
-
return map;
|
|
91
|
-
}
|
|
92
|
-
function mapToObject(map) {
|
|
93
|
-
const obj = {};
|
|
94
|
-
for (const [k, v] of map.entries()) {
|
|
95
|
-
obj[k] = v;
|
|
96
|
-
}
|
|
97
|
-
return obj;
|
|
98
|
-
}
|
|
99
|
-
function getDeepPropertyDescriptor(obj, propertyKey) {
|
|
100
|
-
let current = obj;
|
|
101
|
-
while (current) {
|
|
102
|
-
const descriptor = Object.getOwnPropertyDescriptor(current, propertyKey);
|
|
103
|
-
if (descriptor) {
|
|
104
|
-
return {
|
|
105
|
-
...descriptor,
|
|
106
|
-
source: current
|
|
107
|
-
};
|
|
108
|
-
}
|
|
109
|
-
current = Object.getPrototypeOf(current);
|
|
110
|
-
}
|
|
111
|
-
return undefined;
|
|
112
|
-
}
|
|
17
|
+
__exportStar(require("./utils/map"), exports);
|
|
113
18
|
//# sourceMappingURL=util.js.map
|
package/dist/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA2B"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export declare function mergeWith<K1, K2, V1, V2, V3>(map1: Map<K1, V1>, map2: Map<K2, V2>, merger: (val1: V1, val2: V2, key: K1 | K2) => V3): Map<K1 | K2, V1 | V2 | V3>;
|
|
2
|
+
export declare function merge<K1, K2, V1, V2>(map1: Map<K1, V1>, map2: Map<K2, V2>): Map<K1 | K2, V1 | V2>;
|
|
3
|
+
export declare function filterMap<K, V>(map: Map<K, V>, pred: (v: V, k: K) => boolean): Map<K, V>;
|
|
4
|
+
export declare function mapKeys<K, V, NK>(map: Map<K, V>, fn: (k: K) => NK): Map<NK, V>;
|
|
5
|
+
export declare function mapValues<K, V, NV>(map: Map<K, V>, fn: (v: V, k: K) => NV): Map<K, NV>;
|
|
6
|
+
export declare function toObject<K, V>(map: Map<K, V>): {
|
|
7
|
+
[k: string]: V;
|
|
8
|
+
};
|
|
9
|
+
export declare function toJS<K, V>(map: Map<K, V>): {
|
|
10
|
+
[k: string]: V;
|
|
11
|
+
};
|
|
12
|
+
export declare function equalsMap<K, V>(a: Map<K, V>, b: Map<K, V>): boolean;
|
|
13
|
+
export declare function mapFromObject<V>(obj: {
|
|
14
|
+
[k: string]: V;
|
|
15
|
+
}): Map<string, V>;
|
|
16
|
+
export declare function mapToObject<V>(map: Map<string, V>): {
|
|
17
|
+
[k: string]: V;
|
|
18
|
+
};
|
|
19
|
+
export type SourcedPropertyDescriptor = PropertyDescriptor & {
|
|
20
|
+
source: object;
|
|
21
|
+
};
|
|
22
|
+
export declare function getDeepPropertyDescriptor(obj: any, propertyKey: string | symbol): SourcedPropertyDescriptor | undefined;
|
|
23
|
+
//# sourceMappingURL=map.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../../src/utils/map.ts"],"names":[],"mappings":"AACA,wBAAgB,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EACxC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EACjB,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EACjB,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GACjD,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAa5B;AAED,wBAAgB,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAEjG;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAAO,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAMxF;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAM9E;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAMtF;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAA;CAAE,CAOjE;AAED,wBAAgB,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAA;CAAE,CAE7D;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAgBnE;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,GAAG,EAAE;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAA;CAAE,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAMxE;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAA;CAAE,CAMtE;AAED,MAAM,MAAM,yBAAyB,GAAG,kBAAkB,GAAG;IACzD,MAAM,EAAE,MAAM,CAAA;CACjB,CAAA;AACD,wBAAgB,yBAAyB,CACrC,GAAG,EAAE,GAAG,EACR,WAAW,EAAE,MAAM,GAAG,MAAM,GAC7B,yBAAyB,GAAG,SAAS,CAavC"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mergeWith = mergeWith;
|
|
4
|
+
exports.merge = merge;
|
|
5
|
+
exports.filterMap = filterMap;
|
|
6
|
+
exports.mapKeys = mapKeys;
|
|
7
|
+
exports.mapValues = mapValues;
|
|
8
|
+
exports.toObject = toObject;
|
|
9
|
+
exports.toJS = toJS;
|
|
10
|
+
exports.equalsMap = equalsMap;
|
|
11
|
+
exports.mapFromObject = mapFromObject;
|
|
12
|
+
exports.mapToObject = mapToObject;
|
|
13
|
+
exports.getDeepPropertyDescriptor = getDeepPropertyDescriptor;
|
|
14
|
+
function mergeWith(map1, map2, merger) {
|
|
15
|
+
const result = new Map(map1);
|
|
16
|
+
const allKeys = new Set([...map1.keys(), ...map2.keys()]);
|
|
17
|
+
for (const k of allKeys) {
|
|
18
|
+
const val1 = map1.get(k);
|
|
19
|
+
const val2 = map2.get(k);
|
|
20
|
+
if (val1 !== undefined && val2 !== undefined) {
|
|
21
|
+
result.set(k, merger(val1, val2, k));
|
|
22
|
+
}
|
|
23
|
+
else if (val2 !== undefined) {
|
|
24
|
+
result.set(k, val2);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return result;
|
|
28
|
+
}
|
|
29
|
+
function merge(map1, map2) {
|
|
30
|
+
return mergeWith(map1, map2, (_old, _new) => _new);
|
|
31
|
+
}
|
|
32
|
+
function filterMap(map, pred) {
|
|
33
|
+
const out = new Map();
|
|
34
|
+
for (const [k, v] of map.entries()) {
|
|
35
|
+
if (pred(v, k))
|
|
36
|
+
out.set(k, v);
|
|
37
|
+
}
|
|
38
|
+
return out;
|
|
39
|
+
}
|
|
40
|
+
function mapKeys(map, fn) {
|
|
41
|
+
const out = new Map();
|
|
42
|
+
for (const [k, v] of map.entries()) {
|
|
43
|
+
out.set(fn(k), v);
|
|
44
|
+
}
|
|
45
|
+
return out;
|
|
46
|
+
}
|
|
47
|
+
function mapValues(map, fn) {
|
|
48
|
+
const out = new Map();
|
|
49
|
+
for (const [k, v] of map.entries()) {
|
|
50
|
+
out.set(k, fn(v, k));
|
|
51
|
+
}
|
|
52
|
+
return out;
|
|
53
|
+
}
|
|
54
|
+
function toObject(map) {
|
|
55
|
+
const out = {};
|
|
56
|
+
for (const [k, v] of map.entries()) {
|
|
57
|
+
const key = k?.str ?? String(k);
|
|
58
|
+
out[key] = v;
|
|
59
|
+
}
|
|
60
|
+
return out;
|
|
61
|
+
}
|
|
62
|
+
function toJS(map) {
|
|
63
|
+
return toObject(map);
|
|
64
|
+
}
|
|
65
|
+
function equalsMap(a, b) {
|
|
66
|
+
if (a.size !== b.size)
|
|
67
|
+
return false;
|
|
68
|
+
for (const [ka, va] of a.entries()) {
|
|
69
|
+
let found = false;
|
|
70
|
+
for (const [kb, vb] of b.entries()) {
|
|
71
|
+
const sa = ka?.str ?? ka;
|
|
72
|
+
const sb = kb?.str ?? kb;
|
|
73
|
+
if (sa === sb) {
|
|
74
|
+
found = true;
|
|
75
|
+
if (va !== vb)
|
|
76
|
+
return false;
|
|
77
|
+
break;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
if (!found)
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
return true;
|
|
84
|
+
}
|
|
85
|
+
function mapFromObject(obj) {
|
|
86
|
+
const map = new Map();
|
|
87
|
+
for (const k of Object.keys(obj)) {
|
|
88
|
+
map.set(k, obj[k]);
|
|
89
|
+
}
|
|
90
|
+
return map;
|
|
91
|
+
}
|
|
92
|
+
function mapToObject(map) {
|
|
93
|
+
const obj = {};
|
|
94
|
+
for (const [k, v] of map.entries()) {
|
|
95
|
+
obj[k] = v;
|
|
96
|
+
}
|
|
97
|
+
return obj;
|
|
98
|
+
}
|
|
99
|
+
function getDeepPropertyDescriptor(obj, propertyKey) {
|
|
100
|
+
let current = obj;
|
|
101
|
+
while (current) {
|
|
102
|
+
const descriptor = Object.getOwnPropertyDescriptor(current, propertyKey);
|
|
103
|
+
if (descriptor) {
|
|
104
|
+
return {
|
|
105
|
+
...descriptor,
|
|
106
|
+
source: current
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
current = Object.getPrototypeOf(current);
|
|
110
|
+
}
|
|
111
|
+
return undefined;
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=map.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"map.js","sourceRoot":"","sources":["../../src/utils/map.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"order-meta-keyed-object.d.ts","sourceRoot":"","sources":["../../src/utils/order-meta-keyed-object.ts"],"names":[],"mappings":"AAgBA,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAIvF"}
|
|
@@ -2,13 +2,14 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.orderMetaKeyedObject = orderMetaKeyedObject;
|
|
4
4
|
const doddle_1 = require("doddle");
|
|
5
|
+
const error_1 = require("../error");
|
|
5
6
|
function comparisonKey(key) {
|
|
6
7
|
const bySlash = key.split("/");
|
|
7
8
|
if (bySlash.length === 1) {
|
|
8
9
|
return key;
|
|
9
10
|
}
|
|
10
11
|
if (bySlash.length > 2) {
|
|
11
|
-
throw new
|
|
12
|
+
throw new error_1.K8tsMetadataError(`Invalid composed key ${key}, too many '/' characters.`);
|
|
12
13
|
}
|
|
13
14
|
const [dns, name] = bySlash;
|
|
14
15
|
const dnsParts = dns.split(".").reverse();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"order-meta-keyed-object.js","sourceRoot":"","sources":["../../src/utils/order-meta-keyed-object.ts"],"names":[],"mappings":";;AAgBA,oDAIC;AApBD,mCAA4B;AAC5B,oCAA4C;AAE5C,SAAS,aAAa,CAAC,GAAW;IAC9B,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAC9B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,GAAG,CAAA;IACd,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,yBAAiB,CAAC,wBAAwB,GAAG,4BAA4B,CAAC,CAAA;IACxF,CAAC;IACD,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,OAAO,CAAA;IAC3B,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAA;IACzC,OAAO,CAAC,GAAG,QAAQ,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;AAC7C,CAAC;AAED,SAAgB,oBAAoB,CAAC,KAA6B;IAC9D,MAAM,OAAO,GAAG,IAAA,YAAG,EAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAA;IAEjF,OAAO,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;AACtC,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare function checkMetadataValue(key: string, v: string): void;
|
|
2
|
+
export declare function checkNameValue(what: string, v: string): void;
|
|
3
|
+
export declare function checkMetaString(thing: string, input: string, length: number): void;
|
|
4
|
+
//# sourceMappingURL=validate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/utils/validate.ts"],"names":[],"mappings":"AAIA,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,QAUxD;AACD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,QAKrD;AACD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAU3E"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.checkMetadataValue = checkMetadataValue;
|
|
4
|
+
exports.checkNameValue = checkNameValue;
|
|
5
|
+
exports.checkMetaString = checkMetaString;
|
|
6
|
+
const error_1 = require("../error");
|
|
7
|
+
const metadata_key_1 = require("../input/key/metadata-key");
|
|
8
|
+
const parse_key_1 = require("../input/key/parse-key");
|
|
9
|
+
function checkMetadataValue(key, v) {
|
|
10
|
+
const parsed = (0, parse_key_1.parseOuterKey)(key);
|
|
11
|
+
if (!(parsed instanceof metadata_key_1.Metadata_Key_Value)) {
|
|
12
|
+
throw new error_1.K8tsMetadataError(`Expected value key, got section key for ${key}`);
|
|
13
|
+
}
|
|
14
|
+
if (parsed.metaType === "label") {
|
|
15
|
+
checkMetaString(`value of ${key}`, v, 63);
|
|
16
|
+
}
|
|
17
|
+
else if (parsed.metaType === "core") {
|
|
18
|
+
checkNameValue(`value of ${key}`, v);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
function checkNameValue(what, v) {
|
|
22
|
+
if (!parse_key_1.pNameValue.parse(v).isOk) {
|
|
23
|
+
throw new error_1.K8tsMetadataError(`Invalid ${what}: ${v}`);
|
|
24
|
+
}
|
|
25
|
+
checkMetaString(what, v, 63);
|
|
26
|
+
}
|
|
27
|
+
function checkMetaString(thing, input, length) {
|
|
28
|
+
if (!parse_key_1.normalChar.parse(input[0]).isOk) {
|
|
29
|
+
throw new error_1.K8tsMetadataError(`${thing} must start with an alphanumeric character.`);
|
|
30
|
+
}
|
|
31
|
+
if (!parse_key_1.normalChar.parse(input[input.length - 1]).isOk) {
|
|
32
|
+
throw new error_1.K8tsMetadataError(`${thing} must end with an alphanumeric character.`);
|
|
33
|
+
}
|
|
34
|
+
if (thing.length > length) {
|
|
35
|
+
throw new error_1.K8tsMetadataError(`${thing} must be no more than ${length} characters.`);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/utils/validate.ts"],"names":[],"mappings":";;AAIA,gDAUC;AACD,wCAKC;AACD,0CAUC;AA/BD,oCAA4C;AAC5C,4DAA8D;AAC9D,sDAA0F;AAE1F,SAAgB,kBAAkB,CAAC,GAAW,EAAE,CAAS;IACrD,MAAM,MAAM,GAAG,IAAA,yBAAQ,EAAC,GAAG,CAAC,CAAA;IAC5B,IAAI,CAAC,CAAC,MAAM,YAAY,iCAAkB,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,yBAAiB,CAAC,2CAA2C,GAAG,EAAE,CAAC,CAAA;IACjF,CAAC;IACD,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAC9B,eAAe,CAAC,YAAY,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;IAC7C,CAAC;SAAM,IAAI,MAAM,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;QACpC,cAAc,CAAC,YAAY,GAAG,EAAE,EAAE,CAAC,CAAC,CAAA;IACxC,CAAC;AACL,CAAC;AACD,SAAgB,cAAc,CAAC,IAAY,EAAE,CAAS;IAClD,IAAI,CAAC,sBAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5B,MAAM,IAAI,yBAAiB,CAAC,WAAW,IAAI,KAAK,CAAC,EAAE,CAAC,CAAA;IACxD,CAAC;IACD,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;AAChC,CAAC;AACD,SAAgB,eAAe,CAAC,KAAa,EAAE,KAAa,EAAE,MAAc;IACxE,IAAI,CAAC,sBAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACpC,MAAM,IAAI,yBAAiB,CAAC,GAAG,KAAK,6CAA6C,CAAC,CAAA;IACtF,CAAC;IACD,IAAI,CAAC,sBAAU,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACnD,MAAM,IAAI,yBAAiB,CAAC,GAAG,KAAK,4CAA4C,CAAC,CAAA;IACrF,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;QACxB,MAAM,IAAI,yBAAiB,CAAC,GAAG,KAAK,yBAAyB,MAAM,cAAc,CAAC,CAAA;IACtF,CAAC;AACL,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@k8ts/metadata",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0",
|
|
4
4
|
"description": "K8ts tools for working with k8ts metadata.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"k8ts",
|
|
@@ -32,12 +32,6 @@
|
|
|
32
32
|
"import": "./dist/index.js",
|
|
33
33
|
"default": "./dist/index.js",
|
|
34
34
|
"types": "./dist/index.d.ts"
|
|
35
|
-
},
|
|
36
|
-
"./util": {
|
|
37
|
-
"require": "./dist/util.js",
|
|
38
|
-
"import": "./dist/util.js",
|
|
39
|
-
"default": "./dist/util.js",
|
|
40
|
-
"types": "./dist/util.d.ts"
|
|
41
35
|
}
|
|
42
36
|
},
|
|
43
37
|
"main": "dist/index.js",
|
|
@@ -72,7 +66,7 @@
|
|
|
72
66
|
"dependencies": {
|
|
73
67
|
"doddle": "^7.3.1",
|
|
74
68
|
"parjs": "^1.3.9",
|
|
75
|
-
"what-are-you": "^0.
|
|
69
|
+
"what-are-you": "^0.3.0"
|
|
76
70
|
},
|
|
77
71
|
"devDependencies": {
|
|
78
72
|
"@types/jest": "^30.0.0",
|
package/src/error.ts
CHANGED
package/src/index.ts
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
export type {
|
|
2
|
-
export {
|
|
3
|
-
export { Meta, type MetaLike } from "./meta"
|
|
1
|
+
export type { Metadata_Input } from "./input/dict-input"
|
|
2
|
+
export { Metadata } from "./meta"
|
package/src/input/dict-input.ts
CHANGED
|
@@ -1,19 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import type { Key } from "../key/types"
|
|
3
|
-
import type { MetaLike } from "../meta"
|
|
1
|
+
import type { Metadata_Key_sDomain, Metadata_Key_sValue } from "./key/string-types"
|
|
4
2
|
|
|
5
3
|
export namespace MetaInputParts {
|
|
6
4
|
type Of<T extends string, V> = {
|
|
7
5
|
[K in T]?: V
|
|
8
6
|
}
|
|
9
|
-
type Full = Nested & Of<
|
|
10
|
-
export type Nested = Of<
|
|
11
|
-
export type
|
|
12
|
-
export type Input = Full & Heading
|
|
7
|
+
type Full = Nested & Of<Metadata_Key_sDomain, Nested>
|
|
8
|
+
export type Nested = Of<Metadata_Key_sValue, string>
|
|
9
|
+
export type Input = Full
|
|
13
10
|
}
|
|
14
11
|
|
|
15
|
-
export type
|
|
16
|
-
| MetaLike
|
|
17
|
-
| MetaInputParts.Input
|
|
18
|
-
| undefined
|
|
19
|
-
| Iterable<readonly [MetadataKey, string]>
|
|
12
|
+
export type Metadata_Input = MetaInputParts.Input | undefined | Iterable<readonly [string, string]>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { checkMetaString } from "../../utils/validate"
|
|
2
|
+
import { Metadata_Key_Base } from "./base"
|
|
3
|
+
|
|
4
|
+
export class Metadata_Key_Domain extends Metadata_Key_Base {
|
|
5
|
+
type = "domain" as const
|
|
6
|
+
constructor(private readonly _domain: string) {
|
|
7
|
+
super()
|
|
8
|
+
checkMetaString(`Section name ${this._domain}`, _domain, 253)
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
get str() {
|
|
12
|
+
return [this._domain].join("")
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { isNullish } from "what-are-you"
|
|
2
|
+
import { K8tsMetadataError } from "../../error"
|
|
3
|
+
import { checkMetaString } from "../../utils/validate"
|
|
4
|
+
import { Metadata_Key_Base } from "./base"
|
|
5
|
+
import { Metadata_Key_Domain } from "./domain-prefix"
|
|
6
|
+
import type { Metadata_Key_sPrefix, Metadata_Key_sValue } from "./string-types"
|
|
7
|
+
|
|
8
|
+
export class Metadata_Key_Value extends Metadata_Key_Base {
|
|
9
|
+
type = "full" as const
|
|
10
|
+
constructor(
|
|
11
|
+
private readonly _prefix: string,
|
|
12
|
+
private readonly _domain: string | undefined,
|
|
13
|
+
private readonly _name: string
|
|
14
|
+
) {
|
|
15
|
+
super()
|
|
16
|
+
if (_domain) {
|
|
17
|
+
checkMetaString(`DNS prefix for ${this.str}`, _domain, 253)
|
|
18
|
+
}
|
|
19
|
+
checkMetaString(`Metadata name of ${this.str}`, _name, 63)
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
get metaType() {
|
|
23
|
+
switch (this._prefix) {
|
|
24
|
+
case "":
|
|
25
|
+
return "core"
|
|
26
|
+
case "%":
|
|
27
|
+
return "label"
|
|
28
|
+
case "#":
|
|
29
|
+
return "comment"
|
|
30
|
+
case "^":
|
|
31
|
+
return "annotation"
|
|
32
|
+
default:
|
|
33
|
+
throw new K8tsMetadataError(`Unknown prefix ${this._prefix}`)
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
get suffix() {
|
|
38
|
+
const parts = []
|
|
39
|
+
if (this._domain) {
|
|
40
|
+
parts.push(this._domain)
|
|
41
|
+
if (!this._domain.endsWith("/")) {
|
|
42
|
+
parts.push("/")
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
parts.push(this._name)
|
|
46
|
+
return parts.join("")
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
get str(): Metadata_Key_sValue {
|
|
50
|
+
return [this._prefix, this.suffix].join("") as Metadata_Key_sValue
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
get parent() {
|
|
54
|
+
if (!this._domain) {
|
|
55
|
+
return null
|
|
56
|
+
}
|
|
57
|
+
return new Metadata_Key_Domain(this._domain)
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
prefix(): Metadata_Key_sPrefix
|
|
61
|
+
prefix(prefix: Metadata_Key_sPrefix): this
|
|
62
|
+
prefix(prefix?: any) {
|
|
63
|
+
if (isNullish(prefix)) {
|
|
64
|
+
return this._prefix as Metadata_Key_sPrefix
|
|
65
|
+
}
|
|
66
|
+
return new Metadata_Key_Value(prefix, this._domain, this._name)
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
name(): string
|
|
70
|
+
name(name: string): this
|
|
71
|
+
name(name?: any) {
|
|
72
|
+
if (isNullish(name)) {
|
|
73
|
+
return this._name
|
|
74
|
+
}
|
|
75
|
+
return new Metadata_Key_Value(this._prefix, this._domain, name)
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
domain(): Metadata_Key_Domain
|
|
79
|
+
domain(domain: string | Metadata_Key_Domain): this
|
|
80
|
+
domain(domain?: any) {
|
|
81
|
+
if (isNullish(domain)) {
|
|
82
|
+
return this._domain ? new Metadata_Key_Domain(this._domain) : null
|
|
83
|
+
}
|
|
84
|
+
domain = domain instanceof Metadata_Key_Domain ? domain.str : domain
|
|
85
|
+
if (this._domain) {
|
|
86
|
+
throw new K8tsMetadataError("Already has a domain")
|
|
87
|
+
}
|
|
88
|
+
return new Metadata_Key_Value(this._prefix, domain, this._name)
|
|
89
|
+
}
|
|
90
|
+
}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { anyCharOf, anyStringOf, digit, letter, lower, string } from "parjs"
|
|
2
2
|
import { many1, map, maybe, or, qthen, stringify, then, thenq } from "parjs/combinators"
|
|
3
3
|
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
4
|
+
import { K8tsMetadataError } from "../../error"
|
|
5
|
+
import { Metadata_Key_Domain } from "./domain-prefix"
|
|
6
|
+
import { Metadata_Key_Value } from "./metadata-key"
|
|
6
7
|
|
|
7
8
|
const cPrefix = anyCharOf("%^#")
|
|
8
9
|
const cSection = string("/")
|
|
@@ -17,20 +18,22 @@ const cInterior = normalChar.pipe(or(cExtra)).expects("alphanumeric, '-', '_', o
|
|
|
17
18
|
export const pNameValue = cNameChar.pipe(many1(), stringify())
|
|
18
19
|
const pSpecialKey = anyStringOf("namespace", "name").pipe(
|
|
19
20
|
map(key => {
|
|
20
|
-
|
|
21
|
+
throw new K8tsMetadataError(
|
|
22
|
+
`Tried to set resource UID key '${key}' via metadata, which isn't allowed in k8ts. Modify the resource directly instead.`
|
|
23
|
+
)
|
|
21
24
|
})
|
|
22
25
|
)
|
|
23
26
|
const pCleanKey = cInterior.pipe(many1(), stringify())
|
|
24
27
|
|
|
25
28
|
const pSectionKey = pCleanKey.pipe(
|
|
26
29
|
thenq(cSection),
|
|
27
|
-
map(x => new
|
|
30
|
+
map(x => new Metadata_Key_Domain(x))
|
|
28
31
|
)
|
|
29
32
|
|
|
30
33
|
const pInnerKey = cPrefix.pipe(
|
|
31
34
|
then(pCleanKey),
|
|
32
35
|
map(([prefix, name]) => {
|
|
33
|
-
return new
|
|
36
|
+
return new Metadata_Key_Value(prefix, "", name)
|
|
34
37
|
})
|
|
35
38
|
)
|
|
36
39
|
|
|
@@ -38,9 +41,9 @@ const pKey = cPrefix.pipe(
|
|
|
38
41
|
then(pCleanKey, cSection.pipe(qthen(pCleanKey), stringify(), maybe())),
|
|
39
42
|
map(([prefix, nameOrSection, name]) => {
|
|
40
43
|
if (name) {
|
|
41
|
-
return new
|
|
44
|
+
return new Metadata_Key_Value(prefix, nameOrSection, name)
|
|
42
45
|
}
|
|
43
|
-
return new
|
|
46
|
+
return new Metadata_Key_Value(prefix, "", nameOrSection)
|
|
44
47
|
}),
|
|
45
48
|
or(pSpecialKey)
|
|
46
49
|
)
|
|
@@ -59,8 +62,9 @@ export function parseOuterKey(key: string) {
|
|
|
59
62
|
if (result.kind === "OK") {
|
|
60
63
|
return result.value
|
|
61
64
|
}
|
|
62
|
-
throw new
|
|
65
|
+
throw new K8tsMetadataError(`Failed to parse key ${key}: ${result.toString()}`, {
|
|
63
66
|
key,
|
|
64
67
|
error: result.toString()
|
|
65
68
|
})
|
|
66
69
|
}
|
|
70
|
+
export { parseOuterKey as parseKey }
|