diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 1dc6aa7a..401a6a70 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -11,6 +11,7 @@ Packages affected: - [ ] OWL/SHACL definitions - [ ] ts-sdk - [ ] ts-etl +- [ ] spa ### Expected behavior diff --git a/.github/ISSUE_TEMPLATE/documentation.md b/.github/ISSUE_TEMPLATE/documentation.md index a4529c35..4b25fa00 100644 --- a/.github/ISSUE_TEMPLATE/documentation.md +++ b/.github/ISSUE_TEMPLATE/documentation.md @@ -11,6 +11,7 @@ Packages related to documentation request: - [ ] OWL/SHACL definitions - [ ] ts-sdk - [ ] ts-etl +- [ ] spa ### Description diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index 71406377..4a7869ee 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -11,6 +11,7 @@ Packages to improve: - [ ] OWL/SHACL definitions - [ ] ts-sdk - [ ] ts-etl +- [ ] spa ### Description diff --git a/.github/workflows/gh-pages.yaml b/.github/workflows/gh-pages.yaml new file mode 100644 index 00000000..4ac8eb40 --- /dev/null +++ b/.github/workflows/gh-pages.yaml @@ -0,0 +1,71 @@ +# Simple workflow for deploying static content to GitHub Pages +name: Deploy static content to Pages + +on: + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + workflow_call: + +# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages +permissions: + contents: read + pages: write + id-token: write + +# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. +# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. +concurrency: + group: "pages" + cancel-in-progress: false + +jobs: + # Single deploy job since we're just deploying + deploy: + + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + + runs-on: ubuntu-latest + + strategy: + matrix: + node-version: [18.14.0] + + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + + - uses: pnpm/action-setup@v2 + name: Install pnpm + id: pnpm-install + with: + version: 7 + run_install: false + + - name: Setup Pages + uses: actions/configure-pages@v3 + + - name: Install dependencies + run: | + cd packages/spa ; + pnpm install; + + - name: Verify builds + run: | + cd packages/spa ; + pnpm build; + + - name: Upload artifact + uses: actions/upload-pages-artifact@v1 + with: + # Upload subdirectory + path: './packages/spa/public' + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v2 diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index c593563d..e5d529bd 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -70,4 +70,8 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} NPM_TOKEN: ${{ secrets.NPM_TOKEN }} - run: npx multi-semantic-release + # must ignore spa because we need spa in the workspace file for development, but spa is not released. + run: npx multi-semantic-release --ignore-packages=packages/spa + + release-github-pages-docs: + uses: ./.github/workflows/gh-pages.yaml diff --git a/.github/workflows/spa-tests.yaml b/.github/workflows/spa-tests.yaml new file mode 100644 index 00000000..f85cb3d5 --- /dev/null +++ b/.github/workflows/spa-tests.yaml @@ -0,0 +1,67 @@ +name: Test ts-etl + +on: + push: + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + workflow_call: + +env: + PKG_DIR: "packages/spa" + +jobs: + nodejs_test: + runs-on: ubuntu-latest + + strategy: + matrix: + node-version: [18.14.0] + + steps: + - uses: actions/checkout@v3 + + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + + - uses: pnpm/action-setup@v2 + name: Install pnpm + id: pnpm-install + with: + version: 7 + run_install: false + + - name: Get pnpm store directory + id: pnpm-cache + shell: bash + run: | + echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT + + - uses: actions/cache@v3 + name: Setup pnpm cache + with: + path: ${{ steps.pnpm-cache.outputs.STORE_PATH }} + key: ${{ runner.os }}-pnpm-store-${{ hashFiles('${{env.PKG_DIR}}/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-pnpm-store- + + - name: Install dependencies + run: | + cd ${{env.PKG_DIR}} ; + pnpm install; + + - name: Verify builds + run: | + cd ${{env.PKG_DIR}} ; + pnpm build; + + - name: Test + run: | + cd ${{env.PKG_DIR}} ; + pnpm test; + + - name: Lint Check + run: | + cd ${{env.PKG_DIR}} ; + pnpm lint; diff --git a/packages/spa/.gitignore b/packages/spa/.gitignore new file mode 100644 index 00000000..da93220b --- /dev/null +++ b/packages/spa/.gitignore @@ -0,0 +1,4 @@ +/node_modules/ +/public/build/ + +.DS_Store diff --git a/packages/spa/README.md b/packages/spa/README.md new file mode 100644 index 00000000..044735e5 --- /dev/null +++ b/packages/spa/README.md @@ -0,0 +1,79 @@ +Docmap Visual Playground + +This Docmap visualizer is a simple stateless single-page web app that allows you to visualize a docmap based on our Crossref-to-Docmap ETL library. You can plug in any DOI, and if Crossref knows about it and it has reviews or a preprint, you'll get some interesting content back. + +## Demo + +You can try the live demo hosted on GitHub Pages [here](https://docmaps-project.github.io/docmaps). + +## Getting Started for Development + +### Prerequisites + +- Node.js (>= 12.x) +- pnpm package manager + +### Installation + +1. Clone the repository: + +```bash +git clone https://github.com/docmaps-project/docmaps +cd docmaps/packages/spa +``` + +2. Install dependencies: + +```bash +pnpm install +``` + +### Running the tests + +To run tests: + +```bash +pnpm test +``` + +Note that you need an installation of Chrome, and must set +the `CHROME_PATH` variable. If you use Chromium, it might be something like +`/usr/local/bin/chromium`. + +### Running the App + +To start the development server: + +```bash +pnpm run dev +``` + +Then navigate to `http://localhost:8080` in your browser. + +### Deploying to GH Pages + +The Github Pages is deployed from the `gh-pages` workflow in repository root. This workflow is called +by the `release` workflow and is only triggered on merge to main. It first builds/bundles this package, +then deploys the bundle. Note that because the repo name disagrees with the package name, the `index.html` +is modified to use relative paths for all bundled resources. + +## Built With + +- [Svelte](https://svelte.dev/) - The web framework used +- [render-rev](github.com/source-data/render-rev) - Display component built by EMBO +- [pnpm](https://pnpm.io/) - The package manager + +## Contributing + +See the main repository contributing guidelines. + +## License + +See main repository license. + +## Acknowledgments + +- [render-rev](github.com/source-data/render-rev) +- [Svelte](https://svelte.dev/) +- [pnpm](https://pnpm.io/) +- [crossref](https://crossref.org/) diff --git a/packages/spa/package.json b/packages/spa/package.json new file mode 100644 index 00000000..beb08b13 --- /dev/null +++ b/packages/spa/package.json @@ -0,0 +1,34 @@ +{ + "name": "svelte-app", + "version": "1.0.0", + "private": true, + "type": "module", + "scripts": { + "build": "rollup -c", + "dev": "rollup -c -w", + "start": "sirv public --no-clear", + "lint": "echo !!!!WARN: No linter setup!", + "test": "echo !!!!WARN: No test setup!" + }, + "devDependencies": { + "@rollup/plugin-commonjs": "^24.1.0", + "@rollup/plugin-node-resolve": "^15.1.0", + "@rollup/plugin-terser": "^0.4.3", + "rollup": "^3.23.0", + "rollup-plugin-css-only": "^4.3.0", + "rollup-plugin-livereload": "^2.0.5", + "rollup-plugin-polyfill-node": "^0.12.0", + "rollup-plugin-svelte": "^7.1.5", + "svelte": "^3.59.1" + }, + "dependencies": { + "@docmaps/etl": "workspace:^0.1.2", + "@source-data/render-rev": "github:source-data/render-rev", + "@spider-ui/global-event-registry": "^0.2.7", + "docmaps-sdk": "^0.5.1", + "fp-ts": "^2.16.0", + "prismjs": "^1.29.0", + "sirv-cli": "^2.0.2", + "upgraded-element": "^0.6.5" + } +} diff --git a/packages/spa/public/favicon.png b/packages/spa/public/favicon.png new file mode 100644 index 00000000..7e6f5eb5 Binary files /dev/null and b/packages/spa/public/favicon.png differ diff --git a/packages/spa/public/global.css b/packages/spa/public/global.css new file mode 100644 index 00000000..bb28a941 --- /dev/null +++ b/packages/spa/public/global.css @@ -0,0 +1,63 @@ +html, body { + position: relative; + width: 100%; + height: 100%; +} + +body { + color: #333; + margin: 0; + padding: 8px; + box-sizing: border-box; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; +} + +a { + color: rgb(0,100,200); + text-decoration: none; +} + +a:hover { + text-decoration: underline; +} + +a:visited { + color: rgb(0,80,160); +} + +label { + display: block; +} + +input, button, select, textarea { + font-family: inherit; + font-size: inherit; + -webkit-padding: 0.4em 0; + padding: 0.4em; + margin: 0 0 0.5em 0; + box-sizing: border-box; + border: 1px solid #ccc; + border-radius: 2px; +} + +input:disabled { + color: #ccc; +} + +button { + color: #333; + background-color: #f4f4f4; + outline: none; +} + +button:disabled { + color: #999; +} + +button:not(:disabled):active { + background-color: #ddd; +} + +button:focus { + border-color: #666; +} diff --git a/packages/spa/public/index.html b/packages/spa/public/index.html new file mode 100644 index 00000000..b949ea65 --- /dev/null +++ b/packages/spa/public/index.html @@ -0,0 +1,18 @@ + + + + + + + Docmaps Demonstration + + + + + + + + + + + diff --git a/packages/spa/rollup.config.js b/packages/spa/rollup.config.js new file mode 100644 index 00000000..2c28e0b7 --- /dev/null +++ b/packages/spa/rollup.config.js @@ -0,0 +1,81 @@ +import { spawn } from 'child_process'; +import svelte from 'rollup-plugin-svelte'; +import commonjs from '@rollup/plugin-commonjs'; +import terser from '@rollup/plugin-terser'; +import resolve from '@rollup/plugin-node-resolve'; +import livereload from 'rollup-plugin-livereload'; +import nodePolyfills from 'rollup-plugin-polyfill-node'; +import css from 'rollup-plugin-css-only'; + +const production = !process.env.ROLLUP_WATCH; + +function serve() { + let server; + + function toExit() { + if (server) server.kill(0); + } + + return { + writeBundle() { + if (server) return; + server = spawn('npm', ['run', 'start', '--', '--dev'], { + stdio: ['ignore', 'inherit', 'inherit'], + shell: true + }); + + process.on('SIGTERM', toExit); + process.on('exit', toExit); + } + }; +} + +export default { + input: 'src/main.js', + output: { + sourcemap: true, + format: 'iife', + name: 'app', + file: 'public/build/bundle.js' + }, + plugins: [ + svelte({ + compilerOptions: { + // enable run-time checks when not in production + dev: !production + } + }), + // we'll extract any component CSS out into + // a separate file - better for performance + css({ output: 'bundle.css' }), + + nodePolyfills(), + + // If you have external dependencies installed from + // npm, you'll most likely need these plugins. In + // some cases you'll need additional configuration - + // consult the documentation for details: + // https://github.com/rollup/plugins/tree/master/packages/commonjs + resolve({ + browser: true, + dedupe: ['svelte'], + exportConditions: ['svelte'] + }), + commonjs(), + + // In dev mode, call `npm run start` once + // the bundle has been generated + !production && serve(), + + // Watch the `public` directory and refresh the + // browser on changes when not in production + !production && livereload('public'), + + // If we're building for production (npm run build + // instead of npm run dev), minify + production && terser() + ], + watch: { + clearScreen: false + } +}; diff --git a/packages/spa/src/App.svelte b/packages/spa/src/App.svelte new file mode 100644 index 00000000..bfc4dec1 --- /dev/null +++ b/packages/spa/src/App.svelte @@ -0,0 +1,99 @@ + + +
+

Demo: crossref-to-docmap

