mirror of
				https://github.com/Frooodle/Stirling-PDF.git
				synced 2025-11-01 01:21:18 +01:00 
			
		
		
		
	Tried to convert server-node to TS, there are still some issues
This commit is contained in:
		
							parent
							
								
									7b702734f3
								
							
						
					
					
						commit
						458e9ed75b
					
				
							
								
								
									
										794
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										794
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@ -1,63 +0,0 @@
 | 
			
		||||
import PDFLib from 'pdf-lib';
 | 
			
		||||
import PDFJS from "pdfjs-dist";
 | 
			
		||||
import jsQR from "jsqr";
 | 
			
		||||
 | 
			
		||||
delete global.crypto; // TODO: I hate to do this, but the new node version forces me to, if anyone finds a better solution, please tell me!
 | 
			
		||||
import * as pdfcpuWraopper from "../shared-operations/wasm/pdfcpu/pdfcpu-wrapper-node.js";
 | 
			
		||||
import OpenCV from 'opencv-wasm';
 | 
			
		||||
 | 
			
		||||
import { extractPages as dependantExtractPages } from "../shared-operations/functions/extractPages.js";
 | 
			
		||||
import { impose as dependantImpose } from '../shared-operations/functions/impose.js';
 | 
			
		||||
import { mergePDFs as dependantMergePDFs } from '../shared-operations/functions/mergePDFs.js';
 | 
			
		||||
import { rotatePages as dependantRotatePages } from '../shared-operations/functions/rotatePages.js';
 | 
			
		||||
import { scaleContent as dependantScaleContent} from '../shared-operations/functions/scaleContent.js';
 | 
			
		||||
import { scalePage as dependantScalePage } from '../shared-operations/functions/scalePage.js';
 | 
			
		||||
import { splitPDF as dependantSplitPDF } from '../shared-operations/functions/splitPDF.js';
 | 
			
		||||
import { editMetadata as dependantEditMetadata } from '../shared-operations/functions/editMetadata.js';
 | 
			
		||||
import { organizePages as dependantOrganizePages } from '../shared-operations/functions/organizePages.js';
 | 
			
		||||
import { removeBlankPages as dependantRemoveBlankPages} from '../shared-operations/functions/removeBlankPages.js';
 | 
			
		||||
import { splitOn as dependantSplitOn } from "../shared-operations/functions/splitOn.js";
 | 
			
		||||
 | 
			
		||||
