From 12fd5364ae5c3694b9ab440dc10411d1eb4024a2 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Thu, 12 Dec 2024 18:49:58 +0200 Subject: [PATCH] fix(ci): remove mongodb example --- .vscode/settings.json | 1 - Readme.md | 16 +-- package.json | 5 +- .../express-mongo-server/MongoFileDocument.ts | 6 - src/examples/express-mongo-server/index.ts | 15 --- src/examples/express-mongo-server/logger.ts | 9 -- .../mongoContentProvider.ts | 72 ------------ src/examples/express-mongo-server/utils.ts | 17 --- yarn.lock | 106 ++---------------- 9 files changed, 14 insertions(+), 233 deletions(-) delete mode 100644 src/examples/express-mongo-server/MongoFileDocument.ts delete mode 100644 src/examples/express-mongo-server/index.ts delete mode 100644 src/examples/express-mongo-server/logger.ts delete mode 100644 src/examples/express-mongo-server/mongoContentProvider.ts delete mode 100644 src/examples/express-mongo-server/utils.ts diff --git a/.vscode/settings.json b/.vscode/settings.json index 81c5b18..2cdc8e2 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,5 +1,4 @@ { - "editor.formatOnSave": true, "cSpell.words": ["Gujar", "Sukant", "copyfiles", "sukantgujar"], "eslint.validate": ["javascript", "typescript"] } diff --git a/Readme.md b/Readme.md index 4db23ae..09b76da 100644 --- a/Readme.md +++ b/Readme.md @@ -81,10 +81,9 @@ From the `express-file-server` example: # Examples -There are two examples in the `src/examples` folder: +There one examples in the `src/examples` folder: 1. `express-file-server`: Implements a file based `ContentProvider`. -2. `express-mongo-server`: Implements a mongodb based `ContentProvider`. ## Running the examples: @@ -94,19 +93,6 @@ There are two examples in the `src/examples` folder: yarn copy-assets yarn run:examples:file -2. `express-mongo-server`: - - 1. Run your own Mongo instance first or create one in https://mlab.com. - 2. Setup the connection string in `MongoUrl` environment variable: - - export MongoUrl=mongodb+srv://username:password@mongoserver/dbname?retryWrites=true - - 3. Build and run the example, the server will listen on http://localhost:8080/. - - yarn build:dev - yarn copy-assets - yarn run:examples:file - ## Connecting to the running server: Browse to `https://localhost:8080/files/readme.txt` diff --git a/package.json b/package.json index 0f8af8b..3560f26 100644 --- a/package.json +++ b/package.json @@ -15,8 +15,7 @@ "build:dev": "npx tsc && yarn copy-assets", "build:prod": "yarn clean && cross-env NODE_ENV=production tsc -p ./tsconfig.production.json", "push": "yarn test && yarn build:prod && yarn publish", - "run:examples:file": "node ./dist/examples/express-file-server/index.js", - "run:examples:mongo": "node ./dist/examples/express-mongo-server/index.js" + "run:examples:file": "node ./dist/examples/express-file-server/index.js" }, "bugs": { "email": "sukantgujar@yahoo.com", @@ -32,7 +31,6 @@ "@types/chai": "^4.1.7", "@types/express": "^4.16.1", "@types/mocha": "^5.2.6", - "@types/mongodb": "^3.1.22", "@types/sinon": "^7.0.9", "@typescript-eslint/eslint-plugin": "^1.5.0", "@typescript-eslint/parser": "^1.5.0", @@ -42,7 +40,6 @@ "eslint": "^5.15.3", "express": "^4.16.4", "mocha": "^6.0.2", - "mongodb": "^3.1.13", "nyc": "^17.1.0", "rimraf": "^2.6.3", "sinon": "^7.2.7", diff --git a/src/examples/express-mongo-server/MongoFileDocument.ts b/src/examples/express-mongo-server/MongoFileDocument.ts deleted file mode 100644 index f13e50c..0000000 --- a/src/examples/express-mongo-server/MongoFileDocument.ts +++ /dev/null @@ -1,6 +0,0 @@ -export interface MongoFileDocument { - _id: string; - contentType: string; - filename: string; - size: number; -} diff --git a/src/examples/express-mongo-server/index.ts b/src/examples/express-mongo-server/index.ts deleted file mode 100644 index a27a4e8..0000000 --- a/src/examples/express-mongo-server/index.ts +++ /dev/null @@ -1,15 +0,0 @@ -import express from "express"; -import { createPartialContentHandler } from "../../index"; -import { mongoContentProvider } from "./mongoContentProvider"; -import { logger } from "./logger"; - -const handler = createPartialContentHandler(mongoContentProvider, logger); - -const app = express(); -const port = 8080; - -app.get("/files/:name", handler); - -app.listen(port, () => { - logger.debug("Server started!"); -}); diff --git a/src/examples/express-mongo-server/logger.ts b/src/examples/express-mongo-server/logger.ts deleted file mode 100644 index 5dd53d6..0000000 --- a/src/examples/express-mongo-server/logger.ts +++ /dev/null @@ -1,9 +0,0 @@ -export const logger = { - debug(message: string, extra?: any) { - if (extra) { - console.log(`[debug]: ${message}`, extra); - } else { - console.log(`[debug]: ${message}`); - } - } -}; diff --git a/src/examples/express-mongo-server/mongoContentProvider.ts b/src/examples/express-mongo-server/mongoContentProvider.ts deleted file mode 100644 index e634083..0000000 --- a/src/examples/express-mongo-server/mongoContentProvider.ts +++ /dev/null @@ -1,72 +0,0 @@ -import { Request } from "express"; -import fs from "fs"; -import path from "path"; -import { MongoClient, Db, GridFSBucket } from "mongodb"; -import { Range, ContentDoesNotExistError, ContentProvider } from "../../index"; -import { getFileMeta } from "./utils"; -import { logger } from "./logger"; -import { MongoFileDocument } from "./MongoFileDocument"; - -const connectionString = process.env["MongoUrl"]; - -if (!connectionString) { - throw new Error("MongoUrl env var is not defined!"); -} - -const client = new MongoClient(connectionString, { useNewUrlParser: true }); -let db: Db; -let bucket: GridFSBucket; -client.connect(error => { - if (error) { - throw error; - } - - db = client.db("test"); - - bucket = new GridFSBucket(db); - bucket.drop(error => { - if (error && error.message !== "ns not found") { - throw error; - } - - console.info("Dropped bucket."); - - const fileName = "readme.txt"; - - const readStream = fs.createReadStream(path.join(__dirname, "..", "sample-files", fileName)); - - readStream.on("close", () => { - console.log("readme.txt uploaded to gridfs."); - }); - - const writeStream = bucket.openUploadStream(fileName, { contentType: "text/plain" }); - - readStream.pipe(writeStream); - }); -}); - -export const mongoContentProvider: ContentProvider = async (req: Request) => { - const fileName = req.params.name; - const file = await getFileMeta(fileName, db); - if (!file) { - throw new ContentDoesNotExistError(`File doesn't exist: ${fileName}`); - } - const totalSize = file.size; - const mimeType = file.contentType; - const getStream = (range?: Range) => { - if (!range) { - return bucket.openDownloadStreamByName(fileName); - } - const { start, end } = range; - logger.debug(`start: ${start}, end: ${end}`); - // Note: The `end` offset in Mongo stream isn't inclusive, need to append 1 to it to ensure it returns - // the right sized content. Otherwise the stream size will be one byte short of the expected value. - return bucket.openDownloadStreamByName(fileName, { start, end: end + 1, revision: -1 }); - }; - return { - fileName, - totalSize, - mimeType, - getStream - }; -}; diff --git a/src/examples/express-mongo-server/utils.ts b/src/examples/express-mongo-server/utils.ts deleted file mode 100644 index 148361f..0000000 --- a/src/examples/express-mongo-server/utils.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { Db } from "mongodb"; -import { MongoFileDocument } from "./MongoFileDocument"; -import { logger } from "./logger"; - -export const getFileMeta = async (fileName: string, db: Db) => { - logger.debug(`Fetching file information for ${fileName}`); - const result = await db.collection("fs.files").findOne({ filename: fileName }); - logger.debug(`File meta: `, result); - return result - ? { - _id: result._id, - contentType: result.contentType, - fileName, - size: result.length - } - : null; -}; diff --git a/yarn.lock b/yarn.lock index bcef8dd..a74b6c9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -229,13 +229,6 @@ "@types/connect" "*" "@types/node" "*" -"@types/bson@*": - version "4.2.4" - resolved "https://registry.yarnpkg.com/@types/bson/-/bson-4.2.4.tgz#3bb08ab0de5dd07103fba355361814019ba2ae88" - integrity sha512-SG23E3JDH6y8qF20a4G9txLuUl+TCV16gxsKyntmGiJez2V9VBJr1Y8WxTBBD6OgBVcvspQ7sxgdNMkXFVcaEA== - dependencies: - bson "*" - "@types/chai@^4.1.7": version "4.3.20" resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.20.tgz#cb291577ed342ca92600430841a00329ba05cecc" @@ -293,14 +286,6 @@ resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-5.2.7.tgz#315d570ccb56c53452ff8638738df60726d5b6ea" integrity sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ== -"@types/mongodb@^3.1.22": - version "3.6.20" - resolved "https://registry.yarnpkg.com/@types/mongodb/-/mongodb-3.6.20.tgz#b7c5c580644f6364002b649af1c06c3c0454e1d2" - integrity sha512-WcdpPJCakFzcWWD9juKoZbRtQxKIMYF/JIAM4JrNHrMcnJL6/a2NWjXxW7fo9hxboxxkg+icff8d7+WIEvKgYQ== - dependencies: - "@types/bson" "*" - "@types/node" "*" - "@types/node@*": version "22.10.2" resolved "https://registry.yarnpkg.com/@types/node/-/node-22.10.2.tgz#a485426e6d1fdafc7b0d4c7b24e2c78182ddabb9" @@ -539,14 +524,6 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -bl@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/bl/-/bl-2.2.1.tgz#8c11a7b730655c5d56898cdc871224f40fd901d5" - integrity sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g== - dependencies: - readable-stream "^2.3.5" - safe-buffer "^5.1.1" - body-parser@1.20.3: version "1.20.3" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.3.tgz#1953431221c6fb5cd63c4b36d53fab0928e548c6" @@ -588,16 +565,6 @@ browserslist@^4.24.0: node-releases "^2.0.18" update-browserslist-db "^1.1.1" -bson@*: - version "6.10.1" - resolved "https://registry.yarnpkg.com/bson/-/bson-6.10.1.tgz#dcd04703178f5ecf5b25de04edd2a95ec79385d3" - integrity sha512-P92xmHDQjSKPLHqFxefqMxASNq/aWJMEZugpCjf+AF/pgcUpMMQCg7t7+ewko0/u8AapvF3luf/FoehddEK+sA== - -bson@^1.1.4: - version "1.1.6" - resolved "https://registry.yarnpkg.com/bson/-/bson-1.1.6.tgz#fb819be9a60cd677e0853aee4ca712a785d6618a" - integrity sha512-EvVNVeGo4tHxwi8L6bPj3y3itEvStdwvvlojVxxbyYfoaxJ6keLgrTuKdyfEAszFK+H3olzBuafE0yoh0D1gdg== - bytes@3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" @@ -933,11 +900,6 @@ define-properties@^1.1.2, define-properties@^1.2.0, define-properties@^1.2.1: has-property-descriptors "^1.0.0" object-keys "^1.1.1" -denque@^1.4.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/denque/-/denque-1.5.1.tgz#07f670e29c9a78f8faecb2566a1e2c11929c5cbf" - integrity sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw== - depd@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" @@ -2073,11 +2035,6 @@ media-typer@0.3.0: resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== -memory-pager@^1.0.2: - version "1.5.0" - resolved "https://registry.yarnpkg.com/memory-pager/-/memory-pager-1.5.0.tgz#d8751655d22d384682741c972f2c3d6dfa3e66b5" - integrity sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg== - merge-descriptors@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.3.tgz#d80319a65f3c7935351e5cfdac8f9318504dbed5" @@ -2177,19 +2134,6 @@ mocha@^6.0.2: yargs-parser "13.1.2" yargs-unparser "1.6.0" -mongodb@^3.1.13: - version "3.7.4" - resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-3.7.4.tgz#119530d826361c3e12ac409b769796d6977037a4" - integrity sha512-K5q8aBqEXMwWdVNh94UQTwZ6BejVbFhh1uB6c5FKtPE9eUMZPUO3sRZdgIEcHSrAWmxzpG/FeODDKL388sqRmw== - dependencies: - bl "^2.2.1" - bson "^1.1.4" - denque "^1.4.1" - optional-require "^1.1.8" - safe-buffer "^5.1.2" - optionalDependencies: - saslprep "^1.0.0" - ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -2361,13 +2305,6 @@ onetime@^2.0.0: dependencies: mimic-fn "^1.0.0" -optional-require@^1.1.8: - version "1.1.8" - resolved "https://registry.yarnpkg.com/optional-require/-/optional-require-1.1.8.tgz#16364d76261b75d964c482b2406cb824d8ec44b7" - integrity sha512-jq83qaUb0wNg9Krv1c5OQ+58EK+vHde6aBPzLvPPqJm89UQWsvSuFy9X/OSNJnFeSOKo7btE0n8Nl2+nE+z5nA== - dependencies: - require-at "^1.0.6" - optionator@^0.8.2: version "0.8.3" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" @@ -2561,7 +2498,17 @@ raw-body@2.5.2: iconv-lite "0.4.24" unpipe "1.0.0" -readable-stream@^2.3.5, readable-stream@~2.3.6: +readable-stream@~1.0.31: + version "1.0.34" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + integrity sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@~2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== @@ -2574,16 +2521,6 @@ readable-stream@^2.3.5, readable-stream@~2.3.6: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@~1.0.31: - version "1.0.34" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" - integrity sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - reflect.getprototypeof@^1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.8.tgz#c58afb17a4007b4d1118c07b92c23fca422c5d82" @@ -2620,11 +2557,6 @@ release-zalgo@^1.0.0: dependencies: es6-error "^4.0.1" -require-at@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/require-at/-/require-at-1.0.6.tgz#9eb7e3c5e00727f5a4744070a7f560d4de4f6e6a" - integrity sha512-7i1auJbMUrXEAZCOQ0VNJgmcT2VOKPRl2YGJwgpHpC9CE91Mv4/4UYIUm4chGJaI381ZDq1JUicFii64Hapd8g== - require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -2697,7 +2629,7 @@ safe-array-concat@^1.1.2: has-symbols "^1.1.0" isarray "^2.0.5" -safe-buffer@5.2.1, safe-buffer@^5.1.1, safe-buffer@^5.1.2: +safe-buffer@5.2.1: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -2721,13 +2653,6 @@ safe-regex-test@^1.0.3: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -saslprep@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/saslprep/-/saslprep-1.0.3.tgz#4c02f946b56cf54297e347ba1093e7acac4cf226" - integrity sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag== - dependencies: - sparse-bitfield "^3.0.3" - semver@5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" @@ -2910,13 +2835,6 @@ source-map@^0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -sparse-bitfield@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz#ff4ae6e68656056ba4b3e792ab3334d38273ca11" - integrity sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ== - dependencies: - memory-pager "^1.0.2" - spawn-wrap@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-2.0.0.tgz#103685b8b8f9b79771318827aa78650a610d457e"