@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/meta.js
CHANGED
|
@@ -1,333 +1,295 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.Metadata = void 0;
|
|
4
4
|
const doddle_1 = require("doddle");
|
|
5
5
|
const error_1 = require("./error");
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const order_meta_keyed_object_1 = require("./order-meta-keyed-object");
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
6
|
+
const input_1 = require("./input");
|
|
7
|
+
const metadata_key_1 = require("./input/key/metadata-key");
|
|
8
|
+
const map_1 = require("./utils/map");
|
|
9
|
+
const order_meta_keyed_object_1 = require("./utils/order-meta-keyed-object");
|
|
10
|
+
const validate_1 = require("./utils/validate");
|
|
11
|
+
/**
|
|
12
|
+
* Mutable storage for k8s metadata. K8s metadata includes labels, annotations, and core fields.
|
|
13
|
+
* These are addressed using `CharPrefix`.
|
|
14
|
+
*
|
|
15
|
+
* - **Labels**: `%key` → `metadata.labels.key`
|
|
16
|
+
* - **Annotations**: `^key` → `metadata.annotations.key`
|
|
17
|
+
* - **Comments**: `#key` → Build-time metadata, not manifested in k8s objects.
|
|
18
|
+
* - **Core metadata**: `key` → `metadata.key` (e.g., `name`, `namespace`, etc.)
|
|
19
|
+
*
|
|
20
|
+
* In addition, you can address different metadata keys under the same domain using a `DomainKey`,
|
|
21
|
+
* of the form `example.com/`. When using a `DomainKey`, you use a `CharPrefix` on the inner keys.
|
|
22
|
+
*
|
|
23
|
+
* This lets you add different kinds of metadata under the same domain with ease.
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* meta.add("%app", "my-app") // adds label 'app' with value 'my-app'
|
|
27
|
+
* meta.add("example.section/", {
|
|
28
|
+
* "%label1": "value1", // adds `%example.section/label1` with value 'value1'
|
|
29
|
+
* "^annotation1": "value2" // adds `^example.section/annotation1` with value 'value2'
|
|
30
|
+
* })
|
|
31
|
+
*/
|
|
32
|
+
class Metadata {
|
|
33
|
+
_dict;
|
|
34
|
+
/**
|
|
35
|
+
* Constructs a new Metadata instance from a map of key-value pairs. Validates all keys and
|
|
36
|
+
* values during construction.
|
|
37
|
+
*
|
|
38
|
+
* @param _dict Internal map storing metadata key-value pairs
|
|
39
|
+
* @throws {K8tsMetadataError} If any key or value is invalid
|
|
40
|
+
*/
|
|
41
|
+
constructor(a, b) {
|
|
42
|
+
this._dict = _pairToMap([a, b]);
|
|
43
|
+
for (const [key, value] of this._dict.entries()) {
|
|
44
|
+
(0, validate_1.checkMetadataValue)(key, value);
|
|
31
45
|
}
|
|
32
46
|
}
|
|
33
|
-
Meta_1._checkValue = _checkValue;
|
|
34
47
|
/**
|
|
35
|
-
*
|
|
36
|
-
* These are addressed using `CharPrefix`.
|
|
37
|
-
*
|
|
38
|
-
* - **Labels**: `%key` → `metadata.labels.key`
|
|
39
|
-
* - **Annotations**: `^key` → `metadata.annotations.key`
|
|
40
|
-
* - **Comments**: `#key` → Build-time metadata, not manifested in k8s objects.
|
|
41
|
-
* - **Core metadata**: `key` → `metadata.key` (e.g., `name`, `namespace`, etc.)
|
|
42
|
-
*
|
|
43
|
-
* In addition, you can address different metadata keys under the same domain using a
|
|
44
|
-
* `DomainKey`, of the form `example.com/`. When using a `DomainKey`, you use a `CharPrefix` on
|
|
45
|
-
* the inner keys.
|
|
46
|
-
*
|
|
47
|
-
* This lets you add different kinds of metadata under the same domain with ease.
|
|
48
|
+
* Makes Metadata instances iterable, yielding [ValueKey, string] pairs.
|
|
48
49
|
*
|
|
49
50
|
* @example
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
* "^annotation1": "value2" // adds `^example.section/annotation1` with value 'value2'
|
|
54
|
-
* })
|
|
51
|
+
* for (const [key, value] of meta) {
|
|
52
|
+
* console.log(key.str, value)
|
|
53
|
+
* }
|
|
55
54
|
*/
|
|
56
|
-
|
|
57
|
-
_dict
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* Constructs a new Meta instance from a map of key-value pairs. Validates all keys and
|
|
61
|
-
* values during construction.
|
|
62
|
-
*
|
|
63
|
-
* @param _dict Internal map storing metadata key-value pairs
|
|
64
|
-
* @throws {MetadataError} If any key or value is invalid
|
|
65
|
-
*/
|
|
66
|
-
constructor(_dict) {
|
|
67
|
-
this._dict = _dict;
|
|
68
|
-
for (const [key, value] of _dict.entries()) {
|
|
69
|
-
_checkValue(key, value);
|
|
70
|
-
}
|
|
55
|
+
*[Symbol.iterator]() {
|
|
56
|
+
for (const entry of this._dict.entries()) {
|
|
57
|
+
yield entry;
|
|
71
58
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
}
|
|
88
|
-
/**
|
|
89
|
-
* Creates a deep clone of this object.
|
|
90
|
-
*
|
|
91
|
-
* @returns
|
|
92
|
-
*/
|
|
93
|
-
clone() {
|
|
94
|
-
return this._create(new Map(this._dict));
|
|
95
|
-
}
|
|
96
|
-
delete(a, ...rest) {
|
|
97
|
-
if (a.endsWith("/")) {
|
|
98
|
-
const sectionKey = (0, parse_key_1.parseSectionKey)(a);
|
|
99
|
-
const onlyKeys = rest.map(parse_key_1.parseInnerKey);
|
|
100
|
-
if (onlyKeys.length > 0) {
|
|
101
|
-
var deleteOnly = (key) => onlyKeys.some(ok => ok.equals(key));
|
|
102
|
-
}
|
|
103
|
-
else {
|
|
104
|
-
var deleteOnly = (_key) => _key.domain().equals(sectionKey);
|
|
105
|
-
}
|
|
106
|
-
for (const k of this._keys) {
|
|
107
|
-
if (deleteOnly(k)) {
|
|
108
|
-
this._dict.delete(k.str);
|
|
109
|
-
}
|
|
110
|
-
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Creates a deep clone of this object.
|
|
62
|
+
*
|
|
63
|
+
* @returns
|
|
64
|
+
*/
|
|
65
|
+
clone() {
|
|
66
|
+
return new Metadata(this);
|
|
67
|
+
}
|
|
68
|
+
delete(a, ...rest) {
|
|
69
|
+
if (a.endsWith("/")) {
|
|
70
|
+
const sectionKey = (0, input_1.parseSectionKey)(a);
|
|
71
|
+
const onlyKeys = rest.map(input_1.parseInnerKey);
|
|
72
|
+
if (onlyKeys.length > 0) {
|
|
73
|
+
var deleteOnly = (key) => onlyKeys.some(ok => ok.equals(key));
|
|
111
74
|
}
|
|
112
75
|
else {
|
|
113
|
-
|
|
76
|
+
var deleteOnly = (_key) => _key.domain().equals(sectionKey);
|
|
114
77
|
}
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
const parsed = _pairToMap([a, b]);
|
|
119
|
-
for (const [k, v] of parsed) {
|
|
120
|
-
if (this._dict.has(k)) {
|
|
121
|
-
const prev = this._dict.get(k);
|
|
122
|
-
throw new error_1.MetadataError(`Duplicate entry for ${k}, was ${prev} now ${v}`, {
|
|
123
|
-
key: k.str
|
|
124
|
-
});
|
|
78
|
+
for (const k of this._keys) {
|
|
79
|
+
if (deleteOnly(k)) {
|
|
80
|
+
this._dict.delete(k.str);
|
|
125
81
|
}
|
|
126
|
-
this._dict.set(k, v);
|
|
127
82
|
}
|
|
128
|
-
return this;
|
|
129
83
|
}
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
* contain the same key-value pairs.
|
|
133
|
-
*
|
|
134
|
-
* @param other The other Meta instance or input to compare against
|
|
135
|
-
* @returns Whether the two Meta instances are equal
|
|
136
|
-
*/
|
|
137
|
-
equals(other) {
|
|
138
|
-
return (0, util_1.equalsMap)(this._dict, make(other)._dict);
|
|
84
|
+
else {
|
|
85
|
+
this._dict.delete(a);
|
|
139
86
|
}
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
this._dict.
|
|
87
|
+
return this;
|
|
88
|
+
}
|
|
89
|
+
add(a, b) {
|
|
90
|
+
const parsed = _pairToMap([a, b]);
|
|
91
|
+
for (const [k, v] of parsed) {
|
|
92
|
+
if (this._dict.has(k)) {
|
|
93
|
+
const prev = this._dict.get(k);
|
|
94
|
+
throw new error_1.K8tsMetadataError(`Duplicate entry for ${k}, was ${prev} now ${v}`, {
|
|
95
|
+
key: k.str
|
|
96
|
+
});
|
|
147
97
|
}
|
|
98
|
+
this._dict.set(k, v);
|
|
99
|
+
}
|
|
100
|
+
return this;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Compares this Metadata instance to another for equality. Two instances are equal if they
|
|
104
|
+
* contain the same key-value pairs.
|
|
105
|
+
*
|
|
106
|
+
* @param other The other Metadata instance or input to compare against
|
|
107
|
+
* @returns Whether the two Metadata instances are equal
|
|
108
|
+
*/
|
|
109
|
+
equals(other) {
|
|
110
|
+
return (0, map_1.equalsMap)(this._dict, new Metadata(other)._dict);
|
|
111
|
+
}
|
|
112
|
+
overwrite(a, b) {
|
|
113
|
+
if (a === undefined) {
|
|
148
114
|
return this;
|
|
149
115
|
}
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
return this._dict.has(key);
|
|
154
|
-
}
|
|
155
|
-
else {
|
|
156
|
-
return this._matchDomainPrefixes(parsed).size > 0;
|
|
157
|
-
}
|
|
116
|
+
const fromPair = _pairToMap([a, b]);
|
|
117
|
+
for (const [k, v] of fromPair.entries()) {
|
|
118
|
+
this._dict.set(k, v);
|
|
158
119
|
}
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
* @param key The value key to retrieve
|
|
166
|
-
* @returns The value associated with the key
|
|
167
|
-
* @throws {MetadataError} If the key is not found
|
|
168
|
-
*/
|
|
169
|
-
get(key) {
|
|
170
|
-
const parsed = (0, key_1.parseKey)(key);
|
|
171
|
-
const v = this._dict.get(key);
|
|
172
|
-
if (v === undefined) {
|
|
173
|
-
throw new error_1.MetadataError(`Key ${key} not found!`, { key });
|
|
174
|
-
}
|
|
175
|
-
return v;
|
|
120
|
+
return this;
|
|
121
|
+
}
|
|
122
|
+
has(key) {
|
|
123
|
+
const parsed = (0, input_1.parseKey)(key);
|
|
124
|
+
if (parsed instanceof metadata_key_1.Metadata_Key_Value) {
|
|
125
|
+
return this._dict.has(key);
|
|
176
126
|
}
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
127
|
+
else {
|
|
128
|
+
return this._matchDomainPrefixes(parsed).size > 0;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Retrieves the value for the specified key. Throws if the key doesn't exist.
|
|
133
|
+
*
|
|
134
|
+
* @example
|
|
135
|
+
* const appName = meta.get("%app")
|
|
136
|
+
*
|
|
137
|
+
* @param key The value key to retrieve
|
|
138
|
+
* @returns The value associated with the key
|
|
139
|
+
* @throws {K8tsMetadataError} If the key is not found
|
|
140
|
+
*/
|
|
141
|
+
get(key) {
|
|
142
|
+
const parsed = (0, input_1.parseKey)(key);
|
|
143
|
+
const v = this._dict.get(key);
|
|
144
|
+
if (v === undefined) {
|
|
145
|
+
throw new error_1.K8tsMetadataError(`Key ${key} not found!`, { key });
|
|
194
146
|
}
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
147
|
+
return v;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Attempts to retrieve the value for the specified key, returning a fallback if not found.
|
|
151
|
+
*
|
|
152
|
+
* @example
|
|
153
|
+
* const appName = meta.tryGet("%app", "default-app")
|
|
154
|
+
*
|
|
155
|
+
* @param key The value key to retrieve
|
|
156
|
+
* @param fallback Optional fallback value if key doesn't exist
|
|
157
|
+
* @returns The value associated with the key, or the fallback value
|
|
158
|
+
* @throws {K8tsMetadataError} If a domain key is provided instead of a value key
|
|
159
|
+
*/
|
|
160
|
+
tryGet(key, fallback) {
|
|
161
|
+
const parsed = (0, input_1.parseKey)(key);
|
|
162
|
+
if (!(parsed instanceof metadata_key_1.Metadata_Key_Value)) {
|
|
163
|
+
throw new error_1.K8tsMetadataError("Unexpected domain key!", { key });
|
|
200
164
|
}
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
165
|
+
return this._dict.get(key) ?? fallback;
|
|
166
|
+
}
|
|
167
|
+
get _parsedPairs() {
|
|
168
|
+
return (0, doddle_1.seq)(this._dict)
|
|
169
|
+
.map(([k, v]) => [(0, input_1.parseKey)(k), v])
|
|
170
|
+
.toArray()
|
|
171
|
+
.pull();
|
|
172
|
+
}
|
|
173
|
+
_matchDomainPrefixes(key) {
|
|
174
|
+
return (0, doddle_1.seq)(this._parsedPairs)
|
|
175
|
+
.filter(([k, v]) => k.parent?.equals(key) ?? false)
|
|
176
|
+
.toMap(x => [x[0].str, x[1]])
|
|
177
|
+
.pull();
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Creates a new Metadata instance containing only some of the keys. You can pass both entire
|
|
181
|
+
* keys and domain prefixes to include all keys under that domain.
|
|
182
|
+
*
|
|
183
|
+
* @example
|
|
184
|
+
* const subset = meta.pick("%app", "name", "example.com/")
|
|
185
|
+
*
|
|
186
|
+
* @param keySpecs Keys or domain prefixes to include in the result
|
|
187
|
+
* @returns A new Metadata instance with only the picked keys
|
|
188
|
+
*/
|
|
189
|
+
pick(...keySpecs) {
|
|
190
|
+
const parsed = keySpecs.map(input_1.parseKey);
|
|
191
|
+
const keyStrSet = new Set();
|
|
192
|
+
for (const key of parsed) {
|
|
193
|
+
if (key instanceof metadata_key_1.Metadata_Key_Value) {
|
|
194
|
+
keyStrSet.add(key.str);
|
|
229
195
|
}
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
for (const [k, v] of this) {
|
|
235
|
-
if (k.prefix() === prefix) {
|
|
236
|
-
out[k.suffix] = v;
|
|
196
|
+
else {
|
|
197
|
+
const sectionKeys = this._matchDomainPrefixes(key);
|
|
198
|
+
for (const k of sectionKeys.keys()) {
|
|
199
|
+
keyStrSet.add(k);
|
|
237
200
|
}
|
|
238
201
|
}
|
|
239
|
-
return (0, order_meta_keyed_object_1.orderMetaKeyedObject)(out);
|
|
240
|
-
}
|
|
241
|
-
/**
|
|
242
|
-
* Returns all labels as a plain object that can be embedded into a k8s manifest, with keys
|
|
243
|
-
* in canonical order.
|
|
244
|
-
*
|
|
245
|
-
* @example
|
|
246
|
-
* const labels = Meta.make({
|
|
247
|
-
* "%app": "my-app",
|
|
248
|
-
* "%tier": "backend"
|
|
249
|
-
* }).labels
|
|
250
|
-
* // { app: "my-app", tier: "backend" }
|
|
251
|
-
*/
|
|
252
|
-
get labels() {
|
|
253
|
-
return this._prefixed("%");
|
|
254
|
-
}
|
|
255
|
-
/**
|
|
256
|
-
* Returns all annotations as a plain object that can be embedded into a k8s manifest, with
|
|
257
|
-
* keys in canonical order.
|
|
258
|
-
*
|
|
259
|
-
* @example
|
|
260
|
-
* const annotations = Meta.make({
|
|
261
|
-
* "^note": "This is important",
|
|
262
|
-
* "^description": "Detailed info"
|
|
263
|
-
* }).annotations
|
|
264
|
-
* // { note: "This is important", description: "Detailed info" }
|
|
265
|
-
*/
|
|
266
|
-
get annotations() {
|
|
267
|
-
return this._prefixed("^");
|
|
268
|
-
}
|
|
269
|
-
/**
|
|
270
|
-
* Returns all comments (build-time metadata) as a plain object, with keys in canonical
|
|
271
|
-
* order.
|
|
272
|
-
*
|
|
273
|
-
* @example
|
|
274
|
-
* const comments = Meta.make({
|
|
275
|
-
* "#note": "Internal use only"
|
|
276
|
-
* }).comments
|
|
277
|
-
* // { note: "Internal use only" }
|
|
278
|
-
*/
|
|
279
|
-
get comments() {
|
|
280
|
-
return this._prefixed("#");
|
|
281
202
|
}
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
* @example
|
|
287
|
-
* const core = meta.core // { name: "my-resource", namespace: "default" }
|
|
288
|
-
*/
|
|
289
|
-
get core() {
|
|
290
|
-
return this._prefixed("");
|
|
203
|
+
const out = new Map();
|
|
204
|
+
for (const [k, v] of this._dict.entries()) {
|
|
205
|
+
if (keyStrSet.has(k))
|
|
206
|
+
out.set(k, v);
|
|
291
207
|
}
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
* name: "my-resource"
|
|
301
|
-
* }).values
|
|
302
|
-
* // { "%app": "my-app", "^note": "This is important", "name": "my-resource" }
|
|
303
|
-
*/
|
|
304
|
-
get values() {
|
|
305
|
-
return (0, util_1.toJS)(this._dict);
|
|
306
|
-
}
|
|
307
|
-
get _keys() {
|
|
308
|
-
return (0, doddle_1.seq)(this)
|
|
309
|
-
.map(([k, v]) => k)
|
|
310
|
-
.toArray()
|
|
311
|
-
.pull();
|
|
208
|
+
return new Metadata(out);
|
|
209
|
+
}
|
|
210
|
+
_prefixed(prefix) {
|
|
211
|
+
const out = {};
|
|
212
|
+
for (const [k, v] of this._parsedPairs) {
|
|
213
|
+
if (k.prefix() === prefix) {
|
|
214
|
+
out[k.suffix] = v;
|
|
215
|
+
}
|
|
312
216
|
}
|
|
217
|
+
return (0, order_meta_keyed_object_1.orderMetaKeyedObject)(out);
|
|
313
218
|
}
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
219
|
+
/**
|
|
220
|
+
* Returns all labels as a plain object that can be embedded into a k8s manifest, with keys in
|
|
221
|
+
* canonical order.
|
|
222
|
+
*
|
|
223
|
+
* @example
|
|
224
|
+
* const labels = Metadata.make({
|
|
225
|
+
* "%app": "my-app",
|
|
226
|
+
* "%tier": "backend"
|
|
227
|
+
* }).labels
|
|
228
|
+
* // { app: "my-app", tier: "backend" }
|
|
229
|
+
*/
|
|
230
|
+
get labels() {
|
|
231
|
+
return this._prefixed("%");
|
|
317
232
|
}
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
233
|
+
/**
|
|
234
|
+
* Returns all annotations as a plain object that can be embedded into a k8s manifest, with keys
|
|
235
|
+
* in canonical order.
|
|
236
|
+
*
|
|
237
|
+
* @example
|
|
238
|
+
* const annotations = Metadata.make({
|
|
239
|
+
* "^note": "This is important",
|
|
240
|
+
* "^description": "Detailed info"
|
|
241
|
+
* }).annotations
|
|
242
|
+
* // { note: "This is important", description: "Detailed info" }
|
|
243
|
+
*/
|
|
244
|
+
get annotations() {
|
|
245
|
+
return this._prefixed("^");
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Returns all comments (build-time metadata) as a plain object, with keys in canonical order.
|
|
249
|
+
*
|
|
250
|
+
* @example
|
|
251
|
+
* const comments = Metadata.make({
|
|
252
|
+
* "#note": "Internal use only"
|
|
253
|
+
* }).comments
|
|
254
|
+
* // { note: "Internal use only" }
|
|
255
|
+
*/
|
|
256
|
+
get comments() {
|
|
257
|
+
return this._prefixed("#");
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Returns all metadata key-value pairs as a flat JavaScript object, with each key prefixed
|
|
261
|
+
* appropriately.
|
|
262
|
+
*
|
|
263
|
+
* @example
|
|
264
|
+
* const all = Metadata.make({
|
|
265
|
+
* "%app": "my-app",
|
|
266
|
+
* "^note": "This is important",
|
|
267
|
+
* name: "my-resource"
|
|
268
|
+
* }).values
|
|
269
|
+
* // { "%app": "my-app", "^note": "This is important", "name": "my-resource" }
|
|
270
|
+
*/
|
|
271
|
+
get record() {
|
|
272
|
+
return (0, map_1.toJS)(this._dict);
|
|
273
|
+
}
|
|
274
|
+
get _keys() {
|
|
275
|
+
return (0, doddle_1.seq)(this._parsedPairs)
|
|
276
|
+
.map(([k, v]) => k)
|
|
277
|
+
.toArray()
|
|
278
|
+
.pull();
|
|
328
279
|
}
|
|
329
|
-
|
|
330
|
-
|
|
280
|
+
}
|
|
281
|
+
exports.Metadata = Metadata;
|
|
282
|
+
function _pairToObject(pair) {
|
|
283
|
+
let [key, value] = pair;
|
|
284
|
+
key = key instanceof metadata_key_1.Metadata_Key_Value ? key.str : key;
|
|
285
|
+
if (typeof key === "string") {
|
|
286
|
+
return {
|
|
287
|
+
[key]: value
|
|
288
|
+
};
|
|
331
289
|
}
|
|
332
|
-
|
|
290
|
+
return key;
|
|
291
|
+
}
|
|
292
|
+
function _pairToMap(pair) {
|
|
293
|
+
return (0, input_1.parseMetaInput)(_pairToObject(pair));
|
|
294
|
+
}
|
|
333
295
|
//# sourceMappingURL=meta.js.map
|
package/dist/meta.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meta.js","sourceRoot":"","sources":["../src/meta.ts"],"names":[],"mappings":";;;AAAA,mCAA4B;AAC5B,
|
|
1
|
+
{"version":3,"file":"meta.js","sourceRoot":"","sources":["../src/meta.ts"],"names":[],"mappings":"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"}
|