@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.
Files changed (94) hide show
  1. package/dist/error.d.ts +1 -1
  2. package/dist/error.d.ts.map +1 -1
  3. package/dist/error.js +3 -3
  4. package/dist/error.js.map +1 -1
  5. package/dist/index.d.ts +2 -3
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +2 -5
  8. package/dist/index.js.map +1 -1
  9. package/dist/input/dict-input.d.ts +5 -8
  10. package/dist/input/dict-input.d.ts.map +1 -1
  11. package/dist/input/index.d.ts +8 -0
  12. package/dist/input/index.d.ts.map +1 -0
  13. package/dist/input/index.js +24 -0
  14. package/dist/input/index.js.map +1 -0
  15. package/dist/input/key/base.d.ts +6 -0
  16. package/dist/input/key/base.d.ts.map +1 -0
  17. package/dist/input/key/base.js +13 -0
  18. package/dist/input/key/base.js.map +1 -0
  19. package/dist/input/key/domain-prefix.d.ts +8 -0
  20. package/dist/input/key/domain-prefix.d.ts.map +1 -0
  21. package/dist/input/key/domain-prefix.js +19 -0
  22. package/dist/input/key/domain-prefix.js.map +1 -0
  23. package/dist/input/key/metadata-key.d.ts +21 -0
  24. package/dist/input/key/metadata-key.d.ts.map +1 -0
  25. package/dist/input/key/metadata-key.js +82 -0
  26. package/dist/input/key/metadata-key.js.map +1 -0
  27. package/dist/input/key/parse-key.d.ts +10 -0
  28. package/dist/input/key/parse-key.d.ts.map +1 -0
  29. package/dist/{key → input/key}/parse-key.js +10 -8
  30. package/dist/input/key/parse-key.js.map +1 -0
  31. package/dist/input/key/string-types.d.ts +10 -0
  32. package/dist/input/key/string-types.d.ts.map +1 -0
  33. package/dist/input/key/string-types.js +3 -0
  34. package/dist/input/key/string-types.js.map +1 -0
  35. package/dist/input/parse-dict.d.ts +3 -2
  36. package/dist/input/parse-dict.d.ts.map +1 -1
  37. package/dist/input/parse-dict.js +16 -7
  38. package/dist/input/parse-dict.js.map +1 -1
  39. package/dist/meta.d.ts +243 -273
  40. package/dist/meta.d.ts.map +1 -1
  41. package/dist/meta.js +259 -297
  42. package/dist/meta.js.map +1 -1
  43. package/dist/util.d.ts +1 -22
  44. package/dist/util.d.ts.map +1 -1
  45. package/dist/util.js +15 -110
  46. package/dist/util.js.map +1 -1
  47. package/dist/utils/map.d.ts +23 -0
  48. package/dist/utils/map.d.ts.map +1 -0
  49. package/dist/utils/map.js +113 -0
  50. package/dist/utils/map.js.map +1 -0
  51. package/dist/utils/order-meta-keyed-object.d.ts.map +1 -0
  52. package/dist/{order-meta-keyed-object.js → utils/order-meta-keyed-object.js} +2 -1
  53. package/dist/utils/order-meta-keyed-object.js.map +1 -0
  54. package/dist/utils/validate.d.ts +4 -0
  55. package/dist/utils/validate.d.ts.map +1 -0
  56. package/dist/utils/validate.js +38 -0
  57. package/dist/utils/validate.js.map +1 -0
  58. package/package.json +2 -8
  59. package/src/error.ts +1 -1
  60. package/src/index.ts +2 -3
  61. package/src/input/dict-input.ts +5 -12
  62. package/src/input/index.ts +7 -0
  63. package/src/input/key/base.ts +10 -0
  64. package/src/input/key/domain-prefix.ts +14 -0
  65. package/src/input/key/metadata-key.ts +90 -0
  66. package/src/{key → input/key}/parse-key.ts +12 -8
  67. package/src/input/key/string-types.ts +15 -0
  68. package/src/input/parse-dict.ts +23 -13
  69. package/src/meta.ts +391 -417
  70. package/src/util.ts +1 -115
  71. package/src/utils/map.ts +115 -0
  72. package/src/{order-meta-keyed-object.ts → utils/order-meta-keyed-object.ts} +2 -1
  73. package/src/utils/validate.ts +32 -0
  74. package/dist/key/index.d.ts +0 -4
  75. package/dist/key/index.d.ts.map +0 -1
  76. package/dist/key/index.js +0 -11
  77. package/dist/key/index.js.map +0 -1
  78. package/dist/key/parse-key.d.ts +0 -8
  79. package/dist/key/parse-key.d.ts.map +0 -1
  80. package/dist/key/parse-key.js.map +0 -1
  81. package/dist/key/repr.d.ts +0 -36
  82. package/dist/key/repr.d.ts.map +0 -1
  83. package/dist/key/repr.js +0 -113
  84. package/dist/key/repr.js.map +0 -1
  85. package/dist/key/types.d.ts +0 -20
  86. package/dist/key/types.d.ts.map +0 -1
  87. package/dist/key/types.js +0 -11
  88. package/dist/key/types.js.map +0 -1
  89. package/dist/order-meta-keyed-object.d.ts.map +0 -1
  90. package/dist/order-meta-keyed-object.js.map +0 -1
  91. package/src/key/index.ts +0 -4
  92. package/src/key/repr.ts +0 -128
  93. package/src/key/types.ts +0 -21
  94. /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.Meta = void 0;
