mirror of
https://github.com/TriliumNext/Notes.git
synced 2025-07-29 11:02:28 +08:00
fix(ci): remove mongodb example
This commit is contained in:
parent
19d6f10ccb
commit
12fd5364ae
1
.vscode/settings.json
vendored
1
.vscode/settings.json
vendored
@ -1,5 +1,4 @@
|
||||
{
|
||||
"editor.formatOnSave": true,
|
||||
"cSpell.words": ["Gujar", "Sukant", "copyfiles", "sukantgujar"],
|
||||
"eslint.validate": ["javascript", "typescript"]
|
||||
}
|
||||
|
16
Readme.md
16
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`
|
||||
|
@ -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",
|
||||
|
@ -1,6 +0,0 @@
|
||||
export interface MongoFileDocument {
|
||||
_id: string;
|
||||
contentType: string;
|
||||
filename: string;
|
||||
size: number;
|
||||
}
|
@ -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!");
|
||||
});
|
@ -1,9 +0,0 @@
|
||||
export const logger = {
|
||||
debug(message: string, extra?: any) {
|
||||
if (extra) {
|
||||
console.log(`[debug]: ${message}`, extra);
|
||||
} else {
|
||||
console.log(`[debug]: ${message}`);
|
||||
}
|
||||
}
|
||||
};
|
@ -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
|
||||
};
|
||||
};
|
@ -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;
|
||||
};
|
106
yarn.lock
106
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"
|
||||
|
Loading…
x
Reference in New Issue
Block a user