12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- // @ts-check
- "use strict";
- /** @typedef {import("./GraphQLUpload.js")} GraphQLUpload */
- /** @typedef {import("./processRequest.js")} processRequest */
- /**
- * A file expected to be uploaded as it was declared in the `map` field of a
- * [GraphQL multipart request](https://github.com/jaydenseric/graphql-multipart-request-spec).
- * The {@linkcode processRequest} function places references to an instance of
- * this class wherever the file is expected in the GraphQL operation. The scalar
- * {@linkcode GraphQLUpload} derives it’s value from {@linkcode Upload.promise}.
- */
- class Upload {
- constructor() {
- /**
- * Promise that resolves file upload details. This should only be utilized
- * by {@linkcode GraphQLUpload}.
- * @type {Promise<import("./processRequest.js").FileUpload>}
- */
- this.promise = new Promise((resolve, reject) => {
- /**
- * Resolves the upload promise with the file upload details. This should
- * only be utilized by {@linkcode processRequest}.
- * @param {import("./processRequest.js").FileUpload} file File upload
- * details.
- */
- this.resolve = (file) => {
- /**
- * The file upload details, available when the
- * {@linkcode Upload.promise} resolves. This should only be utilized by
- * {@linkcode processRequest}.
- * @type {import("./processRequest.js").FileUpload | undefined}
- */
- this.file = file;
- resolve(file);
- };
- /**
- * Rejects the upload promise with an error. This should only be
- * utilized by {@linkcode processRequest}.
- * @param {Error} error Error instance.
- */
- this.reject = reject;
- });
- // Prevent errors crashing Node.js, see:
- // https://github.com/nodejs/node/issues/20392
- this.promise.catch(() => {});
- }
- }
- module.exports = Upload;
|