@carbon/feature-flags 1.0.0 → 1.1.0-rc.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/es/index.js CHANGED
@@ -1,10 +1,132 @@
1
1
  /**
2
- * Copyright IBM Corp. 2015, 2023
2
+ * Copyright IBM Corp. 2015, 2026
3
3
  *
4
4
  * This source code is licensed under the Apache-2.0 license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
+ function _arrayLikeToArray(r, a) {
9
+ (null == a || a > r.length) && (a = r.length);
10
+ for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
11
+ return n;
12
+ }
13
+ function _arrayWithHoles(r) {
14
+ if (Array.isArray(r)) return r;
15
+ }
16
+ function _classCallCheck(a, n) {
17
+ if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function");
18
+ }
19
+ function _defineProperties(e, r) {
20
+ for (var t = 0; t < r.length; t++) {
21
+ var o = r[t];
22
+ o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o);
23
+ }
24
+ }
25
+ function _createClass(e, r, t) {
26
+ return r && _defineProperties(e.prototype, r), Object.defineProperty(e, "prototype", {
27
+ writable: false
28
+ }), e;
29
+ }
30
+ function _createForOfIteratorHelper(r, e) {
31
+ var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
32
+ if (!t) {
33
+ if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e) {
34
+ t && (r = t);
35
+ var n = 0,
36
+ F = function () {};
37
+ return {
38
+ s: F,
39
+ n: function () {
40
+ return n >= r.length ? {
41
+ done: true
42
+ } : {
43
+ done: false,
44
+ value: r[n++]
45
+ };
46
+ },
47
+ e: function (r) {
48
+ throw r;
49
+ },
50
+ f: F
51
+ };
52
+ }
53
+ throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
54
+ }
55
+ var o,
56
+ a = true,
57
+ u = false;
58
+ return {
59
+ s: function () {
60
+ t = t.call(r);
61
+ },
62
+ n: function () {
63
+ var r = t.next();
64
+ return a = r.done, r;
65
+ },
66
+ e: function (r) {
67
+ u = true, o = r;
68
+ },
69
+ f: function () {
70
+ try {
71
+ a || null == t.return || t.return();
72
+ } finally {
73
+ if (u) throw o;
74
+ }
75
+ }
76
+ };
77
+ }
78
+ function _iterableToArrayLimit(r, l) {
79
+ var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
80
+ if (null != t) {
81
+ var e,
82
+ n,
83
+ i,
84
+ u,
85
+ a = [],
86
+ f = true,
87
+ o = false;
88
+ try {
89
+ if (i = (t = t.call(r)).next, 0 === l) ; else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
90
+ } catch (r) {
91
+ o = true, n = r;
92
+ } finally {
93
+ try {
94
+ if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;
95
+ } finally {
96
+ if (o) throw n;
97
+ }
98
+ }
99
+ return a;
100
+ }
101
+ }
102
+ function _nonIterableRest() {
103
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
104
+ }
105
+ function _slicedToArray(r, e) {
106
+ return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();
107
+ }
108
+ function _toPrimitive(t, r) {
109
+ if ("object" != typeof t || !t) return t;
110
+ var e = t[Symbol.toPrimitive];
111
+ if (void 0 !== e) {
112
+ var i = e.call(t, r);
113
+ if ("object" != typeof i) return i;
114
+ throw new TypeError("@@toPrimitive must return a primitive value.");
115
+ }
116
+ return (String )(t);
117
+ }
118
+ function _toPropertyKey(t) {
119
+ var i = _toPrimitive(t, "string");
120
+ return "symbol" == typeof i ? i : i + "";
121
+ }
122
+ function _unsupportedIterableToArray(r, a) {
123
+ if (r) {
124
+ if ("string" == typeof r) return _arrayLikeToArray(r, a);
125
+ var t = {}.toString.call(r).slice(8, -1);
126
+ return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;
127
+ }
128
+ }
129
+
8
130
  var enabled$1 = {};
9
131
  try {
10
132
  if (process.env.CARBON_ENABLE_CSS_CUSTOM_PROPERTIES) {
@@ -249,135 +371,16 @@ var featureFlagInfo = [{
249
371
  enabled: enabled$1.enablePresence
250
372
  }];
251
373
 
252
- function _arrayLikeToArray(r, a) {
253
- (null == a || a > r.length) && (a = r.length);
254
- for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
255
- return n;
256
- }
257
- function _arrayWithHoles(r) {
258
- if (Array.isArray(r)) return r;
259
- }
260
- function _classCallCheck(a, n) {
261
- if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function");
262
- }
263
- function _defineProperties(e, r) {
264
- for (var t = 0; t < r.length; t++) {
265
- var o = r[t];
266
- o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o);
267
- }
268
- }
269
- function _createClass(e, r, t) {
270
- return r && _defineProperties(e.prototype, r), Object.defineProperty(e, "prototype", {
271
- writable: false
272
- }), e;
273
- }
274
- function _createForOfIteratorHelper(r, e) {
275
- var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
276
- if (!t) {
277
- if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e) {
278
- t && (r = t);
279
- var n = 0,
280
- F = function () {};
281
- return {
282
- s: F,
283
- n: function () {
284
- return n >= r.length ? {
285
- done: true
286
- } : {
287
- done: false,
288
- value: r[n++]
289
- };
290
- },
291
- e: function (r) {
292
- throw r;
293
- },
294
- f: F
295
- };
296
- }
297
- throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
298
- }
299
- var o,
300
- a = true,
301
- u = false;
302
- return {
303
- s: function () {
304
- t = t.call(r);
305
- },
306
- n: function () {
307
- var r = t.next();
308
- return a = r.done, r;
309
- },
310
- e: function (r) {
311
- u = true, o = r;
312
- },
313
- f: function () {
314
- try {
315
- a || null == t.return || t.return();
316
- } finally {
317
- if (u) throw o;
318
- }
319
- }
320
- };
321
- }
322
- function _iterableToArrayLimit(r, l) {
323
- var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
324
- if (null != t) {
325
- var e,
326
- n,
327
- i,
328
- u,
329
- a = [],
330
- f = true,
331
- o = false;
332
- try {
333
- if (i = (t = t.call(r)).next, 0 === l) ; else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
334
- } catch (r) {
335
- o = true, n = r;
336
- } finally {
337
- try {
338
- if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;
339
- } finally {
340
- if (o) throw n;
341
- }
342
- }
343
- return a;
344
- }
345
- }
346
- function _nonIterableRest() {
347
- throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
348
- }
349
- function _slicedToArray(r, e) {
350
- return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();
351
- }
352
- function _toPrimitive(t, r) {
353
- if ("object" != typeof t || !t) return t;
354
- var e = t[Symbol.toPrimitive];
355
- if (void 0 !== e) {
356
- var i = e.call(t, r);
357
- if ("object" != typeof i) return i;
358
- throw new TypeError("@@toPrimitive must return a primitive value.");
359
- }
360
- return (String )(t);
361
- }
362
- function _toPropertyKey(t) {
363
- var i = _toPrimitive(t, "string");
364
- return "symbol" == typeof i ? i : i + "";
365
- }
366
- function _unsupportedIterableToArray(r, a) {
367
- if (r) {
368
- if ("string" == typeof r) return _arrayLikeToArray(r, a);
369
- var t = {}.toString.call(r).slice(8, -1);
370
- return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;
371
- }
372
- }
373
-
374
374
  /**
375
- * Copyright IBM Corp. 2015, 2023
375
+ * Copyright IBM Corp. 2015, 2026
376
376
  *
377
377
  * This source code is licensed under the Apache-2.0 license found in the
378
378
  * LICENSE file in the root directory of this source tree.
379
379
  */
