Mercurial > code > home > repos > streamed-graph
changeset 35:29d8ed02a275
build and tests, including jsonld
author | drewp@bigasterisk.com |
---|---|
date | Sat, 28 Dec 2019 02:01:23 -0800 |
parents | 3d8b98e9c01d |
children | 8b4dc9e87b56 |
files | index.html package-lock.json package.json rollup.config.js src/json_ld_quads.ts src/suffixLabels.ts tasks.py tsconfig.json webpack.config.js |
diffstat | 9 files changed, 195 insertions(+), 120 deletions(-) [+] |
line wrap: on
line diff
--- a/index.html Fri Dec 27 21:26:55 2019 -0800 +++ b/index.html Sat Dec 28 02:01:23 2019 -0800 @@ -1,11 +1,10 @@ <!DOCTYPE html> <html> - <body> - <h1>streamed-graph demo</h1> - <script type="module" src="./build/bundle.js"></script> - <streamed-graph - url="http://bang5:9075/graph/events" - expanded="true" - ></streamed-graph> - </body> -</html> + +<body> + <h1>streamed-graph demo</h1> + <script type="module" src="./build/bundle.js"></script> + <streamed-graph url="http://bang5:9075/graph/events" expanded="true"></streamed-graph> +</body> + +</html> \ No newline at end of file
--- a/package-lock.json Fri Dec 27 21:26:55 2019 -0800 +++ b/package-lock.json Sat Dec 28 02:01:23 2019 -0800 @@ -374,6 +374,27 @@ "@webcomponents/shadycss": "^1.9.1" } }, + "@rdfjs/data-model": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@rdfjs/data-model/-/data-model-1.1.2.tgz", + "integrity": "sha512-pk/G/JLYGaXesoBLvEmoC/ic0H3B79fTyS0Ujjh5YQB2DZW+mn05ZowFFv88rjB9jf7c1XE5XSmf8jzn6U0HHA==", + "requires": { + "@types/rdf-js": "^2.0.1" + } + }, + "@rollup/plugin-commonjs": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-11.0.0.tgz", + "integrity": "sha512-jnm//T5ZWOZ6zmJ61fReSCBOif+Ax8dHVoVggA+d2NA7T4qCWgQ3KYr+zN2faGEYLpe1wa03IzvhR+sqVLxUWg==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.0.0", + "estree-walker": "^0.6.1", + "is-reference": "^1.1.2", + "magic-string": "^0.25.2", + "resolve": "^1.11.0" + } + }, "@rollup/plugin-node-resolve": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-6.0.0.tgz", @@ -3205,6 +3226,14 @@ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", "dev": true }, + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "requires": { + "iconv-lite": "~0.4.13" + } + }, "end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -4595,7 +4624,6 @@ "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, "requires": { "safer-buffer": ">= 2.1.2 < 3" } @@ -4925,6 +4953,23 @@ "dev": true, "optional": true }, + "is-reference": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.4.tgz", + "integrity": "sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw==", + "dev": true, + "requires": { + "@types/estree": "0.0.39" + }, + "dependencies": { + "@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + } + } + }, "is-regex": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", @@ -4937,8 +4982,7 @@ "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" }, "is-symbol": { "version": "1.0.3", @@ -4990,6 +5034,15 @@ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, + "isomorphic-fetch": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", + "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", + "requires": { + "node-fetch": "^1.0.1", + "whatwg-fetch": ">=0.10.0" + } + }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", @@ -5596,11 +5649,30 @@ "xmldom": "0.1.19" } }, + "jsonld-context-parser": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/jsonld-context-parser/-/jsonld-context-parser-1.3.4.tgz", + "integrity": "sha512-mR2uoEWqFLE1PrF1pbUuppKajHSGwodXtI9hlcpKflvolDEFAh4hd7z9874pWaK+TtQfHC3Xqfk0U8SEnt2htw==", + "requires": { + "isomorphic-fetch": "^2.2.1", + "relative-to-absolute-iri": "^1.0.5" + } + }, + "jsonld-streaming-parser": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/jsonld-streaming-parser/-/jsonld-streaming-parser-1.1.2.tgz", + "integrity": "sha512-nKCvqHz2JDHJjt2Iv3kW7yoFpIcKX8bWGqe9r5xaadBg9yp7pg3iuwt7Tl8ADOj5z7jYWKGmO8s31Ho+XN1slQ==", + "requires": { + "@rdfjs/data-model": "^1.1.1", + "@types/rdf-js": "^2.0.1", + "jsonld-context-parser": "^1.3.3", + "jsonparse": "^1.3.1" + } + }, "jsonparse": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", - "dev": true + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=" }, "jsprim": { "version": "1.4.1", @@ -5937,6 +6009,15 @@ "integrity": "sha1-81ypHEk/e3PaDgdJUwTxezH4fuU=", "dev": true }, + "magic-string": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.4.tgz", + "integrity": "sha512-oycWO9nEVAP2RVPbIoDoA4Y7LFIJ3xRYov93gAyJhZkET1tNuB0u7uWkZS2LpBWTJUWnmau/To8ECWRC+jKNfw==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, "make-dir": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", @@ -6299,6 +6380,15 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, + "node-fetch": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", + "requires": { + "encoding": "^0.1.11", + "is-stream": "^1.0.1" + } + }, "node-forge": { "version": "0.8.5", "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.8.5.tgz", @@ -7177,6 +7267,11 @@ } } }, + "relative-to-absolute-iri": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/relative-to-absolute-iri/-/relative-to-absolute-iri-1.0.5.tgz", + "integrity": "sha512-sHpUlpF3fRWtTcBa8uBIwQ+Z/YnjDjerocV3q0FrP8T9oZ3z6d61I12ZcGlGr9jW2cQbcCkErCT9XLcN18ZLaQ==" + }, "remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", @@ -7776,6 +7871,12 @@ "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", "dev": true }, + "sourcemap-codec": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.6.tgz", + "integrity": "sha512-1ZooVLYFxC448piVLBbtOxFcXwnymH9oUF8nRd3CuYDVvkRBxRl6pB4Mtas5a4drtL+E8LDgFkQNcgIw6tc8Hg==", + "dev": true + }, "spdx-correct": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", @@ -8682,6 +8783,11 @@ "iconv-lite": "0.4.24" } }, + "whatwg-fetch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz", + "integrity": "sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q==" + }, "whatwg-mimetype": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz",
--- a/package.json Fri Dec 27 21:26:55 2019 -0800 +++ b/package.json Sat Dec 28 02:01:23 2019 -0800 @@ -8,7 +8,10 @@ ], "types": "build/index.d.ts", "scripts": { - "build": "rollup -c" + "build": "rollup -c", + "build_forever": "rollup -cw", + "test": "jest", + "test_forever": "jest --watch" }, "dependencies": { "@polymer/decorators": "^3.0.0", @@ -21,6 +24,7 @@ "readable-stream": "^3.4.0" }, "devDependencies": { + "@rollup/plugin-commonjs": "^11.0.0", "@rollup/plugin-node-resolve": "^6.0.0", "@types/jest": "^24.0.25", "jest": "^24.9.0", @@ -32,4 +36,4 @@ "tslib": "^1.10.0", "typescript": "^3.7.4" } -} +} \ No newline at end of file
--- a/rollup.config.js Fri Dec 27 21:26:55 2019 -0800 +++ b/rollup.config.js Sat Dec 28 02:01:23 2019 -0800 @@ -1,20 +1,26 @@ +import builtins from "rollup-plugin-node-builtins"; +import commonjs from '@rollup/plugin-commonjs'; import resolve from "@rollup/plugin-node-resolve"; import typescript from "rollup-plugin-typescript2"; -import builtins from "rollup-plugin-node-builtins"; export default { - input: "src/index.ts", - output: { - file: "build/bundle.js", - format: "esm", - intro: "const global = window;" - }, - plugins: [ - builtins(), - resolve({ - extensions: [".js", ".ts"], - browser: true - }), - typescript() - ] + input: "src/index.ts", + output: { + file: "build/bundle.js", + format: "esm", + intro: "const global = window;" + }, + plugins: [ + builtins(), + resolve({ + extensions: [".js", ".ts"], + browser: true + }), + typescript(), + commonjs({ + namedExports: { + 'jsonld': ['expand'], // fixes "expand is not exported by node_modules/jsonld/lib/index.js" + } + }), + ] };
--- a/src/json_ld_quads.ts Fri Dec 27 21:26:55 2019 -0800 +++ b/src/json_ld_quads.ts Sat Dec 28 02:01:23 2019 -0800 @@ -1,48 +1,46 @@ -// import * as jsonld from "jsonld"; -// import { JsonLd, JsonLdArray } from 'jsonld/jsonld-spec'; +import * as jsonld from "jsonld"; +import { JsonLd, JsonLdArray } from 'jsonld/jsonld-spec'; import { Quad, NamedNode, DataFactory } from 'n3'; const { literal, quad, namedNode } = DataFactory; -// import {} from 'n3'; // const { rdf } = ns; const rdf = { type: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" }; -// function _emitQuad( -// onQuad: (q: Quad) => void, -// subjNode: NamedNode, -// pred: string, -// subj: any, -// graphNode: NamedNode) { -// let predNode: NamedNode; -// if (pred === "@type") { -// predNode = namedNode(rdf.type); -// } -// else { -// predNode = namedNode(pred); -// } -// subj[pred as string].forEach(function (obj: any) { -// const objNode = (obj['@id'] ? namedNode(obj['@id']) : -// literal(obj['@value'], -// obj['@language'] || obj['@type'])); -// onQuad(quad(subjNode, predNode, objNode, graphNode)); -// }); -// } +function _emitQuad( + onQuad: (q: Quad) => void, + subjNode: NamedNode, + pred: string, + subj: any, + graphNode: NamedNode) { + let predNode: NamedNode; + if (pred === "@type") { + predNode = namedNode(rdf.type); + } + else { + predNode = namedNode(pred); + } + subj[pred as string].forEach(function (obj: any) { + const objNode = (obj['@id'] ? namedNode(obj['@id']) : + literal(obj['@value'], + obj['@language'] || obj['@type'])); + onQuad(quad(subjNode, predNode, objNode, graphNode)); + }); +} export async function eachJsonLdQuad(jsonLdObj: object, onQuad: (q: Quad) => void) { - - // const expanded = await jsonld.expand(jsonLdObj); + const expanded = await jsonld.expand(jsonLdObj); - // (expanded as JsonLdArray).forEach(function (g: JsonLd) { - // var graph = (g as { '@id': string })['@id']; - // var graphNode = namedNode(graph); - // (g as { '@graph': JsonLdArray })['@graph'].forEach(function (subj: { [predOrId: string]: any; }) { - // const subjNode = namedNode(subj['@id']); - // for (let pred in subj) { - // if (pred === '@id') { - // continue; - // } - // _emitQuad(onQuad, subjNode, pred, subj, graphNode); - // } - // }); - // }); + (expanded as JsonLdArray).forEach(function (g: JsonLd) { + var graph = (g as { '@id': string })['@id']; + var graphNode = namedNode(graph); + (g as { '@graph': JsonLdArray })['@graph'].forEach(function (subj: { [predOrId: string]: any; }) { + const subjNode = namedNode(subj['@id']); + for (let pred in subj) { + if (pred === '@id') { + continue; + } + _emitQuad(onQuad, subjNode, pred, subj, graphNode); + } + }); + }); }
--- a/src/suffixLabels.ts Fri Dec 27 21:26:55 2019 -0800 +++ b/src/suffixLabels.ts Sat Dec 28 02:01:23 2019 -0800 @@ -59,7 +59,6 @@ clashNode.label = nextLeftSeg[0] + '/' + clashNode.label; nextLeftSeg[1].usedBy = curs.usedBy; curs.usedBy = undefined; - } // a substring to show for this uri
--- a/tasks.py Fri Dec 27 21:26:55 2019 -0800 +++ b/tasks.py Sat Dec 28 02:01:23 2019 -0800 @@ -7,21 +7,15 @@ @task def serve_demo(ctx): - ctx.run('npm run webpack-dev-server') + ctx.run('webfsd -Fp 8021') @task def build(ctx): - ctx.run(f'npm run webpack-build', pty=True) - ctx.run(f'cp build/bundle.js /my/site/homepage/www/rdf/streamed-graph.bundle.js') - ctx.run(f'cp src/streamed-graph.css /my/site/homepage/www/rdf/streamed-graph.css') + ctx.run(f'npm run build', pty=True) @task def build_forever(ctx): - ctx.run(f'npm run run webpack-build-forever', pty=True) - -@task -def dev_server(ctx): - ctx.run(f'npm run webpack-dev-server', pty=True) + ctx.run(f'npm run build_forever', pty=True) @task def test(ctx): @@ -29,4 +23,9 @@ @task def test_forever(ctx): - ctx.run(f'npm run test-forever', pty=True) + ctx.run(f'npm run test_forever', pty=True) + +@task(pre=[build]) +def install(ctx): + ctx.run(f'cp build/bundle.js /my/site/homepage/www/rdf/streamed-graph.bundle.js') + ctx.run(f'cp src/streamed-graph.css /my/site/homepage/www/rdf/streamed-graph.css')
--- a/tsconfig.json Fri Dec 27 21:26:55 2019 -0800 +++ b/tsconfig.json Sat Dec 28 02:01:23 2019 -0800 @@ -1,18 +1,15 @@ { "compilerOptions": { - // "strict": true, + "strict": true, "noFallthroughCasesInSwitch": true, "noImplicitAny": true, "noImplicitReturns": true, "noImplicitThis": true, - // "noUnusedParameters": true, - // "noUnusedLocals": true, "strictFunctionTypes": true, "strictNullChecks": true, "strictPropertyInitialization": true, "alwaysStrict": true, - // "allowSyntheticDefaultImports": true, "types": ["jest"], "module": "ES6", @@ -22,12 +19,13 @@ "declaration": true, "experimentalDecorators": true, "allowJs": true, + "esModuleInterop": true, + // "allowSyntheticDefaultImports": true, // "rootDir": ".", // "outDir": "./build", - "esModuleInterop": true, + // "baseUrl": "./build" // "emitDecoratorMetadata": true, // "lib": [ "es6", "dom" ], - // "baseUrl": "./build" }, "include": ["src/**/*.ts"],
--- a/webpack.config.js Fri Dec 27 21:26:55 2019 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,34 +0,0 @@ -const path = require("path"); - -module.exports = { - entry: ["./src/index.ts"], - output: { - library: "streamed_graph", - filename: "bundle.js", - path: path.resolve(__dirname, "build"), - publicPath: "/build/" - }, - module: { - rules: [ - { - test: /\.ts$/, - loader: require.resolve("ts-loader") - }, - { test: /\.css$/i, use: ["file-loader"] } - ] - }, - devtool: "source-map", - resolve: { - extensions: [".ts", ".js"], - modules: ["node_modules"] - }, - watchOptions: { - ignored: /node_modules/, - poll: 200 - }, - devServer: { - port: 8082, - publicPath: "/build/", - contentBase: __dirname - } -};