3
+ exports.Metadata = void 0;
4
4
  const doddle_1 = require("doddle");
5
5
  const error_1 = require("./error");
6
- const key_1 = require("./key");
7
- const parse_key_1 = require("./key/parse-key");
8
- const repr_1 = require("./key/repr");
9
- const order_meta_keyed_object_1 = require("./order-meta-keyed-object");
10
- const util_1 = require("./util");
11
- const MetaMarker = Symbol("k8ts.org/metadata");
12
- var Meta;
13
- (function (Meta_1) {
14
- function _checkNameValue(what, v) {
15
- if (!parse_key_1.pNameValue.parse(v).isOk) {
16
- throw new error_1.MetadataError(`Invalid ${what}: ${v}`);
17
- }
18
- (0, repr_1.checkMetaString)(what, v, 63);
19
- }
20
- Meta_1._checkNameValue = _checkNameValue;
21
- function _checkValue(key, v) {
22
- const parsed = (0, key_1.parseKey)(key);
23
- if (!(parsed instanceof repr_1.MetadataKey)) {
24
- throw new error_1.MetadataError(`Expected value key, got section key for ${key}`);
25
- }
26
- if (parsed.metaType === "label") {
27
- (0, repr_1.checkMetaString)(`value of ${key}`, v, 63);
28
- }
29
- else if (parsed.metaType === "core") {
30
- _checkNameValue(`value of ${key}`, v);
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
- * Mutable storage for k8s metadata. K8s metadata includes labels, annotations, and core fields.
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
- * meta.add("%app", "my-app") // adds label 'app' with value 'my-app'
51
- * meta.add("example.section/", {
52
- * "%label1": "value1", // adds `%example.section/label1` with value 'value1'
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
- class Meta {
57
- _dict;
58
- [MetaMarker] = true;
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
- * Makes Meta instances iterable, yielding [ValueKey, string] pairs.
74
- *
75
- * @example
76
- * for (const [key, value] of meta) {
77
- * console.log(key.str, value)
78
- * }
79
- */
80
- *[Symbol.iterator]() {
81
- for (const entry of this._dict.entries()) {
82
- yield [(0, key_1.parseKey)(entry[0]), entry[1]];
83
- }
84
- }
85
- _create(raw) {
86
- return new Meta(raw);
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
- this._dict.delete(a);
76
+ var deleteOnly = (_key) => _key.domain().equals(sectionKey);
114
77
  }
115
- return this;
116
- }
117
- add(a, b) {
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
- * Compares this Meta instance to another for equality. Two instances are equal if they
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
- overwrite(a, b) {
141
- if (a === undefined) {
142
- return this;
143
- }
144
- const fromPair = _pairToMap([a, b]);
145
- for (const [k, v] of fromPair.entries()) {
146
- this._dict.set(k, v);
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
- has(key) {
151
- const parsed = (0, key_1.parseKey)(key);
152
- if (parsed instanceof repr_1.MetadataKey) {
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
- * Retrieves the value for the specified key. Throws if the key doesn't exist.
161
- *
162
- * @example
163
- * const appName = meta.get("%app")
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
- * Attempts to retrieve the value for the specified key, returning a fallback if not found.
179
- *
180
- * @example
181
- * const appName = meta.tryGet("%app", "default-app")
182
- *
183
- * @param key The value key to retrieve
184
- * @param fallback Optional fallback value if key doesn't exist
185
- * @returns The value associated with the key, or the fallback value
186
- * @throws {MetadataError} If a domain key is provided instead of a value key
187
- */
188
- tryGet(key, fallback) {
189
- const parsed = (0, key_1.parseKey)(key);
190
- if (!(parsed instanceof repr_1.MetadataKey)) {
191
- throw new error_1.MetadataError("Unexpected domain key!", { key });
192
- }
193
- return this._dict.get(key) ?? fallback;
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
- _matchDomainPrefixes(key) {
196
- return (0, doddle_1.seq)(this)
197
- .filter(([k, v]) => k.parent?.equals(key) ?? false)
198
- .toMap(x => [x[0].str, x[1]])
199
- .pull();
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
- * Creates a new Meta instance containing only some of the keys. You can pass both entire
203
- * keys and domain prefixes to include all keys under that domain.
204
- *
205
- * @example
206
- * const subset = meta.pick("%app", "name", "example.com/")
207
- *
208
- * @param keySpecs Keys or domain prefixes to include in the result
209
- * @returns A new Meta instance with only the picked keys
210
- */
211
- pick(...keySpecs) {
212
- const parsed = keySpecs.map(key_1.parseKey);
213
- const keyStrSet = new Set();
214
- for (const key of parsed) {
215
- if (key instanceof repr_1.MetadataKey) {
216
- keyStrSet.add(key.str);
217
- }
218
- else {
219
- const sectionKeys = this._matchDomainPrefixes(key);
220
- for (const k of sectionKeys.keys()) {
221
- keyStrSet.add(k);
222
- }
223
- }
224
- }
225
- const out = new Map();
226
- for (const [k, v] of this._dict.entries()) {
227
- if (keyStrSet.has(k))
228
- out.set(k, v);
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
- return this._create(out);
231
- }
232
- _prefixed(prefix) {
233
- const out = {};
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
- * Returns all core metadata fields (`name` and `namespace`) as a plain object that can be
284
- * embedded into a k8s manifest, with keys in canonical order.
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
- * Returns all metadata key-value pairs as a flat JavaScript object, with each key prefixed
294
- * appropriately.
295
- *
296
- * @example
297
- * const all = Meta.make({
298
- * "%app": "my-app",
299
- * "^note": "This is important",
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
- Meta_1.Meta = Meta;
315
- function make(a, b) {
316
- return new Meta(_pairToMap([a, b]));
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
- Meta_1.make = make;
319
- function _pairToObject(pair) {
320
- let [key, value] = pair;
321
- key = key instanceof repr_1.MetadataKey ? key.str : key;
322
- if (typeof key === "string") {
323
- return {
324
- [key]: value
325
- };
326
- }
327
- return key;
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
- function _pairToMap(pair) {
330
- return (0, key_1.parseMetaInput)(_pairToObject(pair));
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
- })(Meta || (exports.Meta = Meta = {}));
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":"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"}
1
+ {"version":3,"file":"meta.js","sourceRoot":"","sources":["../src/meta.ts"],"names":[],"mappings":"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"}