export async function extractPages(snapshot, pagesToExtractArray) {
 | 
			
		||||
    return dependantExtractPages(snapshot, pagesToExtractArray, PDFLib);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export async function impose(snapshot, nup, format) {
 | 
			
		||||
    return dependantImpose(snapshot, nup, format, pdfcpuWraopper);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export async function mergePDFs(snapshots) {
 | 
			
		||||
    return dependantMergePDFs(snapshots, PDFLib);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export async function rotatePages(snapshot, rotation) {
 | 
			
		||||
    return dependantRotatePages(snapshot, rotation, PDFLib);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export async function scaleContent(snapshot, scaleFactor) {
 | 
			
		||||
    return dependantScaleContent(snapshot, scaleFactor, PDFLib);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export async function scalePage(snapshot, pageSize) {
 | 
			
		||||
    return dependantScalePage(snapshot, pageSize, PDFLib);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export async function splitPDF(snapshot, splitAfterPageArray) {
 | 
			
		||||
    return dependantSplitPDF(snapshot, splitAfterPageArray, PDFLib);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export async function editMetadata(snapshot, metadata) {
 | 
			
		||||
    return dependantEditMetadata(snapshot, metadata, PDFLib);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export async function organizePages(snapshot, operation, customOrderString) {
 | 
			
		||||
    return dependantOrganizePages(snapshot, operation, customOrderString, PDFLib);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export async function removeBlankPages(snapshot, whiteThreashold) {
 | 
			
		||||
    return dependantRemoveBlankPages(snapshot, whiteThreashold, PDFJS, OpenCV, PDFLib);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export async function splitOn(snapshot, type, whiteThreashold) {
 | 
			
		||||
    return dependantSplitOn(snapshot, type, whiteThreashold, PDFJS, OpenCV, PDFLib, jsQR);
 | 
			
		||||
}
 | 
			
		||||
@ -1,13 +1,12 @@
 | 
			
		||||
import express from 'express';
 | 
			
		||||
const app = express();
 | 
			
		||||
const PORT = 8080;
 | 
			
		||||
const PORT = 8000;
 | 
			
		||||
 | 
			
		||||
// server-node: backend api
 | 
			
		||||
import api from './routes/api/index.js';
 | 
			
		||||
import api from './src/routes/api/api-controller';
 | 
			
		||||
app.use("/api/", api);
 | 
			
		||||
 | 
			
		||||
// serve
 | 
			
		||||
app.listen(PORT, function (err) {
 | 
			
		||||
    if (err) console.log(err);
 | 
			
		||||
app.listen(PORT, () => {
 | 
			
		||||
    console.log(`http://localhost:${PORT}`);
 | 
			
		||||
});
 | 
			
		||||
							
								
								
									
										886
									
								
								server-node/package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										886
									
								
								server-node/package-lock.json
									
									
									
										generated
									
									
									
								
							@ -1,886 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "pdfjs",
 | 
			
		||||
  "version": "1.0.0",
 | 
			
		||||
  "lockfileVersion": 1,
 | 
			
		||||
  "requires": true,
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
    "@pdf-lib/standard-fonts": {
 | 
			
		||||
      "version": "1.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@pdf-lib/standard-fonts/-/standard-fonts-1.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-hU30BK9IUN/su0Mn9VdlVKsWBS6GyhVfqjwl1FjZN4TxP6cCw0jP2w7V3Hf5uX7M0AZJ16vey9yE0ny7Sa59ZA==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "pako": "^1.0.6"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "@pdf-lib/upng": {
 | 
			
		||||
      "version": "1.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@pdf-lib/upng/-/upng-1.0.1.tgz",
 | 
			
		||||
      "integrity": "sha512-dQK2FUMQtowVP00mtIksrlZhdFXQZPC+taih1q4CvPZ5vqdxR/LKBaFg0oAfzd1GlHZXXSPdQfzQnt+ViGvEIQ==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "pako": "^1.0.10"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "@wasmer/wasmfs": {
 | 
			
		||||
      "version": "0.12.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@wasmer/wasmfs/-/wasmfs-0.12.0.tgz",
 | 
			
		||||
      "integrity": "sha512-m1ftchyQ1DfSenm5XbbdGIpb6KJHH5z0gODo3IZr6lATkj4WXfX/UeBTZ0aG9YVShBp+kHLdUHvOkqjy6p/GWw==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "memfs": "3.0.4",
 | 
			
		||||
        "pako": "^1.0.11",
 | 
			
		||||
        "tar-stream": "^2.1.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "accepts": {
 | 
			
		||||
      "version": "1.3.8",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
 | 
			
		||||
      "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "mime-types": "~2.1.34",
 | 
			
		||||
        "negotiator": "0.6.3"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "archiver": {
 | 
			
		||||
      "version": "6.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/archiver/-/archiver-6.0.1.tgz",
 | 
			
		||||
      "integrity": "sha512-CXGy4poOLBKptiZH//VlWdFuUC1RESbdZjGjILwBuZ73P7WkAUN0htfSfBq/7k6FRFlpu7bg4JOkj1vU9G6jcQ==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "archiver-utils": "^4.0.1",
 | 
			
		||||
        "async": "^3.2.4",
 | 
			
		||||
        "buffer-crc32": "^0.2.1",
 | 
			
		||||
        "readable-stream": "^3.6.0",
 | 
			
		||||
        "readdir-glob": "^1.1.2",
 | 
			
		||||
        "tar-stream": "^3.0.0",
 | 
			
		||||
        "zip-stream": "^5.0.1"
 | 
			
		||||
      },
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "tar-stream": {
 | 
			
		||||
          "version": "3.1.6",
 | 
			
		||||
          "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.6.tgz",
 | 
			
		||||
          "integrity": "sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==",
 | 
			
		||||
          "requires": {
 | 
			
		||||
            "b4a": "^1.6.4",
 | 
			
		||||
            "fast-fifo": "^1.2.0",
 | 
			
		||||
            "streamx": "^2.15.0"
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "archiver-utils": {
 | 
			
		||||
      "version": "4.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-4.0.1.tgz",
 | 
			
		||||
      "integrity": "sha512-Q4Q99idbvzmgCTEAAhi32BkOyq8iVI5EwdO0PmBDSGIzzjYNdcFn7Q7k3OzbLy4kLUPXfJtG6fO2RjftXbobBg==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "glob": "^8.0.0",
 | 
			
		||||
        "graceful-fs": "^4.2.0",
 | 
			
		||||
        "lazystream": "^1.0.0",
 | 
			
		||||
        "lodash": "^4.17.15",
 | 
			
		||||
        "normalize-path": "^3.0.0",
 | 
			
		||||
        "readable-stream": "^3.6.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "array-flatten": {
 | 
			
		||||
      "version": "1.1.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
 | 
			
		||||
      "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
 | 
			
		||||
    },
 | 
			
		||||
    "async": {
 | 
			
		||||
      "version": "3.2.4",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz",
 | 
			
		||||
      "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ=="
 | 
			
		||||
    },
 | 
			
		||||
    "b4a": {
 | 
			
		||||
      "version": "1.6.4",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz",
 | 
			
		||||
      "integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw=="
 | 
			
		||||
    },
 | 
			
		||||
    "balanced-match": {
 | 
			
		||||
      "version": "1.0.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
 | 
			
		||||
      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
 | 
			
		||||
    },
 | 
			
		||||
    "base64-js": {
 | 
			
		||||
      "version": "1.5.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
 | 
			
		||||
      "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
 | 
			
		||||
    },
 | 
			
		||||
    "bl": {
 | 
			
		||||
      "version": "4.1.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
 | 
			
		||||
      "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "buffer": "^5.5.0",
 | 
			
		||||
        "inherits": "^2.0.4",
 | 
			
		||||
        "readable-stream": "^3.4.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "body-parser": {
 | 
			
		||||
      "version": "1.20.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz",
 | 
			
		||||
      "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "bytes": "3.1.2",
 | 
			
		||||
        "content-type": "~1.0.4",
 | 
			
		||||
        "debug": "2.6.9",
 | 
			
		||||
        "depd": "2.0.0",
 | 
			
		||||
        "destroy": "1.2.0",
 | 
			
		||||
        "http-errors": "2.0.0",
 | 
			
		||||
        "iconv-lite": "0.4.24",
 | 
			
		||||
        "on-finished": "2.4.1",
 | 
			
		||||
        "qs": "6.11.0",
 | 
			
		||||
        "raw-body": "2.5.1",
 | 
			
		||||
        "type-is": "~1.6.18",
 | 
			
		||||
        "unpipe": "1.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "brace-expansion": {
 | 
			
		||||
      "version": "2.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
 | 
			
		||||
      "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "balanced-match": "^1.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "buffer": {
 | 
			
		||||
      "version": "5.7.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
 | 
			
		||||
      "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "base64-js": "^1.3.1",
 | 
			
		||||
        "ieee754": "^1.1.13"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "buffer-crc32": {
 | 
			
		||||
      "version": "0.2.13",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
 | 
			
		||||
      "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ=="
 | 
			
		||||
    },
 | 
			
		||||
    "busboy": {
 | 
			
		||||
      "version": "1.6.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz",
 | 
			
		||||
      "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "streamsearch": "^1.1.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "bytes": {
 | 
			
		||||
      "version": "3.1.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
 | 
			
		||||
      "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="
 | 
			
		||||
    },
 | 
			
		||||
    "call-bind": {
 | 
			
		||||
      "version": "1.0.5",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz",
 | 
			
		||||
      "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "function-bind": "^1.1.2",
 | 
			
		||||
        "get-intrinsic": "^1.2.1",
 | 
			
		||||
        "set-function-length": "^1.1.1"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "compress-commons": {
 | 
			
		||||
      "version": "5.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-5.0.1.tgz",
 | 
			
		||||
      "integrity": "sha512-MPh//1cERdLtqwO3pOFLeXtpuai0Y2WCd5AhtKxznqM7WtaMYaOEMSgn45d9D10sIHSfIKE603HlOp8OPGrvag==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "crc-32": "^1.2.0",
 | 
			
		||||
        "crc32-stream": "^5.0.0",
 | 
			
		||||
        "normalize-path": "^3.0.0",
 | 
			
		||||
        "readable-stream": "^3.6.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "content-disposition": {
 | 
			
		||||
      "version": "0.5.4",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
 | 
			
		||||
      "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "safe-buffer": "5.2.1"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "content-type": {
 | 
			
		||||
      "version": "1.0.5",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
 | 
			
		||||
      "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA=="
 | 
			
		||||
    },
 | 
			
		||||
    "cookie": {
 | 
			
		||||
      "version": "0.5.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
 | 
			
		||||
      "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw=="
 | 
			
		||||
    },
 | 
			
		||||
    "cookie-signature": {
 | 
			
		||||
      "version": "1.0.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
 | 
			
		||||
      "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
 | 
			
		||||
    },
 | 
			
		||||
    "core-util-is": {
 | 
			
		||||
      "version": "1.0.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
 | 
			
		||||
      "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
 | 
			
		||||
    },
 | 
			
		||||
    "crc-32": {
 | 
			
		||||
      "version": "1.2.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz",
 | 
			
		||||
      "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ=="
 | 
			
		||||
    },
 | 
			
		||||
    "crc32-stream": {
 | 
			
		||||
      "version": "5.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-5.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-B0EPa1UK+qnpBZpG+7FgPCu0J2ETLpXq09o9BkLkEAhdB6Z61Qo4pJ3JYu0c+Qi+/SAL7QThqnzS06pmSSyZaw==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "crc-32": "^1.2.0",
 | 
			
		||||
        "readable-stream": "^3.4.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "debug": {
 | 
			
		||||
      "version": "2.6.9",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
 | 
			
		||||
      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "ms": "2.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "define-data-property": {
 | 
			
		||||
      "version": "1.1.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz",
 | 
			
		||||
      "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "get-intrinsic": "^1.2.1",
 | 
			
		||||
        "gopd": "^1.0.1",
 | 
			
		||||
        "has-property-descriptors": "^1.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "depd": {
 | 
			
		||||
      "version": "2.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="
 | 
			
		||||
    },
 | 
			
		||||
    "destroy": {
 | 
			
		||||
      "version": "1.2.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
 | 
			
		||||
      "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg=="
 | 
			
		||||
    },
 | 
			
		||||
    "ee-first": {
 | 
			
		||||
      "version": "1.1.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
 | 
			
		||||
      "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
 | 
			
		||||
    },
 | 
			
		||||
    "encodeurl": {
 | 
			
		||||
      "version": "1.0.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
 | 
			
		||||
      "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w=="
 | 
			
		||||
    },
 | 
			
		||||
    "end-of-stream": {
 | 
			
		||||
      "version": "1.4.4",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
 | 
			
		||||
      "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "once": "^1.4.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "escape-html": {
 | 
			
		||||
      "version": "1.0.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
 | 
			
		||||
      "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
 | 
			
		||||
    },
 | 
			
		||||
    "etag": {
 | 
			
		||||
      "version": "1.8.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
 | 
			
		||||
      "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg=="
 | 
			
		||||
    },
 | 
			
		||||
    "express": {
 | 
			
		||||
      "version": "4.18.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
 | 
			
		||||
      "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "accepts": "~1.3.8",
 | 
			
		||||
        "array-flatten": "1.1.1",
 | 
			
		||||
        "body-parser": "1.20.1",
 | 
			
		||||
        "content-disposition": "0.5.4",
 | 
			
		||||
        "content-type": "~1.0.4",
 | 
			
		||||
        "cookie": "0.5.0",
 | 
			
		||||
        "cookie-signature": "1.0.6",
 | 
			
		||||
        "debug": "2.6.9",
 | 
			
		||||
        "depd": "2.0.0",
 | 
			
		||||
        "encodeurl": "~1.0.2",
 | 
			
		||||
        "escape-html": "~1.0.3",
 | 
			
		||||
        "etag": "~1.8.1",
 | 
			
		||||
        "finalhandler": "1.2.0",
 | 
			
		||||
        "fresh": "0.5.2",
 | 
			
		||||
        "http-errors": "2.0.0",
 | 
			
		||||
        "merge-descriptors": "1.0.1",
 | 
			
		||||
        "methods": "~1.1.2",
 | 
			
		||||
        "on-finished": "2.4.1",
 | 
			
		||||
        "parseurl": "~1.3.3",
 | 
			
		||||
        "path-to-regexp": "0.1.7",
 | 
			
		||||
        "proxy-addr": "~2.0.7",
 | 
			
		||||
        "qs": "6.11.0",
 | 
			
		||||
        "range-parser": "~1.2.1",
 | 
			
		||||
        "safe-buffer": "5.2.1",
 | 
			
		||||
        "send": "0.18.0",
 | 
			
		||||
        "serve-static": "1.15.0",
 | 
			
		||||
        "setprototypeof": "1.2.0",
 | 
			
		||||
        "statuses": "2.0.1",
 | 
			
		||||
        "type-is": "~1.6.18",
 | 
			
		||||
        "utils-merge": "1.0.1",
 | 
			
		||||
        "vary": "~1.1.2"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "express-fileupload": {
 | 
			
		||||
      "version": "1.4.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/express-fileupload/-/express-fileupload-1.4.1.tgz",
 | 
			
		||||
      "integrity": "sha512-9F6SkbxbEOA9cYOBZ8tnn238jL+bGfacQuUO/JqPWp5t+piUcoDcESvKwAXsQV7IHGxmI5bMj3QxMWOKOIsMCg==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "busboy": "^1.6.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "fast-extend": {
 | 
			
		||||
      "version": "1.0.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/fast-extend/-/fast-extend-1.0.2.tgz",
 | 
			
		||||
      "integrity": "sha512-XXA9RmlPatkFKUzqVZAFth18R4Wo+Xug/S+C7YlYA3xrXwfPlW3dqNwOb4hvQo7wZJ2cNDYhrYuPzVOfHy5/uQ=="
 | 
			
		||||
    },
 | 
			
		||||
    "fast-fifo": {
 | 
			
		||||
      "version": "1.3.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz",
 | 
			
		||||
      "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ=="
 | 
			
		||||
    },
 | 
			
		||||
    "finalhandler": {
 | 
			
		||||
      "version": "1.2.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
 | 
			
		||||
      "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "debug": "2.6.9",
 | 
			
		||||
        "encodeurl": "~1.0.2",
 | 
			
		||||
        "escape-html": "~1.0.3",
 | 
			
		||||
        "on-finished": "2.4.1",
 | 
			
		||||
        "parseurl": "~1.3.3",
 | 
			
		||||
        "statuses": "2.0.1",
 | 
			
		||||
        "unpipe": "~1.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "forwarded": {
 | 
			
		||||
      "version": "0.2.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
 | 
			
		||||
      "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="
 | 
			
		||||
    },
 | 
			
		||||
    "fresh": {
 | 
			
		||||
      "version": "0.5.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
 | 
			
		||||
      "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q=="
 | 
			
		||||
    },
 | 
			
		||||
    "fs-constants": {
 | 
			
		||||
      "version": "1.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="
 | 
			
		||||
    },
 | 
			
		||||
    "fs-monkey": {
 | 
			
		||||
      "version": "0.3.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-0.3.3.tgz",
 | 
			
		||||
      "integrity": "sha512-FNUvuTAJ3CqCQb5ELn+qCbGR/Zllhf2HtwsdAtBi59s1WeCjKMT81fHcSu7dwIskqGVK+MmOrb7VOBlq3/SItw=="
 | 
			
		||||
    },
 | 
			
		||||
    "fs.realpath": {
 | 
			
		||||
      "version": "1.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
 | 
			
		||||
    },
 | 
			
		||||
    "function-bind": {
 | 
			
		||||
      "version": "1.1.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
 | 
			
		||||
      "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="
 | 
			
		||||
    },
 | 
			
		||||
    "get-intrinsic": {
 | 
			
		||||
      "version": "1.2.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz",
 | 
			
		||||
      "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "function-bind": "^1.1.2",
 | 
			
		||||
        "has-proto": "^1.0.1",
 | 
			
		||||
        "has-symbols": "^1.0.3",
 | 
			
		||||
        "hasown": "^2.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "glob": {
 | 
			
		||||
      "version": "8.1.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
 | 
			
		||||
      "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "fs.realpath": "^1.0.0",
 | 
			
		||||
        "inflight": "^1.0.4",
 | 
			
		||||
        "inherits": "2",
 | 
			
		||||
        "minimatch": "^5.0.1",
 | 
			
		||||
        "once": "^1.3.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "gopd": {
 | 
			
		||||
      "version": "1.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
 | 
			
		||||
      "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "get-intrinsic": "^1.1.3"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "graceful-fs": {
 | 
			
		||||
      "version": "4.2.11",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
 | 
			
		||||
      "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
 | 
			
		||||
    },
 | 
			
		||||
    "has-property-descriptors": {
 | 
			
		||||
      "version": "1.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz",
 | 
			
		||||
      "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "get-intrinsic": "^1.2.2"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "has-proto": {
 | 
			
		||||
      "version": "1.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
 | 
			
		||||
      "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg=="
 | 
			
		||||
    },
 | 
			
		||||
    "has-symbols": {
 | 
			
		||||
      "version": "1.0.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
 | 
			
		||||
      "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A=="
 | 
			
		||||
    },
 | 
			
		||||
    "hasown": {
 | 
			
		||||
      "version": "2.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "function-bind": "^1.1.2"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "http-errors": {
 | 
			
		||||
      "version": "2.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "depd": "2.0.0",
 | 
			
		||||
        "inherits": "2.0.4",
 | 
			
		||||
        "setprototypeof": "1.2.0",
 | 
			
		||||
        "statuses": "2.0.1",
 | 
			
		||||
        "toidentifier": "1.0.1"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "iconv-lite": {
 | 
			
		||||
      "version": "0.4.24",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
 | 
			
		||||
      "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "safer-buffer": ">= 2.1.2 < 3"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "ieee754": {
 | 
			
		||||
      "version": "1.2.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
 | 
			
		||||
      "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="
 | 
			
		||||
    },
 | 
			
		||||
    "inflight": {
 | 
			
		||||
      "version": "1.0.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
 | 
			
		||||
      "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "once": "^1.3.0",
 | 
			
		||||
        "wrappy": "1"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "inherits": {
 | 
			
		||||
      "version": "2.0.4",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
 | 
			
		||||
      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
 | 
			
		||||
    },
 | 
			
		||||
    "ipaddr.js": {
 | 
			
		||||
      "version": "1.9.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
 | 
			
		||||
      "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
 | 
			
		||||
    },
 | 
			
		||||
    "isarray": {
 | 
			
		||||
      "version": "1.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
 | 
			
		||||
    },
 | 
			
		||||
    "lazystream": {
 | 
			
		||||
      "version": "1.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz",
 | 
			
		||||
      "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "readable-stream": "^2.0.5"
 | 
			
		||||
      },
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "readable-stream": {
 | 
			
		||||
          "version": "2.3.8",
 | 
			
		||||
          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
 | 
			
		||||
          "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
 | 
			
		||||
          "requires": {
 | 
			
		||||
            "core-util-is": "~1.0.0",
 | 
			
		||||
            "inherits": "~2.0.3",
 | 
			
		||||
            "isarray": "~1.0.0",
 | 
			
		||||
            "process-nextick-args": "~2.0.0",
 | 
			
		||||
            "safe-buffer": "~5.1.1",
 | 
			
		||||
            "string_decoder": "~1.1.1",
 | 
			
		||||
            "util-deprecate": "~1.0.1"
 | 
			
		||||
          }
 | 
			
		||||
        },
 | 
			
		||||
        "safe-buffer": {
 | 
			
		||||
          "version": "5.1.2",
 | 
			
		||||
          "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
 | 
			
		||||
          "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
 | 
			
		||||
        },
 | 
			
		||||
        "string_decoder": {
 | 
			
		||||
          "version": "1.1.1",
 | 
			
		||||
          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
 | 
			
		||||
          "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
 | 
			
		||||
          "requires": {
 | 
			
		||||
            "safe-buffer": "~5.1.0"
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "lodash": {
 | 
			
		||||
      "version": "4.17.21",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
 | 
			
		||||
      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
 | 
			
		||||
    },
 | 
			
		||||
    "media-typer": {
 | 
			
		||||
      "version": "0.3.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
 | 
			
		||||
      "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ=="
 | 
			
		||||
    },
 | 
			
		||||
    "memfs": {
 | 
			
		||||
      "version": "3.0.4",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.0.4.tgz",
 | 
			
		||||
      "integrity": "sha512-OcZEzwX9E5AoY8SXjuAvw0DbIAYwUzV/I236I8Pqvrlv7sL/Y0E9aRCon05DhaV8pg1b32uxj76RgW0s5xjHBA==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "fast-extend": "1.0.2",
 | 
			
		||||
        "fs-monkey": "0.3.3"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "merge-descriptors": {
 | 
			
		||||
      "version": "1.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
 | 
			
		||||
      "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
 | 
			
		||||
    },
 | 
			
		||||
    "methods": {
 | 
			
		||||
      "version": "1.1.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
 | 
			
		||||
      "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w=="
 | 
			
		||||
    },
 | 
			
		||||
    "mime": {
 | 
			
		||||
      "version": "1.6.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
 | 
			
		||||
      "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
 | 
			
		||||
    },
 | 
			
		||||
    "mime-db": {
 | 
			
		||||
      "version": "1.52.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
 | 
			
		||||
      "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
 | 
			
		||||
    },
 | 
			
		||||
    "mime-types": {
 | 
			
		||||
      "version": "2.1.35",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
 | 
			
		||||
      "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "mime-db": "1.52.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "minimatch": {
 | 
			
		||||
      "version": "5.1.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
 | 
			
		||||
      "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "brace-expansion": "^2.0.1"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "ms": {
 | 
			
		||||
      "version": "2.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
 | 
			
		||||
    },
 | 
			
		||||
    "negotiator": {
 | 
			
		||||
      "version": "0.6.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
 | 
			
		||||
      "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="
 | 
			
		||||
    },
 | 
			
		||||
    "normalize-path": {
 | 
			
		||||
      "version": "3.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="
 | 
			
		||||
    },
 | 
			
		||||
    "object-inspect": {
 | 
			
		||||
      "version": "1.13.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
 | 
			
		||||
      "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ=="
 | 
			
		||||
    },
 | 
			
		||||
    "on-finished": {
 | 
			
		||||
      "version": "2.4.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
 | 
			
		||||
      "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "ee-first": "1.1.1"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "once": {
 | 
			
		||||
      "version": "1.4.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
 | 
			
		||||
      "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "wrappy": "1"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "pako": {
 | 
			
		||||
      "version": "1.0.11",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
 | 
			
		||||
      "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="
 | 
			
		||||
    },
 | 
			
		||||
    "parseurl": {
 | 
			
		||||
      "version": "1.3.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
 | 
			
		||||
      "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
 | 
			
		||||
    },
 | 
			
		||||
    "path-to-regexp": {
 | 
			
		||||
      "version": "0.1.7",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
 | 
			
		||||
      "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
 | 
			
		||||
    },
 | 
			
		||||
    "pdf-lib": {
 | 
			
		||||
      "version": "1.17.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/pdf-lib/-/pdf-lib-1.17.1.tgz",
 | 
			
		||||
      "integrity": "sha512-V/mpyJAoTsN4cnP31vc0wfNA1+p20evqqnap0KLoRUN0Yk/p3wN52DOEsL4oBFcLdb76hlpKPtzJIgo67j/XLw==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "@pdf-lib/standard-fonts": "^1.0.0",
 | 
			
		||||
        "@pdf-lib/upng": "^1.0.1",
 | 
			
		||||
        "pako": "^1.0.11",
 | 
			
		||||
        "tslib": "^1.11.1"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "process-nextick-args": {
 | 
			
		||||
      "version": "2.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
 | 
			
		||||
      "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
 | 
			
		||||
    },
 | 
			
		||||
    "proxy-addr": {
 | 
			
		||||
      "version": "2.0.7",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
 | 
			
		||||
      "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "forwarded": "0.2.0",
 | 
			
		||||
        "ipaddr.js": "1.9.1"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "qs": {
 | 
			
		||||
      "version": "6.11.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
 | 
			
		||||
      "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "side-channel": "^1.0.4"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "queue-tick": {
 | 
			
		||||
      "version": "1.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz",
 | 
			
		||||
      "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag=="
 | 
			
		||||
    },
 | 
			
		||||
    "range-parser": {
 | 
			
		||||
      "version": "1.2.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
 | 
			
		||||
      "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
 | 
			
		||||
    },
 | 
			
		||||
    "raw-body": {
 | 
			
		||||
      "version": "2.5.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
 | 
			
		||||
      "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "bytes": "3.1.2",
 | 
			
		||||
        "http-errors": "2.0.0",
 | 
			
		||||
        "iconv-lite": "0.4.24",
 | 
			
		||||
        "unpipe": "1.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "readable-stream": {
 | 
			
		||||
      "version": "3.6.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
 | 
			
		||||
      "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "inherits": "^2.0.3",
 | 
			
		||||
        "string_decoder": "^1.1.1",
 | 
			
		||||
        "util-deprecate": "^1.0.1"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "readdir-glob": {
 | 
			
		||||
      "version": "1.1.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz",
 | 
			
		||||
      "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "minimatch": "^5.1.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "safe-buffer": {
 | 
			
		||||
      "version": "5.2.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
 | 
			
		||||
      "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
 | 
			
		||||
    },
 | 
			
		||||
    "safer-buffer": {
 | 
			
		||||
      "version": "2.1.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
 | 
			
		||||
      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
 | 
			
		||||
    },
 | 
			
		||||
    "send": {
 | 
			
		||||
      "version": "0.18.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
 | 
			
		||||
      "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "debug": "2.6.9",
 | 
			
		||||
        "depd": "2.0.0",
 | 
			
		||||
        "destroy": "1.2.0",
 | 
			
		||||
        "encodeurl": "~1.0.2",
 | 
			
		||||
        "escape-html": "~1.0.3",
 | 
			
		||||
        "etag": "~1.8.1",
 | 
			
		||||
        "fresh": "0.5.2",
 | 
			
		||||
        "http-errors": "2.0.0",
 | 
			
		||||
        "mime": "1.6.0",
 | 
			
		||||
        "ms": "2.1.3",
 | 
			
		||||
        "on-finished": "2.4.1",
 | 
			
		||||
        "range-parser": "~1.2.1",
 | 
			
		||||
        "statuses": "2.0.1"
 | 
			
		||||
      },
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "ms": {
 | 
			
		||||
          "version": "2.1.3",
 | 
			
		||||
          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
 | 
			
		||||
          "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "serve-static": {
 | 
			
		||||
      "version": "1.15.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
 | 
			
		||||
      "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "encodeurl": "~1.0.2",
 | 
			
		||||
        "escape-html": "~1.0.3",
 | 
			
		||||
        "parseurl": "~1.3.3",
 | 
			
		||||
        "send": "0.18.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "set-function-length": {
 | 
			
		||||
      "version": "1.1.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz",
 | 
			
		||||
      "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "define-data-property": "^1.1.1",
 | 
			
		||||
        "get-intrinsic": "^1.2.1",
 | 
			
		||||
        "gopd": "^1.0.1",
 | 
			
		||||
        "has-property-descriptors": "^1.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "setprototypeof": {
 | 
			
		||||
      "version": "1.2.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
 | 
			
		||||
      "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
 | 
			
		||||
    },
 | 
			
		||||
    "shared-operations": {
 | 
			
		||||
      "version": "file:../shared-operations"
 | 
			
		||||
    },
 | 
			
		||||
    "side-channel": {
 | 
			
		||||
      "version": "1.0.4",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
 | 
			
		||||
      "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "call-bind": "^1.0.0",
 | 
			
		||||
        "get-intrinsic": "^1.0.2",
 | 
			
		||||
        "object-inspect": "^1.9.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "statuses": {
 | 
			
		||||
      "version": "2.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
 | 
			
		||||
      "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="
 | 
			
		||||
    },
 | 
			
		||||
    "streamsearch": {
 | 
			
		||||
      "version": "1.1.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz",
 | 
			
		||||
      "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg=="
 | 
			
		||||
    },
 | 
			
		||||
    "streamx": {
 | 
			
		||||
      "version": "2.15.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.1.tgz",
 | 
			
		||||
      "integrity": "sha512-fQMzy2O/Q47rgwErk/eGeLu/roaFWV0jVsogDmrszM9uIw8L5OA+t+V93MgYlufNptfjmYR1tOMWhei/Eh7TQA==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "fast-fifo": "^1.1.0",
 | 
			
		||||
        "queue-tick": "^1.0.1"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "string_decoder": {
 | 
			
		||||
      "version": "1.3.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
 | 
			
		||||
      "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "safe-buffer": "~5.2.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "tar-stream": {
 | 
			
		||||
      "version": "2.2.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
 | 
			
		||||
      "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "bl": "^4.0.3",
 | 
			
		||||
        "end-of-stream": "^1.4.1",
 | 
			
		||||
        "fs-constants": "^1.0.0",
 | 
			
		||||
        "inherits": "^2.0.3",
 | 
			
		||||
        "readable-stream": "^3.1.1"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "toidentifier": {
 | 
			
		||||
      "version": "1.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
 | 
			
		||||
      "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="
 | 
			
		||||
    },
 | 
			
		||||
    "tslib": {
 | 
			
		||||
      "version": "1.14.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
 | 
			
		||||
      "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
 | 
			
		||||
    },
 | 
			
		||||
    "type-is": {
 | 
			
		||||
      "version": "1.6.18",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
 | 
			
		||||
      "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "media-typer": "0.3.0",
 | 
			
		||||
        "mime-types": "~2.1.24"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "unpipe": {
 | 
			
		||||
      "version": "1.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ=="
 | 
			
		||||
    },
 | 
			
		||||
    "util-deprecate": {
 | 
			
		||||
      "version": "1.0.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
 | 
			
		||||
      "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
 | 
			
		||||
    },
 | 
			
		||||
    "utils-merge": {
 | 
			
		||||
      "version": "1.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
 | 
			
		||||
      "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA=="
 | 
			
		||||
    },
 | 
			
		||||
    "vary": {
 | 
			
		||||
      "version": "1.1.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
 | 
			
		||||
      "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg=="
 | 
			
		||||
    },
 | 
			
		||||
    "wrappy": {
 | 
			
		||||
      "version": "1.0.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
 | 
			
		||||
      "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
 | 
			
		||||
    },
 | 
			
		||||
    "zip-stream": {
 | 
			
		||||
      "version": "5.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-5.0.1.tgz",
 | 
			
		||||
      "integrity": "sha512-UfZ0oa0C8LI58wJ+moL46BDIMgCQbnsb+2PoiJYtonhBsMh2bq1eRBVkvjfVsqbEHd9/EgKPUuL9saSSsec8OA==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "archiver-utils": "^4.0.1",
 | 
			
		||||
        "compress-commons": "^5.0.1",
 | 
			
		||||
        "readable-stream": "^3.6.0"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@ -1,10 +1,14 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "@stirling-pdf/server-node",
 | 
			
		||||
  "version": "0.0.0",
 | 
			
		||||
  "description": "",
 | 
			
		||||
  "main": "index.js",
 | 
			
		||||
  "scripts": {
 | 
			
		||||
    "dev": "node ."
 | 
			
		||||
    "build": "npx tsc",
 | 
			
		||||
    "start": "node dist/index.js",
 | 
			
		||||
    "dev": "nodemon index.ts"
 | 
			
		||||
  },
 | 
			
		||||
  "keywords": [],
 | 
			
		||||
  "author": "",
 | 
			
		||||
  "license": "ISC",
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
@ -15,8 +19,12 @@
 | 
			
		||||
    "express-fileupload": "^1.4.2",
 | 
			
		||||
    "jsqr": "^1.4.0",
 | 
			
		||||
    "multer": "^1.4.5-lts.1",
 | 
			
		||||
    "opencv-wasm": "^4.3.0-10",
 | 
			
		||||
    "nodemon": "^3.0.1",
 | 
			
		||||
    "pdf-lib": "^1.17.1"
 | 
			
		||||
  },
 | 
			
		||||
  "type": "module"
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
    "@types/express": "^4.17.21",
 | 
			
		||||
    "ts-node-dev": "^2.0.0",
 | 
			
		||||
    "typescript": "^5.2.2"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										13
									
								
								server-node/src/declarations/shared-operations.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								server-node/src/declarations/shared-operations.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,13 @@
 | 
			
		||||
 | 
			
		||||
declare module '@stirling-pdf/shared-operations/wasm/pdfcpu/pdfcpu-wrapper-node.js' {
 | 
			
		||||
    export async function oneToOne(wasmArray: any, snapshot: any): Promise<Uint8Array>;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
declare module '@stirling-pdf/shared-operations/workflow/traverseOperations.js' {
 | 
			
		||||
    export type PDF = {
 | 
			
		||||
        originalFileName: string;
 | 
			
		||||
        fileName: string;
 | 
			
		||||
        buffer: Uint8Array;
 | 
			
		||||
    }
 | 
			
		||||
    export async function * traverseOperations(operations: any, input: PDF|PDF[], Operations: any);
 | 
			
		||||
}
 | 
			
		||||
@ -1,11 +1,12 @@
 | 
			
		||||
import express from 'express';
 | 
			
		||||
import workflow from './workflow.js';
 | 
			
		||||
import express, { Request, Response } from 'express';
 | 
			
		||||
import fileUpload from 'express-fileupload';
 | 
			
		||||
 | 
			
		||||
import workflow from './workflow-controller';
 | 
			
		||||
 | 
			
		||||
const router = express.Router();
 | 
			
		||||
router.use(fileUpload());
 | 
			
		||||
 | 
			
		||||
router.get("/", function (req, res, next) {
 | 
			
		||||
router.get("/", (req: Request, res: Response) => {
 | 
			
		||||
    // TODO: Implement root api endpoint
 | 
			
		||||
    res.status(501).json({"Error": "Unfinished Endpoint. This sould probably send some api docs?"});
 | 
			
		||||
});
 | 
			
		||||
@ -1,36 +1,31 @@
 | 
			
		||||
import express from 'express';
 | 
			
		||||
import express, { Request, Response } from 'express';
 | 
			
		||||
import crypto from 'crypto';
 | 
			
		||||
import stream from "stream";
 | 
			
		||||
import Archiver from 'archiver';
 | 
			
		||||
import multer from 'multer'
 | 
			
		||||
const upload = multer();
 | 
			
		||||
 | 
			
		||||
import * as Functions from "../../functions.js";
 | 
			
		||||
import { traverseOperations } from "../../../shared-operations/workflow/traverseOperations.js";
 | 
			
		||||
import Operations from "../../utils/pdf-operations";
 | 
			
		||||
import { traverseOperations } from "@stirling-pdf/shared-operations/workflow/traverseOperations.js";
 | 
			
		||||
 | 
			
		||||
const activeWorkflows = {};
 | 
			
		||||
const activeWorkflows: any = {};
 | 
			
		||||
 | 
			
		||||
const router = express.Router();
 | 
			
		||||
 | 
			
		||||
router.post("/:workflowUuid?", [
 | 
			
		||||
    upload.any(),
 | 
			
		||||
    async (req, res) => {
 | 
			
		||||
    async (req: Request, res: Response) => {
 | 
			
		||||
        if(req.files == null) {
 | 
			
		||||
            res.status(400).json({"error": "No files were uploaded."});
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if(Array.isArray(req.files.files)) {
 | 
			
		||||
            req.files = req.files.files;
 | 
			
		||||
        }
 | 
			
		||||
        else {
 | 
			
		||||
            req.files = [req.files.files];
 | 
			
		||||
        }
 | 
			
		||||
        const filesArr = Array.isArray(req.files.files) ? req.files.files : [req.files.files];
 | 
			
		||||
 | 
			
		||||
        const workflow = JSON.parse(req.body.workflow);
 | 
			
		||||
        // TODO: Validate input further (json may fail or not be a valid workflow)
 | 
			
		||||
 | 
			
		||||
        const inputs = await Promise.all(req.files.map(async file => {
 | 
			
		||||
        const inputs = await Promise.all(filesArr.map(async file => {
 | 
			
		||||
            return {
 | 
			
		||||
                originalFileName: file.name.replace(/\.[^/.]+$/, ""),
 | 
			
		||||
                fileName: file.name.replace(/\.[^/.]+$/, ""),
 | 
			
		||||
@ -42,7 +37,7 @@ router.post("/:workflowUuid?", [
 | 
			
		||||
        if(req.body.async === "false") {
 | 
			
		||||
            console.log("Don't do async");
 | 
			
		||||
 | 
			
		||||
            const traverse = traverseOperations(workflow.operations, inputs, Functions);
 | 
			
		||||
            const traverse = traverseOperations(workflow.operations, inputs, Operations);
 | 
			
		||||
 | 
			
		||||
            let pdfResults;
 | 
			
		||||
            let iteration;
 | 
			
		||||
@ -78,12 +73,12 @@ router.post("/:workflowUuid?", [
 | 
			
		||||
            res.status(200).json({
 | 
			
		||||
                "workflowID": workflowID,
 | 
			
		||||
                "data-recieved": {
 | 
			
		||||
                    "fileCount": req.files.length,
 | 
			
		||||
                    "fileCount": filesArr.length,
 | 
			
		||||
                    "workflow": workflow
 | 
			
		||||
                }
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
            const traverse = traverseOperations(workflow.operations, inputs, Functions);
 | 
			
		||||
            const traverse = traverseOperations(workflow.operations, inputs, Operations);
 | 
			
		||||
 | 
			
		||||
            let pdfResults;
 | 
			
		||||
            let iteration;
 | 
			
		||||
@ -107,7 +102,7 @@ router.post("/:workflowUuid?", [
 | 
			
		||||
    }
 | 
			
		||||
]);
 | 
			
		||||
 | 
			
		||||
router.get("/progress/:workflowUuid", (req, res, nex) => {
 | 
			
		||||
router.get("/progress/:workflowUuid", (req: Request, res: Response) => {
 | 
			
		||||
    if(!req.params.workflowUuid) {
 | 
			
		||||
        res.status(400).json({"error": "No workflowUuid weres provided."});
 | 
			
		||||
        return;
 | 
			
		||||
@ -122,7 +117,7 @@ router.get("/progress/:workflowUuid", (req, res, nex) => {
 | 
			
		||||
    res.status(200).json({ createdAt: workflow.createdAt, finished: workflow.finished });
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
router.get("/progress-stream/:workflowUuid", (req, res, nex) => {
 | 
			
		||||
router.get("/progress-stream/:workflowUuid", (req: Request, res: Response) => {
 | 
			
		||||
    if(!req.params.workflowUuid) {
 | 
			
		||||
        res.status(400).json({"error": "No workflowUuid weres provided."});
 | 
			
		||||
        return;
 | 
			
		||||
@ -150,7 +145,7 @@ router.get("/progress-stream/:workflowUuid", (req, res, nex) => {
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
router.get("/result/:workflowUuid", (req, res, nex) => {
 | 
			
		||||
router.get("/result/:workflowUuid", (req: Request, res: Response) => {
 | 
			
		||||
    if(!req.params.workflowUuid) {
 | 
			
		||||
        res.status(400).json({"error": "No workflowUuid weres provided."});
 | 
			
		||||
        return;
 | 
			
		||||
@ -176,7 +171,7 @@ router.get("/result/:workflowUuid", (req, res, nex) => {
 | 
			
		||||
    delete activeWorkflows[req.params.workflowUuid];
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
router.post("/abort/:workflowUuid", (req, res, nex) => {
 | 
			
		||||
router.post("/abort/:workflowUuid", (req: Request, res: Response) => {
 | 
			
		||||
    if(!req.params.workflowUuid) {
 | 
			
		||||
        res.status(400).json({"error": "No workflowUuid weres provided."});
 | 
			
		||||
        return;
 | 
			
		||||
@ -194,7 +189,7 @@ function generateWorkflowID() {
 | 
			
		||||
    return crypto.randomUUID();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function downloadHandler(res, pdfResults) {
 | 
			
		||||
function downloadHandler(res: Response, pdfResults: any) {
 | 
			
		||||
    if(pdfResults.length == 0) {
 | 
			
		||||
        res.status(500).json({"warning": "The workflow had no outputs."});
 | 
			
		||||
    } 
 | 
			
		||||
							
								
								
									
										14
									
								
								server-node/src/utils/pdf-operations.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								server-node/src/utils/pdf-operations.ts
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,14 @@
 | 
			
		||||
 | 
			
		||||
import SharedOperations from "@stirling-pdf/shared-operations";
 | 
			
		||||
 | 
			
		||||
// Import injected libraries here!
 | 
			
		||||
import * as pdfcpuWrapper from "@stirling-pdf/shared-operations/wasm/pdfcpu/pdfcpu-wrapper-node.js";
 | 
			
		||||
 | 
			
		||||
async function impose(snapshot: any, nup: number, format: string) {
 | 
			
		||||
    return SharedOperations.impose(snapshot, nup, format, pdfcpuWrapper);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
    ...SharedOperations,
 | 
			
		||||
    impose,
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										114
									
								
								server-node/tsconfig.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										114
									
								
								server-node/tsconfig.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,114 @@
 | 
			
		||||
{
 | 
			
		||||
  "compilerOptions": {
 | 
			
		||||
    /* Visit https://aka.ms/tsconfig to read more about this file */
 | 
			
		||||
 | 
			
		||||
    /* Projects */
 | 
			
		||||
    // "incremental": true,                              /* Save .tsbuildinfo files to allow for incremental compilation of projects. */
 | 
			
		||||
    // "composite": true,                                /* Enable constraints that allow a TypeScript project to be used with project references. */
 | 
			
		||||
    // "tsBuildInfoFile": "./.tsbuildinfo",              /* Specify the path to .tsbuildinfo incremental compilation file. */
 | 
			
		||||
    // "disableSourceOfProjectReferenceRedirect": true,  /* Disable preferring source files instead of declaration files when referencing composite projects. */
 | 
			
		||||
    // "disableSolutionSearching": true,                 /* Opt a project out of multi-project reference checking when editing. */
 | 
			
		||||
    // "disableReferencedProjectLoad": true,             /* Reduce the number of projects loaded automatically by TypeScript. */
 | 
			
		||||
 | 
			
		||||
    /* Language and Environment */
 | 
			
		||||
    "target": "es2016",                                  /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */
 | 
			
		||||
    // "lib": [],                                        /* Specify a set of bundled library declaration files that describe the target runtime environment. */
 | 
			
		||||
    // "jsx": "preserve",                                /* Specify what JSX code is generated. */
 | 
			
		||||
    // "experimentalDecorators": true,                   /* Enable experimental support for legacy experimental decorators. */
 | 
			
		||||
    // "emitDecoratorMetadata": true,                    /* Emit design-type metadata for decorated declarations in source files. */
 | 
			
		||||
    // "jsxFactory": "",                                 /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */
 | 
			
		||||
    // "jsxFragmentFactory": "",                         /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */
 | 
			
		||||
    // "jsxImportSource": "",                            /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */
 | 
			
		||||
    // "reactNamespace": "",                             /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */
 | 
			
		||||
    // "noLib": true,                                    /* Disable including any library files, including the default lib.d.ts. */
 | 
			
		||||
    // "useDefineForClassFields": true,                  /* Emit ECMAScript-standard-compliant class fields. */
 | 
			
		||||
    // "moduleDetection": "auto",                        /* Control what method is used to detect module-format JS files. */
 | 
			
		||||
 | 
			
		||||
    /* Modules */
 | 
			
		||||
    "module": "commonjs",                                /* Specify what module code is generated. */
 | 
			
		||||
    // "rootDir": "./",                                  /* Specify the root folder within your source files. */
 | 
			
		||||
    // "moduleResolution": "node10",                     /* Specify how TypeScript looks up a file from a given module specifier. */
 | 
			
		||||
    // "baseUrl": "./",                                  /* Specify the base directory to resolve non-relative module names. */
 | 
			
		||||
    // "paths": {},                                      /* Specify a set of entries that re-map imports to additional lookup locations. */
 | 
			
		||||
    // "rootDirs": [],                                   /* Allow multiple folders to be treated as one when resolving modules. */
 | 
			
		||||
    // "typeRoots": [],                                  /* Specify multiple folders that act like './node_modules/@types'. */
 | 
			
		||||
    // "types": [],                                      /* Specify type package names to be included without being referenced in a source file. */
 | 
			
		||||
    // "allowUmdGlobalAccess": true,                     /* Allow accessing UMD globals from modules. */
 | 
			
		||||
    // "moduleSuffixes": [],                             /* List of file name suffixes to search when resolving a module. */
 | 
			
		||||
    // "allowImportingTsExtensions": true,               /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */
 | 
			
		||||
    // "resolvePackageJsonExports": true,                /* Use the package.json 'exports' field when resolving package imports. */
 | 
			
		||||
    // "resolvePackageJsonImports": true,                /* Use the package.json 'imports' field when resolving imports. */
 | 
			
		||||
    // "customConditions": [],                           /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */
 | 
			
		||||
    // "resolveJsonModule": true,                        /* Enable importing .json files. */
 | 
			
		||||
    // "allowArbitraryExtensions": true,                 /* Enable importing files with any extension, provided a declaration file is present. */
 | 
			
		||||
    // "noResolve": true,                                /* Disallow 'import's, 'require's or '<reference>'s from expanding the number of files TypeScript should add to a project. */
 | 
			
		||||
 | 
			
		||||
    /* JavaScript Support */
 | 
			
		||||
    // "allowJs": true,                                  /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */
 | 
			
		||||
    // "checkJs": true,                                  /* Enable error reporting in type-checked JavaScript files. */
 | 
			
		||||
    // "maxNodeModuleJsDepth": 1,                        /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */
 | 
			
		||||
 | 
			
		||||
    /* Emit */
 | 
			
		||||
    // "declaration": true,                              /* Generate .d.ts files from TypeScript and JavaScript files in your project. */
 | 
			
		||||
    // "declarationMap": true,                           /* Create sourcemaps for d.ts files. */
 | 
			
		||||
    // "emitDeclarationOnly": true,                      /* Only output d.ts files and not JavaScript files. */
 | 
			
		||||
    // "sourceMap": true,                                /* Create source map files for emitted JavaScript files. */
 | 
			
		||||
    // "inlineSourceMap": true,                          /* Include sourcemap files inside the emitted JavaScript. */
 | 
			
		||||
    // "outFile": "./",                                  /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */
 | 
			
		||||
    // "outDir": "./",                                   /* Specify an output folder for all emitted files. */
 | 
			
		||||
    // "removeComments": true,                           /* Disable emitting comments. */
 | 
			
		||||
    // "noEmit": true,                                   /* Disable emitting files from a compilation. */
 | 
			
		||||
    // "importHelpers": true,                            /* Allow importing helper functions from tslib once per project, instead of including them per-file. */
 | 
			
		||||
    // "importsNotUsedAsValues": "remove",               /* Specify emit/checking behavior for imports that are only used for types. */
 | 
			
		||||
    // "downlevelIteration": true,                       /* Emit more compliant, but verbose and less performant JavaScript for iteration. */
 | 
			
		||||
    // "sourceRoot": "",                                 /* Specify the root path for debuggers to find the reference source code. */
 | 
			
		||||
    // "mapRoot": "",                                    /* Specify the location where debugger should locate map files instead of generated locations. */
 | 
			
		||||
    // "inlineSources": true,                            /* Include source code in the sourcemaps inside the emitted JavaScript. */
 | 
			
		||||
    // "emitBOM": true,                                  /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */
 | 
			
		||||
    // "newLine": "crlf",                                /* Set the newline character for emitting files. */
 | 
			
		||||
    // "stripInternal": true,                            /* Disable emitting declarations that have '@internal' in their JSDoc comments. */
 | 
			
		||||
    // "noEmitHelpers": true,                            /* Disable generating custom helper functions like '__extends' in compiled output. */
 | 
			
		||||
    // "noEmitOnError": true,                            /* Disable emitting files if any type checking errors are reported. */
 | 
			
		||||
    // "preserveConstEnums": true,                       /* Disable erasing 'const enum' declarations in generated code. */
 | 
			
		||||
    // "declarationDir": "./",                           /* Specify the output directory for generated declaration files. */
 | 
			
		||||
    // "preserveValueImports": true,                     /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */
 | 
			
		||||
 | 
			
		||||
    /* Interop Constraints */
 | 
			
		||||
    // "isolatedModules": true,                          /* Ensure that each file can be safely transpiled without relying on other imports. */
 | 
			
		||||
    // "verbatimModuleSyntax": true,                     /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */
 | 
			
		||||
    // "allowSyntheticDefaultImports": true,             /* Allow 'import x from y' when a module doesn't have a default export. */
 | 
			
		||||
    "esModuleInterop": true,                             /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */
 | 
			
		||||
    // "preserveSymlinks": true,                         /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */
 | 
			
		||||
    "forceConsistentCasingInFileNames": true,            /* Ensure that casing is correct in imports. */
 | 
			
		||||
 | 
			
		||||
    /* Type Checking */
 | 
			
		||||
    "strict": true,                                      /* Enable all strict type-checking options. */
 | 
			
		||||
    // "noImplicitAny": true,                            /* Enable error reporting for expressions and declarations with an implied 'any' type. */
 | 
			
		||||
    // "strictNullChecks": true,                         /* When type checking, take into account 'null' and 'undefined'. */
 | 
			
		||||
    // "strictFunctionTypes": true,                      /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */
 | 
			
		||||
    // "strictBindCallApply": true,                      /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */
 | 
			
		||||
    // "strictPropertyInitialization": true,             /* Check for class properties that are declared but not set in the constructor. */
 | 
			
		||||
    // "noImplicitThis": true,                           /* Enable error reporting when 'this' is given the type 'any'. */
 | 
			
		||||
    // "useUnknownInCatchVariables": true,               /* Default catch clause variables as 'unknown' instead of 'any'. */
 | 
			
		||||
    // "alwaysStrict": true,                             /* Ensure 'use strict' is always emitted. */
 | 
			
		||||
    // "noUnusedLocals": true,                           /* Enable error reporting when local variables aren't read. */
 | 
			
		||||
    // "noUnusedParameters": true,                       /* Raise an error when a function parameter isn't read. */
 | 
			
		||||
    // "exactOptionalPropertyTypes": true,               /* Interpret optional property types as written, rather than adding 'undefined'. */
 | 
			
		||||
    // "noImplicitReturns": true,                        /* Enable error reporting for codepaths that do not explicitly return in a function. */
 | 
			
		||||
    // "noFallthroughCasesInSwitch": true,               /* Enable error reporting for fallthrough cases in switch statements. */
 | 
			
		||||
    // "noUncheckedIndexedAccess": true,                 /* Add 'undefined' to a type when accessed using an index. */
 | 
			
		||||
    // "noImplicitOverride": true,                       /* Ensure overriding members in derived classes are marked with an override modifier. */
 | 
			
		||||
    // "noPropertyAccessFromIndexSignature": true,       /* Enforces using indexed accessors for keys declared using an indexed type. */
 | 
			
		||||
    // "allowUnusedLabels": true,                        /* Disable error reporting for unused labels. */
 | 
			
		||||
    // "allowUnreachableCode": true,                     /* Disable error reporting for unreachable code. */
 | 
			
		||||
 | 
			
		||||
    /* Completeness */
 | 
			
		||||
    // "skipDefaultLibCheck": true,                      /* Skip type checking .d.ts files that are included with TypeScript. */
 | 
			
		||||
    "skipLibCheck": true,                                /* Skip type checking all .d.ts files. */
 | 
			
		||||
    "outDir": "./dist"
 | 
			
		||||
  },
 | 
			
		||||
  "include": [
 | 
			
		||||
    "src",
 | 
			
		||||
    "declarations/*.d.ts"
 | 
			
		||||
  ],
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user