2.0.5 • Published 6 years ago

version-repo-node v2.0.5

Weekly downloads
4
License
MIT
Repository
github
Last release
6 years ago

An extention to the version-repo package with a backend provided by MongoDB.

See version-repo for the general version-repo API.

Repositories Classes

RemoteRepo

An asynchronous repository which forwards all requests to another version-repository over http. (The RouterRepo class available in the version-repo-node wraps another repository with an HTTP interface).

Constructor parameters
  • config: An object with the following attributes: - directory: (string) Path to the directory to use for persisting objects to file - ext?: (string, opitonal) A file extention for stored files - update: (optional) one of "latest" (default), "any", "none" - delete: (optional) one of "latest" (default), "any", "none"
Example:
var my_file_based_repo = new FileRepo({ dir: "/some/place/nice", ext: "txt" })

Router

A wrapper for another 'host' repository which provides an HTTP/S API via ExpressJS

Constructor parameters
  • Config: An object with the following attributes
    • repository: The host repository that is being exposed via the Router instance
    • router: (optional) An ExpressJS Router instance
    • query_credentials: (optional) An express middleware function used for validating requesters authorization to perform the query
    • modify_credentials: (optional) An express middleware function used for validating requesters authorization to perform the query
Example:
import { MemoryRepo } from "version-repo";
import { Router } from "version-repo-node";
var http = require('http'),
	express = require('express'),
	superagent = require("superagent");

const app = express();
const host_repo = new MemoryRepo();

app.use('/my-repo', router({ repository:backend, }));
var server = http.createServer(app);
server.listen(0);

console.log( `the host_repo is now expossed on http://localhost:${server.address().port}/my-repo` );

RemoteRepo

An asynchronous repository which forwards all requests to another version-repository over http. (The RouterRepo class available in the version-repo-node wraps another repository with an HTTP interface).

Note that the RemoteRepo can be webpacked into a browser application.

Constructor parameters

One of:

  • (Most common) An object with a complete base_url attribute (e.g. { 'base_url':"http://my.repo.com:1234/my-stuff", })

  • (typically used for testing) an object with an Express App instance serving a repo router and the relative path, such as:

import { MemoryRepo, RemoteRepo, router } from "version-repo"
import express = require('express');

var app = express(), 
	host_repo  = new MemoryRepo();
	app.use('/my-stuff', repo.router({ repository:parser_repo, }));

var my_repo = new RemoteRepo({ app: app, base_url: "/my-stuff" })
  • (typically used for testing) an object with a server instance serving a repo router and the relative path, such as:
import { MemoryRepo, RemoteRepo, router } from "version-repo"
import express = require('express');
import http = require('http');

var app = express(), 
	host_repo  = new MemoryRepo();
app.use('/my-stuff', repo.router({ repository:parser_repo, }));
var server = http.createServer(app)

my_repo =new RemoteRepo({ app: server, base_url: "/my-stuff" })