Remove old JS code; we can bring it back if we want it.
This commit is contained in:
parent
981dc6ade9
commit
8f9c532d8d
14 changed files with 0 additions and 323 deletions
27
js/.babelrc
27
js/.babelrc
|
@ -1,27 +0,0 @@
|
|||
{
|
||||
"env": {
|
||||
"production": {
|
||||
"presets": ["react", "react-optimize"]
|
||||
},
|
||||
"development": {
|
||||
"presets": ["react"]
|
||||
},
|
||||
"test": {
|
||||
"presets": ["react"]
|
||||
}
|
||||
},
|
||||
"only": [
|
||||
"test/js/**"
|
||||
],
|
||||
"plugins": [
|
||||
"transform-es2015-destructuring",
|
||||
"transform-es2015-parameters",
|
||||
"transform-es2015-modules-commonjs",
|
||||
"transform-async-to-generator",
|
||||
"transform-object-rest-spread",
|
||||
"transform-class-properties",
|
||||
"transform-runtime"
|
||||
],
|
||||
"sourceMaps": "inline",
|
||||
"retainLines": true
|
||||
}
|
|
@ -1,6 +0,0 @@
|
|||
{
|
||||
"presets": ["es2015"],
|
||||
"plugins": [
|
||||
"transform-async-to-generator"
|
||||
]
|
||||
}
|
|
@ -1,3 +0,0 @@
|
|||
Icon file is "Line Graph" by Cris Dobbins, from The Noun Project.
|
||||
|
||||
https://thenounproject.com/term/line-graph/145324/
|
|
@ -1,3 +0,0 @@
|
|||
cp ../target/release-browser/datomish.js release/
|
||||
node_modules/.bin/webpack -p
|
||||
cat src/wrapper.prefix built/index.js > release/index.js
|
|
@ -1,23 +0,0 @@
|
|||
{
|
||||
"name": "datomish-example",
|
||||
"version": "1.0.0",
|
||||
"description": "A test add-on for Datomish and Firefox.",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"author": "",
|
||||
"license": "MPL-2.0",
|
||||
"devDependencies": {
|
||||
"babel": "^6.5.2",
|
||||
"babel-cli": "^6.14.0",
|
||||
"babel-core": "^6.14.0",
|
||||
"babel-loader": "^6.2.5",
|
||||
"babel-plugin-transform-async-to-generator": "^6.8.0",
|
||||
"babel-preset-es2015": "^6.14.0",
|
||||
"webpack": "^1.13.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"babel-polyfill": "^6.13.0"
|
||||
}
|
||||
}
|
|
@ -1,2 +0,0 @@
|
|||
#Datomish Test
|
||||
An example add-on that loads Datomish on top of Sqlite.jsm.
|
Binary file not shown.
Before Width: | Height: | Size: 1.1 KiB |
|
@ -1,15 +0,0 @@
|
|||
{
|
||||
"title": "Datomish Test",
|
||||
"name": "datomish-test",
|
||||
"version": "0.0.1",
|
||||
"description": "An example add-on that loads Datomish on top of Sqlite.jsm.",
|
||||
"main": "index.js",
|
||||
"author": "Richard Newman <rnewman@mozilla.com>",
|
||||
"engines": {
|
||||
"firefox": ">=48.0a1"
|
||||
},
|
||||
"license": "MPL-2.0",
|
||||
"keywords": [
|
||||
"jetpack"
|
||||
]
|
||||
}
|
|
@ -1 +0,0 @@
|
|||
jpm run -b /Applications/FirefoxNightly.app/
|
|
@ -1,92 +0,0 @@
|
|||
/* Any copyright is dedicated to the Public Domain.
|
||||
http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||
|
||||
var self = require("sdk/self");
|
||||
var buttons = require('sdk/ui/button/action');
|
||||
var tabs = require('sdk/tabs');
|
||||
|
||||
var datomish = require("datomish.js");
|
||||
|
||||
var schema = {
|
||||
"name": "pages",
|
||||
"attributes": [
|
||||
{"name": "page/url",
|
||||
"type": "string",
|
||||
"cardinality": "one",
|
||||
"unique": "identity",
|
||||
"doc": "A page's URL."},
|
||||
{"name": "page/title",
|
||||
"type": "string",
|
||||
"cardinality": "one",
|
||||
"fulltext": true,
|
||||
"doc": "A page's title."},
|
||||
{"name": "page/content",
|
||||
"type": "string",
|
||||
"cardinality": "one", // Simple for now.
|
||||
"fulltext": true,
|
||||
"doc": "A snapshot of the page's content. Should be plain text."},
|
||||
]
|
||||
};
|
||||
|
||||
async function initDB(path) {
|
||||
let db = await datomish.open(path);
|
||||
await db.ensureSchema(schema);
|
||||
return db;
|
||||
}
|
||||
|
||||
async function findURLs(db) {
|
||||
let query = `[:find ?page ?url ?title :in $ :where [?page :page/url ?url][(get-else $ ?page :page/title "") ?title]]`;
|
||||
let options = new Object();
|
||||
options["limit"] = 10;
|
||||
return datomish.q(db.db(), query, options);
|
||||
}
|
||||
|
||||
async function findPagesMatching(db, string) {
|
||||
let query =
|
||||
`[:find ?url ?title
|
||||
:in $ ?str
|
||||
:where
|
||||
[(fulltext $ :any ?str) [[?page]]]
|
||||
[?page :page/url ?url]
|
||||
[(get-else $ ?page :page/title "") ?title]]`;
|
||||
return datomish.q(db.db(), query, {"limit": 10, "inputs": {"str": string}});
|
||||
}
|
||||
|
||||
async function savePage(db, url, title, content) {
|
||||
let datom = {"db/id": 55, "page/url": url};
|
||||
if (title) {
|
||||
datom["page/title"] = title;
|
||||
}
|
||||
if (content) {
|
||||
datom["page/content"] = content;
|
||||
}
|
||||
let txResult = await db.transact([datom]);
|
||||
return txResult;
|
||||
}
|
||||
|
||||
async function handleClick(state) {
|
||||
let db = await datomish.open("/tmp/testing.db");
|
||||
await db.ensureSchema(schema);
|
||||
|
||||
let txResult = await savePage(db, tabs.activeTab.url, tabs.activeTab.title, "Content goes here");
|
||||
|
||||
console.log("Transaction returned " + JSON.stringify(txResult));
|
||||
console.log("Transaction instant: " + txResult.txInstant);
|
||||
|
||||
let results = await findURLs(db);
|
||||
results = results.map(r => r[1]);
|
||||
|
||||
console.log("Query results: " + JSON.stringify(results));
|
||||
|
||||
let pages = await findPagesMatching(db, "goes");
|
||||
|
||||
console.log("Pages: " + JSON.stringify(pages));
|
||||
await db.close();
|
||||
}
|
||||
|
||||
var button = buttons.ActionButton({
|
||||
id: "datomish-save",
|
||||
label: "Save Page",
|
||||
icon: "./datomish-48.png",
|
||||
onClick: handleClick
|
||||
});
|
|
@ -1,4 +0,0 @@
|
|||
// Monkeypatch.
|
||||
var { setTimeout } = require("sdk/timers");
|
||||
this.setTimeout = setTimeout;
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
|
||||
module.exports = {
|
||||
entry: ['babel-polyfill', './src/index.js'],
|
||||
output: {
|
||||
filename: 'built/index.js'
|
||||
},
|
||||
target: 'webworker',
|
||||
externals: {
|
||||
'datomish.js': 'commonjs datomish.js',
|
||||
'sdk/self': 'commonjs sdk/self',
|
||||
'sdk/ui/button/action': 'commonjs sdk/ui/button/action',
|
||||
'sdk/tabs': 'commonjs sdk/tabs'
|
||||
},
|
||||
module: {
|
||||
loaders: [{
|
||||
test: /\.js?$/,
|
||||
exclude: /(node_modules)|(wrapper.prefix)/,
|
||||
loader: 'babel'
|
||||
}]
|
||||
}
|
||||
}
|
|
@ -1,126 +0,0 @@
|
|||
/* Copyright 2016 Mozilla
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use
|
||||
* this file except in compliance with the License. You may obtain a copy of the
|
||||
* License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
* Unless required by applicable law or agreed to in writing, software distributed
|
||||
* under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
|
||||
* CONDITIONS OF ANY KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations under the License.
|
||||
*/
|
||||
|
||||
var datomish = require("../../target/release-node/datomish.js");
|
||||
|
||||
var schema = {
|
||||
"name": "pages",
|
||||
"attributes": [
|
||||
{"name": "page/url",
|
||||
"type": "string",
|
||||
"cardinality": "one",
|
||||
"unique": "identity",
|
||||
"doc": "A page's URL."},
|
||||
{"name": "page/title",
|
||||
"type": "string",
|
||||
"cardinality": "one",
|
||||
"doc": "A page's title."}
|
||||
]
|
||||
};
|
||||
|
||||
async function testOpen() {
|
||||
// Open a database.
|
||||
let path = "/tmp/testing" + Date.now() + ".db";
|
||||
console.log("Opening " + path);
|
||||
let db = await datomish.open(path);
|
||||
|
||||
// Make sure we have our current schema.
|
||||
await db.ensureSchema(schema);
|
||||
|
||||
// Add some data. Note that we use a temporary ID (the real ID
|
||||
// will be assigned by Datomish).
|
||||
let txResult = await db.transact([
|
||||
{"db/id": datomish.tempid(),
|
||||
"page/url": "https://mozilla.org/",
|
||||
"page/title": "Mozilla"}
|
||||
]);
|
||||
|
||||
console.log("Transaction returned " + JSON.stringify(txResult));
|
||||
console.log("Transaction instant: " + txResult.txInstant);
|
||||
|
||||
// A simple query.
|
||||
let results = await db.q("[:find [?url ...] :in $ :where [?e :page/url ?url]]");
|
||||
console.log("Known URLs: " + JSON.stringify(results));
|
||||
|
||||
// Let's extend our schema. In the real world this would typically happen
|
||||
// across releases.
|
||||
schema.attributes.push({"name": "page/visitedAt",
|
||||
"type": "instant",
|
||||
"cardinality": "many",
|
||||
"doc": "A visit to the page."});
|
||||
await db.ensureSchema(schema);
|
||||
|
||||
// Now we can make assertions with the new vocabulary about existing
|
||||
// entities.
|
||||
// Note that we simply let Datomish find which page we're talking about by
|
||||
// URL -- the URL is a unique property -- so we just use a tempid again.
|
||||
await db.transact([
|
||||
{"db/id": datomish.tempid(),
|
||||
"page/url": "https://mozilla.org/",
|
||||
"page/visitedAt": new Date()}
|
||||
]);
|
||||
|
||||
// When did we most recently visit this page?
|
||||
let date = (await db.q(
|
||||
`[:find (max ?date) .
|
||||
:in $ ?url
|
||||
:where
|
||||
[?page :page/url ?url]
|
||||
[?page :page/visitedAt ?date]]`,
|
||||
{"inputs": {"url": "https://mozilla.org/"}}));
|
||||
console.log("Most recent visit: " + date);
|
||||
|
||||
// Add some more data about a couple of pages.
|
||||
let start = Date.now();
|
||||
let lr = datomish.tempid();
|
||||
let reddit = datomish.tempid();
|
||||
let res = await db.transact([
|
||||
{"db/id": reddit,
|
||||
"page/url": "http://reddit.com/",
|
||||
"page/title": "Reddit",
|
||||
"page/visitedAt": new Date(start)},
|
||||
{"db/id": lr,
|
||||
"page/url": "https://longreads.com/",
|
||||
"page/title": "Longreads: The best longform stories on the web",
|
||||
"page/visitedAt": (new Date(start + 100))},
|
||||
|
||||
// Two visits each.
|
||||
{"db/id": lr,
|
||||
"page/visitedAt": (new Date(start + 200))},
|
||||
{"db/id": reddit,
|
||||
"page/visitedAt": (new Date(start + 300))}
|
||||
]);
|
||||
|
||||
// These are our new persistent IDs. We can use these directly in later
|
||||
// queries or transactions
|
||||
lr = res.tempid(lr);
|
||||
reddit = res.tempid(reddit);
|
||||
console.log("Persistent IDs are " + lr + ", " + reddit + ".");
|
||||
|
||||
// A query with a limit and order-by. Because we limit to 2, and order
|
||||
// by most recent visit date first, we won't get mozilla.org in our results.
|
||||
let recent = await db.q(
|
||||
`[:find ?url (max ?date)
|
||||
:in $
|
||||
:where
|
||||
[?page :page/url ?url]
|
||||
[?page :page/visitedAt ?date]]`,
|
||||
{"limit": 2, "order-by": [["_max_date", "desc"]]});
|
||||
|
||||
console.log("Recently visited: " + JSON.stringify(recent));
|
||||
|
||||
// Close: we're done!
|
||||
await db.close();
|
||||
}
|
||||
|
||||
testOpen()
|
||||
.then((r) => console.log("Done."))
|
||||
.catch((e) => console.log("Failure: " + e.stack));
|
BIN
js/test/v1.db
BIN
js/test/v1.db
Binary file not shown.
Loading…
Reference in a new issue