@parcel/events 2.0.0-beta.3.1 → 2.0.0-dev.1510

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/lib/Disposable.js CHANGED
@@ -4,84 +4,44 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  function _assert() {
9
8
  const data = _interopRequireDefault(require("assert"));
10
-
11
9
  _assert = function () {
12
10
  return data;
13
11
  };
14
-
15
12
  return data;
16
13
  }
17
-
18
- function _errors() {
19
- const data = require("./errors");
20
-
21
- _errors = function () {
22
- return data;
23
- };
24
-
25
- return data;
26
- }
27
-
14
+ var _errors = require("./errors");
28
15
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
29
-
30
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
31
-
32
- function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
33
-
34
- function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
35
-
36
- function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
37
-
38
- function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
39
-
40
- function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } }
41
-
42
- var _disposables = new WeakMap();
43
-
44
16
  /*
45
17
  * A general-purpose disposable class. It can normalize disposable-like values
46
18
  * (such as single functions or IDisposables), as well as hold multiple
47
19
  * disposable-like values to be disposed of at once.
48
20
  */
49
21
  class Disposable {
50
- constructor(...disposables) {
51
- _defineProperty(this, "disposed", false);
52
-
53
- _disposables.set(this, {
54
- writable: true,
55
- value: void 0
56
- });
22
+ disposed = false;
23
+ #disposables /*: ?Set<DisposableLike> */;
57
24
 
58
- _classPrivateFieldSet(this, _disposables, new Set(disposables));
25
+ constructor(...disposables) {
26
+ this.#disposables = new Set(disposables);
59
27
  }
60
-
61
28
  add(...disposables) {
62
29
  if (this.disposed) {
63
- throw new (_errors().AlreadyDisposedError)('Cannot add new disposables after disposable has been disposed');
30
+ throw new _errors.AlreadyDisposedError('Cannot add new disposables after disposable has been disposed');
64
31
  }
65
-
66
- (0, _assert().default)(_classPrivateFieldGet(this, _disposables) != null);
67
-
32
+ (0, _assert().default)(this.#disposables != null);
68
33
  for (let disposable of disposables) {
69
- _classPrivateFieldGet(this, _disposables).add(disposable);
34
+ this.#disposables.add(disposable);
70
35
  }
71
36
  }
72
-
73
37
  async dispose() {
74
38
  if (this.disposed) {
75
39
  return;
76
40
  }
77
-
78
41
  this.disposed = true;
79
- (0, _assert().default)(_classPrivateFieldGet(this, _disposables) != null);
80
- await Promise.all([..._classPrivateFieldGet(this, _disposables)].map(disposable => typeof disposable === 'function' ? disposable() : disposable.dispose()));
81
-
82
- _classPrivateFieldSet(this, _disposables, null);
42
+ (0, _assert().default)(this.#disposables != null);
43
+ await Promise.all([...this.#disposables].map(disposable => typeof disposable === 'function' ? disposable() : disposable.dispose()));
44
+ this.#disposables = null;
83
45
  }
84
-
85
46
  }
86
-
87
47
  exports.default = Disposable;
@@ -4,93 +4,68 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
- function _errors() {
9
- const data = require("./errors");
10
-
11
- _errors = function () {
12
- return data;
13
- };
14
-
15
- return data;
16
- }
17
-
18
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
19
-
7
+ var _errors = require("./errors");
20
8
  // Like an EventEmitter, but for only a single "event". This provides type-safety
21
9
  // for the values emitted. Rather than passing predetermined strings (which can
22
10
  // be misspelled), create an instance of ValueEmitter for every logical "event"
23
11
  // to be dispatched, and type it according to the type of value emitted.
24
12
  class ValueEmitter {
25
- constructor() {
26
- _defineProperty(this, "_listeners", []);
27
-
28
- _defineProperty(this, "_disposed", false);
29
- }
30
-
13
+ // An array of listeners. One might think a Set would be better for O(1) removal,
14
+ // but splicing a JS array gets pretty close, and copying the array (as is done
15
+ // in emit) is far faster than a Set copy: https://github.com/atom/event-kit/pull/39
16
+ _listeners = [];
17
+ _disposed = false;
31
18
  addListener(listener) {
32
19
  if (this._disposed) {
33
- throw new (_errors().AlreadyDisposedError)('Cannot add a listener since this ValueEmitter has been disposed');
20
+ throw new _errors.AlreadyDisposedError('Cannot add a listener since this ValueEmitter has been disposed');
34
21
  }
22
+ this._listeners.push(listener);
35
23
 
36
- this._listeners.push(listener); // Close over a reference to this emitter in the disposable below, rather
24
+ // Close over a reference to this emitter in the disposable below, rather
37
25
  // than referencing `this` directly. This allows us to set it to null after
38
26
  // slicing out the listener.
39
27
  // This prevents anyone holding onto the disposable after disposal from
40
28
  // unintentionally retaining a reference to this emitter.
41
-
42
-
43
29
  let emitter = this;
44
30
  return {
45
31
  dispose() {
46
32
  if (emitter == null) {
47
33
  return;
48
34
  }
49
-
50
35
  if (emitter._disposed) {
51
36
  emitter = null;
52
37
  return;
53
38
  }
54
-
55
39
  let listeners = emitter._listeners;
56
40
  let listenerIndex = listeners.indexOf(listener);
57
-
58
41
  if (listenerIndex > -1) {
59
42
  listeners.splice(listenerIndex, 1);
60
43
  }
61
-
62
44
  emitter = null;
63
45
  }
64
-
65
46
  };
66
47
  }
67
-
68
48
  emit(value) {
69
49
  if (this._disposed) {
70
- throw new (_errors().AlreadyDisposedError)('Cannot emit since this ValueEmitter has been disposed');
71
- } // Iterate over a copy of listeners. This prevents the following cases:
50
+ throw new _errors.AlreadyDisposedError('Cannot emit since this ValueEmitter has been disposed');
51
+ }
52
+
53
+ // Iterate over a copy of listeners. This prevents the following cases:
72
54
  // * When a listener callback can itself register a new listener and be
73
55
  // emitted as part of this iteration.
74
56
  // * When a listener callback disposes of this emitter mid-emit, preventing
75
57
  // other listeners from receiving the event.
76
-
77
-
78
58
  let listeners = this._listeners.slice();
79
-
80
59
  for (let i = 0; i < listeners.length; i++) {
81
60
  listeners[i](value);
82
61
  }
83
62
  }
84
-
85
63
  dispose() {
86
64
  if (this._disposed) {
87
65
  return;
88
66
  }
89
-
90
67
  this._listeners = [];
91
68
  this._disposed = true;
92
69
  }
93
-
94
70
  }
95
-
96
71
  exports.default = ValueEmitter;
package/lib/errors.js CHANGED
@@ -4,9 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.AlreadyDisposedError = void 0;
7
-
8
7
  class AlreadyDisposedError extends Error {}
9
-
10
8
  exports.AlreadyDisposedError = AlreadyDisposedError;
11
9
  Object.defineProperty(AlreadyDisposedError.prototype, 'name', {
12
10
  value: 'AlreadyDisposedError'
package/lib/index.js CHANGED
@@ -3,53 +3,25 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- Object.defineProperty(exports, "Disposable", {
6
+ Object.defineProperty(exports, "AlreadyDisposedError", {
7
7
  enumerable: true,
8
8
  get: function () {
9
- return _Disposable().default;
9
+ return _errors.AlreadyDisposedError;
10
10
  }
11
11
  });
12
- Object.defineProperty(exports, "ValueEmitter", {
12
+ Object.defineProperty(exports, "Disposable", {
13
13
  enumerable: true,
14
14
  get: function () {
15
- return _ValueEmitter().default;
15
+ return _Disposable.default;
16
16
  }
17
17
  });
18
- Object.defineProperty(exports, "AlreadyDisposedError", {
18
+ Object.defineProperty(exports, "ValueEmitter", {
19
19
  enumerable: true,
20
20
  get: function () {
21
- return _errors().AlreadyDisposedError;
21
+ return _ValueEmitter.default;
22
22
  }
23
23
  });
24
-
25
- function _Disposable() {
26
- const data = _interopRequireDefault(require("./Disposable"));
27
-
28
- _Disposable = function () {
29
- return data;
30
- };
31
-
32
- return data;
33
- }
34
-
35
- function _ValueEmitter() {
36
- const data = _interopRequireDefault(require("./ValueEmitter"));
37
-
38
- _ValueEmitter = function () {
39
- return data;
40
- };
41
-
42
- return data;
43
- }
44
-
45
- function _errors() {
46
- const data = require("./errors");
47
-
48
- _errors = function () {
49
- return data;
50
- };
51
-
52
- return data;
53
- }
54
-
24
+ var _Disposable = _interopRequireDefault(require("./Disposable"));
25
+ var _ValueEmitter = _interopRequireDefault(require("./ValueEmitter"));
26
+ var _errors = require("./errors");
55
27
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@parcel/events",
3
- "version": "2.0.0-beta.3.1",
3
+ "version": "2.0.0-dev.1510+a9bb85adf",
4
4
  "license": "MIT",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -18,5 +18,5 @@
18
18
  "engines": {
19
19
  "node": ">= 12.0.0"
20
20
  },
21
- "gitHead": "daece49d003ba804bbdaa3a7ed3d6aaf446f166d"
21
+ "gitHead": "a9bb85adf8f3b38631e178b3aacaa30c78696e36"
22
22
  }
package/src/types.js CHANGED
@@ -1,7 +1,8 @@
1
1
  // @flow strict-local
2
2
 
3
3
  export interface IDisposable {
4
- // This can return a Promise, as dispose() of all inner disposables are
5
- // awaited in Disposable#dispose()
4
+ /** This can return a Promise, as dispose() of all inner disposables are
5
+ * awaited in Disposable#dispose()
6
+ */
6
7
  dispose(): mixed;
7
8
  }