From 013f198b74575cfa0d2a38b3cc6fd617e5732130 Mon Sep 17 00:00:00 2001 From: Dan Date: Tue, 5 Dec 2017 22:09:58 -0800 Subject: [PATCH] Initial import. --- .babelrc | 5 ++++ .eslintrc | 7 +++++ .gitignore | 3 +++ index.html | 31 +++++++++++++++++++++ package.json | 22 +++++++++++++++ server.js | 19 +++++++++++++ src/index.js | 68 +++++++++++++++++++++++++++++++++++++++++++++++ webpack.config.js | 32 ++++++++++++++++++++++ 8 files changed, 187 insertions(+) create mode 100644 .babelrc create mode 100644 .eslintrc create mode 100644 .gitignore create mode 100644 index.html create mode 100644 package.json create mode 100644 server.js create mode 100644 src/index.js create mode 100644 webpack.config.js diff --git a/.babelrc b/.babelrc new file mode 100644 index 0000000..7d653c1 --- /dev/null +++ b/.babelrc @@ -0,0 +1,5 @@ +{ + "presets": [ + "stage-0" + ] +} diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 0000000..4d68eab --- /dev/null +++ b/.eslintrc @@ -0,0 +1,7 @@ +{ + "extends": "standard", + "rules": { + }, + "plugins": [ + ] +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..802ddd2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +node_modules +npm-debug.log +dist diff --git a/index.html b/index.html new file mode 100644 index 0000000..6b10fae --- /dev/null +++ b/index.html @@ -0,0 +1,31 @@ + + + Sample App + + + + + diff --git a/package.json b/package.json new file mode 100644 index 0000000..97f8e16 --- /dev/null +++ b/package.json @@ -0,0 +1,22 @@ +{ + "name": "bundle-webpack", + "version": "1.0.0", + "description": "Bundle js-ipfs with WebPack", + "scripts": { + "start": "node server.js" + }, + "license": "MIT", + "keywords": [], + "devDependencies": { + "babel-core": "^6.24.1", + "babel-loader": "^7.0.0", + "babel-preset-stage-0": "^6.24.1", + "json-loader": "^0.5.4", + "uglifyjs-webpack-plugin": "^1.1.2", + "webpack": "^2.5.1", + "webpack-dev-server": "^2.4.5" + }, + "dependencies": { + "ipfs": "file:../../" + } +} diff --git a/server.js b/server.js new file mode 100644 index 0000000..0b4a68f --- /dev/null +++ b/server.js @@ -0,0 +1,19 @@ +'use strict' + +const webpack = require('webpack') +const WebpackDevServer = require('webpack-dev-server') +const config = require('./webpack.config') + +const wds = new WebpackDevServer(webpack(config), { + publicPath: config.output.publicPath, + hot: true, + historyApiFallback: true +}) + +wds.listen(3000, 'localhost', (err, result) => { + if (err) { + throw err + } + + console.log('Listening at localhost:3000') +}) diff --git a/src/index.js b/src/index.js new file mode 100644 index 0000000..5c70989 --- /dev/null +++ b/src/index.js @@ -0,0 +1,68 @@ +'use strict' + +const IPFS = require('ipfs') +const Repo = require('ipfs-repo') +const LevelStore = require('datastore-level') + +function MemoryLevelStore() { + return new LevelStore('/memory', {db: require('memdown')}) +} +MemoryLevelStore.prototype = new LevelStore('/memory', {db: require('memdown')}) +MemoryLevelStore.prototype.constructor = MemoryLevelStore + +const stringToUse = 'Hello world from self-contained, self-hosted js-ipfs!!!' + +function App() { + let node + + create() + + function create () { + // Create the IPFS node instance + + var repo_name = String(Math.random() + Date.now()) + var storage_backends = { + root: MemoryLevelStore, + blocks: MemoryLevelStore, + datastore: MemoryLevelStore, + } + + node = new IPFS({ repo: new Repo(repo_name, {storageBackends: storage_backends}) }) + + node.once('ready', () => { + console.log('IPFS node is ready') + ops() + }) + } + + function ops () { + node.id((err, res) => { + if (err) { + throw err + } + + document.body.insertAdjacentHTML('beforeend', + "

Everything is working!

" + + "

Your ID is " + res.id + "

" + + "

Your IPFS version is " + res.agentVersion + "

" + + "

Your IPFS protocol version is " + res.protocolVersion + "

" + ) + }) + + node.files.add([Buffer.from(stringToUse)], (err, filesAdded) => { + if (err) { console.log("ERROR"); throw err } + + const hash = filesAdded[0].hash + document.body.insertAdjacentHTML('beforeend', "
Added a file!
" + hash + "
") + + node.files.cat(hash, (err, data) => { + if (err) { console.log("ERROR 2"); throw err } + document.body.insertAdjacentHTML('beforeend', "

Contents of this file:
" + data + "

") + }) + }) + } +} + +module.exports = App + +App() diff --git a/webpack.config.js b/webpack.config.js new file mode 100644 index 0000000..9f5869e --- /dev/null +++ b/webpack.config.js @@ -0,0 +1,32 @@ +'use strict' + +var path = require('path') +var webpack = require('webpack') +const UglifyJSPlugin = require('uglifyjs-webpack-plugin'); + +module.exports = { + devtool: 'eval', + entry: [ + './src/index' + ], + output: { + path: path.join(__dirname, 'dist'), + filename: 'bundle.js', + publicPath: '/static/' + }, + plugins: [ + new UglifyJSPlugin() + ], + module: { + loaders: [{ + test: /\.js$/, +// loaders: ['babel-loader'], + include: path.join(__dirname, 'src') + }, /*{ test: /\.json$/, loader: 'json-loader' }*/] + }, + node: { + fs: 'empty', + net: 'empty', + tls: 'empty' + } +}