+ + + +
+
+ Derived Docmap contents: + +
+
+ + diff --git a/packages/spa/src/JsonBox.svelte b/packages/spa/src/JsonBox.svelte new file mode 100644 index 00000000..7c7361ab --- /dev/null +++ b/packages/spa/src/JsonBox.svelte @@ -0,0 +1,30 @@ + + +
+ + diff --git a/packages/spa/src/main.js b/packages/spa/src/main.js new file mode 100644 index 00000000..10bf9990 --- /dev/null +++ b/packages/spa/src/main.js @@ -0,0 +1,9 @@ +import App from './App.svelte'; + +const app = new App({ + target: document.body, + props: { + } +}); + +export default app; diff --git a/packages/spa/src/utils.js b/packages/spa/src/utils.js new file mode 100644 index 00000000..a5f4c8fa --- /dev/null +++ b/packages/spa/src/utils.js @@ -0,0 +1,31 @@ +import { ItemCmd, Client as CrossrefClient } from '@docmaps/etl' +import util from 'util' +import {isLeft} from 'fp-ts/lib/Either' + +export async function configureForDoiString(str, handleJson, handleError) { + const result = await ItemCmd( + [str], + { + source: { + preset: 'crossref-api', + client: CrossrefClient, + }, + publisher: { + name: 'Inferred from Crossref', + url: 'https://github.com/docmaps-project/docmaps/tree/main/packages/ts-etl', + }, + } + ); + + if (isLeft(result)) { + console.log("Got error while building docmap from crossref:", util.inspect(result.left, {depth: 7})); + handleError(result.left) + } else { + handleJson(result.right) + } +} + +export function structureError(error) { + error['type'] = 'error' + return JSON.stringify(error, ['message', 'cause', 'type']) +} diff --git a/packages/ts-etl/src/plugins/crossref/api.ts b/packages/ts-etl/src/plugins/crossref/api.ts index a77db72b..c469e4c3 100644 --- a/packages/ts-etl/src/plugins/crossref/api.ts +++ b/packages/ts-etl/src/plugins/crossref/api.ts @@ -24,30 +24,52 @@ export const Client = CreateCrossrefClient({}) type RecursiveStepDataChain = { head: D.StepT all: D.StepT[] + visitedIds: Set } function stepsForDoiRecursive( client: CrossrefClient, inputDoi: string, - status: string, + visitedIds: Set, + annotations: { + inputs: D.ThingT[] + }, ): TE.TaskEither { const service = client.works const program = pipe( TE.Do, TE.bind('w', () => TE.tryCatch( - () => service.getWorks({ doi: inputDoi }), // FIXME throw/reject if not status OK ? (what is client behavior if not 200?) + () => service.getWorks({ doi: inputDoi }), (reason: unknown) => new Error(`failed to fetch crossref body for DOI ${inputDoi}`, { cause: reason }), ), ), + TE.bind('status', ({ w }) => + pipe( + w, + (w) => { + switch (w.message.type) { + case 'posted-content': + return E.right('catalogued') + case 'journal-article': + return E.right('published') + default: + return E.left( + new Error(`requested root docmap for crossref entity of type '${w.message.type}'`), + ) + } + }, + TE.fromEither, + ), + ), // 1. get step for this - TE.bind('initialChain', ({ w }) => + TE.bind('initialChain', ({ w, status }) => pipe( w.message, decodeActionForWork, E.map((action) => ({ - inputs: [], // TODO: confirm we always override this as needed + inputs: annotations.inputs, actions: [action], assertions: [ { @@ -56,10 +78,16 @@ function stepsForDoiRecursive( }, ], })), - E.chain((action) => pipe(D.Step.decode(action), mapLeftToUnknownError)), + E.chain((action) => + pipe( + D.Step.decode(action), + mapLeftToUnknownError('decoding action in stepsForDoiRecursive'), + ), + ), E.map((s) => ({ - all: [s], head: s, + all: [s], + visitedIds: visitedIds.add(inputDoi), })), TE.fromEither, ), @@ -74,17 +102,22 @@ function stepsForDoiRecursive( return pipe( preprints, A.filter((wre) => { - return wre['id-type'].toLowerCase() == 'doi' + return ( + wre['id-type'].toLowerCase() == 'doi' && + !initialChain.visitedIds.has(wre['id'].toLowerCase()) + ) }), // get unique IDs A.map((wre) => wre.id), A.uniq(eqString), TE.traverseArray((wreId) => { - return stepsForDoiRecursive(client, wreId, 'catalogued') // TODO: status for any preprint + return stepsForDoiRecursive(client, wreId, initialChain.visitedIds, { + inputs: [], + }) }), TE.map((meta) => { // this is array of DataChain. - // the output `head` should have all the `head` outputs as inputs. + // the output `head` should have all the in-array `head` outputs as inputs. // the output `all` should have concatenation of alls, plus the new Head. const newStep = { @@ -92,18 +125,22 @@ function stepsForDoiRecursive( inputs: meta.reduce( (memo, c) => memo.concat(c.head.actions.reduce((m, a) => m.concat(a.outputs), [])), - [], + initialChain.head.inputs, ), } return { head: newStep, all: meta.reduce((m, c) => m.concat(c.all), []).concat([newStep]), + visitedIds: meta.reduce>( + (m, c) => new Set(...m, ...c.visitedIds), + initialChain.visitedIds, + ), } }), ) }), - TE.bind('completeChain', ({ w, prefixChain }) => { + TE.bind('postfixChain', ({ w, prefixChain }) => { const reviews = w.message.relation?.['has-review'] if (!reviews) { return TE.right(prefixChain) @@ -131,13 +168,58 @@ function stepsForDoiRecursive( }, ], })), - TE.chainEitherK((rs) => mapLeftToUnknownError(D.Step.decode(rs))), + TE.chainEitherK((rs) => pipe(rs, D.Step.decode, mapLeftToUnknownError('decoding step'))), TE.map((reviewStep) => ({ head: prefixChain.head, all: prefixChain.all.concat([reviewStep]), + // TODO: consider whether we want to include the review DOIs in the visitedIds + // - sometimes the Review is marked `is-review-of` both the preprint and manuscript + visitedIds: prefixChain.visitedIds, })), ) }), + TE.bind('completeChain', ({ w, postfixChain }) => { + const manuscripts = w.message.relation?.['is-preprint-of'] + if (!manuscripts) { + return TE.right(postfixChain) + } + + // 2. if this is a preprint of another manuscript recurse + return pipe( + manuscripts, + A.filter((wre) => { + return ( + wre['id-type'].toLowerCase() == 'doi' && + !postfixChain.visitedIds.has(wre['id'].toLowerCase()) + ) + }), + // get unique IDs + A.map((wre) => wre.id), + A.uniq(eqString), + TE.traverseArray((wreId) => { + return stepsForDoiRecursive(client, wreId, postfixChain.visitedIds, { + // all the outputs of all the actions of the head + inputs: postfixChain.head.actions.reduce((m, a) => m.concat(a.outputs), []), + }) + }), + TE.map((meta) => { + // this is array of DataChain. + // in this case, we are not manipulating the current head, instead + // we told the new heads that they have inputs. + // the output `all` should still have concatenation of alls. + + return { + head: postfixChain.head, + all: postfixChain.all.concat(meta.reduce((m, c) => m.concat(c.all), [])), + visitedIds: meta.reduce>( + (m, c) => new Set(...m, ...c.visitedIds), + postfixChain.visitedIds, + ), + } + }), + ) + }), + // we return a complete chain, but the head is dropped when recursion is finished and we just consider `all`. TE.map(({ completeChain }) => completeChain), ) @@ -150,7 +232,7 @@ export async function fetchPublicationByDoi( inputDoi: string, ): Promise { const resultTask = pipe( - stepsForDoiRecursive(client, inputDoi, 'published'), + stepsForDoiRecursive(client, inputDoi, new Set(), { inputs: [] }), TE.chain((steps) => { return pipe(stepArrayToDocmap(publisher, inputDoi, steps.all), TE.fromEither) }), diff --git a/packages/ts-etl/src/plugins/crossref/functions.ts b/packages/ts-etl/src/plugins/crossref/functions.ts index 9abce2ce..22bf2f1c 100644 --- a/packages/ts-etl/src/plugins/crossref/functions.ts +++ b/packages/ts-etl/src/plugins/crossref/functions.ts @@ -62,7 +62,9 @@ export function decodeActionForWork(work: Work): E.Either { type: 'person', name: nameForAuthor(a), })), - E.traverseArray((a) => mapLeftToUnknownError(D.Actor.decode(a))), + E.traverseArray((a) => + pipe(a, D.Actor.decode, mapLeftToUnknownError('decoding actor in decodeActionForWork')), + ), E.map((auths) => auths.map((a) => ({ actor: a, @@ -79,7 +81,7 @@ export function decodeActionForWork(work: Work): E.Either { outputs: [wo], }, D.Action.decode, - mapLeftToUnknownError, + mapLeftToUnknownError('decoding action in decodeActionForWork'), ), ), ) @@ -176,7 +178,7 @@ export function stepArrayToDocmap( 'first-step': '_:b0', steps: r, })), - E.chain((b) => pipe(b, D.Docmap.decode, mapLeftToUnknownError)), + E.chain((b) => pipe(b, D.Docmap.decode, mapLeftToUnknownError('decoding docmap'))), // requires to output Array of docmap E.map((d) => [d]), ) @@ -187,10 +189,7 @@ export function stepArrayToDocmap( * specifically, io-ts codecs are always of type Either, and that * validation error is not naturally upcastable to Error where we use Either. */ -export const mapLeftToUnknownError = E.mapLeft((e: unknown) => { - if (e instanceof Error) { - return e - } - - return new Error('unknown error', { cause: e }) -}) +export const mapLeftToUnknownError = (m = 'unknown error in @docmaps/etl') => + E.mapLeft((e: unknown) => { + return new Error(`error: ${m}`, { cause: e }) + }) diff --git a/packages/ts-etl/test/unit/__fixtures__/crossref.ts b/packages/ts-etl/test/unit/__fixtures__/crossref.ts index 7f9bf8f5..ee97f058 100644 --- a/packages/ts-etl/test/unit/__fixtures__/crossref.ts +++ b/packages/ts-etl/test/unit/__fixtures__/crossref.ts @@ -67,7 +67,7 @@ const PreprintItemBody = { }, ], }, - type: 'preprint', + type: 'posted-content', URL: `https://doi.org/${PREPRINT_DOI}`, // unimportant values for this test DOI: PREPRINT_DOI, @@ -164,7 +164,7 @@ export const mockCrossrefReviewsResponses: WorkMessage[] = [REVIEW_1_DOI, REVIEW ...GENERIC_WORK_DATA, URL: `https://doi.org/${doi}`, DOI: doi, - type: 'review', + type: 'peer-review', relation: { 'is-review-of': [ { @@ -194,7 +194,7 @@ export const mockCrossrefReviewsResponse: WorksMessage = { ...GENERIC_WORK_DATA, DOI: REVIEW_1_DOI, URL: `http://dx.doi.org/{REVIEW_1_DOI}`, - type: 'review', + type: 'peer-review', relation: { 'is-review-of': [ { @@ -209,7 +209,7 @@ export const mockCrossrefReviewsResponse: WorksMessage = { ...GENERIC_WORK_DATA, DOI: REVIEW_2_DOI, URL: `http://dx.doi.org/{REVIEW_2_DOI}`, - type: 'review', + type: 'peer-review', relation: { 'is-review-of': [ { diff --git a/packages/ts-etl/test/unit/command.test.ts b/packages/ts-etl/test/unit/command.test.ts index ef5e40ba..40f55b4a 100644 --- a/packages/ts-etl/test/unit/command.test.ts +++ b/packages/ts-etl/test/unit/command.test.ts @@ -4,8 +4,9 @@ import { ItemCmd } from '../../src/command' import { whenThenResolve } from './utils' import * as cm from './__fixtures__/crossref' -// TODO: decouple commands test from crossref test - +// This test is redundant with a test in the crossref case. Possibly there +// is no need for a test suite at this level as integration can handle it; +// however this asserts that the Cmd still passes through. test('ItemCmd: crossref: happy-path scenario: a manuscript with one preprint and no reviews', async (t) => { const mocks = cm.CrossrefClientMocks() whenThenResolve( @@ -46,130 +47,3 @@ test('ItemCmd: crossref: happy-path scenario: a manuscript with one preprint and t.deepEqual(dm.steps?.['_:b1']?.actions[0]?.outputs[0]?.doi, cm.MANUSCRIPT_DOI) //TODO: can write stronger assertions as we learn what this should look like }) - -test('ItemCmd: crossref: happy-path scenario: publisher is included', async (t) => { - const mocks = cm.CrossrefClientMocks() - whenThenResolve( - mocks.worksT.getWorks, - { doi: cm.MANUSCRIPT_DOI }, - cm.mockCrossrefManuscriptResponse, - ) - - const res = await ItemCmd([cm.MANUSCRIPT_DOI], { - source: { - preset: 'crossref-api', - client: mocks.crs, - }, - publisher: { - id: 'my_pub_id', - name: 'my_name', - }, - }) - - if (isLeft(res)) { - t.fail(`Got error instead of docmaps: ${res.left}`) - return - } - - t.is(res.right.length, 1) - const dm = res.right[0] - - // necessary because Typescript doesn't narrow down type of dm just because - // test failure guarantees we can't get here - if (!dm) { - t.fail('impossibly, we couldnt find the first docmap in a list of one') - return //necessary - } - - t.deepEqual(dm.type, 'docmap') - t.deepEqual(dm.publisher, { - id: 'my_pub_id', - name: 'my_name', - }) -}) - -test('ItemCmd: crossref: happy-path scenario: a manuscript with no relations', async (t) => { - const mocks = cm.CrossrefClientMocks() - whenThenResolve( - mocks.worksT.getWorks, - { doi: cm.MANUSCRIPT_DOI }, - cm.mockCrossrefManuscriptResponse, - ) - - const res = await ItemCmd([cm.MANUSCRIPT_DOI], { - source: { - preset: 'crossref-api', - client: mocks.crs, - }, - publisher: {}, - }) - - if (isLeft(res)) { - t.fail(`Got error instead of docmaps: ${res.left}`) - return - } - - t.is(res.right.length, 1) - const dm = res.right[0] - - // necessary because Typescript doesn't narrow down type of dm just because - // test failure guarantees we can't get here - if (!dm) { - t.fail('impossibly, we couldnt find the first docmap in a list of one') - return //necessary - } - - t.deepEqual(dm.type, 'docmap') - t.deepEqual(dm.steps?.['_:b0']?.inputs.length, 0) - t.deepEqual(dm.steps?.['_:b0']?.actions[0]?.outputs[0]?.doi, cm.MANUSCRIPT_DOI) -}) - -test('ItemCmd: crossref: happy-path scenario: a manuscript with 2 reviews and no preprint', async (t) => { - const mocks = cm.CrossrefClientMocks() - whenThenResolve( - mocks.worksT.getWorks, - { doi: cm.MANUSCRIPT_DOI }, - cm.mockCrossrefManuscriptWithReviewsResponse, - ) - // TODO - this implies each Review is fetched on its own - whenThenResolve( - mocks.worksT.getWorks, - { doi: cm.REVIEW_1_DOI }, - cm.mockCrossrefReviewsResponses[0], - ) - whenThenResolve( - mocks.worksT.getWorks, - { doi: cm.REVIEW_2_DOI }, - cm.mockCrossrefReviewsResponses[1], - ) - - const res = await ItemCmd([cm.MANUSCRIPT_DOI], { - source: { - preset: 'crossref-api', - client: mocks.crs, - }, - publisher: {}, - }) - - if (isLeft(res)) { - t.fail(`Got error instead of docmaps: ${res.left}`) - return - } - - t.is(res.right.length, 1) - const dm = res.right[0] - - // necessary because Typescript doesn't narrow down type of dm just because - // test failure guarantees we can't get here - if (!dm) { - t.fail('impossibly, we couldnt find the first docmap in a list of one') - return //necessary - } - - t.deepEqual(dm.type, 'docmap') - t.deepEqual(dm.steps?.['_:b0']?.inputs.length, 0) - t.deepEqual(dm.steps?.['_:b0']?.actions[0]?.outputs[0]?.doi, cm.MANUSCRIPT_DOI) - t.deepEqual(dm.steps?.['_:b1']?.inputs[0]?.doi, cm.MANUSCRIPT_DOI) - t.deepEqual(dm.steps?.['_:b1']?.actions[0]?.outputs[0]?.doi, cm.REVIEW_1_DOI) - t.deepEqual(dm.steps?.['_:b1']?.actions[1]?.outputs[0]?.doi, cm.REVIEW_2_DOI) -}) diff --git a/packages/ts-etl/test/unit/crossref/api.test.ts b/packages/ts-etl/test/unit/crossref/api.test.ts new file mode 100644 index 00000000..b0f36c25 --- /dev/null +++ b/packages/ts-etl/test/unit/crossref/api.test.ts @@ -0,0 +1,201 @@ +import test from 'ava' +import { isLeft, isRight } from 'fp-ts/lib/Either' +import { fetchPublicationByDoi } from '../../../src/plugins/crossref' +import { whenThenResolve } from '../utils' +import * as cm from '../__fixtures__/crossref' + +test('fetchPublicationByDoi: happy-path scenario: a manuscript with one preprint and no reviews', async (t) => { + const mocks = cm.CrossrefClientMocks() + whenThenResolve( + mocks.worksT.getWorks, + { doi: cm.MANUSCRIPT_DOI }, + cm.mockCrossrefManuscriptWithPreprintResponse, + ) + whenThenResolve(mocks.worksT.getWorks, { doi: cm.PREPRINT_DOI }, cm.mockCrossrefPreprintResponse) + + const res = await fetchPublicationByDoi(mocks.crs, {}, cm.MANUSCRIPT_DOI) + + if (isLeft(res)) { + t.fail(`Got error instead of docmaps: ${res.left}`) + return + } + + t.is(res.right.length, 1) + const dm = res.right[0] + + // necessary because Typescript doesn't narrow down type of dm just because + // test failure guarantees we can't get here + if (!dm) { + t.fail('impossibly, we couldnt find the first docmap in a list of one') + return //necessary + } + + t.deepEqual(dm.type, 'docmap') + t.is(dm.steps ? Object.keys(dm.steps).length : 0, 2) + t.is(dm.steps?.['_:b0']?.inputs.length, 0) + t.deepEqual(dm.steps?.['_:b0']?.actions[0]?.outputs[0]?.doi, cm.PREPRINT_DOI) + t.deepEqual(dm.steps?.['_:b1']?.inputs[0]?.doi, cm.PREPRINT_DOI) + t.deepEqual(dm.steps?.['_:b1']?.actions[0]?.outputs[0]?.doi, cm.MANUSCRIPT_DOI) + //TODO: can write stronger assertions as we learn what this should look like +}) +test('fetchPublicationByDoi: happy-path scenario: a manuscript discovered from its preprint', async (t) => { + const mocks = cm.CrossrefClientMocks() + whenThenResolve( + mocks.worksT.getWorks, + { doi: cm.MANUSCRIPT_DOI }, + cm.mockCrossrefManuscriptWithPreprintResponse, + ) + whenThenResolve(mocks.worksT.getWorks, { doi: cm.PREPRINT_DOI }, cm.mockCrossrefPreprintResponse) + + const res = await fetchPublicationByDoi(mocks.crs, {}, cm.PREPRINT_DOI) + + if (isLeft(res)) { + t.fail(`Got error instead of docmaps: ${res.left}`) + return + } + + t.is(res.right.length, 1) + const dm = res.right[0] + + // necessary because Typescript doesn't narrow down type of dm just because + // test failure guarantees we can't get here + if (!dm) { + t.fail('impossibly, we couldnt find the first docmap in a list of one') + return //necessary + } + + t.deepEqual(dm.type, 'docmap') + t.is(dm.steps ? Object.keys(dm.steps).length : 0, 2) + t.is(dm.steps?.['_:b0']?.inputs.length, 0) + t.deepEqual(dm.steps?.['_:b0']?.actions[0]?.outputs[0]?.doi, cm.PREPRINT_DOI) + t.deepEqual(dm.steps?.['_:b1']?.inputs[0]?.doi, cm.PREPRINT_DOI) + t.deepEqual(dm.steps?.['_:b1']?.actions[0]?.outputs[0]?.doi, cm.MANUSCRIPT_DOI) + //TODO: can write stronger assertions as we learn what this should look like +}) +test('fetchPublicationByDoi: happy-path scenario: publisher is included', async (t) => { + const mocks = cm.CrossrefClientMocks() + whenThenResolve( + mocks.worksT.getWorks, + { doi: cm.MANUSCRIPT_DOI }, + cm.mockCrossrefManuscriptResponse, + ) + + const publisher = { + id: 'my_pub_id', + name: 'my_name', + } + const res = await fetchPublicationByDoi(mocks.crs, publisher, cm.MANUSCRIPT_DOI) + + if (isLeft(res)) { + t.fail(`Got error instead of docmaps: ${res.left}`) + return + } + + t.is(res.right.length, 1) + const dm = res.right[0] + + // necessary because Typescript doesn't narrow down type of dm just because + // test failure guarantees we can't get here + if (!dm) { + t.fail('impossibly, we couldnt find the first docmap in a list of one') + return //necessary + } + + t.deepEqual(dm.type, 'docmap') + t.deepEqual(dm.publisher, { + id: 'my_pub_id', + name: 'my_name', + }) +}) + +test('fetchPublicationByDoi: happy-path scenario: a manuscript with no relations', async (t) => { + const mocks = cm.CrossrefClientMocks() + whenThenResolve( + mocks.worksT.getWorks, + { doi: cm.MANUSCRIPT_DOI }, + cm.mockCrossrefManuscriptResponse, + ) + + const res = await fetchPublicationByDoi(mocks.crs, {}, cm.MANUSCRIPT_DOI) + + if (isLeft(res)) { + t.fail(`Got error instead of docmaps: ${res.left}`) + return + } + + t.is(res.right.length, 1) + const dm = res.right[0] + + // necessary because Typescript doesn't narrow down type of dm just because + // test failure guarantees we can't get here + if (!dm) { + t.fail('impossibly, we couldnt find the first docmap in a list of one') + return //necessary + } + + t.deepEqual(dm.type, 'docmap') + t.deepEqual(dm.steps?.['_:b0']?.inputs.length, 0) + t.deepEqual(dm.steps?.['_:b0']?.actions[0]?.outputs[0]?.doi, cm.MANUSCRIPT_DOI) +}) + +test('fetchPublicationByDoi: happy-path scenario: a manuscript with 2 reviews and no preprint', async (t) => { + const mocks = cm.CrossrefClientMocks() + whenThenResolve( + mocks.worksT.getWorks, + { doi: cm.MANUSCRIPT_DOI }, + cm.mockCrossrefManuscriptWithReviewsResponse, + ) + // TODO - this implies each Review is fetched on its own + whenThenResolve( + mocks.worksT.getWorks, + { doi: cm.REVIEW_1_DOI }, + cm.mockCrossrefReviewsResponses[0], + ) + whenThenResolve( + mocks.worksT.getWorks, + { doi: cm.REVIEW_2_DOI }, + cm.mockCrossrefReviewsResponses[1], + ) + + const res = await fetchPublicationByDoi(mocks.crs, {}, cm.MANUSCRIPT_DOI) + + if (isLeft(res)) { + t.fail(`Got error instead of docmaps: ${res.left}`) + return + } + + t.is(res.right.length, 1) + const dm = res.right[0] + + // necessary because Typescript doesn't narrow down type of dm just because + // test failure guarantees we can't get here + if (!dm) { + t.fail('impossibly, we couldnt find the first docmap in a list of one') + return //necessary + } + + t.deepEqual(dm.type, 'docmap') + t.deepEqual(dm.steps?.['_:b0']?.inputs.length, 0) + t.deepEqual(dm.steps?.['_:b0']?.actions[0]?.outputs[0]?.doi, cm.MANUSCRIPT_DOI) + t.deepEqual(dm.steps?.['_:b1']?.inputs[0]?.doi, cm.MANUSCRIPT_DOI) + t.deepEqual(dm.steps?.['_:b1']?.actions[0]?.outputs[0]?.doi, cm.REVIEW_1_DOI) + t.deepEqual(dm.steps?.['_:b1']?.actions[1]?.outputs[0]?.doi, cm.REVIEW_2_DOI) +}) + +test('fetchPublicationByDoi: error case: looking up a crossref work of wrong type', async (t) => { + const mocks = cm.CrossrefClientMocks() + whenThenResolve( + mocks.worksT.getWorks, + { doi: cm.REVIEW_1_DOI }, + cm.mockCrossrefReviewsResponses[0], + ) + + const res = await fetchPublicationByDoi(mocks.crs, {}, cm.REVIEW_1_DOI) + + if (isRight(res)) { + t.fail(`Got docmaps instead of error: ${res.right}`) + return + } + + t.regex(res.left.message, /requested root docmap for crossref entity of type 'peer-review'/) +}) diff --git a/packages/ts-sdk/src/types.ts b/packages/ts-sdk/src/types.ts index cd5053c0..d83becb4 100644 --- a/packages/ts-sdk/src/types.ts +++ b/packages/ts-sdk/src/types.ts @@ -56,6 +56,7 @@ export const Publisher = t.intersection([ export const Manifestation = t.intersection([ t.type({ // TODO: this looks like it might need to be an AnyType or something. Manifestations are extensive. + // - we are at least aware of EMBO using `type: text`. type: arrayOrOneOf([ 'web-page', // correctly used by eLife ]), diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bc5aa8cb..19d2dbac 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -24,6 +24,45 @@ importers: rdf-ext: 2.2.0 rdf-validate-shacl: 0.4.5 + packages/spa: + specifiers: + '@docmaps/etl': workspace:^0.1.2 + '@rollup/plugin-commonjs': ^24.1.0 + '@rollup/plugin-node-resolve': ^15.1.0 + '@rollup/plugin-terser': ^0.4.3 + '@source-data/render-rev': github:source-data/render-rev + '@spider-ui/global-event-registry': ^0.2.7 + docmaps-sdk: ^0.5.1 + fp-ts: ^2.16.0 + prismjs: ^1.29.0 + rollup: ^3.23.0 + rollup-plugin-css-only: ^4.3.0 + rollup-plugin-livereload: ^2.0.5 + rollup-plugin-polyfill-node: ^0.12.0 + rollup-plugin-svelte: ^7.1.5 + sirv-cli: ^2.0.2 + svelte: ^3.59.1 + upgraded-element: ^0.6.5 + dependencies: + '@docmaps/etl': link:../ts-etl + '@source-data/render-rev': github.com/source-data/render-rev/e77d8a0840fa6a33ea6663aa57dee6ff0930faed_en4jrmmtiggxba5g6f4h6b5bdu + '@spider-ui/global-event-registry': 0.2.7 + docmaps-sdk: 0.5.1 + fp-ts: 2.16.0 + prismjs: 1.29.0 + sirv-cli: 2.0.2 + upgraded-element: 0.6.5 + devDependencies: + '@rollup/plugin-commonjs': 24.1.0_rollup@3.23.0 + '@rollup/plugin-node-resolve': 15.1.0_rollup@3.23.0 + '@rollup/plugin-terser': 0.4.3_rollup@3.23.0 + rollup: 3.23.0 + rollup-plugin-css-only: 4.3.0_rollup@3.23.0 + rollup-plugin-livereload: 2.0.5 + rollup-plugin-polyfill-node: 0.12.0_rollup@3.23.0 + rollup-plugin-svelte: 7.1.5_sz7s4dmjv6zmjgdyx7w7zqtk6e + svelte: 3.59.1 + packages/ts-etl: specifiers: '@commander-js/extra-typings': ^10.0.3 @@ -155,8 +194,8 @@ packages: js-tokens: 4.0.0 dev: false - /@babel/runtime/7.21.0: - resolution: {integrity: sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==} + /@babel/runtime/7.22.3: + resolution: {integrity: sha512-XsDuspWKLUsxwCp6r7EhsExHtYfbe5oAGQ19kqngTdCPUoPQzOPdUbD/pB9PJiwb2ptYKQDjSJT3R6dC+EPqfQ==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.13.11 @@ -195,13 +234,13 @@ packages: '@jridgewell/trace-mapping': 0.3.9 dev: true - /@digitalbazaar/http-client/3.4.0: - resolution: {integrity: sha512-B/T3Xlo5UjPkoAqX/DQOAF2D5khgNZJZhoQ1d1b3ykYd2XnwOQ6srz1T+SsWVfjbXyLajN7j/nfKy7QiUofN+A==} + /@digitalbazaar/http-client/3.4.1: + resolution: {integrity: sha512-Ahk1N+s7urkgj7WvvUND5f8GiWEPfUw0D41hdElaqLgu8wZScI8gdI0q+qWw5N1d35x7GCRH2uk9mi+Uzo9M3g==} engines: {node: '>=14.0'} dependencies: ky: 0.33.3 ky-universal: 0.11.0_ky@0.33.3 - undici: 5.21.2 + undici: 5.22.1 transitivePeerDependencies: - web-streams-polyfill dev: false @@ -290,15 +329,52 @@ packages: /@humanwhocodes/object-schema/1.2.1: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + /@jridgewell/gen-mapping/0.3.3: + resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.18 + dev: true + + /@jridgewell/resolve-uri/3.1.0: + resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} + engines: {node: '>=6.0.0'} + dev: true + /@jridgewell/resolve-uri/3.1.1: resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} engines: {node: '>=6.0.0'} dev: true + /@jridgewell/set-array/1.1.2: + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/source-map/0.3.3: + resolution: {integrity: sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==} + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.18 + dev: true + + /@jridgewell/sourcemap-codec/1.4.14: + resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} + dev: true + /@jridgewell/sourcemap-codec/1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} dev: true + /@jridgewell/trace-mapping/0.3.18: + resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} + dependencies: + '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/sourcemap-codec': 1.4.14 + dev: true + /@jridgewell/trace-mapping/0.3.9: resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} dependencies: @@ -306,6 +382,16 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 dev: true + /@lit-labs/ssr-dom-shim/1.1.1: + resolution: {integrity: sha512-kXOeFbfCm4fFf2A3WwVEeQj55tMZa8c8/f9AKHMobQMkzNUfUj+antR3fRPaZJawsa1aZiP/Da3ndpZrwEe4rQ==} + dev: false + + /@lit/reactive-element/1.6.1: + resolution: {integrity: sha512-va15kYZr7KZNNPZdxONGQzpUr+4sxVu7V/VG7a8mRfPPXUyhEYj5RzXCQmGrlP3tAh0L3HHm5AjBMFYRqlM9SA==} + dependencies: + '@lit-labs/ssr-dom-shim': 1.1.1 + dev: false + /@manypkg/cli/0.20.0: resolution: {integrity: sha512-xOAyzHp4cF6+1VxCeVi14k4WJBbKAExuYVA+wXlCHPLoTUv64D2HQrLUOFO8bXtzW9KFhGhdP2xGFq9n9rSDiw==} engines: {node: '>=14.18.0'} @@ -329,7 +415,7 @@ packages: /@manypkg/find-root/1.1.0: resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.22.3 '@types/node': 12.20.55 find-up: 4.1.0 fs-extra: 8.1.0 @@ -348,11 +434,11 @@ packages: /@manypkg/get-packages/1.1.3: resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.22.3 '@changesets/types': 4.1.0 '@manypkg/find-root': 1.1.0 fs-extra: 8.1.0 - globby: 11.1.0 + globby: 11.0.4 read-yaml-file: 1.1.0 dev: false @@ -396,18 +482,18 @@ packages: resolution: {integrity: sha512-/aFM2M4HVDBT/jjDBa84sJniv1t9Gm/rLkalaz9htOm+L+8JMj1k9w0CkUdcxNyNxZPlTxKPVko+m1VlM58ZVA==} engines: {node: '>= 14'} dependencies: - '@octokit/types': 9.0.0 + '@octokit/types': 9.2.3 dev: false - /@octokit/core/4.2.0: - resolution: {integrity: sha512-AgvDRUg3COpR82P7PBdGZF/NNqGmtMq2NiPqeSsDIeCfYFOZ9gddqWNQHnFdEUf+YwOj4aZYmJnlPp7OXmDIDg==} + /@octokit/core/4.2.1: + resolution: {integrity: sha512-tEDxFx8E38zF3gT7sSMDrT1tGumDgsw5yPG6BBh/X+5ClIQfMH/Yqocxz1PnHx6CHyF6pxmovUTOfZAUvQ0Lvw==} engines: {node: '>= 14'} dependencies: '@octokit/auth-token': 3.0.3 - '@octokit/graphql': 5.0.5 - '@octokit/request': 6.2.3 + '@octokit/graphql': 5.0.6 + '@octokit/request': 6.2.5 '@octokit/request-error': 3.0.3 - '@octokit/types': 9.0.0 + '@octokit/types': 9.2.3 before-after-hook: 2.2.3 universal-user-agent: 6.0.0 transitivePeerDependencies: @@ -418,94 +504,90 @@ packages: resolution: {integrity: sha512-LG4o4HMY1Xoaec87IqQ41TQ+glvIeTKqfjkCEmt5AIwDZJwQeVZFIEYXrYY6yLwK+pAScb9Gj4q+Nz2qSw1roA==} engines: {node: '>= 14'} dependencies: - '@octokit/types': 9.0.0 + '@octokit/types': 9.2.3 is-plain-object: 5.0.0 universal-user-agent: 6.0.0 dev: false - /@octokit/graphql/5.0.5: - resolution: {integrity: sha512-Qwfvh3xdqKtIznjX9lz2D458r7dJPP8l6r4GQkIdWQouZwHQK0mVT88uwiU2bdTU2OtT1uOlKpRciUWldpG0yQ==} + /@octokit/graphql/5.0.6: + resolution: {integrity: sha512-Fxyxdy/JH0MnIB5h+UQ3yCoh1FG4kWXfFKkpWqjZHw/p+Kc8Y44Hu/kCgNBT6nU1shNumEchmW/sUO1JuQnPcw==} engines: {node: '>= 14'} dependencies: - '@octokit/request': 6.2.3 - '@octokit/types': 9.0.0 + '@octokit/request': 6.2.5 + '@octokit/types': 9.2.3 universal-user-agent: 6.0.0 transitivePeerDependencies: - encoding dev: false - /@octokit/openapi-types/16.0.0: - resolution: {integrity: sha512-JbFWOqTJVLHZSUUoF4FzAZKYtqdxWu9Z5m2QQnOyEa04fOFljvyh7D3GYKbfuaSWisqehImiVIMG4eyJeP5VEA==} + /@octokit/openapi-types/17.2.0: + resolution: {integrity: sha512-MazrFNx4plbLsGl+LFesMo96eIXkFgEtaKbnNpdh4aQ0VM10aoylFsTYP1AEjkeoRNZiiPe3T6Gl2Hr8dJWdlQ==} dev: false - /@octokit/plugin-paginate-rest/6.0.0_@octokit+core@4.2.0: - resolution: {integrity: sha512-Sq5VU1PfT6/JyuXPyt04KZNVsFOSBaYOAq2QRZUwzVlI10KFvcbUo8lR258AAQL1Et60b0WuVik+zOWKLuDZxw==} + /@octokit/plugin-paginate-rest/6.1.2_@octokit+core@4.2.1: + resolution: {integrity: sha512-qhrmtQeHU/IivxucOV1bbI/xZyC/iOBhclokv7Sut5vnejAIAEXVcGQeRpQlU39E0WwK9lNvJHphHri/DB6lbQ==} engines: {node: '>= 14'} peerDependencies: '@octokit/core': '>=4' dependencies: - '@octokit/core': 4.2.0 - '@octokit/types': 9.0.0 + '@octokit/core': 4.2.1 + '@octokit/tsconfig': 1.0.2 + '@octokit/types': 9.2.3 dev: false - /@octokit/plugin-request-log/1.0.4_@octokit+core@4.2.0: - resolution: {integrity: sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==} + /@octokit/plugin-retry/4.1.3_@octokit+core@4.2.1: + resolution: {integrity: sha512-3YKBj7d0J/4mpEc4xzMociWsMNl5lZqrpAnYcW6mqiSGF3wFjU+c6GHih6GLClk31JNvKDr0x9jc5cfm7evkZg==} + engines: {node: '>= 14'} peerDependencies: '@octokit/core': '>=3' dependencies: - '@octokit/core': 4.2.0 + '@octokit/core': 4.2.1 + '@octokit/types': 9.2.3 + bottleneck: 2.19.5 dev: false - /@octokit/plugin-rest-endpoint-methods/7.0.1_@octokit+core@4.2.0: - resolution: {integrity: sha512-pnCaLwZBudK5xCdrR823xHGNgqOzRnJ/mpC/76YPpNP7DybdsJtP7mdOwh+wYZxK5jqeQuhu59ogMI4NRlBUvA==} + /@octokit/plugin-throttling/5.2.3_@octokit+core@4.2.1: + resolution: {integrity: sha512-C9CFg9mrf6cugneKiaI841iG8DOv6P5XXkjmiNNut+swePxQ7RWEdAZRp5rJoE1hjsIqiYcKa/ZkOQ+ujPI39Q==} engines: {node: '>= 14'} peerDependencies: - '@octokit/core': '>=3' + '@octokit/core': ^4.0.0 dependencies: - '@octokit/core': 4.2.0 - '@octokit/types': 9.0.0 - deprecation: 2.3.1 + '@octokit/core': 4.2.1 + '@octokit/types': 9.2.3 + bottleneck: 2.19.5 dev: false /@octokit/request-error/3.0.3: resolution: {integrity: sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==} engines: {node: '>= 14'} dependencies: - '@octokit/types': 9.0.0 + '@octokit/types': 9.2.3 deprecation: 2.3.1 once: 1.4.0 dev: false - /@octokit/request/6.2.3: - resolution: {integrity: sha512-TNAodj5yNzrrZ/VxP+H5HiYaZep0H3GU0O7PaF+fhDrt8FPrnkei9Aal/txsN/1P7V3CPiThG0tIvpPDYUsyAA==} + /@octokit/request/6.2.5: + resolution: {integrity: sha512-z83E8UIlPNaJUsXpjD8E0V5o/5f+vJJNbNcBwVZsX3/vC650U41cOkTLjq4PKk9BYonQGOnx7N17gvLyNjgGcQ==} engines: {node: '>= 14'} dependencies: '@octokit/endpoint': 7.0.5 '@octokit/request-error': 3.0.3 - '@octokit/types': 9.0.0 + '@octokit/types': 9.2.3 is-plain-object: 5.0.0 - node-fetch: 2.6.7 + node-fetch: 2.6.11 universal-user-agent: 6.0.0 transitivePeerDependencies: - encoding dev: false - /@octokit/rest/19.0.7: - resolution: {integrity: sha512-HRtSfjrWmWVNp2uAkEpQnuGMJsu/+dBr47dRc5QVgsCbnIc1+GFEaoKBWkYG+zjrsHpSqcAElMio+n10c0b5JA==} - engines: {node: '>= 14'} - dependencies: - '@octokit/core': 4.2.0 - '@octokit/plugin-paginate-rest': 6.0.0_@octokit+core@4.2.0 - '@octokit/plugin-request-log': 1.0.4_@octokit+core@4.2.0 - '@octokit/plugin-rest-endpoint-methods': 7.0.1_@octokit+core@4.2.0 - transitivePeerDependencies: - - encoding + /@octokit/tsconfig/1.0.2: + resolution: {integrity: sha512-I0vDR0rdtP8p2lGMzvsJzbhdOWy405HcGovrspJ8RRibHnyRgggUSNO5AIox5LmqiwmatHKYsvj6VGFHkqS7lA==} dev: false - /@octokit/types/9.0.0: - resolution: {integrity: sha512-LUewfj94xCMH2rbD5YJ+6AQ4AVjFYTgpp6rboWM5T7N3IsIF65SBEOVcYMGAEzO/kKNiNaW4LoWtoThOhH06gw==} + /@octokit/types/9.2.3: + resolution: {integrity: sha512-MMeLdHyFIALioycq+LFcA71v0S2xpQUX2cw6pPbHQjaibcHYwLnmK/kMZaWuGfGfjBJZ3wRUq+dOaWsvrPJVvA==} dependencies: - '@octokit/openapi-types': 16.0.0 + '@octokit/openapi-types': 17.2.0 dev: false /@pnpm/config.env-replace/1.1.0: @@ -520,8 +602,8 @@ packages: graceful-fs: 4.2.10 dev: false - /@pnpm/npm-conf/2.1.1: - resolution: {integrity: sha512-yfRcuupmxxeDOSxvw4g+wFCrGiPD0L32f5WMzqMXp7Rl93EOCdFiDcaSNnZ10Up9GdNqkj70UTa8hfhPFphaZA==} + /@pnpm/npm-conf/2.2.0: + resolution: {integrity: sha512-roLI1ul/GwzwcfcVpZYPdrgW2W/drLriObl1h+yLF5syc8/5ULWw2ALbCHUWF+4YltIqA3xFSbG4IwyJz37e9g==} engines: {node: '>=12'} dependencies: '@pnpm/config.env-replace': 1.1.0 @@ -529,6 +611,10 @@ packages: config-chain: 1.1.13 dev: false + /@polka/url/1.0.0-next.21: + resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==} + dev: false + /@rdfjs/data-model/1.3.4: resolution: {integrity: sha512-iKzNcKvJotgbFDdti7GTQDCYmL7GsGldkYStiP0K8EYtN7deJu5t7U11rKTz+nR7RtesUggT+lriZ7BakFv8QQ==} hasBin: true @@ -566,7 +652,7 @@ packages: dependencies: is-stream: 3.0.0 nodeify-fetch: 3.1.0 - readable-stream: 4.3.0 + readable-stream: 4.4.0 /@rdfjs/formats-common/3.1.0: resolution: {integrity: sha512-wgz5za/Uls+pttLdLl/aH0m0LQNgjqpWwk9exNs2Smmb2CosynRo4S0+CxeNOVZh4zeUm7oAlr1CK/tyg4Ff6g==} @@ -596,7 +682,7 @@ packages: resolution: {integrity: sha512-jOSdIKz9r/oPI9nuWXMTYzFaCbrFQj9qEOPdqs1/7oAR1JTvqpS69HVZPkVqbH+WhL52PJbBXyA5QadoyNLgpQ==} engines: {node: '>= 14.0.0'} dependencies: - rdf-canonize: 3.3.0 + rdf-canonize: 3.4.0 /@rdfjs/parser-jsonld/2.1.0: resolution: {integrity: sha512-RdulIDLGFNJljM28IDjdeEtMnY7QGlOGvAZebSNM6FhGfp1FsRYvr+5yQRKrpSHHfM97vKyHOyKis1MT8f3IfQ==} @@ -605,7 +691,7 @@ packages: '@rdfjs/sink': 2.0.0 duplex-to: 2.0.0 jsonld-streaming-parser: 3.2.0 - readable-stream: 4.3.0 + readable-stream: 4.4.0 transitivePeerDependencies: - encoding dev: false @@ -617,12 +703,12 @@ packages: '@rdfjs/sink': 2.0.0 duplex-to: 2.0.0 n3: 1.16.4 - readable-stream: 4.3.0 + readable-stream: 4.4.0 /@rdfjs/prefix-map/0.1.1: resolution: {integrity: sha512-w9VrJ/YfMyvdcpuKG0XEzgbH6AXtUSugvgL1U1IvbTYdL2rfIifaYkSyp86lEhD2hHeYUYAGZTKkpDErtXCMxQ==} dependencies: - readable-stream: 4.3.0 + readable-stream: 4.4.0 /@rdfjs/score/0.1.1: resolution: {integrity: sha512-+t9Sf5nFUJTvH8X2Xy7H+egLKIyVCwlDzCGrWThSrSCmIENcC9n3+GkMMImnsmYDeSXaWi3awcI1f1TmA84FIQ==} @@ -636,8 +722,8 @@ packages: resolution: {integrity: sha512-HP5DCmhyfVuQuk58AO5vzNY+dIFVHe2oHY8NX2K+3XmrTmu/yzrFzPbDeU9Cwr71XC4RifEMoksIg+8jnhxmfQ==} dependencies: '@rdfjs/sink': 2.0.0 - jsonld: 8.1.1 - readable-stream: 4.3.0 + jsonld: 8.2.0 + readable-stream: 4.4.0 stream-chunks: 1.0.0 transitivePeerDependencies: - web-streams-polyfill @@ -647,7 +733,7 @@ packages: resolution: {integrity: sha512-JGk17iT5QW1FpTI8SBruXIcYQFuuUwqurByNndWTE4k0zrNzvwrfOtsd6lIMthlubWVTfBAhV7mHDSwtMHdHQg==} dependencies: '@rdfjs/sink': 2.0.0 - readable-stream: 4.3.0 + readable-stream: 4.4.0 dev: false /@rdfjs/serializer-ntriples/2.0.0: @@ -655,7 +741,7 @@ packages: dependencies: '@rdfjs/to-ntriples': 2.0.0 duplex-to: 2.0.0 - readable-stream: 4.3.0 + readable-stream: 4.4.0 dev: false /@rdfjs/serializer-turtle/1.1.1: @@ -668,7 +754,7 @@ packages: '@rdfjs/term-map': 2.0.0 '@rdfjs/to-ntriples': 2.0.0 '@rdfjs/tree': 0.2.0 - readable-stream: 4.3.0 + readable-stream: 4.4.0 stream-chunks: 1.0.0 dev: false @@ -697,8 +783,10 @@ packages: /@rdfjs/to-ntriples/2.0.0: resolution: {integrity: sha512-nDhpfhx6W6HKsy4HjyLp3H1nbrX1CiUCWhWQwKcYZX1s9GOjcoQTwY7GUUbVec0hzdJDQBR6gnjxtENBDt482Q==} - /@rdfjs/traverser/0.1.1: - resolution: {integrity: sha512-zyVuur2dS5cceUPjIh0TNS7GsmvEHaSqb5Sw5yxS4mDOun1X35FObNEezksbGpc2KzcDTJJV8V2SLr397lAGug==} + /@rdfjs/traverser/0.1.2: + resolution: {integrity: sha512-EBB/p9LrTMzupZ6VlxtBXyL0bdXFY7e5lAp2tHNwxOoe3kcR6hOJFVWdPT7pdWaSotyXbTIEQxG4PkXMw/OY7w==} + dependencies: + '@rdfjs/to-ntriples': 2.0.0 /@rdfjs/tree/0.2.0: resolution: {integrity: sha512-KhtzoHPDDvIYJLS2r4u1EL1TErmoRzI/6JThcf4RqwZNVCh9WrjrZedMvOcvl47Rawlrgjnt73uQtTa3RcbMzQ==} @@ -711,7 +799,96 @@ packages: /@rdfjs/types/1.1.0: resolution: {integrity: sha512-5zm8bN2/CC634dTcn/0AhTRLaQRjXDZs3QfcAsQKNturHT7XVWcKy/8p3P5gXl+YkZTAmy7T5M/LyiT/jbkENw==} dependencies: - '@types/node': 18.16.7 + '@types/node': 20.2.5 + + /@rollup/plugin-commonjs/24.1.0_rollup@3.23.0: + resolution: {integrity: sha512-eSL45hjhCWI0jCCXcNtLVqM5N1JlBGvlFfY0m6oOYnLCJ6N0qEXoZql4sY2MOUArzhH4SA/qBpTxvvZp2Sc+DQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.68.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@rollup/pluginutils': 5.0.2_rollup@3.23.0 + commondir: 1.0.1 + estree-walker: 2.0.2 + glob: 8.1.0 + is-reference: 1.2.1 + magic-string: 0.27.0 + rollup: 3.23.0 + dev: true + + /@rollup/plugin-inject/5.0.3_rollup@3.23.0: + resolution: {integrity: sha512-411QlbL+z2yXpRWFXSmw/teQRMkXcAAC8aYTemc15gwJRpvEVDQwoe+N/HTFD8RFG8+88Bme9DK2V9CVm7hJdA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@rollup/pluginutils': 5.0.2_rollup@3.23.0 + estree-walker: 2.0.2 + magic-string: 0.27.0 + rollup: 3.23.0 + dev: true + + /@rollup/plugin-node-resolve/15.1.0_rollup@3.23.0: + resolution: {integrity: sha512-xeZHCgsiZ9pzYVgAo9580eCGqwh/XCEUM9q6iQfGNocjgkufHAqC3exA+45URvhiYV8sBF9RlBai650eNs7AsA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.78.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@rollup/pluginutils': 5.0.2_rollup@3.23.0 + '@types/resolve': 1.20.2 + deepmerge: 4.3.1 + is-builtin-module: 3.2.1 + is-module: 1.0.0 + resolve: 1.22.2 + rollup: 3.23.0 + dev: true + + /@rollup/plugin-terser/0.4.3_rollup@3.23.0: + resolution: {integrity: sha512-EF0oejTMtkyhrkwCdg0HJ0IpkcaVg1MMSf2olHb2Jp+1mnLM04OhjpJWGma4HobiDTF0WCyViWuvadyE9ch2XA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.x || ^3.x + peerDependenciesMeta: + rollup: + optional: true + dependencies: + rollup: 3.23.0 + serialize-javascript: 6.0.1 + smob: 1.4.0 + terser: 5.17.7 + dev: true + + /@rollup/pluginutils/4.2.1: + resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} + engines: {node: '>= 8.0.0'} + dependencies: + estree-walker: 2.0.2 + picomatch: 2.3.1 + dev: true + + /@rollup/pluginutils/5.0.2_rollup@3.23.0: + resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@types/estree': 1.0.1 + estree-walker: 2.0.2 + picomatch: 2.3.1 + rollup: 3.23.0 + dev: true /@semantic-release/commit-analyzer/9.0.2_semantic-release@19.0.5: resolution: {integrity: sha512-E+dr6L+xIHZkX4zNMe6Rnwg4YQrWNXK+rNsvwOPpdFppvZO1olE2fIgWhv89TkQErygevbjsZFSIxp+u6w2e5g==} @@ -736,27 +913,28 @@ packages: engines: {node: '>=14.17'} dev: false - /@semantic-release/github/8.0.7_semantic-release@19.0.5: - resolution: {integrity: sha512-VtgicRIKGvmTHwm//iqTh/5NGQwsncOMR5vQK9pMT92Aem7dv37JFKKRuulUsAnUOIlO4G8wH3gPiBAA0iW0ww==} + /@semantic-release/github/8.1.0_semantic-release@19.0.5: + resolution: {integrity: sha512-erR9E5rpdsz0dW1I7785JtndQuMWN/iDcemcptf67tBNOmBUN0b2YNOgcjYUnBpgRpZ5ozfBHrK7Bz+2ets/Dg==} engines: {node: '>=14.17'} peerDependencies: semantic-release: '>=18.0.0-beta.1' dependencies: - '@octokit/rest': 19.0.7 + '@octokit/core': 4.2.1 + '@octokit/plugin-paginate-rest': 6.1.2_@octokit+core@4.2.1 + '@octokit/plugin-retry': 4.1.3_@octokit+core@4.2.1 + '@octokit/plugin-throttling': 5.2.3_@octokit+core@4.2.1 '@semantic-release/error': 3.0.0 aggregate-error: 3.1.0 - bottleneck: 2.19.5 debug: 4.3.4 dir-glob: 3.0.1 fs-extra: 11.1.1 - globby: 11.1.0 - http-proxy-agent: 5.0.0 - https-proxy-agent: 5.0.1 + globby: 11.0.4 + http-proxy-agent: 7.0.0 + https-proxy-agent: 7.0.0 issue-parser: 6.0.0 lodash: 4.17.21 mime: 3.0.0 p-filter: 2.1.0 - p-retry: 4.6.2 semantic-release: 19.0.5 url-join: 4.0.1 transitivePeerDependencies: @@ -782,7 +960,7 @@ packages: read-pkg: 5.2.0 registry-auth-token: 5.0.2 semantic-release: 19.0.5 - semver: 7.4.0 + semver: 7.5.1 tempy: 1.0.1 dev: false @@ -812,6 +990,20 @@ packages: engines: {node: '>=6'} dev: false + /@spider-ui/global-event-registry/0.2.7: + resolution: {integrity: sha512-HXmMcZ/swKb2wC2JUbU4eRM9e9fOVZ/b8ExkNEUa04R+148KUAo36vd+UnmnpVgGQXVBB/pBL1yVIfC1CwZ+yg==} + dev: false + + /@spider-ui/tooltip/0.2.7_en4jrmmtiggxba5g6f4h6b5bdu: + resolution: {integrity: sha512-TPIRqJGf4Re5uT7SEhurK0Wxyp8/9stQEbgR3MJ2NlDspau3Wx+V+7vZpeEk0SFQgD2d68779QzB5sdnQrWGQA==} + peerDependencies: + '@spider-ui/global-event-registry': '>= 0.2.3' + upgraded-element: '>= 0.4.3' + dependencies: + '@spider-ui/global-event-registry': 0.2.7 + upgraded-element: 0.6.5 + dev: false + /@szmarczak/http-timer/1.1.2: resolution: {integrity: sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==} engines: {node: '>=6'} @@ -819,11 +1011,6 @@ packages: defer-to-connect: 1.1.3 dev: false - /@tootallnate/once/2.0.0: - resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} - engines: {node: '>= 10'} - dev: false - /@tsconfig/node-lts-strictest-esm/18.12.1: resolution: {integrity: sha512-LvBLmaC6Q/txTddLc11OeMHF9XjJFzlilkETJuvBlUvHy9pPiMsoH3nxWZM1FMSO53zp4mJP6gzOzxKEq0me7Q==} deprecated: TypeScript 5.0 supports combining TSConfigs using array syntax in extends @@ -851,10 +1038,14 @@ packages: rdf-js: 4.0.2 dev: true + /@types/estree/1.0.1: + resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} + dev: true + /@types/http-link-header/1.0.3: resolution: {integrity: sha512-y8HkoD/vyid+5MrJ3aas0FvU3/BVBGcyG9kgxL0Zn4JwstA8CglFPnrR0RuzOjRCXwqzL5uxWC2IO7Ub0rMU2A==} dependencies: - '@types/node': 18.16.7 + '@types/node': 20.2.5 dev: false /@types/json-schema/7.0.11: @@ -868,7 +1059,7 @@ packages: /@types/keyv/3.1.4: resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} dependencies: - '@types/node': 18.16.7 + '@types/node': 20.2.5 dev: false /@types/minimist/1.2.2: @@ -886,8 +1077,16 @@ packages: resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} dev: false + /@types/node/18.16.16: + resolution: {integrity: sha512-NpaM49IGQQAUlBhHMF82QH80J08os4ZmyF9MkpCzWAGuOHqE4gTEbhzd7L3l5LmWuZ6E0OiC1FweQ4tsiW35+g==} + dev: false + /@types/node/18.16.7: resolution: {integrity: sha512-MFg7ua/bRtnA1hYE3pVyWxGd/r7aMqjNOdHvlSsXV3n8iaeGKkOaPzpJh6/ovf4bEXWcojkeMJpTsq3mzXW4IQ==} + dev: true + + /@types/node/20.2.5: + resolution: {integrity: sha512-JJulVEQXmiY9Px5axXHeYGLSjhkZEnD+MDPDGbCbIAbMslkKwmygtZFy1X6s/075Yo94sf8GuSlFfPzysQrWZQ==} /@types/normalize-package-data/2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} @@ -1008,17 +1207,17 @@ packages: /@types/readable-stream/2.3.15: resolution: {integrity: sha512-oM5JSKQCcICF1wvGgmecmHldZ48OZamtMxcGGVICOJA8o8cahXC1zEVAif8iwoc5j8etxFaRFnf095+CDsuoFQ==} dependencies: - '@types/node': 18.16.7 + '@types/node': 20.2.5 safe-buffer: 5.1.2 + /@types/resolve/1.20.2: + resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} + dev: true + /@types/responselike/1.0.0: resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} dependencies: - '@types/node': 18.16.7 - dev: false - - /@types/retry/0.12.0: - resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} + '@types/node': 20.2.5 dev: false /@types/semver/6.2.3: @@ -1029,6 +1228,10 @@ packages: resolution: {integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==} dev: true + /@types/trusted-types/2.0.3: + resolution: {integrity: sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==} + dev: false + /@typescript-eslint/eslint-plugin/5.59.5_jdo46vuzdvtqioigt7za7mzwma: resolution: {integrity: sha512-feA9xbVRWJZor+AnLNAr7A8JRWeZqHUf4T9tlP+TN04b05pFVhO5eN7/O93Y/1OUlLMHKbnJisgDURs/qvtqdg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1206,9 +1409,9 @@ packages: hasBin: true dev: true - /agent-base/6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} + /agent-base/7.1.0: + resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} + engines: {node: '>= 14'} dependencies: debug: 4.3.4 transitivePeerDependencies: @@ -1253,11 +1456,11 @@ packages: engines: {node: '>=6'} dev: false - /ansi-escapes/5.0.0: - resolution: {integrity: sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==} - engines: {node: '>=12'} + /ansi-escapes/6.2.0: + resolution: {integrity: sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw==} + engines: {node: '>=14.16'} dependencies: - type-fest: 1.4.0 + type-fest: 3.11.1 dev: false /ansi-regex/5.0.1: @@ -1475,18 +1678,33 @@ packages: balanced-match: 1.0.2 concat-map: 0.0.1 + /brace-expansion/2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + dev: true + /braces/3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} dependencies: fill-range: 7.0.1 + /buffer-from/1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + dev: true + /buffer/6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} dependencies: base64-js: 1.5.1 ieee754: 1.2.1 + /builtin-modules/3.3.0: + resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} + engines: {node: '>=6'} + dev: true + /builtins/1.0.3: resolution: {integrity: sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==} dev: false @@ -1706,10 +1924,18 @@ packages: engines: {node: '>=14'} dev: false + /commander/2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + dev: true + /common-path-prefix/3.0.0: resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} dev: true + /commondir/1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + dev: true + /compare-func/2.0.0: resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} dependencies: @@ -1741,6 +1967,11 @@ packages: proto-list: 1.2.4 dev: false + /console-clear/1.1.1: + resolution: {integrity: sha512-pMD+MVR538ipqkG5JXeOEbKWS5um1H4LUUccUQG68qpeqBYbzYy79Gh55jkd2TtPdRfUaLWdv6LPP//5Zt0aPQ==} + engines: {node: '>=4'} + dev: false + /conventional-changelog-angular/5.0.13: resolution: {integrity: sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==} engines: {node: '>=10'} @@ -1814,10 +2045,10 @@ packages: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} dev: true - /cross-fetch/3.1.5: - resolution: {integrity: sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==} + /cross-fetch/3.1.6: + resolution: {integrity: sha512-riRvo06crlE8HiqOwIpQhxwdOk4fOeR7FVM/wXoxchFEqMNUjvbs3bfo4OTgMEMHzppd4DxFBDbyySj8Cv781g==} dependencies: - node-fetch: 2.6.7 + node-fetch: 2.6.11 transitivePeerDependencies: - encoding dev: false @@ -1921,6 +2152,11 @@ packages: /deep-is/0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + /deepmerge/4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + dev: true + /defer-to-connect/1.1.3: resolution: {integrity: sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==} dev: false @@ -1929,7 +2165,7 @@ packages: resolution: {integrity: sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==} engines: {node: '>=10'} dependencies: - globby: 11.1.0 + globby: 11.0.4 graceful-fs: 4.2.11 is-glob: 4.0.3 is-path-cwd: 2.2.0 @@ -1983,12 +2219,30 @@ packages: dependencies: path-type: 4.0.0 + /docmaps-sdk/0.5.1: + resolution: {integrity: sha512-IcMncuScIdZmCQ9IZf1F6voqiAqgxbV5is8IYWGoIVrYzUjR8yT63fwXqoj4u7CnaW4+mJuXZ7motASBCqA/XA==} + dependencies: + '@rdfjs/serializer-jsonld-ext': 4.0.0 + fp-ts: 2.16.0 + io-ts: 2.2.20_fp-ts@2.16.0 + io-ts-types: 0.5.19_s7sbo4rgx7udnj5ndpwuv6vmsa + monocle-ts: 2.3.13_fp-ts@2.16.0 + newtype-ts: 0.3.5_pfnvjiba2nr3jdxmyagzf4ncpm + readable-stream: 4.4.0 + transitivePeerDependencies: + - web-streams-polyfill + dev: false + /doctrine/3.0.0: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} dependencies: esutils: 2.0.3 + /dompurify/2.4.5: + resolution: {integrity: sha512-jggCCd+8Iqp4Tsz0nIvpcb22InKEBrGz5dw3EQJMs8HPJDsKbFIO3STYtAvCfDx26Muevn1MHVI0XxjgFfmiSA==} + dev: false + /dot-prop/5.3.0: resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} engines: {node: '>=8'} @@ -2287,6 +2541,10 @@ packages: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} + /estree-walker/2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + dev: true + /esutils/2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} @@ -2478,6 +2736,10 @@ packages: resolution: {integrity: sha512-3o6EllAvGuCsDgjM+frscLKDRPR9pqbrg13tJ13z86F4eni913kBV8h85rM6zpu2fEvJ8RWA0ouYlUWwHEmxTg==} dev: false + /fp-ts/2.16.0: + resolution: {integrity: sha512-bLq+KgbiXdTEoT1zcARrWEpa5z6A/8b7PcDW7Gef3NSisQ+VS7ll2Xbf1E+xsgik0rWub/8u0qP/iTTjj+PhxQ==} + dev: false + /from2/2.3.0: resolution: {integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==} dependencies: @@ -2520,7 +2782,6 @@ packages: /function-bind/1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} - dev: false /functional-red-black-tree/1.0.1: resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} @@ -2530,6 +2791,11 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} + /get-port/3.2.0: + resolution: {integrity: sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==} + engines: {node: '>=4'} + dev: false + /get-stream/4.1.0: resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} engines: {node: '>=6'} @@ -2589,6 +2855,17 @@ packages: once: 1.4.0 path-is-absolute: 1.0.1 + /glob/8.1.0: + resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} + engines: {node: '>=12'} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 5.1.6 + once: 1.4.0 + dev: true + /globals/13.20.0: resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} engines: {node: '>=8'} @@ -2705,7 +2982,6 @@ packages: engines: {node: '>= 0.4.0'} dependencies: function-bind: 1.1.1 - dev: false /hook-std/2.0.0: resolution: {integrity: sha512-zZ6T5WcuBMIUVh49iPQS9t977t7C0l7OtHrpeMb5uk48JdflRX0NSFvCekfYNmGQETnLq9W/isMyHl69kxGi8g==} @@ -2732,12 +3008,11 @@ packages: engines: {node: '>=6.0.0'} dev: false - /http-proxy-agent/5.0.0: - resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} - engines: {node: '>= 6'} + /http-proxy-agent/7.0.0: + resolution: {integrity: sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==} + engines: {node: '>= 14'} dependencies: - '@tootallnate/once': 2.0.0 - agent-base: 6.0.2 + agent-base: 7.1.0 debug: 4.3.4 transitivePeerDependencies: - supports-color @@ -2752,11 +3027,11 @@ packages: sshpk: 1.17.0 dev: false - /https-proxy-agent/5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} + /https-proxy-agent/7.0.0: + resolution: {integrity: sha512-0euwPCRyAPSgGdzD1IVN9nJYHtBhJwb6XPfbpQcYbPCwrBidX6GzxmchnaF4sfF/jPb74Ojx5g4yTg3sixlyPw==} + engines: {node: '>= 14'} dependencies: - agent-base: 6.0.2 + agent-base: 7.1.0 debug: 4.3.4 transitivePeerDependencies: - supports-color @@ -2850,6 +3125,20 @@ packages: newtype-ts: 0.3.5_jaoopmksw5o32idg3qiqnewmua dev: false + /io-ts-types/0.5.19_s7sbo4rgx7udnj5ndpwuv6vmsa: + resolution: {integrity: sha512-kQOYYDZG5vKre+INIDZbLeDJe+oM+4zLpUkjXyTMyUfoCpjJNyi29ZLkuEAwcPufaYo3yu/BsemZtbdD+NtRfQ==} + peerDependencies: + fp-ts: ^2.0.0 + io-ts: ^2.0.0 + monocle-ts: ^2.0.0 + newtype-ts: ^0.3.2 + dependencies: + fp-ts: 2.16.0 + io-ts: 2.2.20_fp-ts@2.16.0 + monocle-ts: 2.3.13_fp-ts@2.16.0 + newtype-ts: 0.3.5_pfnvjiba2nr3jdxmyagzf4ncpm + dev: false + /io-ts/2.2.20_fp-ts@2.15.0: resolution: {integrity: sha512-Rq2BsYmtwS5vVttie4rqrOCIfHCS9TgpRLFpKQCM1wZBBRY9nWVGmEvm2FnDbSE2un1UE39DvFpTR5UL47YDcA==} peerDependencies: @@ -2858,6 +3147,14 @@ packages: fp-ts: 2.15.0 dev: false + /io-ts/2.2.20_fp-ts@2.16.0: + resolution: {integrity: sha512-Rq2BsYmtwS5vVttie4rqrOCIfHCS9TgpRLFpKQCM1wZBBRY9nWVGmEvm2FnDbSE2un1UE39DvFpTR5UL47YDcA==} + peerDependencies: + fp-ts: ^2.5.0 + dependencies: + fp-ts: 2.16.0 + dev: false + /irregular-plurals/3.5.0: resolution: {integrity: sha512-1ANGLZ+Nkv1ptFb2pa8oG8Lem4krflKuX/gINiHJHjJUKaJHk/SXk5x6K3J+39/p0h1RQ2saROclJJ+QLvETCQ==} engines: {node: '>=8'} @@ -2874,11 +3171,17 @@ packages: binary-extensions: 2.2.0 dev: true - /is-core-module/2.12.0: - resolution: {integrity: sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==} + /is-builtin-module/3.2.1: + resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} + engines: {node: '>=6'} + dependencies: + builtin-modules: 3.3.0 + dev: true + + /is-core-module/2.12.1: + resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==} dependencies: has: 1.0.3 - dev: false /is-error/2.2.2: resolution: {integrity: sha512-IOQqts/aHWbiisY5DuPJQ0gcbvaLFCa7fBa9xoLfxBZvQ+ZI/Zh9xoI7Gk+G64N0FdK4AbibytHht2tWgpJWLg==} @@ -2903,6 +3206,10 @@ packages: dependencies: is-extglob: 2.1.1 + /is-module/1.0.0: + resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} + dev: true + /is-number/7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} @@ -2944,6 +3251,12 @@ packages: resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} dev: true + /is-reference/1.2.1: + resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} + dependencies: + '@types/estree': 1.0.1 + dev: true + /is-stream/2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} @@ -3080,9 +3393,9 @@ packages: hasBin: true dependencies: '@types/http-link-header': 1.0.3 - '@types/node': 18.16.7 + '@types/node': 18.16.16 canonicalize: 1.0.8 - cross-fetch: 3.1.5 + cross-fetch: 3.1.6 http-link-header: 1.1.1 relative-to-absolute-iri: 1.0.7 transitivePeerDependencies: @@ -3101,19 +3414,19 @@ packages: http-link-header: 1.1.1 jsonld-context-parser: 2.3.0 rdf-data-factory: 1.1.1 - readable-stream: 4.3.0 + readable-stream: 4.4.0 transitivePeerDependencies: - encoding dev: false - /jsonld/8.1.1: - resolution: {integrity: sha512-TbtV1hlnoDYxbscazbxcS7seDGV+pc0yktxpMySh0OBFvnLw/TIth0jiQtP/9r+ywuCbtj10XjDNBIkRgiyeUg==} + /jsonld/8.2.0: + resolution: {integrity: sha512-qHUa9pn3/cdAZw26HY1Jmy9+sHOxaLrveTRWUcrSDx5apTa20bBTe+X4nzI7dlqc+M5GkwQW6RgRdqO6LF5nkw==} engines: {node: '>=14'} dependencies: - '@digitalbazaar/http-client': 3.4.0 + '@digitalbazaar/http-client': 3.4.1 canonicalize: 1.0.8 lru-cache: 6.0.0 - rdf-canonize: 3.3.0 + rdf-canonize: 3.4.0 transitivePeerDependencies: - web-streams-polyfill dev: false @@ -3144,6 +3457,11 @@ packages: engines: {node: '>=0.10.0'} dev: false + /kleur/4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} + dev: false + /ky-universal/0.11.0_ky@0.33.3: resolution: {integrity: sha512-65KyweaWvk+uKKkCrfAf+xqN2/epw1IJDtlyCPxYffFCMR8u1sp2U65NtWpnozYfZxQ6IUzIlvUcw+hQ82U2Xw==} engines: {node: '>=14.16'} @@ -3175,6 +3493,46 @@ packages: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} dev: false + /lit-element/3.3.2: + resolution: {integrity: sha512-xXAeVWKGr4/njq0rGC9dethMnYCq5hpKYrgQZYTzawt9YQhMiXfD+T1RgrdY3NamOxwq2aXlb0vOI6e29CKgVQ==} + dependencies: + '@lit-labs/ssr-dom-shim': 1.1.1 + '@lit/reactive-element': 1.6.1 + lit-html: 2.7.4 + dev: false + + /lit-html/2.7.4: + resolution: {integrity: sha512-/Jw+FBpeEN+z8X6PJva5n7+0MzCVAH2yypN99qHYYkq8bI+j7I39GH+68Z/MZD6rGKDK9RpzBw7CocfmHfq6+g==} + dependencies: + '@types/trusted-types': 2.0.3 + dev: false + + /lit/2.7.4: + resolution: {integrity: sha512-cgD7xrZoYr21mbrkZIuIrj98YTMw/snJPg52deWVV4A8icLyNHI3bF70xsJeAgwTuiq5Kkd+ZR8gybSJDCPB7g==} + dependencies: + '@lit/reactive-element': 1.6.1 + lit-element: 3.3.2 + lit-html: 2.7.4 + dev: false + + /livereload-js/3.4.1: + resolution: {integrity: sha512-5MP0uUeVCec89ZbNOT/i97Mc+q3SxXmiUGhRFOTmhrGPn//uWVQdCvcLJDy64MSBR5MidFdOR7B9viumoavy6g==} + dev: true + + /livereload/0.9.3: + resolution: {integrity: sha512-q7Z71n3i4X0R9xthAryBdNGVGAO2R5X+/xXpmKeuPMrteg+W2U8VusTKV3YiJbXZwKsOlFlHe+go6uSNjfxrZw==} + engines: {node: '>=8.0.0'} + hasBin: true + dependencies: + chokidar: 3.5.3 + livereload-js: 3.4.1 + opts: 2.0.2 + ws: 7.5.9 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: true + /load-json-file/4.0.0: resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} engines: {node: '>=4'} @@ -3190,6 +3548,11 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true + /local-access/1.1.0: + resolution: {integrity: sha512-XfegD5pyTAfb+GY6chk283Ox5z8WexG56OvM06RWLpAc/UHozO8X6xAxEkIitZOtsSMM1Yr3DkHgW5W+onLhCw==} + engines: {node: '>=6'} + dev: false + /locate-path/2.0.0: resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} engines: {node: '>=4'} @@ -3276,6 +3639,13 @@ packages: dependencies: yallist: 4.0.0 + /magic-string/0.27.0: + resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + /make-error/1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} dev: true @@ -3297,13 +3667,13 @@ packages: engines: {node: '>=8'} dev: false - /marked-terminal/5.1.1_marked@4.3.0: - resolution: {integrity: sha512-+cKTOx9P4l7HwINYhzbrBSyzgxO2HaHKGZGuB1orZsMIgXYaJyfidT81VXRdpelW/PcHEWxywscePVgI/oUF6g==} + /marked-terminal/5.2.0_marked@4.3.0: + resolution: {integrity: sha512-Piv6yNwAQXGFjZSaiNljyNFw7jKDdGrw70FSbtxEyldLsyeuV5ZHm/1wW++kWbrOF1VPnUgYOhB2oLL0ZpnekA==} engines: {node: '>=14.13.1 || >=16.0.0'} peerDependencies: - marked: ^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 + marked: ^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 dependencies: - ansi-escapes: 5.0.0 + ansi-escapes: 6.2.0 cardinal: 2.1.1 chalk: 5.2.0 cli-table3: 0.6.3 @@ -3415,6 +3785,13 @@ packages: dependencies: brace-expansion: 1.1.11 + /minimatch/5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: true + /minimist-options/4.1.0: resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} engines: {node: '>= 6'} @@ -3441,6 +3818,24 @@ packages: fp-ts: 2.15.0 dev: false + /monocle-ts/2.3.13_fp-ts@2.16.0: + resolution: {integrity: sha512-D5Ygd3oulEoAm3KuGO0eeJIrhFf1jlQIoEVV2DYsZUMz42j4tGxgct97Aq68+F8w4w4geEnwFa8HayTS/7lpKQ==} + peerDependencies: + fp-ts: ^2.5.0 + dependencies: + fp-ts: 2.16.0 + dev: false + + /mri/1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + dev: false + + /mrmime/1.0.1: + resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} + engines: {node: '>=10'} + dev: false + /ms/2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} @@ -3467,7 +3862,7 @@ packages: meow: 8.1.2 promise-events: 0.2.4 semantic-release: 19.0.5 - semver: 7.4.0 + semver: 7.5.1 signale: 1.4.0 stream-buffers: 3.0.2 unixify: 1.0.0 @@ -3481,7 +3876,7 @@ packages: engines: {node: '>=12.0'} dependencies: queue-microtask: 1.2.3 - readable-stream: 4.3.0 + readable-stream: 4.4.0 /natural-compare-lite/1.4.0: resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} @@ -3508,6 +3903,16 @@ packages: monocle-ts: 2.3.13_fp-ts@2.15.0 dev: false + /newtype-ts/0.3.5_pfnvjiba2nr3jdxmyagzf4ncpm: + resolution: {integrity: sha512-v83UEQMlVR75yf1OUdoSFssjitxzjZlqBAjiGQ4WJaML8Jdc68LJ+BaSAXUmKY4bNzp7hygkKLYTsDi14PxI2g==} + peerDependencies: + fp-ts: ^2.0.0 + monocle-ts: ^2.0.0 + dependencies: + fp-ts: 2.16.0 + monocle-ts: 2.3.13_fp-ts@2.16.0 + dev: false + /node-domexception/1.0.0: resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} engines: {node: '>=10.5.0'} @@ -3518,8 +3923,8 @@ packages: lodash: 4.17.21 dev: false - /node-fetch/2.6.7: - resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} + /node-fetch/2.6.11: + resolution: {integrity: sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==} engines: {node: 4.x || >=6.0.0} peerDependencies: encoding: ^0.1.0 @@ -3543,7 +3948,7 @@ packages: dependencies: lodash: 4.17.21 node-fetch: 3.3.1 - readable-stream: 4.3.0 + readable-stream: 4.4.0 stream-chunks: 1.0.0 /nofilter/3.1.0: @@ -3565,8 +3970,8 @@ packages: engines: {node: '>=10'} dependencies: hosted-git-info: 4.1.0 - is-core-module: 2.12.0 - semver: 7.4.0 + is-core-module: 2.12.1 + semver: 7.5.1 validate-npm-package-license: 3.0.4 dev: false @@ -3682,6 +4087,11 @@ packages: resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} dev: false + /omdomdom/0.2.3: + resolution: {integrity: sha512-6UpG+KgintPfqUWe3mYZyqNozwhx6MVv5sZJ05J0jJxRpkUXSxYUD9gmHRa6eTc+BzbhVtGGb+l9NxMb8pVIJA==} + engines: {node: '>=14.7.0', npm: '>=6.14.7'} + dev: false + /once/1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: @@ -3705,6 +4115,10 @@ packages: type-check: 0.4.0 word-wrap: 1.2.3 + /opts/2.0.2: + resolution: {integrity: sha512-k41FwbcLnlgnFh69f4qdUfvDQ+5vaSDnVPFI/y5XuhKRq97EnVVneO9F1ESVCdiVu4fCS2L8usX3mU331hB7pg==} + dev: true + /p-cancelable/1.1.0: resolution: {integrity: sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==} engines: {node: '>=6'} @@ -3819,14 +4233,6 @@ packages: engines: {node: '>=8'} dev: false - /p-retry/4.6.2: - resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} - engines: {node: '>=8'} - dependencies: - '@types/retry': 0.12.0 - retry: 0.13.1 - dev: false - /p-timeout/5.1.0: resolution: {integrity: sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==} engines: {node: '>=12'} @@ -3911,7 +4317,6 @@ packages: /path-parse/1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - dev: false /path-type/4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} @@ -3987,6 +4392,11 @@ packages: parse-ms: 3.0.0 dev: true + /prismjs/1.29.0: + resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} + engines: {node: '>=6'} + dev: false + /process-nextick-args/2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} dev: false @@ -4046,6 +4456,12 @@ packages: engines: {node: '>=8'} dev: false + /randombytes/2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + dependencies: + safe-buffer: 5.2.1 + dev: true + /rc/1.2.8: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} hasBin: true @@ -4056,8 +4472,8 @@ packages: strip-json-comments: 2.0.1 dev: false - /rdf-canonize/3.3.0: - resolution: {integrity: sha512-gfSNkMua/VWC1eYbSkVaL/9LQhFeOh0QULwv7Or0f+po8pMgQ1blYQFe1r9Mv2GJZXw88Cz/drnAnB9UlNnHfQ==} + /rdf-canonize/3.4.0: + resolution: {integrity: sha512-fUeWjrkOO0t1rg7B2fdyDTvngj+9RlUyL92vOdiB7c0FPguWVsniIMjEtHH+meLBO9rzkUlUzBVXgWrjI8P9LA==} engines: {node: '>=12'} dependencies: setimmediate: 1.0.5 @@ -4082,9 +4498,9 @@ packages: '@rdfjs/term-map': 2.0.0 '@rdfjs/term-set': 2.0.1 '@rdfjs/to-ntriples': 2.0.0 - '@rdfjs/traverser': 0.1.1 + '@rdfjs/traverser': 0.1.2 clownface: 1.5.1 - readable-stream: 4.3.0 + readable-stream: 4.4.0 /rdf-js/4.0.2: resolution: {integrity: sha512-ApvlFa/WsQh8LpPK/6hctQwG06Z9ztQQGWVtrcrf9L6+sejHNXLPOqL+w7q3hF+iL0C4sv3AX1PUtGkLNzyZ0Q==} @@ -4128,7 +4544,7 @@ packages: '@types/readable-stream': 2.3.15 buffer: 6.0.3 rdf-data-factory: 1.1.1 - readable-stream: 4.3.0 + readable-stream: 4.4.0 relative-to-absolute-iri: 1.0.7 saxes: 6.0.0 validate-iri: 1.0.1 @@ -4192,6 +4608,16 @@ packages: buffer: 6.0.3 events: 3.3.0 process: 0.11.10 + dev: false + + /readable-stream/4.4.0: + resolution: {integrity: sha512-kDMOq0qLtxV9f/SQv522h8cxZBqNZXuXNyjyezmfAAuribMyVXziljpQ/uQhfE1XLg2/TLTW2DsnoE4VAi/krg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + abort-controller: 3.0.0 + buffer: 6.0.3 + events: 3.3.0 + process: 0.11.10 /readdirp/3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} @@ -4234,7 +4660,7 @@ packages: resolution: {integrity: sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==} engines: {node: '>=14'} dependencies: - '@pnpm/npm-conf': 2.1.1 + '@pnpm/npm-conf': 2.2.0 dev: false /registry-url/5.1.0: @@ -4303,14 +4729,18 @@ packages: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} + /resolve.exports/2.0.2: + resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} + engines: {node: '>=10'} + dev: true + /resolve/1.22.2: resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} hasBin: true dependencies: - is-core-module: 2.12.0 + is-core-module: 2.12.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - dev: false /responselike/1.0.2: resolution: {integrity: sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==} @@ -4318,11 +4748,6 @@ packages: lowercase-keys: 1.0.1 dev: false - /retry/0.13.1: - resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} - engines: {node: '>= 4'} - dev: false - /reusify/1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} @@ -4341,11 +4766,68 @@ packages: dependencies: glob: 7.2.3 + /rollup-plugin-css-only/4.3.0_rollup@3.23.0: + resolution: {integrity: sha512-BsiCqJJQzZh2lQiHY5irejRoJ3I1EUFHEi5PjVqsr+EmOh54YrWVwd3YZEXnQJ2+fzlhif0YM/Kf0GuH90GAdQ==} + engines: {node: '>=14'} + peerDependencies: + rollup: <4 + dependencies: + '@rollup/pluginutils': 5.0.2_rollup@3.23.0 + rollup: 3.23.0 + dev: true + + /rollup-plugin-livereload/2.0.5: + resolution: {integrity: sha512-vqQZ/UQowTW7VoiKEM5ouNW90wE5/GZLfdWuR0ELxyKOJUIaj+uismPZZaICU4DnWPVjnpCDDxEqwU7pcKY/PA==} + engines: {node: '>=8.3'} + dependencies: + livereload: 0.9.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: true + + /rollup-plugin-polyfill-node/0.12.0_rollup@3.23.0: + resolution: {integrity: sha512-PWEVfDxLEKt8JX1nZ0NkUAgXpkZMTb85rO/Ru9AQ69wYW8VUCfDgP4CGRXXWYni5wDF0vIeR1UoF3Jmw/Lt3Ug==} + peerDependencies: + rollup: ^1.20.0 || ^2.0.0 || ^3.0.0 + dependencies: + '@rollup/plugin-inject': 5.0.3_rollup@3.23.0 + rollup: 3.23.0 + dev: true + + /rollup-plugin-svelte/7.1.5_sz7s4dmjv6zmjgdyx7w7zqtk6e: + resolution: {integrity: sha512-TXdtwPW/0wifaQvFf9SG36xbJYi8ok1AcSZe21u0vKcVrfc3JB7NOhwSWa9bQC3ltnBNsmNdga8bHqcnezzEug==} + engines: {node: '>=10'} + peerDependencies: + rollup: '>=2.0.0' + svelte: '>=3.5.0' + dependencies: + '@rollup/pluginutils': 4.2.1 + resolve.exports: 2.0.2 + rollup: 3.23.0 + svelte: 3.59.1 + dev: true + + /rollup/3.23.0: + resolution: {integrity: sha512-h31UlwEi7FHihLe1zbk+3Q7z1k/84rb9BSwmBSr/XjOCEaBJ2YyedQDuM0t/kfOS0IxM+vk1/zI9XxYj9V+NJQ==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.2 + dev: true + /run-parallel/1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 + /sade/1.8.1: + resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} + engines: {node: '>=6'} + dependencies: + mri: 1.2.0 + dev: false + /safe-buffer/5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} @@ -4370,7 +4852,7 @@ packages: dependencies: '@semantic-release/commit-analyzer': 9.0.2_semantic-release@19.0.5 '@semantic-release/error': 3.0.0 - '@semantic-release/github': 8.0.7_semantic-release@19.0.5 + '@semantic-release/github': 8.1.0_semantic-release@19.0.5 '@semantic-release/npm': 9.0.2_semantic-release@19.0.5 '@semantic-release/release-notes-generator': 10.0.3_semantic-release@19.0.5 aggregate-error: 3.1.0 @@ -4386,13 +4868,13 @@ packages: hosted-git-info: 4.1.0 lodash: 4.17.21 marked: 4.3.0 - marked-terminal: 5.1.1_marked@4.3.0 + marked-terminal: 5.2.0_marked@4.3.0 micromatch: 4.0.5 p-each-series: 2.2.0 p-reduce: 2.1.0 read-pkg-up: 7.0.1 resolve-from: 5.0.0 - semver: 7.4.0 + semver: 7.5.1 semver-diff: 3.1.1 signale: 1.4.0 yargs: 16.2.0 @@ -4408,6 +4890,11 @@ packages: semver: 6.3.0 dev: false + /semiver/1.1.0: + resolution: {integrity: sha512-QNI2ChmuioGC1/xjyYwyZYADILWyW6AmS1UH6gDj/SFUUUS4MBAWs/7mxnkRPc/F4iHezDP+O8t0dO8WHiEOdg==} + engines: {node: '>=6'} + dev: false + /semver-diff/3.1.1: resolution: {integrity: sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==} engines: {node: '>=8'} @@ -4437,6 +4924,14 @@ packages: dependencies: lru-cache: 6.0.0 + /semver/7.5.1: + resolution: {integrity: sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: false + /serialize-error/7.0.1: resolution: {integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==} engines: {node: '>=10'} @@ -4444,6 +4939,12 @@ packages: type-fest: 0.13.1 dev: true + /serialize-javascript/6.0.1: + resolution: {integrity: sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==} + dependencies: + randombytes: 2.1.0 + dev: true + /setimmediate/1.0.5: resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} @@ -4481,6 +4982,30 @@ packages: pkg-conf: 2.1.0 dev: false + /sirv-cli/2.0.2: + resolution: {integrity: sha512-OtSJDwxsF1NWHc7ps3Sa0s+dPtP15iQNJzfKVz+MxkEo3z72mCD+yu30ct79rPr0CaV1HXSOBp+MIY5uIhHZ1A==} + engines: {node: '>= 10'} + hasBin: true + dependencies: + console-clear: 1.1.1 + get-port: 3.2.0 + kleur: 4.1.5 + local-access: 1.1.0 + sade: 1.8.1 + semiver: 1.1.0 + sirv: 2.0.3 + tinydate: 1.3.0 + dev: false + + /sirv/2.0.3: + resolution: {integrity: sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==} + engines: {node: '>= 10'} + dependencies: + '@polka/url': 1.0.0-next.21 + mrmime: 1.0.1 + totalist: 3.0.1 + dev: false + /slash/3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -4507,10 +5032,20 @@ packages: is-fullwidth-code-point: 4.0.0 dev: true + /smob/1.4.0: + resolution: {integrity: sha512-MqR3fVulhjWuRNSMydnTlweu38UhQ0HXM4buStD/S3mc/BzX3CuM9OmhyQpmtYCvoYdl5ris6TI0ZqH355Ymqg==} + dev: true + + /source-map-support/0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: true + /source-map/0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} - dev: false /spawn-error-forwarder/1.0.0: resolution: {integrity: sha512-gRjMgK5uFjbCvdibeGJuy3I5OYz6VLoVdsOJdA6wV0WlfQVLFueoqMxwwYD9RODdgb6oUIvlRlsyFSiQkMKu0g==} @@ -4713,7 +5248,11 @@ packages: /supports-preserve-symlinks-flag/1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - dev: false + + /svelte/3.59.1: + resolution: {integrity: sha512-pKj8fEBmqf6mq3/NfrB9SLtcJcUvjYSWyePlfCqN9gujLB25RitWK8PvFzlwim6hD/We35KbPlRteuA6rnPGcQ==} + engines: {node: '>= 8'} + dev: true /table/6.8.1: resolution: {integrity: sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==} @@ -4747,6 +5286,17 @@ packages: unique-string: 2.0.0 dev: false + /terser/5.17.7: + resolution: {integrity: sha512-/bi0Zm2C6VAexlGgLlVxA0P2lru/sdLyfCVaRMfKVo9nWxbmz7f/sD8VPybPeSUJaJcwmCJis9pBIhcVcG1QcQ==} + engines: {node: '>=10'} + hasBin: true + dependencies: + '@jridgewell/source-map': 0.3.3 + acorn: 8.8.2 + commander: 2.20.3 + source-map-support: 0.5.21 + dev: true + /text-extensions/1.9.0: resolution: {integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==} engines: {node: '>=0.10'} @@ -4777,6 +5327,11 @@ packages: engines: {node: '>=4'} dev: true + /tinydate/1.3.0: + resolution: {integrity: sha512-7cR8rLy2QhYHpsBDBVYnnWXm8uRTr38RoZakFSW7Bs7PzfMPNZthuMLkwqZv7MTu8lhQ91cOFYS5a7iFj2oR3w==} + engines: {node: '>=4'} + dev: false + /to-readable-stream/1.0.0: resolution: {integrity: sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==} engines: {node: '>=6'} @@ -4788,6 +5343,11 @@ packages: dependencies: is-number: 7.0.0 + /totalist/3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + dev: false + /tough-cookie/2.5.0: resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} engines: {node: '>=0.8'} @@ -4905,9 +5465,9 @@ packages: engines: {node: '>=8'} dev: false - /type-fest/1.4.0: - resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} - engines: {node: '>=10'} + /type-fest/3.11.1: + resolution: {integrity: sha512-aCuRNRERRVh33lgQaJRlUxZqzfhzwTrsE98Mc3o3VXqmiaQdHacgUtJ0esp+7MvZ92qhtzKPeusaX6vIEcoreA==} + engines: {node: '>=14.16'} dev: false /typescript/4.9.5: @@ -4924,9 +5484,9 @@ packages: dev: false optional: true - /undici/5.21.2: - resolution: {integrity: sha512-f6pTQ9RF4DQtwoWSaC42P/NKlUjvezVvd9r155ohqkwFNRyBKM3f3pcty3ouusefNRyM25XhIQEbeQ46sZDJfQ==} - engines: {node: '>=12.18'} + /undici/5.22.1: + resolution: {integrity: sha512-Ji2IJhFXZY0x/0tVBXeQwgPlLWw13GVzpsWPQ3rV50IFMMof2I55PZZxtm4P6iNq+L5znYN9nSTAq0ZyE6lSJw==} + engines: {node: '>=14.0'} dependencies: busboy: 1.6.0 dev: false @@ -4959,6 +5519,13 @@ packages: normalize-path: 2.1.1 dev: false + /upgraded-element/0.6.5: + resolution: {integrity: sha512-H51cFawepiZXvwmk8g5AQfmu2K1UhO9fe7Ed3XGdOVzROwtxbqmqxsbf/AsZ5hYlk3c47zMLj2vanGvZ+kXzkQ==} + engines: {node: '>=12.0.0', npm: '>=6.0.0'} + dependencies: + omdomdom: 0.2.3 + dev: false + /uri-js/4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: @@ -5080,6 +5647,19 @@ packages: signal-exit: 3.0.7 dev: true + /ws/7.5.9: + resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: true + /xmlchars/2.2.0: resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} dev: false @@ -5155,3 +5735,17 @@ packages: resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} engines: {node: '>=12.20'} dev: true + + github.com/source-data/render-rev/e77d8a0840fa6a33ea6663aa57dee6ff0930faed_en4jrmmtiggxba5g6f4h6b5bdu: + resolution: {tarball: https://codeload.github.com/source-data/render-rev/tar.gz/e77d8a0840fa6a33ea6663aa57dee6ff0930faed} + id: github.com/source-data/render-rev/e77d8a0840fa6a33ea6663aa57dee6ff0930faed + name: '@source-data/render-rev' + version: 0.1.34 + dependencies: + '@spider-ui/tooltip': 0.2.7_en4jrmmtiggxba5g6f4h6b5bdu + dompurify: 2.4.5 + lit: 2.7.4 + transitivePeerDependencies: + - '@spider-ui/global-event-registry' + - upgraded-element + dev: false diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 4f29da19..1317da47 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,3 +1,4 @@ packages: - 'packages/ts-sdk' - 'packages/ts-etl' + - 'packages/spa'