Download node_modules/execa/lib/promise.js from Snapkitty/sovereign-apollo: direct link, hf CLI and curl.
- Browser
- Download file 1.15 kB
-
https://huggingface.co/Snapkitty/sovereign-apollo/resolve/main/node_modules/execa/lib/promise.js
- Command line
-
hf download hf://Snapkitty/sovereign-apollo/node_modules/execa/lib/promise.js
-
curl -L -o promise.js https://huggingface.co/Snapkitty/sovereign-apollo/resolve/main/node_modules/execa/lib/promise.js
1.15 kB
| // eslint-disable-next-line unicorn/prefer-top-level-await | |
| const nativePromisePrototype = (async () => {})().constructor.prototype; | |
| const descriptors = ['then', 'catch', 'finally'].map(property => [ | |
| property, | |
| Reflect.getOwnPropertyDescriptor(nativePromisePrototype, property), | |
| ]); | |
| // The return value is a mixin of `childProcess` and `Promise` | |
| export const mergePromise = (spawned, promise) => { | |
| for (const [property, descriptor] of descriptors) { | |
| // Starting the main `promise` is deferred to avoid consuming streams | |
| const value = typeof promise === 'function' | |
| ? (...args) => Reflect.apply(descriptor.value, promise(), args) | |
| : descriptor.value.bind(promise); | |
| Reflect.defineProperty(spawned, property, {...descriptor, value}); | |
| } | |
| }; | |
| // Use promises instead of `child_process` events | |
| export const getSpawnedPromise = spawned => new Promise((resolve, reject) => { | |
| spawned.on('exit', (exitCode, signal) => { | |
| resolve({exitCode, signal}); | |
| }); | |
| spawned.on('error', error => { | |
| reject(error); | |
| }); | |
| if (spawned.stdin) { | |
| spawned.stdin.on('error', error => { | |
| reject(error); | |
| }); | |
| } | |
| }); | |