380
380
 
381
+ // TODO: Remove in the next major version.
382
+ /** @deprecated Use `FeatureFlagRecord` instead. */
383
+
381
384
  var FeatureFlagScope = /*#__PURE__*/function () {
382
385
  function FeatureFlagScope(flags) {
383
386
  var _this = this;
@@ -392,7 +395,6 @@ var FeatureFlagScope = /*#__PURE__*/function () {
392
395
 
393
396
  /**
394
397
  * Check to see if a flag exists
395
- * @param {string} name
396
398
  */
397
399
  return _createClass(FeatureFlagScope, [{
398
400
  key: "checkForFlag",
@@ -404,8 +406,6 @@ var FeatureFlagScope = /*#__PURE__*/function () {
404
406
 
405
407
  /**
406
408
  * Add a feature flag
407
- * @param {string} name
408
- * @param {boolean} enabled
409
409
  */
410
410
  }, {
411
411
  key: "add",
@@ -418,7 +418,6 @@ var FeatureFlagScope = /*#__PURE__*/function () {
418
418
 
419
419
  /**
420
420
  * Enable a feature flag
421
- * @param {string} name
422
421
  */
423
422
  }, {
424
423
  key: "enable",
@@ -429,7 +428,6 @@ var FeatureFlagScope = /*#__PURE__*/function () {
429
428
 
430
429
  /**
431
430
  * Disable a feature flag
432
- * @param {string} name
433
431
  */
434
432
  }, {
435
433
  key: "disable",
@@ -441,7 +439,6 @@ var FeatureFlagScope = /*#__PURE__*/function () {
441
439
  /**
442
440
  * Merge the given feature flags with the current set of feature flags.
443
441
  * Duplicate keys will be set to the value in the given feature flags.
444
- * @param {object} flags
445
442
  */
446
443
  }, {
447
444
  key: "merge",
@@ -451,10 +448,6 @@ var FeatureFlagScope = /*#__PURE__*/function () {
451
448
  _this2.flags.set(key, flags[key]);
452
449
  });
453
450
  }
454
-
455
- /**
456
- * @param {FeatureFlagScope} scope
457
- */
458
451
  }, {
459
452
  key: "mergeWithScope",
460
453
  value: function mergeWithScope(scope) {
@@ -479,40 +472,41 @@ var FeatureFlagScope = /*#__PURE__*/function () {
479
472
 
480
473
  /**
481
474
  * Check if a feature flag is enabled
482
- * @param {string} name
483
- * @returns {boolean}
484
475
  */
485
476
  }, {
486
477
  key: "enabled",
487
478
  value: function enabled(name) {
479
+ var _this$flags$get;
488
480
  this.checkForFlag(name);
489
- return this.flags.get(name);
481
+ return (_this$flags$get = this.flags.get(name)) !== null && _this$flags$get !== void 0 ? _this$flags$get : false;
490
482
  }
491
483
  }]);
492
484
  }();
493
485
 
494
- var FeatureFlags = createScope();
495
- for (var i = 0; i < featureFlagInfo.length; i++) {
496
- var featureFlag = featureFlagInfo[i];
497
- FeatureFlags.add(featureFlag.name, featureFlag.enabled);
498
- }
499
- function createScope(flags) {
486
+ var createScope = function createScope(flags) {
500
487
  return new FeatureFlagScope(flags);
501
- }
502
- function add() {
503
- return FeatureFlags.add.apply(FeatureFlags, arguments);
504
- }
505
- function enable() {
506
- return FeatureFlags.enable.apply(FeatureFlags, arguments);
507
- }
508
- function disable() {
509
- return FeatureFlags.disable.apply(FeatureFlags, arguments);
510
- }
511
- function enabled() {
512
- return FeatureFlags.enabled.apply(FeatureFlags, arguments);
513
- }
514
- function merge() {
515
- return FeatureFlags.merge.apply(FeatureFlags, arguments);
516
- }
488
+ };
489
+ var createDefaultScope = function createDefaultScope() {
490
+ var scope = createScope();
491
+ var _iterator = _createForOfIteratorHelper(featureFlagInfo),
492
+ _step;
493
+ try {
494
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
495
+ var featureFlag = _step.value;
496
+ scope.add(featureFlag.name, featureFlag.enabled);
497
+ }
498
+ } catch (err) {
499
+ _iterator.e(err);
500
+ } finally {
501
+ _iterator.f();
502
+ }
503
+ return scope;
504
+ };
505
+ var FeatureFlags = createDefaultScope();
506
+ var add = FeatureFlags.add.bind(FeatureFlags);
507
+ var enable = FeatureFlags.enable.bind(FeatureFlags);
508
+ var disable = FeatureFlags.disable.bind(FeatureFlags);
509
+ var enabled = FeatureFlags.enabled.bind(FeatureFlags);
510
+ var merge = FeatureFlags.merge.bind(FeatureFlags);
517
511
 
518
512
  export { FeatureFlags, add, createScope, disable, enable, enabled, merge };
package/lib/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright IBM Corp. 2015, 2023
2
+ * Copyright IBM Corp. 2015, 2026
3
3
  *
4
4
  * This source code is licensed under the Apache-2.0 license found in the
5
5
  * LICENSE file in the root directory of this source tree.
@@ -7,6 +7,128 @@
7
7
 
8
8
  'use strict';
9
9
 
10
+ function _arrayLikeToArray(r, a) {
11
+ (null == a || a > r.length) && (a = r.length);
12
+ for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
13
+ return n;
14
+ }
15
+ function _arrayWithHoles(r) {
16
+ if (Array.isArray(r)) return r;
17
+ }
18
+ function _classCallCheck(a, n) {
19
+ if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function");
20
+ }
21
+ function _defineProperties(e, r) {
22
+ for (var t = 0; t < r.length; t++) {
23
+ var o = r[t];
24
+ o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o);
25
+ }
26
+ }
27
+ function _createClass(e, r, t) {
28
+ return r && _defineProperties(e.prototype, r), Object.defineProperty(e, "prototype", {
29
+ writable: false
30
+ }), e;
31
+ }
32
+ function _createForOfIteratorHelper(r, e) {
33
+ var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
34
+ if (!t) {
35
+ if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e) {
36
+ t && (r = t);
37
+ var n = 0,
38
+ F = function () {};
39
+ return {
40
+ s: F,
41
+ n: function () {
42
+ return n >= r.length ? {
43
+ done: true
44
+ } : {
45
+ done: false,
46
+ value: r[n++]
47
+ };
48
+ },
49
+ e: function (r) {
50
+ throw r;
51
+ },
52
+ f: F
53
+ };
54
+ }
55
+ throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
56
+ }
57
+ var o,
58
+ a = true,
59
+ u = false;
60
+ return {
61
+ s: function () {
62
+ t = t.call(r);
63
+ },
64
+ n: function () {
65
+ var r = t.next();
66
+ return a = r.done, r;
67
+ },
68
+ e: function (r) {
69
+ u = true, o = r;
70
+ },
71
+ f: function () {
72
+ try {
73
+ a || null == t.return || t.return();
74
+ } finally {
75
+ if (u) throw o;
76
+ }
77
+ }
78
+ };
79
+ }
80
+ function _iterableToArrayLimit(r, l) {
81
+ var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
82
+ if (null != t) {
83
+ var e,
84
+ n,
85
+ i,
86
+ u,
87
+ a = [],
88
+ f = true,
89
+ o = false;
90
+ try {
91
+ if (i = (t = t.call(r)).next, 0 === l) ; else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
92
+ } catch (r) {
93
+ o = true, n = r;
94
+ } finally {
95
+ try {
96
+ if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;
97
+ } finally {
98
+ if (o) throw n;
99
+ }
100
+ }
101
+ return a;
102
+ }
103
+ }
104
+ function _nonIterableRest() {
105
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
106
+ }
107
+ function _slicedToArray(r, e) {
108
+ return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();
109
+ }
110
+ function _toPrimitive(t, r) {
111
+ if ("object" != typeof t || !t) return t;
112
+ var e = t[Symbol.toPrimitive];
113
+ if (void 0 !== e) {
114
+ var i = e.call(t, r);
115
+ if ("object" != typeof i) return i;
116
+ throw new TypeError("@@toPrimitive must return a primitive value.");
117
+ }
118
+ return (String )(t);
119
+ }
120
+ function _toPropertyKey(t) {
121
+ var i = _toPrimitive(t, "string");
122
+ return "symbol" == typeof i ? i : i + "";
123
+ }
124
+ function _unsupportedIterableToArray(r, a) {
125
+ if (r) {
126
+ if ("string" == typeof r) return _arrayLikeToArray(r, a);
127
+ var t = {}.toString.call(r).slice(8, -1);
128
+ return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;
129
+ }
130
+ }
131
+
10
132
  var enabled$1 = {};
11
133
  try {
12
134
  if (process.env.CARBON_ENABLE_CSS_CUSTOM_PROPERTIES) {
@@ -251,135 +373,16 @@ var featureFlagInfo = [{
251
373
  enabled: enabled$1.enablePresence
252
374
  }];
253
375
 
254
- function _arrayLikeToArray(r, a) {
255
- (null == a || a > r.length) && (a = r.length);
256
- for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
257
- return n;
258
- }
259
- function _arrayWithHoles(r) {
260
- if (Array.isArray(r)) return r;
261
- }
262
- function _classCallCheck(a, n) {
263
- if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function");
264
- }
265
- function _defineProperties(e, r) {
266
- for (var t = 0; t < r.length; t++) {
267
- var o = r[t];
268
- o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o);
269
- }
270
- }
271
- function _createClass(e, r, t) {
272
- return r && _defineProperties(e.prototype, r), Object.defineProperty(e, "prototype", {
273
- writable: false
274
- }), e;
275
- }
276
- function _createForOfIteratorHelper(r, e) {
277
- var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
278
- if (!t) {
279
- if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e) {
280
- t && (r = t);
281
- var n = 0,
282
- F = function () {};
283
- return {
284
- s: F,
285
- n: function () {
286
- return n >= r.length ? {
287
- done: true
288
- } : {
289
- done: false,
290
- value: r[n++]
291
- };
292
- },
293
- e: function (r) {
294
- throw r;
295
- },
296
- f: F
297
- };
298
- }
299
- throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
300
- }
301
- var o,
302
- a = true,
303
- u = false;
304
- return {
305
- s: function () {
306
- t = t.call(r);
307
- },
308
- n: function () {
309
- var r = t.next();
310
- return a = r.done, r;
311
- },
312
- e: function (r) {
313
- u = true, o = r;
314
- },
315
- f: function () {
316
- try {
317
- a || null == t.return || t.return();
318
- } finally {
319
- if (u) throw o;
320
- }
321
- }
322
- };
323
- }
324
- function _iterableToArrayLimit(r, l) {
325
- var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
326
- if (null != t) {
327
- var e,
328
- n,
329
- i,
330
- u,
331
- a = [],
332
- f = true,
333
- o = false;
334
- try {
335
- if (i = (t = t.call(r)).next, 0 === l) ; else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
336
- } catch (r) {
337
- o = true, n = r;
338
- } finally {
339
- try {
340
- if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;
341
- } finally {
342
- if (o) throw n;
343
- }
344
- }
345
- return a;
346
- }
347
- }
348
- function _nonIterableRest() {
349
- throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
350
- }
351
- function _slicedToArray(r, e) {
352
- return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();
353
- }
354
- function _toPrimitive(t, r) {
355
- if ("object" != typeof t || !t) return t;
356
- var e = t[Symbol.toPrimitive];
357
- if (void 0 !== e) {
358
- var i = e.call(t, r);
359
- if ("object" != typeof i) return i;
360
- throw new TypeError("@@toPrimitive must return a primitive value.");
361
- }
362
- return (String )(t);
363
- }
364
- function _toPropertyKey(t) {
365
- var i = _toPrimitive(t, "string");
366
- return "symbol" == typeof i ? i : i + "";
367
- }
368
- function _unsupportedIterableToArray(r, a) {
369
- if (r) {
370
- if ("string" == typeof r) return _arrayLikeToArray(r, a);
371
- var t = {}.toString.call(r).slice(8, -1);
372
- return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;
373
- }
374
- }
375
-
376
376
  /**
377
- * Copyright IBM Corp. 2015, 2023
377
+ * Copyright IBM Corp. 2015, 2026
378
378
  *
379
379
  * This source code is licensed under the Apache-2.0 license found in the
380
380
  * LICENSE file in the root directory of this source tree.
381
381
  */
382
382
 
383
+ // TODO: Remove in the next major version.
384
+ /** @deprecated Use `FeatureFlagRecord` instead. */
385
+
383
386
  var FeatureFlagScope = /*#__PURE__*/function () {
384
387
  function FeatureFlagScope(flags) {
385
388
  var _this = this;
@@ -394,7 +397,6 @@ var FeatureFlagScope = /*#__PURE__*/function () {
394
397
 
395
398
  /**
396
399
  * Check to see if a flag exists
397
- * @param {string} name
398
400
  */
399
401
  return _createClass(FeatureFlagScope, [{
400
402
  key: "checkForFlag",
@@ -406,8 +408,6 @@ var FeatureFlagScope = /*#__PURE__*/function () {
406
408
 
407
409
  /**
408
410
  * Add a feature flag
409
- * @param {string} name
410
- * @param {boolean} enabled
411
411
  */
412
412
  }, {
413
413
  key: "add",
@@ -420,7 +420,6 @@ var FeatureFlagScope = /*#__PURE__*/function () {
420
420
 
421
421
  /**
422
422
  * Enable a feature flag
423
- * @param {string} name
424
423
  */
425
424
  }, {
426
425
  key: "enable",
@@ -431,7 +430,6 @@ var FeatureFlagScope = /*#__PURE__*/function () {
431
430
 
432
431
  /**
433
432
  * Disable a feature flag
434
- * @param {string} name
435
433
  */
436
434
  }, {
437
435
  key: "disable",
@@ -443,7 +441,6 @@ var FeatureFlagScope = /*#__PURE__*/function () {
443
441
  /**
444
442
  * Merge the given feature flags with the current set of feature flags.
445
443
  * Duplicate keys will be set to the value in the given feature flags.
446
- * @param {object} flags
447
444
  */
448
445
  }, {
449
446
  key: "merge",
@@ -453,10 +450,6 @@ var FeatureFlagScope = /*#__PURE__*/function () {
453
450
  _this2.flags.set(key, flags[key]);
454
451
  });
455
452
  }
456
-
457
- /**
458
- * @param {FeatureFlagScope} scope
459
- */
460
453
  }, {
461
454
  key: "mergeWithScope",
462
455
  value: function mergeWithScope(scope) {
@@ -481,41 +474,42 @@ var FeatureFlagScope = /*#__PURE__*/function () {
481
474
 
482
475
  /**
483
476
  * Check if a feature flag is enabled
484
- * @param {string} name
485
- * @returns {boolean}
486
477
  */
487
478
  }, {
488
479
  key: "enabled",
489
480
  value: function enabled(name) {
481
+ var _this$flags$get;
490
482
  this.checkForFlag(name);
491
- return this.flags.get(name);
483
+ return (_this$flags$get = this.flags.get(name)) !== null && _this$flags$get !== void 0 ? _this$flags$get : false;
492
484
  }
493
485
  }]);
494
486
  }();
495
487
 
496
- var FeatureFlags = createScope();
497
- for (var i = 0; i < featureFlagInfo.length; i++) {
498
- var featureFlag = featureFlagInfo[i];
499
- FeatureFlags.add(featureFlag.name, featureFlag.enabled);
500
- }
501
- function createScope(flags) {
488
+ var createScope = function createScope(flags) {
502
489
  return new FeatureFlagScope(flags);
503
- }
504
- function add() {
505
- return FeatureFlags.add.apply(FeatureFlags, arguments);
506
- }
507
- function enable() {
508
- return FeatureFlags.enable.apply(FeatureFlags, arguments);
509
- }
510
- function disable() {
511
- return FeatureFlags.disable.apply(FeatureFlags, arguments);
512
- }
513
- function enabled() {
514
- return FeatureFlags.enabled.apply(FeatureFlags, arguments);
515
- }
516
- function merge() {
517
- return FeatureFlags.merge.apply(FeatureFlags, arguments);
518
- }
490
+ };
491
+ var createDefaultScope = function createDefaultScope() {
492
+ var scope = createScope();
493
+ var _iterator = _createForOfIteratorHelper(featureFlagInfo),
494
+ _step;
495
+ try {
496
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
497
+ var featureFlag = _step.value;
498
+ scope.add(featureFlag.name, featureFlag.enabled);
499
+ }
500
+ } catch (err) {
501
+ _iterator.e(err);
502
+ } finally {
503
+ _iterator.f();
504
+ }
505
+ return scope;
506
+ };
507
+ var FeatureFlags = createDefaultScope();
508
+ var add = FeatureFlags.add.bind(FeatureFlags);
509
+ var enable = FeatureFlags.enable.bind(FeatureFlags);
510
+ var disable = FeatureFlags.disable.bind(FeatureFlags);
511
+ var enabled = FeatureFlags.enabled.bind(FeatureFlags);
512
+ var merge = FeatureFlags.merge.bind(FeatureFlags);
519
513
 
520
514
  exports.FeatureFlags = FeatureFlags;
521
515
  exports.add = add;
package/package.json CHANGED
@@ -1,10 +1,11 @@
1
1
  {
2
2
  "name": "@carbon/feature-flags",
3
3
  "description": "Build with feature flags in Carbon",
4
- "version": "1.0.0",
4
+ "version": "1.1.0-rc.0",
5
5
  "license": "Apache-2.0",
6
6
  "main": "lib/index.js",
7
7
  "module": "es/index.js",
8
+ "types": "types/index.d.ts",
8
9
  "sass": "index.scss",
9
10
  "repository": {
10
11
  "type": "git",
@@ -15,6 +16,7 @@
15
16
  "files": [
16
17
  "es",
17
18
  "lib",
19
+ "types",
18
20
  "scss",
19
21
  "index.scss",
20
22
  "telemetry.yml"
@@ -31,8 +33,8 @@
31
33
  "provenance": true
32
34
  },
33
35
  "scripts": {
34
- "build": "yarn clean && node tasks/build.js && rollup -c",
35
- "clean": "rimraf es lib scss/generated src/generated",
36
+ "build": "yarn clean && node tasks/build.js && rollup -c && ../../node_modules/.bin/tsc -p tsconfig.json",
37
+ "clean": "rimraf es lib types scss/generated src/generated",
36
38
  "watch": "yarn clean && node tasks/build.js && rollup -c -w",
37
39
  "postinstall": "ibmtelemetry --config=telemetry.yml"
38
40
  },
@@ -40,6 +42,7 @@
40
42
  "@babel/core": "^7.27.3",
41
43
  "@babel/generator": "^7.27.3",
42
44
  "@babel/preset-env": "^7.27.2",
45
+ "@babel/preset-typescript": "^7.27.1",
43
46
  "@babel/template": "^7.27.2",
44
47
  "@babel/types": "^7.27.3",
45
48
  "@carbon/scss-generator": "^10.20.0",
@@ -50,16 +53,19 @@
50
53
  "js-yaml": "^4.1.0",
51
54
  "rimraf": "^6.0.1",
52
55
  "rollup": "^4.41.1",
53
- "rollup-plugin-strip-banner": "^3.0.0"
56
+ "rollup-plugin-strip-banner": "^3.0.0",
57
+ "typescript": "^5.7.3",
58
+ "typescript-config-carbon": "^0.9.0"
54
59
  },
55
60
  "sideEffects": false,
56
61
  "babel": {
57
62
  "presets": [
58
- "@babel/env"
63
+ "@babel/env",
64
+ "@babel/preset-typescript"
59
65
  ]
60
66
  },
61
67
  "dependencies": {
62
68
  "@ibm/telemetry-js": "^1.5.0"
63
69
  },
64
- "gitHead": "6dde90f9edfb378e1585f1954c92484a37f22f02"
70
+ "gitHead": "f3e7c2811340637ead19b4a1a550a20820602cc4"
65
71
  }
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Copyright IBM Corp. 2015, 2026
3
+ *
4
+ * This source code is licensed under the Apache-2.0 license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ export type FeatureFlagRecord = Record<string, boolean>;
8
+ /** @deprecated Use `FeatureFlagRecord` instead. */
9
+ export type FeatureFlags = FeatureFlagRecord;
10
+ export declare class FeatureFlagScope {
11
+ flags: Map<string, boolean>;
12
+ constructor(flags?: FeatureFlagRecord);
13
+ /**
14
+ * Check to see if a flag exists
15
+ */
16
+ checkForFlag(name: string): void;
17
+ /**
18
+ * Add a feature flag
19
+ */
20
+ add(name: string, enabled: boolean): void;
21
+ /**
22
+ * Enable a feature flag
23
+ */
24
+ enable(name: string): void;
25
+ /**
26
+ * Disable a feature flag
27
+ */
28
+ disable(name: string): void;
29
+ /**
30
+ * Merge the given feature flags with the current set of feature flags.
31
+ * Duplicate keys will be set to the value in the given feature flags.
32
+ */
33
+ merge(flags: FeatureFlagRecord): void;
34
+ mergeWithScope(scope: FeatureFlagScope): void;
35
+ /**
36
+ * Check if a feature flag is enabled
37
+ */
38
+ enabled(name: string): boolean;
39
+ }
@@ -0,0 +1,5 @@
1
+ export const featureFlagInfo: {
2
+ name: string;
3
+ description: string;
4
+ enabled: boolean;
5
+ }[];
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Copyright IBM Corp. 2015, 2026
3
+ *
4
+ * This source code is licensed under the Apache-2.0 license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ import { FeatureFlagScope, type FeatureFlagRecord } from './FeatureFlagScope';
8
+ export type { FeatureFlagRecord } from './FeatureFlagScope';
9
+ export declare const createScope: (flags?: FeatureFlagRecord) => FeatureFlagScope;
10
+ export declare const FeatureFlags: FeatureFlagScope;
11
+ export declare const add: (name: string, enabled: boolean) => void;
12
+ export declare const enable: (name: string) => void;
13
+ export declare const disable: (name: string) => void;
14
+ export declare const enabled: (name: string) => boolean;
15
+ export declare const merge: (flags: FeatureFlagRecord) => void;