@isograph/reference-counted-pointer 0.0.0-main-c88a0561 → 0.0.0-main-f524690b

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@isograph/reference-counted-pointer",
3
- "version": "0.0.0-main-c88a0561",
3
+ "version": "0.0.0-main-f524690b",
4
4
  "description": "Reference counted pointers enable sharing of disposable items.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -14,7 +14,7 @@
14
14
  "coverage": "vitest run --coverage"
15
15
  },
16
16
  "dependencies": {
17
- "@isograph/disposable-types": "0.0.0-main-c88a0561",
17
+ "@isograph/disposable-types": "0.0.0-main-f524690b",
18
18
  "react": "^18.2.0"
19
19
  },
20
20
  "devDependencies": {
@@ -5,7 +5,10 @@ describe('createReferenceCountedPointer', () => {
5
5
  describe('it should not dispose the underlying item until all outstanding pointers are disposed', () => {
6
6
  test('one pointer', () => {
7
7
  const disposeItem = vi.fn();
8
- const [pointer, disposePointer] = createReferenceCountedPointer([1, disposeItem]);
8
+ const [pointer, disposePointer] = createReferenceCountedPointer([
9
+ 1,
10
+ disposeItem,
11
+ ]);
9
12
  expect(disposeItem).not.toHaveBeenCalled();
10
13
  disposePointer();
11
14
  expect(disposeItem).toHaveBeenCalled();
@@ -13,7 +16,10 @@ describe('createReferenceCountedPointer', () => {
13
16
 
14
17
  test('linked list, FIFO', () => {
15
18
  const disposeItem = vi.fn();
16
- const [pointer, disposePointer] = createReferenceCountedPointer([1, disposeItem]);
19
+ const [pointer, disposePointer] = createReferenceCountedPointer([
20
+ 1,
21
+ disposeItem,
22
+ ]);
17
23
  const [pointer2, disposePointer2] = pointer.cloneIfNotDisposed()!;
18
24
  const [pointer3, disposePointer3] = pointer2.cloneIfNotDisposed()!;
19
25
  const [pointer4, disposePointer4] = pointer3.cloneIfNotDisposed()!;
@@ -28,7 +34,10 @@ describe('createReferenceCountedPointer', () => {
28
34
 
29
35
  test('linked list, LIFO', () => {
30
36
  const disposeItem = vi.fn();
31
- const [pointer, disposePointer] = createReferenceCountedPointer([1, disposeItem]);
37
+ const [pointer, disposePointer] = createReferenceCountedPointer([
38
+ 1,
39
+ disposeItem,
40
+ ]);
32
41
  const [pointer2, disposePointer2] = pointer.cloneIfNotDisposed()!;
33
42
  const [pointer3, disposePointer3] = pointer2.cloneIfNotDisposed()!;
34
43
  const [pointer4, disposePointer4] = pointer3.cloneIfNotDisposed()!;
@@ -43,7 +52,10 @@ describe('createReferenceCountedPointer', () => {
43
52
 
44
53
  test('linked list, mixed order', () => {
45
54
  const disposeItem = vi.fn();
46
- const [pointer, disposePointer] = createReferenceCountedPointer([1, disposeItem]);
55
+ const [pointer, disposePointer] = createReferenceCountedPointer([
56
+ 1,
57
+ disposeItem,
58
+ ]);
47
59
  const [pointer2, disposePointer2] = pointer.cloneIfNotDisposed()!;
48
60
  const [pointer3, disposePointer3] = pointer2.cloneIfNotDisposed()!;
49
61
  const [pointer4, disposePointer4] = pointer3.cloneIfNotDisposed()!;
@@ -58,7 +70,10 @@ describe('createReferenceCountedPointer', () => {
58
70
 
59
71
  test('DAG, from root', () => {
60
72
  const disposeItem = vi.fn();
61
- const [pointer, disposePointer] = createReferenceCountedPointer([1, disposeItem]);
73
+ const [pointer, disposePointer] = createReferenceCountedPointer([
74
+ 1,
75
+ disposeItem,
76
+ ]);
62
77
  const [pointerA, disposePointerA] = pointer.cloneIfNotDisposed()!;
63
78
  const [pointerA_1, disposePointerA_1] = pointerA.cloneIfNotDisposed()!;
64
79
  const [pointerA_2, disposePointerA_2] = pointerA.cloneIfNotDisposed()!;
@@ -79,7 +94,10 @@ describe('createReferenceCountedPointer', () => {
79
94
 
80
95
  test('DAG, from leaves', () => {
81
96
  const disposeItem = vi.fn();
82
- const [pointer, disposePointer] = createReferenceCountedPointer([1, disposeItem]);
97
+ const [pointer, disposePointer] = createReferenceCountedPointer([
98
+ 1,
99
+ disposeItem,
100
+ ]);
83
101
  const [pointerA, disposePointerA] = pointer.cloneIfNotDisposed()!;
84
102
  const [pointerA_1, disposePointerA_1] = pointerA.cloneIfNotDisposed()!;
85
103
  const [pointerA_2, disposePointerA_2] = pointerA.cloneIfNotDisposed()!;
@@ -100,7 +118,10 @@ describe('createReferenceCountedPointer', () => {
100
118
 
101
119
  test('DAG, random', () => {
102
120
  const disposeItem = vi.fn();
103
- const [pointer, disposePointer] = createReferenceCountedPointer([1, disposeItem]);
121
+ const [pointer, disposePointer] = createReferenceCountedPointer([
122
+ 1,
123
+ disposeItem,
124
+ ]);
104
125
  const [pointerA, disposePointerA] = pointer.cloneIfNotDisposed()!;
105
126
  const [pointerA_1, disposePointerA_1] = pointerA.cloneIfNotDisposed()!;
106
127
  const [pointerA_2, disposePointerA_2] = pointerA.cloneIfNotDisposed()!;
@@ -122,7 +143,10 @@ describe('createReferenceCountedPointer', () => {
122
143
 
123
144
  test('it should throw when disposed twice', () => {
124
145
  const disposeItem = vi.fn();
125
- const [pointer, disposePointer] = createReferenceCountedPointer([1, disposeItem]);
146
+ const [pointer, disposePointer] = createReferenceCountedPointer([
147
+ 1,
148
+ disposeItem,
149
+ ]);
126
150
  disposePointer();
127
151
  expect(() => {
128
152
  disposePointer();
@@ -131,14 +155,20 @@ describe('createReferenceCountedPointer', () => {
131
155
 
132
156
  test('it should return null when you attempt to retain a disposed pointer', () => {
133
157
  const disposeItem = vi.fn();
134
- const [pointer, disposePointer] = createReferenceCountedPointer([1, disposeItem]);
158
+ const [pointer, disposePointer] = createReferenceCountedPointer([
159
+ 1,
160
+ disposeItem,
161
+ ]);
135
162
  disposePointer();
136
163
  expect(pointer.cloneIfNotDisposed()).toBe(null);
137
164
  });
138
165
 
139
166
  test('it should expose the underlying object only when undisposed', () => {
140
167
  const disposeItem = vi.fn();
141
- const [pointer, disposePointer] = createReferenceCountedPointer([1, disposeItem]);
168
+ const [pointer, disposePointer] = createReferenceCountedPointer([
169
+ 1,
170
+ disposeItem,
171
+ ]);
142
172
  expect(pointer.getItemIfNotDisposed()).toBe(1);
143
173
  disposePointer();
144
174
  expect(pointer.getItemIfNotDisposed()).toBe(null);
@@ -146,7 +176,10 @@ describe('createReferenceCountedPointer', () => {
146
176
 
147
177
  test('it should accurately report its disposed status', () => {
148
178
  const disposeItem = vi.fn();
149
- const [pointer, disposePointer] = createReferenceCountedPointer([1, disposeItem]);
179
+ const [pointer, disposePointer] = createReferenceCountedPointer([
180
+ 1,
181
+ disposeItem,
182
+ ]);
150
183
  expect(pointer.isDisposed()).toBe(false);
151
184
  disposePointer();
152
185
  expect(pointer.isDisposed()).toBe(true);
@@ -154,7 +187,10 @@ describe('createReferenceCountedPointer', () => {
154
187
 
155
188
  test('disposable status is unaffected by the presence of other undisposed pointers', () => {
156
189
  const disposeItem = vi.fn();
157
- const [pointer, disposePointer] = createReferenceCountedPointer([1, disposeItem]);
190
+ const [pointer, disposePointer] = createReferenceCountedPointer([
191
+ 1,
192
+ disposeItem,
193
+ ]);
158
194
  const pointer2 = pointer.cloneIfNotDisposed();
159
195
  assert(pointer2 != null);
160
196
  expect(pointer2[0].isDisposed()).toBe(false);
@@ -83,7 +83,9 @@ class RefCounter<T> {
83
83
  let disposed = false;
84
84
  const dispose = () => {
85
85
  if (disposed) {
86
- throw new Error('Do not dispose an already-disposed ActiveReference.');
86
+ throw new Error(
87
+ 'Do not dispose an already-disposed ActiveReference.',
88
+ );
87
89
  }
88
90
  disposed = true;
89
91
  if (activeReference.__original === null) {