@flowgram.ai/utils 0.1.0-alpha.3 → 0.1.0-alpha.31

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/esm/index.js CHANGED
@@ -1275,6 +1275,27 @@ var _hasOwnProperty = Object.prototype.hasOwnProperty;
1275
1275
  function notEmpty(arg) {
1276
1276
  return arg !== void 0 && arg !== null;
1277
1277
  }
1278
+ var safeKey = (key) => {
1279
+ const dangerousProps = [
1280
+ "__proto__",
1281
+ "constructor",
1282
+ "prototype",
1283
+ "__defineGetter__",
1284
+ "__defineSetter__",
1285
+ "__lookupGetter__",
1286
+ "__lookupSetter__",
1287
+ "hasOwnProperty",
1288
+ "isPrototypeOf",
1289
+ "propertyIsEnumerable",
1290
+ "toString",
1291
+ "valueOf",
1292
+ "toLocaleString"
1293
+ ];
1294
+ if (dangerousProps.includes(key.toLowerCase())) {
1295
+ return "";
1296
+ }
1297
+ return key;
1298
+ };
1278
1299
  function isEmpty(arg) {
1279
1300
  return keys(arg).length === 0 && arg.constructor === Object;
1280
1301
  }
@@ -1306,18 +1327,18 @@ function setByKey(target, key, newValue, autoCreateObject = true, clone = false)
1306
1327
  while (targetKeys.length > 0) {
1307
1328
  key = targetKeys.shift();
1308
1329
  if (targetKeys.length === 0) {
1309
- target[key] = newValue;
1330
+ target[safeKey(key)] = newValue;
1310
1331
  return originTarget;
1311
1332
  }
1312
1333
  if (typeof target[key] !== "object") {
1313
1334
  if (!autoCreateObject) return originTarget;
1314
- target[key] = {};
1335
+ target[safeKey(key)] = {};
1315
1336
  }
1316
1337
  if (clone) {
1317
1338
  if (Array.isArray(target[key])) {
1318
- target[key] = target[key].slice();
1339
+ target[safeKey(key)] = target[key].slice();
1319
1340
  } else {
1320
- target[key] = { ...target[key] };
1341
+ target[safeKey(key)] = { ...target[key] };
1321
1342
  }
1322
1343
  }
1323
1344
  target = target[key];
@@ -1356,13 +1377,29 @@ function isNumber(v) {
1356
1377
  return typeof v === "number" || isObject(v) && getTag(v) === "[object Number]";
1357
1378
  }
1358
1379
 
1380
+ // src/disposable.ts
1381
+ var Disposable;
1382
+ ((Disposable2) => {
1383
+ function is(thing) {
1384
+ return typeof thing === "object" && thing !== null && typeof thing.dispose === "function";
1385
+ }
1386
+ Disposable2.is = is;
1387
+ function create(func) {
1388
+ return {
1389
+ dispose: func
1390
+ };
1391
+ }
1392
+ Disposable2.create = create;
1393
+ Disposable2.NULL = Object.freeze(create(() => {
1394
+ }));
1395
+ })(Disposable || (Disposable = {}));
1396
+
1359
1397
  // src/event.ts
1360
- var DisposableNULL = Object.freeze({ dispose: NOOP });
1361
1398
  var Event;
1362
- ((Event2) => {
1363
- Event2.None = () => DisposableNULL;
1399
+ ((Event3) => {
1400
+ Event3.None = () => Disposable.NULL;
1364
1401
  })(Event || (Event = {}));
1365
- var _Emitter = class _Emitter {
1402
+ var Emitter = class {
1366
1403
  constructor() {
1367
1404
  this._disposed = false;
1368
1405
  }
@@ -1370,15 +1407,12 @@ var _Emitter = class _Emitter {
1370
1407
  if (!this._event) {
1371
1408
  this._event = (listener, thisArgs) => {
1372
1409
  if (this._disposed) {
1373
- return DisposableNULL;
1410
+ return Disposable.NULL;
1374
1411
  }
1375
1412
  if (!this._listeners) {
1376
1413
  this._listeners = [];
1377
1414
  }
1378
1415
  const finalListener = thisArgs ? listener.bind(thisArgs) : listener;
1379
- if (this._listeners.length >= _Emitter.LEAK_WARNING_THRESHHOLD) {
1380
- console.warn(`[Emitter] Listeners length >= ${_Emitter.LEAK_WARNING_THRESHHOLD}`);
1381
- }
1382
1416
  this._listeners.push(finalListener);
1383
1417
  const eventDisposable = {
1384
1418
  dispose: () => {
@@ -1411,25 +1445,8 @@ var _Emitter = class _Emitter {
1411
1445
  this._disposed = true;
1412
1446
  }
1413
1447
  };
1414
- _Emitter.LEAK_WARNING_THRESHHOLD = 175;
1415
- var Emitter = _Emitter;
1416
1448
 
1417
- // src/disposable.ts
1418
- var Disposable;
1419
- ((Disposable2) => {
1420
- function is(thing) {
1421
- return typeof thing === "object" && thing !== null && typeof thing.dispose === "function";
1422
- }
1423
- Disposable2.is = is;
1424
- function create(func) {
1425
- return {
1426
- dispose: func
1427
- };
1428
- }
1429
- Disposable2.create = create;
1430
- Disposable2.NULL = Object.freeze(create(() => {
1431
- }));
1432
- })(Disposable || (Disposable = {}));
1449
+ // src/disposable-collection.ts
1433
1450
  var DisposableImpl = class {
1434
1451
  constructor() {
1435
1452
  this.toDispose = new DisposableCollection();
@@ -1451,6 +1468,9 @@ var DisposableCollection = class {
1451
1468
  this._disposed = false;
1452
1469
  toDispose.forEach((d) => this.push(d));
1453
1470
  }
1471
+ get length() {
1472
+ return this.disposables.length;
1473
+ }
1454
1474
  get onDispose() {
1455
1475
  return this.onDisposeEmitter.event;
1456
1476
  }
@@ -1474,25 +1494,26 @@ var DisposableCollection = class {
1474
1494
  }
1475
1495
  push(disposable) {
1476
1496
  if (this.disposed) return Disposable.NULL;
1497
+ if (disposable === Disposable.NULL) {
1498
+ return Disposable.NULL;
1499
+ }
1477
1500
  const { disposables } = this;
1478
- if (disposables.find((d) => d._origin === disposable)) {
1501
+ if (disposables.find((d) => d === disposable)) {
1479
1502
  return Disposable.NULL;
1480
1503
  }
1481
- let disposableWrap;
1504
+ const originalDispose = disposable.dispose;
1482
1505
  const toRemove = Disposable.create(() => {
1483
- const index = disposables.indexOf(disposableWrap);
1506
+ const index = disposables.indexOf(disposable);
1484
1507
  if (index !== -1) {
1485
1508
  disposables.splice(index, 1);
1486
1509
  }
1510
+ disposable.dispose = originalDispose;
1487
1511
  });
1488
- disposableWrap = {
1489
- dispose: () => {
1490
- toRemove.dispose();
1491
- disposable.dispose();
1492
- },
1493
- _origin: disposable
1512
+ disposable.dispose = () => {
1513
+ toRemove.dispose();
1514
+ disposable.dispose();
1494
1515
  };
1495
- disposables.push(disposableWrap);
1516
+ disposables.push(disposable);
1496
1517
  return toRemove;
1497
1518
  }
1498
1519
  pushAll(disposables) {
@@ -2486,6 +2507,7 @@ export {
2486
2507
  reduce,
2487
2508
  requestWithMemo,
2488
2509
  retry,
2510
+ safeKey,
2489
2511
  setByKey,
2490
2512
  useRefresh,
2491
2513
  values