isotropic-timeout 0.12.0 → 0.13.1
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/README.md +211 -2
- package/lib/timeout.js +2 -2
- package/package.json +15 -17
package/README.md
CHANGED
|
@@ -1,6 +1,215 @@
|
|
|
1
1
|
# isotropic-timeout
|
|
2
|
-
Limit the amount of time a callback function will wait to be called.
|
|
3
2
|
|
|
3
|
+
[](https://www.npmjs.com/package/isotropic-timeout)
|
|
4
|
+
[](https://github.com/ibi-group/isotropic-timeout/blob/main/LICENSE)
|
|
4
5
|

|
|
5
6
|

|
|
6
|
-
|
|
7
|
+
|
|
8
|
+
A utility that limits the amount of time a callback function will wait to be called or a promise will wait to be resolved/rejected.
|
|
9
|
+
|
|
10
|
+
## Why Use This?
|
|
11
|
+
|
|
12
|
+
- **Prevent Indefinite Waiting**: Set maximum wait times for asynchronous operations
|
|
13
|
+
- **Dual API Support**: Works with both callbacks and promises
|
|
14
|
+
- **Error Handling**: Provides standardized timeout errors
|
|
15
|
+
- **Late Response Handling**: Option to handle responses that arrive after timeout
|
|
16
|
+
- **Simplified Syntax**: Clean, concise API for common timeout patterns
|
|
17
|
+
- **Zero Dependencies**: Lightweight implementation with minimal external requirements
|
|
18
|
+
|
|
19
|
+
## Installation
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
npm install isotropic-timeout
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Usage
|
|
26
|
+
|
|
27
|
+
### With Callback Functions
|
|
28
|
+
|
|
29
|
+
```javascript
|
|
30
|
+
import _timeout from 'isotropic-timeout';
|
|
31
|
+
|
|
32
|
+
{
|
|
33
|
+
// Create a time-limited callback function
|
|
34
|
+
const timeLimitedCallback = _timeout(
|
|
35
|
+
5000, // Timeout in milliseconds
|
|
36
|
+
(error, result) => { // Main callback
|
|
37
|
+
if (error) {
|
|
38
|
+
console.error('Operation failed or timed out:', error);
|
|
39
|
+
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
console.log('Operation succeeded:', result);
|
|
44
|
+
},
|
|
45
|
+
(error, result) => { // Optional late callback (called if response arrives after timeout)
|
|
46
|
+
console.log('Late response received:', error || result);
|
|
47
|
+
}
|
|
48
|
+
);
|
|
49
|
+
|
|
50
|
+
// Pass the time-limited callback to an async operation
|
|
51
|
+
someAsyncOperation(timeLimitedCallback);
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### With Promises
|
|
56
|
+
|
|
57
|
+
```javascript
|
|
58
|
+
import _timeout from 'isotropic-timeout';
|
|
59
|
+
|
|
60
|
+
// Wrap a promise with a timeout
|
|
61
|
+
const _fetchWithTimeout = async url {
|
|
62
|
+
try {
|
|
63
|
+
const response = await timeout(
|
|
64
|
+
5000, // Timeout in milliseconds
|
|
65
|
+
fetch(url), // Promise to wrap
|
|
66
|
+
(error, result) => { // Optional late callback
|
|
67
|
+
console.log('Late response:', error || result);
|
|
68
|
+
}
|
|
69
|
+
);
|
|
70
|
+
|
|
71
|
+
return response.json();
|
|
72
|
+
} catch (error) {
|
|
73
|
+
if (error.name === 'TimeoutError') {
|
|
74
|
+
console.error('Request timed out');
|
|
75
|
+
} else {
|
|
76
|
+
console.error('Request failed:', error);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
throw error;
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## API
|
|
85
|
+
|
|
86
|
+
### timeout(milliseconds, callbackFunctionOrPromise, lateCallbackFunction)
|
|
87
|
+
|
|
88
|
+
A function that applies a timeout to a callback function or promise.
|
|
89
|
+
|
|
90
|
+
#### Parameters
|
|
91
|
+
|
|
92
|
+
- `milliseconds` (Number): The timeout duration in milliseconds
|
|
93
|
+
- `callbackFunctionOrPromise` (Function|Promise):
|
|
94
|
+
- If a function: The callback to be wrapped with timeout functionality
|
|
95
|
+
- If a promise: The promise to be wrapped with timeout functionality
|
|
96
|
+
- `lateCallbackFunction` (Function, optional): Function to be called if the original operation completes after timeout
|
|
97
|
+
|
|
98
|
+
#### Returns
|
|
99
|
+
|
|
100
|
+
- If `callbackFunctionOrPromise` is a function: Returns a wrapped function that will either call the original callback or trigger a timeout error
|
|
101
|
+
- If `callbackFunctionOrPromise` is a promise: Returns a new promise that will either resolve/reject with the original promise or reject with a timeout error
|
|
102
|
+
|
|
103
|
+
## Examples
|
|
104
|
+
|
|
105
|
+
### Working with Node.js Callbacks
|
|
106
|
+
|
|
107
|
+
```javascript
|
|
108
|
+
import _fs from 'node:fs';
|
|
109
|
+
import _timeout from 'isotropic-timeout';
|
|
110
|
+
|
|
111
|
+
// Create a file read operation with a 2-second timeout
|
|
112
|
+
_fs.readFile(filepath, 'utf8', _timeout(2000, (error, data) => {
|
|
113
|
+
if (error) {
|
|
114
|
+
if (error.name === 'TimeoutError') {
|
|
115
|
+
console.error('File read timed out');
|
|
116
|
+
} else {
|
|
117
|
+
console.error('File read error:', error);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
console.log('File contents:', data);
|
|
124
|
+
}));
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### HTTP Request with Timeout
|
|
128
|
+
|
|
129
|
+
```javascript
|
|
130
|
+
import _https from 'node:https';
|
|
131
|
+
import _timeout from 'isotropic-timeout';
|
|
132
|
+
|
|
133
|
+
const _httpsGet = url => new Promise((resolve, reject) => {
|
|
134
|
+
_https.get(url, response => {
|
|
135
|
+
const chunks = [];
|
|
136
|
+
|
|
137
|
+
response.on('data', chunk => {
|
|
138
|
+
chunks.push(chunk);
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
response.on('end', () => {
|
|
142
|
+
resolve(chunks.join(''));
|
|
143
|
+
});
|
|
144
|
+
}).on('error', reject);
|
|
145
|
+
});
|
|
146
|
+
|
|
147
|
+
// Add a 3-second timeout to the HTTP request
|
|
148
|
+
_timeout(3000, _httpsGet('https://api.example.com/data')).then(data => {
|
|
149
|
+
data = JSON.parse(data);
|
|
150
|
+
|
|
151
|
+
console.log('Data received:', data);
|
|
152
|
+
}).catch(error => {
|
|
153
|
+
if (error.name === 'TimeoutError') {
|
|
154
|
+
console.error('Request timed out after 3 seconds');
|
|
155
|
+
} else {
|
|
156
|
+
console.error('Request failed:', error);
|
|
157
|
+
}
|
|
158
|
+
});
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
### Database Query with Timeout
|
|
162
|
+
|
|
163
|
+
```javascript
|
|
164
|
+
import _createConnection from 'some-db-library';
|
|
165
|
+
import _timeout from 'isotropic-timeout';
|
|
166
|
+
|
|
167
|
+
const _queryWithTimeout = (db, query, params, timeout = 5000) => {
|
|
168
|
+
return _timeout(
|
|
169
|
+
timeout,
|
|
170
|
+
db.query(query, params),
|
|
171
|
+
(error, results) => {
|
|
172
|
+
// Log late responses for debugging
|
|
173
|
+
if (error) {
|
|
174
|
+
console.log(`Query failed after timeout: ${query}`, error);
|
|
175
|
+
} else {
|
|
176
|
+
console.log(`Query succeeded after timeout: ${query} (${results.length} results)`);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
);
|
|
180
|
+
};
|
|
181
|
+
|
|
182
|
+
{
|
|
183
|
+
const db = _createConnection({ /* connection options */ });
|
|
184
|
+
|
|
185
|
+
try {
|
|
186
|
+
const userData = await _queryWithTimeout(db, 'SELECT * FROM users WHERE id = ?', [
|
|
187
|
+
userId
|
|
188
|
+
]);
|
|
189
|
+
} catch (error) {
|
|
190
|
+
if (error.name === 'TimeoutError') {
|
|
191
|
+
console.error('Database query timed out - server might be overloaded');
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
throw error;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
## Error Handling
|
|
200
|
+
|
|
201
|
+
When a timeout occurs, the utility generates a standardized `TimeoutError` (an instance of `isotropic-error`) with:
|
|
202
|
+
|
|
203
|
+
- `details`: Object containing the timeout duration
|
|
204
|
+
- `message`: 'Timeout after X milliseconds'
|
|
205
|
+
- `name`: 'TimeoutError'
|
|
206
|
+
|
|
207
|
+
This makes error handling and identification consistent across your application.
|
|
208
|
+
|
|
209
|
+
## Contributing
|
|
210
|
+
|
|
211
|
+
Please refer to [CONTRIBUTING.md](https://github.com/ibi-group/isotropic-timeout/blob/main/CONTRIBUTING.md) for contribution guidelines.
|
|
212
|
+
|
|
213
|
+
## Issues
|
|
214
|
+
|
|
215
|
+
If you encounter any issues, please file them at https://github.com/ibi-group/isotropic-timeout/issues
|
package/lib/timeout.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
1
|
+
import _Error from"isotropic-error";import _later from"isotropic-later";export default((a,b,c)=>{if("function"==typeof b){const d=_later(a,()=>{b(_Error({details:{milliseconds:a},message:`Timeout after ${a} milliseconds`,name:"TimeoutError"}))});return function(...a){return d.completed?c?Reflect.apply(c,this,a):void 0:(d.cancel(),Reflect.apply(b,this,a))}}return new Promise((d,e)=>{const f=_later(a,()=>{e(_Error({details:{milliseconds:a},message:`Timeout after ${a} milliseconds`,name:"TimeoutError"}))});b.then(a=>{f.completed?c&&c(null,a):(f.cancel(),d(a))},a=>{f.completed?c&&c(a):(f.cancel(),e(a))})})});
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfRXJyb3IiLCJfbGF0ZXIiLCJtaWxsaXNlY29uZHMiLCJjYWxsYmFja0Z1bmN0aW9uT3JQcm9taXNlIiwibGF0ZUNhbGxiYWNrRnVuY3Rpb24iLCJoYW5kbGUiLCJkZXRhaWxzIiwibWVzc2FnZSIsIm5hbWUiLCJhcmdzIiwiY29tcGxldGVkIiwiUmVmbGVjdCIsImFwcGx5IiwiY2FuY2VsIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJ0aGVuIiwidmFsdWUiLCJlcnJvciJdLCJzb3VyY2VzIjpbIi4uL2pzL3RpbWVvdXQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9FcnJvciBmcm9tICdpc290cm9waWMtZXJyb3InO1xuaW1wb3J0IF9sYXRlciBmcm9tICdpc290cm9waWMtbGF0ZXInO1xuXG5leHBvcnQgZGVmYXVsdCAobWlsbGlzZWNvbmRzLCBjYWxsYmFja0Z1bmN0aW9uT3JQcm9taXNlLCBsYXRlQ2FsbGJhY2tGdW5jdGlvbikgPT4ge1xuICAgIGlmICh0eXBlb2YgY2FsbGJhY2tGdW5jdGlvbk9yUHJvbWlzZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjb25zdCBoYW5kbGUgPSBfbGF0ZXIobWlsbGlzZWNvbmRzLCAoKSA9PiB7XG4gICAgICAgICAgICBjYWxsYmFja0Z1bmN0aW9uT3JQcm9taXNlKF9FcnJvcih7XG4gICAgICAgICAgICAgICAgZGV0YWlsczoge1xuICAgICAgICAgICAgICAgICAgICBtaWxsaXNlY29uZHNcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGBUaW1lb3V0IGFmdGVyICR7bWlsbGlzZWNvbmRzfSBtaWxsaXNlY29uZHNgLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdUaW1lb3V0RXJyb3InXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICAgICAgaWYgKCFoYW5kbGUuY29tcGxldGVkKSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlLmNhbmNlbCgpO1xuICAgICAgICAgICAgICAgIHJldHVybiBSZWZsZWN0LmFwcGx5KGNhbGxiYWNrRnVuY3Rpb25PclByb21pc2UsIHRoaXMsIGFyZ3MpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobGF0ZUNhbGxiYWNrRnVuY3Rpb24pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5hcHBseShsYXRlQ2FsbGJhY2tGdW5jdGlvbiwgdGhpcywgYXJncyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgY29uc3QgaGFuZGxlID0gX2xhdGVyKG1pbGxpc2Vjb25kcywgKCkgPT4ge1xuICAgICAgICAgICAgcmVqZWN0KF9FcnJvcih7XG4gICAgICAgICAgICAgICAgZGV0YWlsczoge1xuICAgICAgICAgICAgICAgICAgICBtaWxsaXNlY29uZHNcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGBUaW1lb3V0IGFmdGVyICR7bWlsbGlzZWNvbmRzfSBtaWxsaXNlY29uZHNgLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdUaW1lb3V0RXJyb3InXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNhbGxiYWNrRnVuY3Rpb25PclByb21pc2UudGhlbih2YWx1ZSA9PiB7XG4gICAgICAgICAgICBpZiAoIWhhbmRsZS5jb21wbGV0ZWQpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGUuY2FuY2VsKCk7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSh2YWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGxhdGVDYWxsYmFja0Z1bmN0aW9uKSB7XG4gICAgICAgICAgICAgICAgbGF0ZUNhbGxiYWNrRnVuY3Rpb24obnVsbCwgdmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgICBpZiAoIWhhbmRsZS5jb21wbGV0ZWQpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGUuY2FuY2VsKCk7XG4gICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobGF0ZUNhbGxiYWNrRnVuY3Rpb24pIHtcbiAgICAgICAgICAgICAgICBsYXRlQ2FsbGJhY2tGdW5jdGlvbihlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pO1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTyxDQUFBQSxNQUFNLEtBQU0saUJBQWlCLENBQ3BDLE1BQU8sQ0FBQUMsTUFBTSxLQUFNLGlCQUFpQixDQUVwQyxlQUFlLENBQUNDLENBQVksQ0FBRUMsQ0FBeUIsQ0FBRUMsQ0FBb0IsR0FBSyxDQUM5RSxHQUF5QyxVQUFVLEVBQS9DLE1BQU8sQ0FBQUQsQ0FBd0MsQ0FBRSxDQUNqRCxLQUFNLENBQUFFLENBQU0sQ0FBR0osTUFBTSxDQUFDQyxDQUFZLENBQUUsSUFBTSxDQUN0Q0MsQ0FBeUIsQ0FBQ0gsTUFBTSxDQUFDLENBQzdCTSxPQUFPLENBQUUsQ0FDTEosWUFBWSxDQUFaQSxDQUNKLENBQUMsQ0FDREssT0FBTyxDQUFFLGlCQUFpQkwsQ0FBWSxlQUFlLENBQ3JETSxJQUFJLENBQUUsY0FDVixDQUFDLENBQUMsQ0FDTixDQUFDLENBQUMsQ0FFRixNQUFPLFVBQVUsR0FBR0MsQ0FBSSxDQUFFLE9BQ2pCLENBQUFKLENBQU0sQ0FBQ0ssU0FBUyxDQUtqQk4sQ0FBb0IsQ0FDYk8sT0FBTyxDQUFDQyxLQUFLLENBQUNSLENBQW9CLENBQUUsSUFBSSxDQUFFSyxDQUFJLENBQUMsU0FMdERKLENBQU0sQ0FBQ1EsTUFBTSxDQUFDLENBQUMsQ0FDUkYsT0FBTyxDQUFDQyxLQUFLLENBQUNULENBQXlCLENBQUUsSUFBSSxDQUFFTSxDQUFJLENBQUMsQ0FNbkUsQ0FDSixDQUVBLE1BQU8sSUFBSSxDQUFBSyxPQUFPLENBQUMsQ0FBQ0MsQ0FBTyxDQUFFQyxDQUFNLEdBQUssQ0FDcEMsS0FBTSxDQUFBWCxDQUFNLENBQUdKLE1BQU0sQ0FBQ0MsQ0FBWSxDQUFFLElBQU0sQ0FDdENjLENBQU0sQ0FBQ2hCLE1BQU0sQ0FBQyxDQUNWTSxPQUFPLENBQUUsQ0FDTEosWUFBWSxDQUFaQSxDQUNKLENBQUMsQ0FDREssT0FBTyxDQUFFLGlCQUFpQkwsQ0FBWSxlQUFlLENBQ3JETSxJQUFJLENBQUUsY0FDVixDQUFDLENBQUMsQ0FDTixDQUFDLENBQUMsQ0FFRkwsQ0FBeUIsQ0FBQ2MsSUFBSSxDQUFDQyxDQUFLLEVBQUksQ0FDL0JiLENBQU0sQ0FBQ0ssU0FBUyxDQUdWTixDQUFvQixFQUMzQkEsQ0FBb0IsQ0FBQyxJQUFJLENBQUVjLENBQUssQ0FBQyxFQUhqQ2IsQ0FBTSxDQUFDUSxNQUFNLENBQUMsQ0FBQyxDQUNmRSxDQUFPLENBQUNHLENBQUssQ0FBQyxDQUl0QixDQUFDLENBQUVDLENBQUssRUFBSSxDQUNIZCxDQUFNLENBQUNLLFNBQVMsQ0FHVk4sQ0FBb0IsRUFDM0JBLENBQW9CLENBQUNlLENBQUssQ0FBQyxFQUgzQmQsQ0FBTSxDQUFDUSxNQUFNLENBQUMsQ0FBQyxDQUNmRyxDQUFNLENBQUNHLENBQUssQ0FBQyxDQUlyQixDQUFDLENBQ0wsQ0FBQyxDQUNMLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
|
package/package.json
CHANGED
|
@@ -1,20 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"author": "Steven Olmsted <steven.olmsted@ibigroup.com>",
|
|
3
3
|
"bugs": "https://github.com/ibi-group/isotropic-timeout/issues",
|
|
4
|
-
"contributors": [
|
|
5
|
-
"Duane Sibilly <duane.sibilly@ibigroup.com>"
|
|
6
|
-
],
|
|
7
4
|
"dependencies": {
|
|
8
|
-
"isotropic-error": "~0.
|
|
9
|
-
"isotropic-later": "~0.
|
|
5
|
+
"isotropic-error": "~0.13.1",
|
|
6
|
+
"isotropic-later": "~0.13.1"
|
|
10
7
|
},
|
|
11
8
|
"description": "Limit the amount of time a callback function will wait to be called",
|
|
12
9
|
"devDependencies": {
|
|
13
|
-
"
|
|
10
|
+
"eslint": "~9.8.0",
|
|
11
|
+
"isotropic-dev-dependencies": "~0.3.1"
|
|
14
12
|
},
|
|
15
13
|
"engines": {
|
|
16
|
-
"node": "^
|
|
17
|
-
"npm": "^
|
|
14
|
+
"node": "^22.5.1",
|
|
15
|
+
"npm": "^10.8.2"
|
|
18
16
|
},
|
|
19
17
|
"files": [
|
|
20
18
|
"lib"
|
|
@@ -26,17 +24,17 @@
|
|
|
26
24
|
"license": "BSD-3-Clause",
|
|
27
25
|
"main": "lib/timeout.js",
|
|
28
26
|
"name": "isotropic-timeout",
|
|
29
|
-
"repository": "ibi-group/isotropic-timeout",
|
|
27
|
+
"repository": "github:ibi-group/isotropic-timeout",
|
|
30
28
|
"scripts": {
|
|
31
|
-
"build": "cross-env BABEL_ENV=node-minify babel --config-file ./node_modules/isotropic-dev-dependencies/config/babel.json js -d lib",
|
|
32
|
-
"lint": "eslint
|
|
33
|
-
"
|
|
34
|
-
"
|
|
35
|
-
"posttest": "[ -z \"$npm_config_coverage\" ] || nyc --nycrc-path ./node_modules/isotropic-dev-dependencies/config/nyc.json check-coverage",
|
|
29
|
+
"build": "cross-env BABEL_ENV=node-minify babel --config-file ./node_modules/isotropic-dev-dependencies/config/babel.json js -d lib --delete-dir-on-start",
|
|
30
|
+
"lint": "eslint js test",
|
|
31
|
+
"postprepare": "node ./node_modules/isotropic-dev-dependencies/lib/install-git-hooks.js",
|
|
32
|
+
"posttest": "[ -z \"$npm_config_coverage\" ] || c8 -c ./node_modules/isotropic-dev-dependencies/config/c8.json check-coverage",
|
|
36
33
|
"prepare": "npm run build",
|
|
37
|
-
"prepublishOnly": "npm test --coverage
|
|
34
|
+
"prepublishOnly": "npm test --coverage",
|
|
38
35
|
"pretest": "npm run lint",
|
|
39
|
-
"test": "cross-env BABEL_ENV=test
|
|
36
|
+
"test": "cross-env BABEL_ENV=test c8 -c ./node_modules/isotropic-dev-dependencies/config/c8.json mocha --import=isotropic-dev-dependencies/lib/register-babel-loader.js"
|
|
40
37
|
},
|
|
41
|
-
"
|
|
38
|
+
"type": "module",
|
|
39
|
+
"version": "0.13.1"
|
|
42
40
|
}
|